Compartir vía


Empaquetar e implementar modelos fuera de Azure Machine Learning (versión preliminar)

Puede implementar modelos fuera de Azure Machine Learning para el servicio en línea mediante la creación de paquetes de modelos (versión preliminar). Azure Machine Learning permite crear un paquete de modelo que recopila todas las dependencias necesarias para implementar un modelo de aprendizaje automático en una plataforma de servicio. Puede mover un paquete de modelos entre áreas de trabajo e incluso fuera de Azure Machine Learning. Para obtener más información sobre los paquetes de modelo, consulte Paquetes de modelo para la implementación (versión preliminar).

Importante

Esta característica actualmente está en su versión preliminar pública. Esta versión preliminar se ofrece sin un Acuerdo de Nivel de Servicio y no se recomienda para cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas.

Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.

En este artículo, aprenderá a empaquetar un modelo e implementarlo en un Azure App Service.

Requisitos previos

Antes de seguir los pasos de este artículo, asegúrese de que tiene los siguientes requisitos previos:

  • Suscripción a Azure. Si no tiene una suscripción de Azure, cree una cuenta gratuita antes de empezar. Pruebe la versión gratuita o de pago de Azure Machine Learning.

  • Un área de trabajo de Azure Machine Learning. Si no tuvieras uno, sigue los pasos descritos en el artículo Cómo administrar áreas de trabajo para crear uno.

    Nota:

    Las áreas de trabajo habilitadas para Private Link no admiten modelos de empaquetado para la implementación fuera de Azure Machine Learning.

  • Los controles de acceso basado en rol de Azure (RBAC de Azure) se usan para conceder acceso a las operaciones en Azure Machine Learning. Para realizar los pasos de este artículo, su cuenta de usuario debe tener asignada la función de propietario o colaborador del área de trabajo de Azure Machine Learning, o una función personalizada. Para obtener más información, consulte Administración del acceso a un área de trabajo de Azure Machine Learning.

Preparación del sistema

Siga estos pasos para preparar su sistema.

  1. El ejemplo de este artículo se basa en ejemplos de código incluidos en el repositorio azureml-examples. Para ejecutar los comandos de forma local sin tener que copiar/pegar YAML y otros archivos, primero clona el repositorio y luego cambia los directorios a la carpeta:

    git clone https://github.com/Azure/azureml-examples --depth 1
    cd azureml-examples/cli
    

    En este artículo se usa el ejemplo de la carpeta endpoints/online/deploy-packages/mlflow-model.

  2. Conéctese al área de trabajo de Azure Machine Learning donde realizará su trabajo.

    az account set --subscription <subscription>
    az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
    
  3. Los paquetes requieren que el modelo esté registrado en su área de trabajo o en un registro de Azure Machine Learning. En este ejemplo, existe una copia local del modelo en el repositorio, por lo que solo es necesario publicar el modelo en el registro del área de trabajo. Puede omitir este paso si el modelo que está intentando implementar ya está registrado.

    MODEL_NAME='heart-classifier-mlflow'
    MODEL_PATH='model'
    az ml model create --name $MODEL_NAME --path $MODEL_PATH --type mlflow_model
    

Implementación de un paquete modelo en Azure App Service

