Criar e usar ambientes personalizados

Concluído

Quando precisar criar seu próprio ambiente no Aprendizado de Máquina do Azure para listar todos os pacotes, bibliotecas e dependências necessários para executar seus scripts, você poderá criar ambientes personalizados.

Você pode definir um ambiente a partir de uma imagem do Docker, um contexto de compilação do Docker e uma especificação de conda com a 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 o Docker Hub , ou armazenadas em particular em um registro de contêiner do Azure.

Muitas estruturas de código aberto são encapsuladas em imagens públicas que podem ser 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 o 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 selecionados):

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)

Crie 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 o PyTorch e rastrear 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. Tal arquivo YAML pode se parecer com:

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

Gorjeta

Revise a documentação do 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 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)

Nota

Como todos os ambientes selecionados são prefixados com o AzureML-, não é possível criar um ambiente com o mesmo prefixo.

Usar um ambiente

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

Para especificar qual ambiente você deseja usar para executar o script, faça referência a um ambiente usando a <curated-environment-name>:<version> sintaxe ou <curated-environment-name>@latest .

Por exemplo, o código a seguir mostra como configurar um trabalho de comando com o Python SDK, que usa um ambiente com curadoria, 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 é construído. A primeira vez que você usa um ambiente, pode levar de 10 a 15 minutos para criar o ambiente. Você pode revisar os logs da compilação do ambiente nos logs do trabalho.

Quando o Azure Machine Learning cria um novo ambiente, ele é adicionado à lista de ambientes personalizados no espaço de trabalho. A imagem do ambiente é hospedada no registro de Contêiner do Azure associado ao espaço de trabalho. Sempre que você usa o mesmo ambiente para outro trabalho (e outro script), o ambiente está pronto para ser usado e não precisa ser compilado novamente.