Partilhar via


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, aprende como submeter ofertas de trabalho utilizando 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 o SDK, instale o Azure Machine Learning SDK 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

Quando treina na cloud, deve ligar-se ao seu espaço de trabalho de Machine Learning Azure e selecionar um recurso de computação para executar o trabalho de treino.

1. Conecte-se ao espaço de trabalho

Gorjeta

Utilize as seguintes abas para selecionar o método que quer usar para treinar um modelo. Selecionar um separador muda automaticamente todos os separadores neste artigo para o mesmo separador. Pode mudar para outro separador quando quiser.

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. Use estes detalhes no MLClient do namespace azure.ai.ml para obter um acesso ao espaço de trabalho necessário do Azure Machine Learning. Para autenticar, use a autenticação padrão do Azure. Para mais informações sobre como configurar credenciais e ligar-se a um espaço de trabalho, veja 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. 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 Azure Machine Learning é um recurso de computação totalmente gerido que pode usar para executar o trabalho de treino. Nos exemplos seguintes, cria-se 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. Apresentar o trabalho de formação

Para executar este script, use um command que executa o script main.py Python localizado sob ./sdk/python/jobs/single-step/lightgbm/iris/src/. Submetes o comando 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 anteriores, configurou:

  • code - caminho onde se encontra o código para executar o comando.
  • command - comando que precisa de correr.
  • environment - o ambiente necessário para executar o guião de formação. Neste exemplo, utilize um ambiente curado ou pronto fornecido pelo Azure Machine Learning chamado AzureML-lightgbm-3.2-ubuntu18.04-py37-cpu. Utilize a versão mais recente deste ambiente utilizando 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. Referencie entradas no command pela expressão ${{inputs.<input_name>}}. Para usar ficheiros ou pastas como entradas, use 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 submeteres a tarefa, o serviço devolve um URL para o estado da tarefa no Azure Machine Learning studio. 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

O trabalho de formação devolve uma name propriedade. Use este nome como parte do caminho de acesso ao 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: