Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment déployer votre code Python personnalisé avec la solution de déploiement de modèles AI de Mosaic . L’exemple de cet article se concentre sur la fourniture de conseils pour l’ajout d’une logique de prétraitement et de post-traitement à votre modèle et son déploiement.
La fonction Python de MLflow, offre pyfuncune flexibilité pour déployer n’importe quel élément de code Python ou n’importe quel modèle Python. Voici des exemples de scénarios dans lesquels vous souhaiterez peut-être utiliser le guide.
- Votre modèle nécessite un prétraitement avant que les entrées puissent être passées à la fonction de prédiction du modèle.
- Votre infrastructure de modèle n’est pas prise en charge en mode natif par MLflow.
- Votre application nécessite que les sorties brutes du modèle soient post-traitées pour la consommation.
- Le modèle lui-même a une logique de branchement par requête.
- Vous souhaitez déployer du code entièrement personnalisé en tant que modèle.
Construire un modèle de fonction Python MLflow personnalisé
MLflow offre la possibilité d'enregistrer le code Python avec le format de modèles Python personnalisés .
Il existe deux fonctions requises lors de l’empaquetage de code Python arbitraire avec MLflow :
-
load_context: tout ce qui doit être chargé une seule fois pour que le modèle fonctionne doit être défini dans cette fonction. Cela est essentiel pour que le système réduise le nombre d’artefacts chargés pendant la fonctionpredict, ce qui accélère l’inférence. -
predict: cette fonction héberge toute la logique exécutée chaque fois qu’une demande d’entrée est effectuée.
Remarque
Avant de déployer votre code personnalisé en tant que modèle, il est utile de vérifier que le modèle est capable d’être servi. Consultez la documentation MLflow pour savoir comment utiliser mlflow.models.predict pour valider des modèles avant le déploiement.
Enregistrer votre modèle de fonction Python
Même si vous écrivez votre modèle avec du code personnalisé, il est possible d’utiliser des modules partagés de code de votre organisation. Avec le paramètre code_path, les créateurs de modèles peuvent consigner des références de code complètes qui se chargent dans le chemin d’accès et sont utilisables à partir d’autres modèles personnalisés pyfunc.
Par exemple, si un modèle est connecté avec :
mlflow.pyfunc.log_model(CustomModel(), "model", code_path = ["preprocessing_utils/"])
Le code de preprocessing_utils est disponible dans le contexte chargé du modèle. Voici un exemple de modèle qui utilise ce code.
class CustomModel(mlflow.pyfunc.PythonModel):
def load_context(self, context):
self.model = torch.load(context.artifacts["model-weights"])
from preprocessing_utils.my_custom_tokenizer import CustomTokenizer
self.tokenizer = CustomTokenizer(context.artifacts["tokenizer_cache"])
def format_inputs(self, model_input):
# insert some code that formats your inputs
pass
def format_outputs(self, outputs):
predictions = (torch.sigmoid(outputs)).data.numpy()
return predictions
def predict(self, context, model_input):
model_input = self.format_inputs(model_input)
outputs = self.model.predict(model_input)
return self.format_outputs(outputs)
Servir votre modèle
Après avoir enregistré votre modèle pyfunc personnalisé, vous pouvez l’enregistrer dans Unity Catalog ou le registre de l’espace de travail et le distribuer sur un point de terminaison de mise en service de modèles.
Exemple de bloc-notes
L’exemple de notebook suivant montre comment personnaliser les résultats du modèle lorsque la sortie brute du modèle interrogé doit être post-traitée pour être utilisable.