Creación y uso de entornos personalizados
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
Es probable que el enfoque más sencillo sea 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 almacenarse de forma privada en una instancia de Azure Container Registry.
Muchos marcos de código abierto se encapsulan en imágenes públicas que se encuentran 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 es similar a las imágenes usadas por 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 al trabajar con un marco específico, puede que tenga que incluir otros paquetes para ejecutar el código.
Por ejemplo, puede que quiera entrenar un modelo con PyTorch y realizar un seguimiento del modelo con MLflow.
Cuando necesite incluir otros paquetes o bibliotecas en su entorno, puede agregar un archivo de especificación de Conda a una imagen de Docker al crear el entorno.
Un archivo de especificación de Conda es un archivo YAML, que enumera los paquetes que deben instalarse mediante conda o pip. Este tipo de 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 código siguiente:
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
Dado que todos los entornos curados tienen el prefijo AzureML-, no se puede crear un entorno con dicho prefijo.
Uso de un entorno
Normalmente, se usan entornos cuando deseas ejecutar un script como (comando) tarea.
Para especificar qué entorno desea usar para ejecutar el script, haga referencia a un entorno mediante la sintaxis <curated-environment-name>:<version> o <curated-environment-name>@latest.
Por ejemplo, el código siguiente muestra cómo configurar un trabajo de comando con el SDK de Python, que usa un entorno mantenido, incluido 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 use un entorno, puede tardar entre 10 y 15 minutos en compilar el entorno. 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 Azure Container Registry asociado al área de trabajo. Siempre que use el mismo entorno para otro trabajo (y otro script), el entorno está listo para usarse y no necesita volver a compilarse.