Package d'artefacts personnalisés pour Model Serving
Cet article décrit comment s'assurer que les dépendances de fichiers et d'artefacts de votre modèle sont disponibles sur votre endpoint Déployer des modèles à l'aide de Model Serving.
Exigences
MLflow 1.29 et versions ultérieures
Empaqueter les artefacts avec les modèles
Lorsque votre modèle nécessite des fichiers ou des artéfacts pendant l'inférence, vous pouvez les package dans l'artéfact du modèle lorsque vous Logs le modèle.
Si vous travaillez avec des Notebooks Databricks, une pratique courante consiste à faire résider ces fichiers dans des volumes Unity Catalog. Les modèles sont parfois également configurés pour download des artefacts depuis Internet (tels que les Tokenizers HuggingFace). Les charges de travail en temps réel à grande échelle offrent les meilleures performances lorsque toutes les dépendances requises sont capturées statiquement au moment du déploiement. Pour cette raison, Model Serving exige que les artefacts des volumes Unity Catalog soient packageés dans l'artefact du modèle lui-même à l'aide des interfaces MLflow. Les artefacts réseau chargés avec le modèle doivent être packageés avec le modèle chaque fois que 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 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 vers un endpoint de Model Serving.