Gerenciar ambientes do Azure Machine Learning com a CLI e o SDK (v2)

APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)SDK do Python azure-ai-ml v2 (atual)

Os ambientes do Azure Machine Learning definem os ambientes de execução para seus trabalhos ou implantações e encapsulam as dependências para seu código. O Azure Machine Learning usa a especificação de ambiente para criar o contêiner do Docker no qual o código de treinamento ou de pontuação é executado no destino de computação especificado. Você pode definir um ambiente de uma especificação de Conda, uma imagem do Docker ou um contexto de build do Docker.

Neste artigo, saiba como criar e gerenciar ambientes do Azure Machine Learning usando o SDK e a CLI (v2).

Pré-requisitos

Antes de seguir as etapas neste artigo, verifique se você tem os seguintes pré-requisitos:

Dica

Para um ambiente de desenvolvimento completo, use o Visual Studio Code e a extensão do Azure Machine Learning para gerenciar recursos do Azure Machine Learning e treinar modelos de machine learning.

Clonar repositório de exemplos

Para executar os exemplos de treinamento, primeiro clone o repositório de exemplos. Para os exemplos da CLI, altere para o diretório cli. Para os exemplos do SDK, altere para o diretório sdk/python/assets/environment:

git clone --depth 1 https://github.com/Azure/azureml-examples

Observe que --depth 1 clona apenas a confirmação mais recente para o repositório, o que reduz o tempo para concluir a operação.

Conectar-se ao workspace

Dica

Use as guias a seguir para selecionar o método que você deseja usar para trabalhar com ambientes. A seleção de uma guia alternará automaticamente todas as guias deste artigo para a mesma guia. É possível selecionar outra guia a qualquer momento.

Ao usar a CLI do Azure, você precisa de parâmetros de identificador, uma assinatura, um grupo de recursos e um nome de espaço de trabalho. Embora você possa especificar esses parâmetros para cada comando, você também pode definir padrões usados para todos os comandos. Use os comandos a seguir para definir os valores padrão. Substitua <subscription ID>, <Azure Machine Learning workspace name> e <resource group> pelos valores da sua configuração:

az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>

Ambientes selecionados

Há dois tipos de ambientes no Azure Machine Learning: ambientes coletados e personalizados. Os ambientes selecionados são ambientes predefinidos que contêm estruturas e ferramentas populares de ML. Os ambientes personalizados são definidos pelo usuário e podem ser criados através do az ml environment create.

Os ambientes selecionados são fornecidos pelo Azure Machine Learning e estão disponíveis por padrão. O Azure Machine Learning atualiza rotineiramente esses ambientes com as últimas versões da estrutura e realiza a manutenção neles para correções de bugs e atualizações de segurança. Eles são respaldados por imagens do Docker armazenadas em cache, o que reduz o custo de preparação do trabalho e o tempo de implantação do modelo.

Você pode usar esses ambientes selecionados prontos para uso para treinamento ou implantação, referenciando uma versão específica ou a versão mais recente do ambiente. Use a seguinte sintaxe: azureml://registries/azureml/environment/<curated-environment-name>/versions/<version-number> ou azureml://registries/azureml/environment/<curated-environment-name>/labels/latest. Você também pode usá-los como referência para seus próprios ambientes personalizados, modificando os Dockerfiles que suportam esses ambientes selecionados.

Veja o conjunto de ambientes coletados disponíveis na interface do usuário do Estúdio do Azure Machine Learning ou usando a CLI (v2) por meio de az ml environment list.

Dica

Ao trabalhar com ambientes coletados na CLI ou no SDK, o nome do ambiente começa com AzureML- seguido pelo nome do ambiente coletado. Ao usar o estúdio do Azure Machine Learning, eles não têm esse prefixo. O motivo dessa diferença é que a interface do usuário do estúdio exibe ambientes personalizados e coletados em guias separadas, portanto, o prefixo não é necessário. A CLI e o SDK não têm essa separação, portanto, o prefixo é usado para diferenciar entre ambientes personalizados e coletados.

Criar um ambiente personalizado

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 com base em uma imagem do Docker

Para definir um ambiente com base em uma imagem do Docker, forneça o URI da imagem hospedada em um registro, como o Hub do Docker ou o Registro de Contêiner do Azure.

O exemplo a seguir é um arquivo de especificação YAML para um ambiente definido por meio de uma imagem do Docker. Uma imagem do repositório oficial do PyTorch no Hub do Docker é especificada através da propriedade imageno arquivo YAML.

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-image-example
image: pytorch/pytorch:latest
description: Environment created from a Docker image.

Para criar o ambiente:

az ml environment create --file assets/environment/docker-image.yml

Dica

O Azure Machine Learning mantém um conjunto de imagens base baseadas no Ubuntu Linux de CPU e GPU com dependências comuns do sistema. Por exemplo, as imagens de GPU contêm Miniconda, OpenMPI, CUDA, cuDNN e NCCL. Você pode usar essas imagens para seus ambientes ou usar seus Dockerfiles correspondentes como referência ao criar suas próprias imagens personalizadas.

Para o conjunto de imagens base e seus Dockerfiles correspondentes, consulte AzureML-Repositório de contêineres.

Criar um ambiente com base em um contexto de build do Docker

Em vez de definir um ambiente de uma imagem predefinida, você também pode definir de um contexto de build do Docker. Para fazer isso, especifique o diretório que serve como o contexto de build. Esse diretório deve conter um Dockerfile (com não mais de 1 MB) e quaisquer outros arquivos necessários para criar a imagem.

