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

APLICA-SE A:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)

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

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

Pré-requisitos

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

  • Uma área de trabalho do Azure Machine Learning. Se você não tiver um, use as etapas no artigo Guia de início rápido: criar recursos do espaço de trabalho para criar um.

  • A CLI do Azure e a ml extensão ou o SDK do Python do Azure Machine Learning v2:

    • Para instalar a CLI e a extensão do Azure, consulte Instalar, configurar e usar a CLI (v2).

      Importante

      Os exemplos de CLI neste artigo pressupõem que você esteja usando o shell Bash (ou compatível). Por exemplo, de um sistema Linux ou Subsistema Windows para Linux.

    • Para instalar o Python SDK v2, use o seguinte comando:

      pip install azure-ai-ml azure-identity
      

      Para atualizar uma instalação existente do SDK para a versão mais recente, use o seguinte comando:

      pip install --upgrade azure-ai-ml azure-identity
      

      Para obter mais informações, consulte Instalar o Python SDK v2 para Azure Machine Learning.

Gorjeta

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 aprendizado de máquina.

Repositório de exemplos de clonagem

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

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

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

Conectar-se ao espaço de trabalho

Gorjeta

Use as guias a seguir para selecionar o método que você deseja usar para trabalhar com ambientes. Selecionar uma guia alternará automaticamente todas as guias neste artigo para a mesma guia. Você pode 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 que são usados para todos os comandos. Use os comandos a seguir para definir valores padrão. Substitua <subscription ID>, <Azure Machine Learning workspace name>e <resource group> pelos valores para sua configuração:

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

Ambientes organizados

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

Os ambientes com curadoria 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 versões mais recentes da estrutura e os mantém para correções de bugs e patches de segurança. Eles são apoiados por imagens do Docker armazenadas em cache, que reduzem o custo de preparação do trabalho e o tempo de implantação do modelo.

Você pode usar esses ambientes com curadoria prontos para treinamento ou implantação, fazendo referência a uma versão específica ou à 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 uma referência para seus próprios ambientes personalizados, modificando os Dockerfiles que apoiam esses ambientes selecionados.

Você pode ver o conjunto de ambientes selecionados disponíveis na interface do usuário do estúdio do Azure Machine Learning ou usando a CLI (v2) via az ml environment list.

Gorjeta

Ao trabalhar com ambientes curados na CLI ou SDK, o nome do ambiente começa com AzureML- seguido pelo nome do ambiente curado. Ao usar o estúdio do Azure Machine Learning, eles não têm esse prefixo. A razão para essa diferença é que a interface do usuário do estúdio exibe ambientes selecionados e personalizados 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 curados e personalizados.

Criar um ambiente personalizado

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 a partir de uma imagem do Docker

Para definir um ambiente a partir de uma imagem do Docker, forneça o URI da imagem hospedada em um Registro, como o Docker Hub ou o Azure Container Registry.

O exemplo a seguir é um arquivo de especificação YAML para um ambiente definido a partir de uma imagem do Docker. Uma imagem do repositório oficial do PyTorch no Docker Hub é especificada através da image propriedade no 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

Gorjeta

O Azure Machine Learning mantém um conjunto de imagens base baseadas em Linux do Ubuntu da CPU e GPU com dependências comuns do sistema. Por exemplo, as imagens da 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 obter o conjunto de imagens base e seus Dockerfiles correspondentes, consulte o repositório AzureML-Containers.

Criar um ambiente a partir de um contexto de compilação do Docker

Em vez de definir um ambiente a partir de uma imagem pré-criada, você também pode definir um a partir de um contexto de compilação do Docker. Para fazer isso, especifique o diretório que serve como o contexto de compilação. Este diretório deve conter um Dockerfile (não maior que 1MB) e quaisquer outros arquivos necessários para construir a imagem.

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

Neste exemplo, o contexto de compilação contém um Dockerfile nomeado Dockerfile e um requirements.txt arquivo que é referenciado dentro do Dockerfile para instalar pacotes 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 criar a imagem a partir do contexto de compilação quando o ambiente é criado. Você pode monitorar o status da compilação e exibir os logs de compilação na interface do usuário do estúdio.

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

Você pode definir um ambiente usando um arquivo de configuração YAML conda padrão que inclui as dependências para o ambiente conda. Consulte Criando 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 na imagem do Docker, esses pacotes não existirão no ambiente de execução, causando falhas de tempo de execução. Por padrão, o Aprendizado de Máquina do Azure cria um ambiente Conda com dependências especificadas e executa o trabalho nesse ambiente em vez de usar quaisquer bibliotecas Python instaladas na imagem base.

O exemplo a seguir é um arquivo de especificação YAML para um ambiente definido a partir de uma especificação conda. Aqui, o caminho relativo para o arquivo conda do arquivo YAML do ambiente do Azure Machine Learning é especificado por meio da conda_file propriedade. Como alternativa, você pode definir a especificação conda inline usando a conda_file propriedade, 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 a partir dessa especificação de ambiente quando o ambiente é usado em um trabalho ou implantação. Você também pode acionar manualmente uma compilação do ambiente na interface do usuário do estúdio.

Gerir ambientes

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

Listagem

Liste todos os ambientes em seu espaço de trabalho:

az ml environment list

Liste todas as versões do ambiente sob 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

Atualizar 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

Para ambientes, apenas description e tags pode ser atualizado. Todas as outras propriedades são imutáveis; Se você precisar alterar qualquer uma dessas propriedades, deverá criar uma nova versão do ambiente.

Arquivo

O arquivamento de um ambiente o oculta por padrão das consultas de lista (az ml environment list). Você ainda pode continuar a fazer referência 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 sob esse nome 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á automaticamente definida como arquivada.

Arquivar 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

Importante

O arquivamento da versão de um ambiente não exclui a imagem armazenada em cache no registro do contêiner. Se desejar excluir a imagem em cache associada a um ambiente específico, você pode usar o comando az acr repository delete no repositório associado do ambiente.

Usar ambientes para treinamento

Para usar um ambiente personalizado para um trabalho de treinamento, especifique o environment campo da configuração do YAML do trabalho. Você pode fazer referência a um ambiente de Aprendizado de Máquina do Azure registrado existente via environment: azureml:<environment-name>:<environment-version> ou environment: azureml:<environment-name>@latest (para fazer referência à versão mais recente de um ambiente) ou definir uma especificação de ambiente embutida. Se estiver definindo um ambiente embutido, não especifique os name campos e version , pois esses ambientes são tratados como ambientes "não registrados" e não são rastreados no registro de ativos do ambiente.

Quando você envia um trabalho de treinamento, a construção de um novo 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 total apenas uma vez.


Para obter mais informações sobre como usar ambientes em trabalhos, consulte Modelos de treinamento.

Usar ambientes para implantações de modelos

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

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

Próximos passos