Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las instrucciones de este artículo pueden ayudarle a detectar problemas con su modelo antes de que comience el proceso de despliegue del endpoint. Databricks recomienda seguir estos pasos de validación para garantizar una mejor experiencia de desarrollo al usar el servicio de modelos.
Probar predicciones antes de la implementación
Antes de implementar el modelo en el punto de conexión de servicio, pruebe las predicciones en modo offline usando un entorno virtual con mlflow.models.predict y ejemplos de entrada. MLflow proporciona API de validación que simulan el entorno de implementación y permiten pruebas de dependencias modificadas.
Hay dos opciones de validación previas a la implementación: la API de Python de MLflow y la CLI de MLflow. Consulte la documentación de MLflow para probar predicciones para obtener instrucciones más detalladas.
Puede especificar los parámetros siguientes:
- El
model_uridel modelo que se implementa en el servicio de modelos. - Uno de los siguientes:
- El
input_dataen el formato esperado para la llamadamlflow.pyfunc.PyFuncModel.predict()del modelo. - El
input_pathque define un archivo que contiene datos de entrada que se cargarán y usarán para la llamada apredict.
- El
- El
content_typeen formatocsvojson. - Un
output_pathopcional para escribir las predicciones en un archivo. Si se omitiera este parámetro, las predicciones se imprimirán enstdout. - Administrador de entornos,
env_manager, que se usa para construir el entorno de servicio:- El valor predeterminado es
virtualenv. Se recomienda para servir la validación. -
localestá disponible, pero es potencialmente propenso a errores a la hora de servir la validación. Por lo general, solo se usa para la depuración rápida.
- El valor predeterminado es
- Si se instalará la versión actual de MLflow del entorno con el entorno virtual mediante
install_mlflow. Esta configuración tiene como valor predeterminadoFalse. - Si se actualizarán y probarán diferentes versiones de las dependencias del paquete para solucionar problemas o depurar. Especifíquelo como una lista de adiciones o invalidaciones de dependencia de cadena mediante el argumento override,
pip_requirements_override.
Por ejemplo:
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"],
)
Actualizar las dependencias del modelo
Si hay algún problema con las dependencias especificadas con un modelo registrado, puede actualizar los requisitos mediante la CLI de MLflow o mlflow.models.model.update_model_requirements() en la API de Python de MLflow sin tener que registrar otro modelo.
En el ejemplo siguiente se muestra cómo actualizar el pip_requirements.txt de un modelo registrado en su lugar.
Actualice las definiciones existentes con versiones de paquete especificadas o agregando requisitos inexistentes al archivo pip_requirements.txt. Este archivo está dentro del artefacto del modelo de MLflow en la ubicación model_uri especificada.
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"],
)
Validación de la entrada del modelo antes de la implementación
Los puntos de conexión de servicio de modelos esperan un formato especial de entrada JSON. Puede verificar que la entrada del modelo funciona en un punto de servicio antes de la implementación mediante validate_serving_input en MLflow.
A continuación se muestra un ejemplo del código generado automáticamente en la pestaña artefactos de la ejecución si el modelo se registra con un ejemplo de entrada válido.
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)
También puede probar los ejemplos de entrada en el modelo registrado mediante la convert_input_example_to_serving_input API para generar una entrada de servicio JSON válida.
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)
Probar manualmente el modelo
Puede probar manualmente el comportamiento de servicio del modelo mediante los pasos siguientes:
- Abra un cuaderno y adjunte a un clúster multiuso que use una versión de Databricks Runtime, no Databricks Runtime para Machine Learning.
- Cargue el modelo mediante MLflow e intente depurar desde allí.
También puede cargar el modelo localmente en el equipo y depurar desde allí. Cargue el modelo localmente mediante lo siguiente:
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)