Treinar modelos com a CLI, SDK e API REST do Azure Machine Learning

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

O Azure Machine Learning fornece várias maneiras de enviar trabalhos de treinamento de ML. Neste artigo, você aprenderá como enviar trabalhos usando os seguintes métodos:

  • Extensão da CLI do Azure para aprendizado de máquina: a ml extensão, também conhecida como CLI v2.
  • Python SDK v2 para Azure Machine Learning.
  • API REST: A API na qual a CLI e o SDK são criados.

Pré-requisitos

Para usar as informações do SDK, instale o SDK do Azure Machine Learning v2 para Python.

Clone o repositório de exemplos

Os trechos de código neste artigo são baseados em exemplos no repositório GitHub de exemplos do Aprendizado de Máquina do Azure. Para clonar o repositório para seu ambiente de desenvolvimento, use o seguinte comando:

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

Gorjeta

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

Exemplo de trabalho

Os exemplos neste artigo usam o conjunto de dados da flor da íris para treinar um modelo MLFlow.

Treine na nuvem

Ao treinar na nuvem, você deve se conectar ao seu espaço de trabalho do Azure Machine Learning e selecionar um recurso de computação que será usado para executar o trabalho de treinamento.

1. Conecte-se ao espaço de trabalho

Gorjeta

Use as guias abaixo para selecionar o método que deseja usar para treinar um modelo. Selecionar uma guia alternará automaticamente todas as guias neste artigo para a mesma guia. Você pode selecionar outra guia a qualquer momento.

Para se conectar ao espaço de trabalho, você precisa de parâmetros de identificador - uma assinatura, um grupo de recursos e um nome do espaço de trabalho. Você usará esses detalhes no MLClient namespace from para azure.ai.ml obter um identificador para o espaço de trabalho necessário do Azure Machine Learning. Para autenticar, use a autenticação padrão do Azure. Confira este exemplo para obter mais detalhes sobre como configurar credenciais e conectar-se a um espaço de trabalho.

#import required libraries
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential

#Enter details of your Azure Machine Learning workspace
subscription_id = '<SUBSCRIPTION_ID>'
resource_group = '<RESOURCE_GROUP>'
workspace = '<AZUREML_WORKSPACE_NAME>'

#connect to the workspace
ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace)

2. Crie um recurso de computação para treinamento

Nota

Para tentar a computação sem servidor, ignore esta etapa e prossiga para 3. Apresentar o trabalho de formação.

Um cluster de computação do Azure Machine Learning é um recurso de computação totalmente gerenciado que pode ser usado para executar o trabalho de treinamento. Nos exemplos a seguir, um cluster de computação chamado cpu-compute é criado.

from azure.ai.ml.entities import AmlCompute

# specify aml compute name.
cpu_compute_target = "cpu-cluster"

try:
    ml_client.compute.get(cpu_compute_target)
except Exception:
    print("Creating a new cpu compute target...")
    compute = AmlCompute(
        name=cpu_compute_target, size="STANDARD_D2_V2", min_instances=0, max_instances=4
    )
    ml_client.compute.begin_create_or_update(compute).result()

3. Apresentar o trabalho de formação

Para executar esse script, você usará um command que executa main.py script Python localizado em ./sdk/python/jobs/single-step/lightgbm/iris/src/. O comando será executado enviando-o como um job para o Azure Machine Learning.

Nota

Para usar computação sem servidor, exclua compute="cpu-cluster" este código.

from azure.ai.ml import command, Input

# define the command
command_job = command(
    code="./src",
    command="python main.py --iris-csv ${{inputs.iris_csv}} --learning-rate ${{inputs.learning_rate}} --boosting ${{inputs.boosting}}",
    environment="AzureML-lightgbm-3.2-ubuntu18.04-py37-cpu@latest",
    inputs={
        "iris_csv": Input(
            type="uri_file",
            path="https://azuremlexamples.blob.core.windows.net/datasets/iris.csv",
        ),
        "learning_rate": 0.9,
        "boosting": "gbdt",
    },
    compute="cpu-cluster",
)
# submit the command
returned_job = ml_client.jobs.create_or_update(command_job)
# get a URL for the status of the job
returned_job.studio_url

Nos exemplos acima, você configurou:

  • code - caminho onde o código para executar o comando está localizado
  • command - comando que precisa ser executado
  • environment - o ambiente necessário para executar o guião de formação. Neste exemplo, usamos um ambiente com curadoria ou pronto fornecido pelo Azure Machine Learning chamado AzureML-lightgbm-3.2-ubuntu18.04-py37-cpu. Usamos a versão mais recente deste ambiente usando a @latest diretiva. Você também pode usar ambientes personalizados especificando uma imagem docker base e especificando um conda yaml sobre ela.
  • inputs - dicionário de entradas usando pares de valor de nome para o comando. A chave é um nome para a entrada dentro do contexto do trabalho e o valor é o valor de entrada. As entradas são referenciadas no command uso da ${{inputs.<input_name>}} expressão. Para usar arquivos ou pastas como entradas, você pode usar a Input classe. Para obter mais informações, consulte Expressões SDK e CLI v2.

Para obter mais informações, consulte a documentação de referência.

Quando você envia o trabalho, uma URL é retornada para o status do trabalho no estúdio do Azure Machine Learning. Use a interface do usuário do estúdio para exibir o progresso do trabalho. Você também pode usar returned_job.status para verificar o status atual do trabalho.

Registrar o modelo treinado

Os exemplos a seguir demonstram como registrar um modelo em seu espaço de trabalho do Azure Machine Learning.

Gorjeta

A name propriedade retornada pelo trabalho de treinamento é usada como parte do caminho para o modelo.

from azure.ai.ml.entities import Model
from azure.ai.ml.constants import AssetTypes

run_model = Model(
    path="azureml://jobs/{}/outputs/artifacts/paths/model/".format(returned_job.name),
    name="run-model-example",
    description="Model created from run.",
    type=AssetTypes.MLFLOW_MODEL
)

ml_client.models.create_or_update(run_model)

Próximos passos

Agora que você tem um modelo treinado, saiba como implantá-lo usando um endpoint online.

Para obter mais exemplos, consulte o repositório GitHub de exemplos do Azure Machine Learning.

Para obter mais informações sobre os comandos da CLI do Azure, classes do SDK Python ou APIs REST usadas neste artigo, consulte a seguinte documentação de referência: