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 as informações do SDK, instale o SDK v2 para Python do Azure Machine Learning.

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 o --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 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 que será usado para executar o trabalho de treinamento.

1. Conectar-se ao espaço de trabalho

Dica

Use as guias abaixo para selecionar o método que deseja usar para treinar um modelo. 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.

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. Você usará esses detalhes no MLClient do namespace azure.ai.ml para obter um identificador para o espaço de trabalho do Azure Machine Learning necessário. Para autenticar, use a autenticação padrão do Azure. Verifique este exemplo para obter mais detalhes sobre como configurar credenciais e se conectar 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. 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 cálculo 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 cálculo denominado 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. Enviar o trabalho de treinamento

Para executar esse script, você usará um command que executa script Python main.py localizado em ./sdk/python/jobs/single-step/lightgbm/iris/src/. O comando será executado com o envio dele 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 acima, 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, usamos um ambiente coletado ou pronto fornecido pelo Azure Machine Learning chamado AzureML-lightgbm-3.2-ubuntu18.04-py37-cpu. Usamos a versão mais recente desse ambiente usando a diretiva @latest. 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 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 em command usando a expressão ${{inputs.<input_name>}}. Para usar arquivos ou pastas como entradas, você pode usar a classe Input. 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, 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 no workspace do Azure Machine Learning.

Dica

A propriedade name 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ó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: