Empaqueter des artefacts personnalisés pour Model Serving

Cet article explique comment vous assurer que les dépendances en fichiers et artefacts de votre modèle sont disponibles sur votre point de terminaison Déployer des modèles à l’aide de Model Serving.

Spécifications

MLflow 1.29 et ultérieur

Empaqueter des artefacts avec des modèles

Quand votre modèle nécessite des fichiers ou des artefacts pendant l’inférence, vous pouvez les empaqueter dans l’artefact de modèle quand vous enregistrez le modèle.

Si vous utilisez des notebooks Azure Databricks, il est courant que ces fichiers résident dans des volumes de catalogue Unity. Les modèles sont également parfois configurés pour télécharger des artefacts depuis Internet (par exemple HuggingFace Tokenizers). Les charges de travail en temps réel à grande échelle fonctionnent mieux quand toutes les dépendances nécessaires sont capturées de façon statique au moment du déploiement. Pour cette raison, Model Serving exige que les artefacts des volumes Unity Catalog soient empaquetés dans l’artefact du modèle lui-même via les interfaces MLflow. Les artefacts réseau chargés avec le modèle doivent être empaquetés avec le modèle quand c’est possible.

Avec la commande MLflow log_model(), vous pouvez enregistrer un modèle et ses artefacts dépendants avec le paramètre artifacts.

mlflow.pyfunc.log_model(
    ...
    artifacts={'model-weights': "/Volumes/catalog/schema/volume/path/to/file", "tokenizer_cache": "./tokenizer_cache"},
    ...
)

Dans les modèles PyFunc, les chemins d’accès de ces artefacts sont accessibles à partir de l’objet context sous context.artifacts, et ils peuvent être chargés de la manière standard pour ce type de fichier.

Par exemple, dans un modèle MLflow personnalisé :

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"])
    ...

Une fois vos fichiers et artefacts empaquetés dans votre artefact de modèle, vous pouvez déployer votre modèle sur un point de terminaison de service de modèle.