Creación y uso de entornos personalizados

Completado

Cuando necesite crear su propio entorno en Azure Machine Learning para enumerar todos los paquetes, bibliotecas y dependencias necesarios para ejecutar los scripts, puede crear entornos personalizados.

Puede definir un entorno a partir de una imagen de Docker, un contexto de compilación de Docker y una especificación de Conda con la imagen de Docker.

Creación de un entorno personalizado a partir de una imagen de Docker

Probablemente, el enfoque más sencillo es crear un entorno a partir de una imagen de Docker. Las imágenes de Docker se pueden hospedar en un registro público, como Docker Hub o de forma privada en una instancia de Azure Container Registry.

Muchos marcos de código abierto se encapsulan en imágenes públicas que están disponibles en Docker Hub. Por ejemplo, puede encontrar una imagen pública de Docker que contenga todos los paquetes necesarios para entrenar un modelo de aprendizaje profundo con PyTorch.

Para crear un entorno a partir de una imagen de Docker, puede usar el SDK de Python:

from azure.ai.ml.entities import Environment

env_docker_image = Environment(
    image="pytorch/pytorch:latest",
    name="public-docker-image-example",
    description="Environment created from a public Docker image.",
)
ml_client.environments.create_or_update(env_docker_image)

También puede usar las imágenes base de Azure Machine Learning para crear un entorno, que son similares a las imágenes que se usan en entornos mantenidos:

from azure.ai.ml.entities import Environment

env_docker_image = Environment(
    image="mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04",
    name="aml-docker-image-example",
    description="Environment created from a Azure ML Docker image.",
)
ml_client.environments.create_or_update(env_docker_image)

Creación de un entorno personalizado con un archivo de especificación de Conda

Aunque las imágenes de Docker contienen todos los paquetes necesarios cuando se trabaja con un marco específico, es posible que tenga que incluir otros paquetes para ejecutar su código.

Por ejemplo, puede que quiera entrenar un modelo con PyTorch y hacer un seguimiento del modelo con MLflow.

Cuando necesite incluir otros paquetes o bibliotecas en el entorno, agregue un archivo de especificación de Conda a una imagen de Docker cuando cree el entorno.

Un archivo de especificación de Conda es un archivo YAML que enumera los paquetes que deben instalarse mediante conda o pip. El archivo YAML puede tener el siguiente aspecto:

name: basic-env-cpu
channels:
  - conda-forge
dependencies:
  - python=3.7
  - scikit-learn
  - pandas
  - numpy
  - matplotlib

Sugerencia

Consulte la documentación de Conda sobre cómo crear un entorno manualmente para obtener información sobre el formato estándar de los archivos Conda.

Para crear un entorno a partir de una imagen base de Docker y un archivo de especificación de Conda, puede usar el siguiente código:

from azure.ai.ml.entities import Environment

env_docker_conda = Environment(
    image="mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04",
    conda_file="./conda-env.yml",
    name="docker-image-plus-conda-example",
    description="Environment created from a Docker image plus Conda environment.",
)
ml_client.environments.create_or_update(env_docker_conda)

Nota

Puesto que todos los entornos mantenidos tienen el prefijo AzureML-, no se puede crear un entorno con el mismo prefijo.

Uso de un entorno

Normalmente, se usan entornos cuando se quiere ejecutar un script como un trabajo (de comando).

Para especificar qué entorno desea usar para ejecutar el script, haga referencia a un entorno con la sintaxis <curated-environment-name>:<version> o <curated-environment-name>@latest.

Por ejemplo, el siguiente código muestra cómo configurar un trabajo de comando con el SDK de Python, que usa un entorno mantenido que incluye scikit-learn:

from azure.ai.ml import command

# configure job
job = command(
    code="./src",
    command="python train.py",
    environment="docker-image-plus-conda-example:1",
    compute="aml-cluster",
    display_name="train-custom-env",
    experiment_name="train-custom-env"
)

# submit job
returned_job = ml_client.create_or_update(job)

Al enviar el trabajo, se compila el entorno. La primera vez que se usa un entorno, se pueden tardar entre 10 y 15 minutos en compilarlo. Puede revisar los registros de la compilación del entorno en los registros del trabajo.

Cuando Azure Machine Learning compila un nuevo entorno, se agrega a la lista de entornos personalizados del área de trabajo. La imagen del entorno se hospeda en la instancia de Azure Container Registry asociada al área de trabajo. Siempre que use el mismo entorno para otro trabajo (y otro script), el entorno está listo para usarse y no es necesario volver a compilarlo.