Criar e usar ambientes personalizados
Quando você precisa criar seu ambiente no Azure Machine Learning para listar todos os pacotes, bibliotecas e dependências necessários para executar seus scripts, você pode criar ambientes personalizados.
Você pode definir um ambiente de uma imagem do Docker, um contexto de build do Docker e uma especificação do Conda com a imagem do Docker.
Criar um ambiente personalizado com base em uma imagem do Docker
A abordagem mais fácil provavelmente será criar um ambiente a partir de uma imagem do Docker. As imagens do Docker podem ser hospedadas em um registro público como o Docker Hub ou armazenadas de forma privada em um registro de contêiner do Azure.
Muitas estruturas de código aberto são encapsuladas em imagens públicas a serem encontradas no Docker Hub. Por exemplo, você pode encontrar uma imagem pública do Docker que contém todos os pacotes necessários para treinar um modelo de aprendizado profundo com PyTorch.
Para criar um ambiente com base em uma imagem do Docker, você pode usar o SDK do 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)
Você também pode usar as imagens de base do Azure Machine Learning para criar um ambiente (que são semelhantes às imagens usadas pelos ambientes com curadoria):
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)
Criar um ambiente personalizado com um arquivo de especificação Conda
Embora as imagens do Docker contenham todos os pacotes necessários ao trabalhar com uma estrutura específica, pode ser que você precise incluir outros pacotes para executar seu código.
Por exemplo, você pode querer treinar um modelo com PyTorch e rastrear o modelo com MLflow.
Quando você precisar incluir outros pacotes ou bibliotecas em seu ambiente, poderá adicionar um arquivo de especificação Conda a uma imagem do Docker ao criar o ambiente.
Um arquivo de especificação Conda é um arquivo YAML, que lista os pacotes que precisam ser instalados usando conda
ou pip
. Esse arquivo YAML pode ser semelhante a:
name: basic-env-cpu
channels:
- conda-forge
dependencies:
- python=3.7
- scikit-learn
- pandas
- numpy
- matplotlib
Dica
Examine a documentação Conda sobre como criar um ambiente manualmente para obter informações sobre o formato padrão para arquivos Conda.
Para criar um ambiente de uma imagem base do Docker e um arquivo de especificação Conda, você pode usar o seguinte 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)
Observação
Como todos os ambientes com curadoria são prefixados com AzureML-, você não pode criar um ambiente com o mesmo prefixo.
Usar um ambiente
Normalmente, você usa ambientes quando deseja executar um script como um trabalho (comando).
Para especificar qual ambiente você deseja usar para executar seu script, faça referência a um ambiente usando a sintaxe <curated-environment-name>:<version>
ou <curated-environment-name>@latest
.
Por exemplo, o código a seguir mostra como configurar um trabalho de comando com o SDK do Python, que usa um ambiente coletado, incluindo o 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)
Quando você envia o trabalho, o ambiente é criado. Na primeira vez que você usa um ambiente, pode levar de 10 a 15 minutos para compilar o ambiente. Você pode examinar os logs do build do ambiente nos logs do trabalho.
Quando o Azure Machine Learning cria um novo ambiente, ele é adicionado à lista de ambientes personalizados no workspace. A imagem do ambiente é hospedada no Registro de Contêiner do Azure associado ao workspace. Sempre que você usa o mesmo ambiente para outro trabalho (e outro script), o ambiente está pronto para começar e não precisa ser compilado novamente.