En esta sección, se empaqueta el modelo MLflow previamente registrado y se implementa en Azure App Service.

  1. La implementación de un modelo fuera de Azure Machine Learning requiere la creación de una especificación de paquete. Para crear un paquete que esté completamente desconectado de Azure Machine Learning, especifique el modo copy en la configuración del modelo. El modo copy indica al paquete que copie los artefactos dentro del paquete. El siguiente código muestra cómo especificar el modo de copia para la configuración del modelo:

    Crear una especificación YAML del paquete:

    package-external.yml

    $schema: http://azureml/sdk-2-0/ModelVersionPackage.json
    target_environment: heart-classifier-mlflow-pkg
    inferencing_server: 
        type: azureml_online
    model_configuration:
        mode: copy
    

    Sugerencia

    Cuando se especifica la configuración del modelo utilizando copy para la propiedad modo, se garantiza que todos los artefactos del modelo se copian dentro de la imagen docker generada en lugar de descargarse del registro de modelos de Azure Machine Learning, permitiendo así una verdadera portabilidad fuera de Azure Machine Learning. Para obtener una especificación completa sobre todas las opciones al crear paquetes, consulte Crear una especificación de paquete.

  2. Inicie la operación de paquete.

    az ml model package --name $MODEL_NAME --version $MODEL_VERSION --file package-external.yml
    
  3. El resultado de la operación paquete es un entorno en Azure Machine Learning. La ventaja de tener este entorno es que cada entorno tiene una imagen docker correspondiente que puede utilizar en una implementación externa. Las imágenes se hospedan en Azure Container Registry. Los siguientes pasos muestran cómo obtener el nombre de la imagen generada:

    1. Vaya a Azure Machine Learning Studio.

    2. Seleccione la sección Entornos.

    3. Seleccione la pestaña Entornos personalizados.

    4. Busque el entorno denominado heart-classifier-mlflow-package, que es el nombre del paquete que acaba de crear.

    5. Copie el valor que se encuentra en el campo Azure Container Registry.

    Recorte de pantalla que muestra la sección en la que se muestra el nombre de la imagen del registro de contenedor de Azure en Azure Machine Learning Studio.

  4. Ahora, implemente este paquete en una instancia de App Service.

    1. Vaya a Azure Portal y seleccione su recurso de App Service.

    2. En el asistente de creación, seleccione la suscripción y el grupo de recursos que está utilizando.

    3. En la sección Detalles de instancia, asigne un nombre a la aplicación.

    4. Para Publicar, seleccione Contenedor de Docker.

    5. Para Sistema operativo, seleccione Linux.

      Recorte de pantalla que muestra cómo configurar App Service para implementar la imagen de contenedor de Docker generada.

    6. Configure el resto de la página según sea necesario y seleccione Siguiente.

    7. Seleccione la pestaña Docker.

    8. Para Opciones: seleccione Contenedor único.

    9. Para Origen de la imagen, seleccione Azure Container Registry.

    10. Configure las opciones del Azure Container Registry como se indica a continuación:

      1. Para Registro, seleccione el Azure Container Registry asociado al área de trabajo de Azure Machine Learning.

      2. Para imagen, seleccione la imagen que encontró en el paso 3(e) de este tutorial.

      3. Para Etiqueta, seleccione más reciente.

      Recorte de pantalla que muestra la sección Docker del asistente, donde se indica la imagen de Docker asociada al paquete.

    11. Configure el resto del asistente según sea necesario.

    12. Seleccione Crear. El modelo se implementa ahora en el App Service que ha creado.

    13. La forma de invocar y obtener predicciones depende del servidor de inferencia utilizado. En este ejemplo, se ha utilizado el servidor de inferencias Azure Machine Learning, que crea predicciones en la ruta /score. Para obtener más información sobre los formatos de entrada y las funciones, consulte los detalles del paquete azureml-inference-server-http.

    14. Preparar la carga de la solicitud. El formato de un modelo de MLflow implementado con el servidor de inferencia de Azure Machine Learning es el siguiente:

      sample-request.json

      {
          "input_data": {
              "columns": [
                  "age", "sex", "cp", "trestbps", "chol", "fbs", "restecg", "thalach", "exang", "oldpeak", "slope", "ca", "thal"
              ],
              "index": [1],
              "data": [
                  [1, 1, 4, 145, 233, 1, 2, 150, 0, 2.3, 3, 0, 2]
              ]
          }
      }
      
    15. Pruebe la implementación de modelo para ver si funciona.

      cat -A sample-request.json | curl http://heart-classifier-mlflow-pkg.azurewebsites.net/score \
          --request POST \
          --header 'Content-Type: application/json' \
          --data-binary @-
      

Paso siguiente