Criar e usar ambientes personalizados

Concluído

Quando você precisa criar seu próprio 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 a partir de uma imagem do Docker, de um contexto de build do Docker e de uma especificação conda utilizando uma imagem do Docker.

Criar um ambiente personalizado a partir de 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 do Hub do Docker ou armazenadas privadamente em um Registro de Contêiner do Azure.

Muitas estruturas de software livre são encapsuladas em imagens públicas a serem encontradas no Hub do Docker. 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 a partir de 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 base do Azure Machine Learning para criar um ambiente (que são semelhantes às imagens usadas por 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 do Conda

Embora as imagens do Docker contenham todos os pacotes necessários ao trabalhar com uma estrutura específica, talvez seja necessário incluir outros pacotes para executar seu código.

Por exemplo, talvez você queira treinar um modelo com PyTorch e acompanhar o modelo com o MLflow.

Quando precisar incluir outros pacotes ou bibliotecas em seu ambiente, você 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 a partir de uma imagem base do Docker e de um arquivo de especificação do 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)

Nota

Como todos os ambientes curados têm o prefixo AzureML-, não é possível criar um ambiente com esse mesmo prefixo.

Usar um ambiente

Mais comumente, você usa ambientes quando deseja executar um script como uma (comando) tarefa.

Para especificar qual ambiente você deseja usar para executar o 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 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 criar 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 ir e não precisa ser compilado novamente.