Aangepaste artefacten verpakken voor modelservering
In dit artikel wordt beschreven hoe u ervoor kunt zorgen dat de afhankelijkheden van uw modelbestand en artefact beschikbaar zijn op uw Modellen implementeren met behulp van Mosaic AI Model Serving 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 om deze bestanden te laten bevinden in Unity Catalog-volumes. 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.