Partilhar via


Treinar um modelo usando uma imagem personalizada do Docker

APLICA-SE A:SDK do Azure Machine Learning v1 para Python

Importante

Este artigo fornece informações sobre como usar o SDK do Azure Machine Learning v1. O SDK v1 foi preterido a partir de 31 de março de 2025. O apoio terminará em 30 de junho de 2026. Você pode instalar e usar o SDK v1 até essa data.

Recomendamos a transição para o SDK v2 antes de 30 de junho de 2026. Para obter mais informações sobre o SDK v2, consulte O que é a CLI do Azure Machine Learning e o SDK do Python v2? e a referência do SDK v2.

Este artigo descreve como usar uma imagem personalizada do Docker para treinar modelos com o Azure Machine Learning. Scripts de exemplo mostram como classificar imagens criando uma rede neural convolucional.

O Azure Machine Learning fornece uma imagem base padrão do Docker. Você também pode usar ambientes do Azure Machine Learning para especificar uma imagem base diferente, como uma imagem base mantida do Azure Machine Learning ou sua própria imagem personalizada. As imagens de base personalizadas permitem que você gerencie de perto suas dependências e mantenha um controle mais rígido sobre as versões dos componentes quando executa trabalhos de treinamento.

Pré-requisitos

Para executar o código de exemplo, sua configuração deve incluir um dos seguintes ambientes:

  • Instância de computação do Azure Machine Learning com um servidor de notebook dedicado pré-carregado com o SDK do Machine Learning e o repositório de exemplos.

    Esta configuração não requer downloads ou outra instalação. Para preparar esse ambiente, consulte Criar recursos para começar.

  • Servidor Jupyter Notebook. Os recursos a seguir fornecem instruções para ajudá-lo a preparar esse ambiente:

Configurar uma experiência de formação

A primeira tarefa é configurar seu experimento de treinamento inicializando um espaço de trabalho de Aprendizado de Máquina, definindo seu ambiente e configurando um destino de computação.

Inicializar um espaço de trabalho

O espaço de trabalho do Azure Machine Learning é o recurso de nível superior para o serviço. Ele oferece um local centralizado para trabalhar com todos os artefatos que você cria. No SDK do Python, você pode acessar os artefatos do espaço de trabalho criando um Workspace objeto.

Conforme necessário, crie um Workspace objeto a partir do arquivo config.json que você criou como pré-requisito.

from azureml.core import Workspace

ws = Workspace.from_config()

Defina seu ambiente

Crie um Environment objeto.

from azureml.core import Environment

fastai_env = Environment("fastai2")

A imagem base especificada no código a seguir suporta a biblioteca fast.ai, que permite recursos distribuídos de aprendizado profundo. Para obter mais informações, consulte o repositório fast.ai Docker Hub.

Quando você usa sua imagem personalizada do Docker, talvez já tenha seu ambiente Python configurado corretamente. Nesse caso, defina o sinalizador user_managed_dependencies para True para usar o ambiente Python interno da imagem personalizada. Por padrão, o Azure Machine Learning cria um ambiente Conda com dependências que você especificou. O serviço executa o script nesse ambiente em vez de usar quaisquer bibliotecas Python instaladas na imagem base.

fastai_env.docker.base_image = "fastdotai/fastai2:latest"
fastai_env.python.user_managed_dependencies = True

Importante

O Azure Machine Learning suporta apenas imagens do Docker que fornecem o seguinte software:

  • Ubuntu 18.04 ou superior
  • Conda 4.7.# ou superior
  • Python 3.7+
  • Um shell compatível com POSIX disponível em /bin/sh é necessário em qualquer imagem de contêiner usada para treinamento

Para obter mais informações sobre como criar e gerenciar ambientes do Azure Machine Learning, consulte Criar e usar ambientes de software.

Criar ou anexar um destino de computação

Você precisa criar um alvo de computação para treinar o seu modelo. Neste tutorial, você cria AmlCompute como seu recurso de computação de treinamento.

Criação de AmlCompute leva alguns minutos. Se o AmlCompute recurso já estiver em seu espaço de trabalho, esse código ignorará o processo de criação.

Tal como acontece com outros serviços do Azure, existem limites para determinados recursos (por exemplo, AmlCompute) associados ao serviço Azure Machine Learning. Para obter mais informações, consulte Limites padrão e como solicitar uma cota mais alta.

from azureml.core.compute import ComputeTarget, AmlCompute
from azureml.core.compute_target import ComputeTargetException

# Choose a name for your cluster
cluster_name = "gpu-cluster"

try:
    compute_target = ComputeTarget(workspace=ws, name=cluster_name)
    print('Found existing compute target.')
except ComputeTargetException:
    print('Creating a new compute target...')
    compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_NC6',
                                                           max_nodes=4)

    # Create the cluster
    compute_target = ComputeTarget.create(ws, cluster_name, compute_config)

    compute_target.wait_for_completion(show_output=True)

# Use get_status() to get a detailed status for the current AmlCompute
print(compute_target.get_status().serialize())

Importante

Use SKUs de CPU para qualquer imagem construída em computação.

Configure seu trabalho de treinamento

Para este tutorial, use o script de treinamento train.py no GitHub. Na prática, você pode usar qualquer script de treinamento personalizado e executá-lo, como está, com o Azure Machine Learning.

Crie um ScriptRunConfig recurso para configurar seu trabalho para execução no destino de computação desejado.

from azureml.core import ScriptRunConfig

src = ScriptRunConfig(source_directory='fastai-example',
                      script='train.py',
                      compute_target=compute_target,
                      environment=fastai_env)

Envie o seu trabalho de formação

Quando você envia uma execução de treinamento usando um ScriptRunConfig objeto, o submit método retorna um objeto do tipo ScriptRun. O objeto retornado ScriptRun fornece acesso programático a informações sobre a execução de treinamento.

from azureml.core import Experiment

run = Experiment(ws,'Tutorial-fastai').submit(src)
run.wait_for_completion(show_output=True)

Aviso

O Azure Machine Learning executa scripts de treinamento copiando todo o diretório de origem. Se você tiver dados confidenciais que não deseja carregar, use um arquivo .ignore ou não o inclua no diretório de origem. Em vez disso, acesse seus dados usando um armazenamento de dados.