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.
Les conseils de cet article peuvent vous aider à détecter les problèmes liés à votre modèle avant d’attendre le processus de déploiement de point de terminaison. Databricks recommande d’effectuer ces étapes de validation pour garantir une meilleure expérience de développement lors de l’utilisation du service de modèle.
Tester les prédictions avant le déploiement
Avant de déployer votre modèle sur le point de terminaison de service, testez les prédictions hors connexion avec un environnement virtuel à l’aide mlflow.models.predict et des exemples d’entrée. MLflow fournit des API de validation qui simulent l’environnement de déploiement et autorisent le test des dépendances modifiées.
Il existe deux options de validation de prédéploiement : l’API Python MLflow et l’interface CLI MLflow. Consultez la documentation MLflow pour tester les prédictions pour obtenir des instructions plus détaillées.
Vous pouvez spécifier les paramètres suivants :
- L’
model_uridu modèle qui est déployé vers la mise en service de modèles. - L’une des opérations suivantes :
- Les
input_dataau format attendu pour l’appelmlflow.pyfunc.PyFuncModel.predict()du modèle. - Le
input_pathqui définit un fichier contenant des données d’entrée chargées et utilisées pour l’appel àpredict.
- Les
- Le
content_typeau formatcsvoujson. - Un
output_pathfacultatif pour écrire les prédictions dans un fichier. Si vous omettez ce paramètre, les prédictions sont imprimées dansstdout. - Un gestionnaire d’environnement,
env_managerutilisé pour configurer l’environnement pour déployer :- La valeur par défaut est
virtualenv. Recommandé pour la validation de la mise en service. -
localest disponible, mais il est éventuellement sujet à erreurs pour la validation de la mise en service. Généralement utilisé uniquement pour un débogage rapide.
- La valeur par défaut est
- Pour décider d’installer la version actuelle de MLflow qui est dans votre environnement avec l’environnement virtuel en utilisant
install_mlflow. Le paramètre a la valeurFalsepar défaut. - Pour décider de mettre à jour et de tester différentes versions de dépendances de packages afin de résoudre des problèmes ou d’effectuer des débogages. Vous pouvez spécifier cet élément, car une liste de dépendances de chaîne effectue une action de remplacement ou d’ajout en tirant parti de l’argument de remplacement,
pip_requirements_override.
Par exemple:
import mlflow
run_id = "..."
model_uri = f"runs:/{run_id}/model"
mlflow.models.predict(
model_uri=model_uri,
input_data={"col1": 34.2, "col2": 11.2, "col3": "green"},
content_type="json",
env_manager="virtualenv",
install_mlflow=False,
pip_requirements_override=["pillow==10.3.0", "scipy==1.13.0"],
)
Mettre à jour les dépendances de modèle
S’il existe des problèmes avec les dépendances spécifiées avec un modèle journalisé, vous pouvez mettre à jour les exigences à l’aide de l’interface CLI MLflow ou mlflow.models.model.update_model_requirements() dans l’API Python MLflow sans avoir à journaliser un autre modèle.
L’exemple suivant montre comment mettre à jour directement le pip_requirements.txt du modèle journalisé.
Vous pouvez mettre à jour des définitions existantes avec des versions de package spécifiées ou ajouter des exigences inexistantes dans le fichier pip_requirements.txt. Ce fichier se trouve au sein de l’artefact de modèle MLflow dans l’emplacement model_uri spécifié.
from mlflow.models.model import update_model_requirements
update_model_requirements(
model_uri=model_uri,
operation="add",
requirement_list=["pillow==10.2.0", "scipy==1.12.0"],
)
Valider l’entrée du modèle avant le déploiement
Les points de terminaison pour le service de modèles s’attendent à un format spécial d'entrées JSON. Vous pouvez vérifier que votre entrée de modèle fonctionne sur un point de terminaison de service avant le déploiement à l’aide validate_serving_input de MLflow.
Voici un exemple de code généré automatiquement dans l’onglet Artefacts de l’exécution si votre modèle est enregistré avec un exemple d’entrée valide.
from mlflow.models import validate_serving_input
model_uri = 'runs:/<run_id>/<artifact_path>'
serving_payload = """{
"messages": [
{
"content": "How many product categories are there?",
"role": "user"
}
]
}
"""
# Validate the serving payload works on the model
validate_serving_input(model_uri, serving_payload)
Vous pouvez également tester des exemples d’entrée sur le modèle journalisé à l’aide de l’API convert_input_example_to_serving_input pour générer une entrée de service JSON valide.
from mlflow.models import validate_serving_input
from mlflow.models import convert_input_example_to_serving_input
model_uri = 'runs:/<run_id>/<artifact_path>'
# Define INPUT_EXAMPLE with your own input example to the model
# A valid input example is a data instance suitable for pyfunc prediction
serving_payload = convert_input_example_to_serving_input(INPUT_EXAMPLE)
# Validate the serving payload works on the model
validate_serving_input(model_uri, serving_payload)
Tester manuellement le service du modèle
Vous pouvez tester manuellement le comportement de service du modèle en procédant comme suit :
- Ouvrez un notebook et attachez-le à un cluster à usage général qui utilise une version Databricks Runtime, et non Databricks Runtime pour le Machine Learning.
- Chargez le modèle à l’aide de MLflow et essayez de déboguer à partir de là.
Vous pouvez également charger le modèle localement sur votre PC et déboguer à partir de là. Chargez votre modèle localement à l’aide des étapes suivantes :
import os
import mlflow
os.environ["MLFLOW_TRACKING_URI"] = "databricks://PROFILE"
ARTIFACT_URI = "model_uri"
if '.' in ARTIFACT_URI:
mlflow.set_registry_uri('databricks-uc')
local_path = mlflow.artifacts.download_artifacts(ARTIFACT_URI)
print(local_path)
conda env create -f local_path/artifact_path/conda.yaml
conda activate mlflow-env
mlflow.pyfunc.load_model(local_path/artifact_path)