Aangepaste artefacten verpakken voor modelservering
In dit artikel wordt beschreven hoe u ervoor kunt zorgen dat de bestands- en artefactafhankelijkheden van uw model beschikbaar zijn in uw model die worden geleverd met het Azure Databricks-eindpunt .
Vereisten
MLflow 1.29 en hoger
Artefacten verpakken met modellen
Wanneer uw model bestanden of artefacten nodig heeft tijdens deductie, kunt u ze inpakken in het modelartefact wanneer u het model aanmeldt.
Als u met Azure Databricks-notebooks werkt, is het gebruikelijk dat deze bestanden zich in Unity Catalog-volumes bevinden. Modellen zijn ook soms geconfigureerd voor het downloaden van artefacten van internet (zoals HuggingFace Tokenizers). Realtime workloads op schaal presteren het beste wanneer alle vereiste afhankelijkheden statisch worden vastgelegd tijdens de implementatie. Daarom vereist Model Serving dat Artefacten van Unity Catalog-volumes zijn verpakt in het modelartefact zelf met behulp van MLflow-interfaces. Netwerkartefacten die met het model zijn geladen, moeten indien mogelijk worden verpakt met het model.
Met de opdracht MLflow log_model() kunt u een model en de afhankelijke artefacten vastleggen met de artifacts
parameter.
mlflow.pyfunc.log_model(
...
artifacts={'model-weights': "/Volumes/catalog/schema/volume/path/to/file", "tokenizer_cache": "./tokenizer_cache"},
...
)
In PyFunc-modellen zijn de paden van deze artefacten toegankelijk vanuit het context
object onder context.artifacts
en kunnen ze op de standaardmethode voor dat bestandstype worden geladen.
Bijvoorbeeld in een aangepast MLflow-model:
class ModelPyfunc(mlflow.pyfunc.PythonModel):
def load_context(self, context):
self.model = torch.load(context.artifacts["model-weights"])
self.tokenizer = transformers.BertweetTokenizer.from_pretrained("model-base", local_files_only=True, cache_dir=context.artifacts["tokenizer_cache"])
...
Nadat uw bestanden en artefacten zijn verpakt in uw modelartefact, kunt u uw model leveren aan een eindpunt voor modelservering.