O exemplo a seguir é um arquivo de especificação YAML para um ambiente definido por meio de um contexto de build. O caminho local para a pasta do contexto de build está especificado no campo build.path, e o caminho relativo para o Dockerfile dentro dessa pasta do contexto de build está especificado no campo build.dockerfile_path. Se build.dockerfile_path for omitido no arquivo YAML, o Azure Machine Learning procurará um Dockerfile nomeado Dockerfile na raiz do contexto de build.

Neste exemplo, o contexto de build contém um Dockerfile chamado Dockerfile e um arquivo requirements.txt que é referenciado dentro do Dockerfile para instalar pacotes do Python.

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-context-example
build:
  path: docker-contexts/python-and-pip

Para criar o ambiente:

az ml environment create --file assets/environment/docker-context.yml

O Azure Machine Learning começa a compilar a imagem a partir do contexto de build quando o ambiente é criado. Você pode monitorar o status do build e exibir os logs de build na interface do usuário do estúdio.

Criar um ambiente a partir de uma especificação de Conda

Você pode definir um ambiente usando um arquivo de configuração padrão YAML do Conda que inclui as dependências para o ambiente do Conda. Consulte Como criar um ambiente manualmente para obter informações sobre esse formato padrão.

Você também deve especificar uma imagem base do Docker para esse ambiente. O Azure Machine Learning cria o ambiente conda sobre a imagem do Docker fornecida. Se você instalar algumas dependências do Python em sua imagem do Docker, esses pacotes não estarão no ambiente de execução, causando falhas na execução. Por padrão, o Azure Machine Learning cria um ambiente conda com dependências especificadas e executa o trabalho nesse ambiente em vez de usar as bibliotecas python instaladas na imagem base.

O exemplo a seguir é um arquivo de especificação YAML para um ambiente definido por meio de uma especificação do Conda. Aqui, o caminho relativo para o arquivo Conda do arquivo YAML do ambiente do Azure Machine Learning é especificado pela propriedade conda_file. Como alternativa, você pode definir a especificação embutida de Conda usando a propriedade conda_file, em vez de defini-la em um arquivo separado.

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-image-plus-conda-example
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04
conda_file: conda-yamls/pydata.yml
description: Environment created from a Docker image plus Conda environment.

Para criar o ambiente:

az ml environment create --file assets/environment/docker-image-plus-conda.yaml

O Azure Machine Learning cria a imagem final do Docker com base nessa especificação de ambiente quando o ambiente é usado em um trabalho ou implantação. Você também pode disparar manualmente um build do ambiente na interface do usuário do estúdio.

Gerenciar ambientes

O SDK e a CLI (v2) também permitem que você gerencie o ciclo de vida dos ativos de ambiente do Azure Machine Learning.

Lista

Liste todos os ambientes em seu workspace:

az ml environment list

Listar todas as versões de ambiente em um determinado nome:

az ml environment list --name docker-image-example

Mostrar

Obtenha os detalhes de um ambiente específico:

az ml environment show --name docker-image-example --version 1

Atualizar

Atualize as propriedades mutáveis de um ambiente específico:

az ml environment update --name docker-image-example --version 1 --set description="This is an updated description."

Importante

Somente o description e o tags podem ser atualizados para ambientes. Todas as outras propriedades são imutáveis; Se você precisar alterar qualquer uma dessas propriedades, crie uma nova versão do ambiente.

Arquivos

O arquivamento de um ambiente o oculta por padrão de consultas de lista (az ml environment list). Você ainda pode continuar a referenciar e usar um ambiente Arquivado em seus fluxos de trabalho. Você pode arquivar todas as versões de um ambiente ou apenas uma versão específica.

Se você não especificar uma versão, todas as versões do ambiente com esse nome determinado serão arquivadas. Se você criar uma nova versão de ambiente em um contêiner de ambiente arquivado, essa nova versão também será definida automaticamente como arquivada.

Arquive todas as versões de um ambiente:

az ml environment archive --name docker-image-example

Arquivar uma versão específica do ambiente:

az ml environment archive --name docker-image-example --version 1

Usar ambientes para treinamento

Para usar um ambiente personalizado para um trabalho de treinamento, especifique o campo environment da configuração YAML do trabalho. Referencie um ambiente registrado existente do Azure Machine Learning por meio de environment: azureml:<environment-name>:<environment-version> ou environment: azureml:<environment-name>@latest (para referenciar a última versão de um ambiente) ou defina uma especificação de ambiente em linha. Se estiver definindo um ambiente embutido, não especifique os campos name e version, pois esses ambientes são tratados como ambientes "não registrado" e não são rastreados no registro de ativos do ambiente.

Quando você envia um trabalho de treinamento, a criação de um ambiente pode levar vários minutos. A duração depende do tamanho das dependências necessárias. Os ambientes são armazenados em cache pelo serviço. Assim, desde que a definição do ambiente permaneça inalterada, você incorrerá no tempo de configuração completa apenas uma vez.


Para obter mais informações sobre como usar ambientes em trabalhos, consulte Treinar modelos.

Usar ambientes para implantações de modelo

Você também pode usar ambientes para suas implantações de modelo para Pontuação online e do lote. Para fazer isso, especifique o campo environment na configuração de implantação do YAML.

Para obter mais informações sobre como usar ambientes em implantações, consulte Implantar e pontuar um modelo de machine learning usando um ponto de extremidade online.

Próximas etapas