Compartilhar via


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

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

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

  • Extensão da CLI do Azure para machine learning: a extensão ml, também conhecida como CLI v2.
  • SDK do Python v2 para o Azure Machine Learning.
  • API REST: a API na qual a CLI e o SDK foram criados.

Pré-requisitos

Para usar o SDK, instale o SDK do Azure Machine Learning v2 para Python.

Clone o repositório de exemplos

Os snippets de código deste artigo são baseados nos exemplos do Repositório GitHub de exemplos do Azure Machine Learning. Para clonar o repositório para seu ambiente de desenvolvimento, use o seguinte comando:

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

Dica

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

Exemplo de trabalho

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

Treinar na nuvem

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

1. Conectar-se ao espaço de trabalho

Dica

Use as guias a seguir para selecionar o método que você deseja usar para treinar um modelo. Selecionar uma guia alterna automaticamente todas as guias deste 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 de espaço de trabalho. Utilize esses detalhes no MLClient do namespace azure.ai.ml para obter um identificador do Workspace do Azure Machine Learning necessário. Para autenticar, use a autenticação padrão do Azure. Para obter mais informações sobre como configurar credenciais e se conectar a um workspace, consulte este exemplo.

#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. Criar um recurso de computação para treinamento

Observação

Para experimentar a computação sem servidor, ignore esta etapa e prossiga para 3. Enviar o trabalho de treinamento .

Um cluster de computação do Azure Machine Learning é um recurso de computação totalmente gerenciado que você pode usar para executar o trabalho de treinamento. Nos exemplos a seguir, você cria um cluster de computação chamado cpu-cluster.

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. Enviar o trabalho de treinamento

Para executar esse script, use um command que execute o script python main.py localizado em ./sdk/python/jobs/single-step/lightgbm/iris/src/. Você envia o comando como um job para o Azure Machine Learning.

Observação

Para usar a computação sem servidor, exclua compute="cpu-cluster" neste 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 anteriores, você configurou:

  • code - caminho em que o código para executar o comando está localizado.
  • command - comando que precisa ser executado.
  • environment - O ambiente necessário para executar o script de treinamento. Neste exemplo, use um ambiente selecionado ou pronto fornecido pelo Azure Machine Learning chamado AzureML-lightgbm-3.2-ubuntu18.04-py37-cpu. Use a versão mais recente desse ambiente usando a @latest diretiva. Você também pode usar ambientes personalizados especificando uma imagem base do docker e especificando um yaml conda sobre ele.
  • inputs - Dicionário de entradas usando pares nome-valor para o comando. A chave é um nome para a entrada dentro do contexto do trabalho e o valor é o valor de entrada. Referencie as entradas no command usando a expressão ${{inputs.<input_name>}}. Para usar arquivos ou pastas como entradas, use a Input classe. Para obter mais informações, confira Expressões do SDK e da CLI v2.

Para saber mais, consulte a documentação de referência.

Quando você envia o trabalho, o serviço retorna uma URL 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 no workspace do Azure Machine Learning.

Dica

O trabalho de treinamento retorna uma name propriedade. Utilize este nome 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óximas etapas

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

Para ver mais exemplos, confira o repositório GitHub de exemplos do Azure Machine Learning.

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