Compartir a través de


Implementación de modelos de MLflow como servicios web de Azure

SE APLICA A:Azure ML del SDK de Python v1

Importante

En este artículo se proporciona información sobre el uso del SDK de Azure Machine Learning v1. El SDK v1 está en desuso a partir del 31 de marzo de 2025 y la compatibilidad con él finalizará el 30 de junio de 2026. Puede instalar y usar el SDK v1 hasta esa fecha.

Se recomienda realizar la transición al SDK v2 antes del 30 de junio de 2026. Para más información sobre el SDK v2, consulte ¿Qué es el SDK de Python de Azure Machine Learning v2 y la referencia del SDK v2?

MLflow es una biblioteca de código abierto para administrar el ciclo de vida de los experimentos de aprendizaje automático. La integración de MLflow con Azure Machine Learning le permite ampliar las funcionalidades de administración más allá del entrenamiento del modelo a la fase de implementación de modelos de producción. En este artículo, implementará un modelo de MLflow como servicio web de Azure y aplicará características de detección de desfase de datos y de administración de modelos de Azure Machine Learning a los modelos de producción.

En el siguiente diagrama se muestra cómo se integra la API de implementación de MLflow con Azure Machine Learning para implementar modelos. Es posible crear modelos como servicios web de Azure mediante marcos populares como PyTorch, TensorFlow o Scikit-learn y administrar los servicios en el área de trabajo:

Diagrama que muestra cómo se integra la API de implementación de MLflow con Azure Machine Learning para implementar modelos.

Sugerencia

Este artículo ayuda a los científicos de datos y desarrolladores que desean implementar un modelo de MLflow en un punto de conexión de servicio web de Azure Machine Learning. Si es un administrador que quiere supervisar el uso de los recursos y los eventos desde Azure Machine Learning, como las cuotas, las ejecuciones de entrenamiento completadas o implementaciones de modelos completadas, consulte Supervisión de Azure Machine Learning.

Requisitos previos

Opciones de implementación

Azure Machine Learning ofrece las siguientes opciones de configuración de implementación:

  • Azure Container Instances: adecuado para la implementación rápida de pruebas de desarrollo.
  • Azure Kubernetes Service (AKS): adecuado para implementaciones de producción escalables.

Nota:

Los puntos de conexión de Azure Machine Learning (v2) proporcionan una experiencia de implementación mejorada y más sencilla. Los puntos de conexión admiten escenarios de inferencia por lotes y en tiempo real. Los puntos de conexión proporcionan una interfaz unificada para invocar y administrar implementaciones de modelos entre tipos de proceso. Consulte ¿Qué son los puntos de conexión de Azure Machine Learning?.

Para ver más integraciones de las funcionalidades de MLflow y Azure Machine Learning, consulte MLflow y Azure Machine Learning (v2), que usa el SDK v2.

Implementación en Azure Container Instances

Para implementar el modelo de MLflow en un servicio web de Azure Machine Learning, se debe configurar con el URI de seguimiento de MLflow para la conexión con Azure Machine Learning.

Para la implementación en Azure Container Instances, no es necesario definir ninguna configuración de implementación. El servicio tiene como valor predeterminado una implementación de Azure Container Instances cuando no se proporciona una configuración. Puede registrar e implementar el modelo en un paso mediante el método deploy de MLflow para Azure Machine Learning.

from mlflow.deployments import get_deploy_client

# Set the tracking URI as the deployment client
client = get_deploy_client(mlflow.get_tracking_uri())

# Set the model path 
model_path = "model"

# Define the model path and the name as the service name
# The model is registered automatically and a name is autogenerated by using the "name" parameter 
client.create_deployment(name="mlflow-test-aci", model_uri='runs:/{}/{}'.format(run.id, model_path))

Personalización del archivo JSON de configuración de implementación

Si prefiere no usar los valores predeterminados, puede configurar la implementación con un archivo JSON de configuración de implementación que use parámetros del método deploy_configuration() como una referencia.

Definición de parámetros de configuración de implementación

En el archivo JSON de configuración de implementación, defina cada parámetro de configuración de implementación en forma de diccionario. El siguiente fragmento proporciona un ejemplo. Para obtener más información sobre lo que puede contener el archivo JSON de configuración de implementación, consulte el esquema de configuración de implementación de la instancia de contenedor de Azure en la referencia de la CLI de Azure Machine Learning Azure.

{"computeType": "aci",
 "containerResourceRequirements": {"cpu": 1, "memoryInGB": 1},
 "___location": "eastus2"
}

A continuación, el archivo JSON de configuración se puede usar para crear la implementación:

# Set the deployment config json file
deploy_path = "deployment_config.json"
test_config = {'deploy-config-file': deploy_path}

client.create_deployment(model_uri='runs:/{}/{}'.format(run.id, model_path), config=test_config, name="mlflow-test-aci")    

Implementación en Azure Kubernetes Service (AKS)

Para implementar el modelo de MLflow en un servicio web de Azure Machine Learning, se debe configurar con el URI de seguimiento de MLflow para la conexión con Azure Machine Learning.

Para la implementación en AKS, primero debe crear un clúster de AKS mediante el método ComputeTarget.create(). Puede tardar entre 20 y 25 minutos en crear un nuevo clúster.

from azureml.core.compute import AksCompute, ComputeTarget

# Use the default configuration (can also provide parameters to customize)
prov_config = AksCompute.provisioning_configuration()

aks_name = 'aks-mlflow'

# Create the cluster
aks_target = ComputeTarget.create(workspace=ws, name=aks_name, provisioning_configuration=prov_config)

aks_target.wait_for_completion(show_output = True)

print(aks_target.provisioning_state)
print(aks_target.provisioning_errors)

Cree un archivo JSON de configuración de implementación con los valores del método deploy_configuration() como referencia. Defina cada parámetro de configuración de implementación como un diccionario, como se muestra en el siguiente ejemplo:

{"computeType": "aks", "computeTargetName": "aks-mlflow"}

A continuación, registre e implemente el modelo en un solo paso con el cliente de implementación de MLflow:

from mlflow.deployments import get_deploy_client

# Set the tracking URI as the deployment client
client = get_deploy_client(mlflow.get_tracking_uri())

# Set the model path 
model_path = "model"

# Set the deployment config json file
deploy_path = "deployment_config.json"
test_config = {'deploy-config-file': deploy_path}

# Define the model path and the name as the service name
# The model is registered automatically and a name is autogenerated by using the "name" parameter 
client.create_deployment(model_uri='runs:/{}/{}'.format(run.id, model_path), config=test_config, name="mlflow-test-aci")

La implementación del servicio puede tardar varios minutos.

Limpieza de recursos

Si no tiene previsto usar el servicio web implementado, use el método service.delete() para eliminar el servicio del cuaderno. Para obtener más información, consulte el método delete() de la clase WebService en la documentación del SDK de Python.

Exploración de cuadernos de ejemplo

En MLflow con cuadernos de Azure Machine Learning se demuestran y se analizan con mayor profundidad los conceptos presentados en este artículo.

Nota:

Si desea consultar un repositorio de la comunidad de ejemplos que usan MLflow, consulte el repositorio de ejemplos de Azure Machine Learning en GitHub.