Package d’artefacts personnalisés pour un service de modèle
Cet article explique comment vous assurer que les dépendances de fichiers et d’artefacts de votre modèle sont disponibles sur votre modèle servant avec le point de terminaison Azure Databricks .
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 Service nécessite que les artefacts de volumes de catalogue Unity soient empaquetés dans l’artefact de modèle lui-même à l’aide d’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 de ces artefacts sont accessibles depuis l’objet context
sous context.artifacts
, et ils peuvent être chargés de façon 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 servir votre modèle à un point de terminaison De service de modèle.