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

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

O Azure Machine Learning fornece várias formas de submeter tarefas de preparação de ML. Neste artigo, irá aprender a submeter tarefas com os seguintes métodos:

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

Pré-requisitos

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

Clonar o repositório de exemplos

Os fragmentos de código neste artigo baseiam-se em exemplos no repositório do GitHub de exemplos do Azure ML. Para clonar o repositório para o seu ambiente de desenvolvimento, utilize o seguinte comando:

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

Dica

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

Trabalho de exemplo

Os exemplos neste artigo utilizam o conjunto de dados flor de íris para preparar um modelo do MLFlow.

Preparar na cloud

Ao preparar na cloud, tem de se ligar à área de trabalho do Azure Machine Learning e selecionar um recurso de computação que será utilizado para executar a tarefa de preparação.

1. Ligar à área de trabalho

Dica

Utilize os separadores abaixo para selecionar o método que pretende utilizar para preparar um modelo. Selecionar um separador mudará automaticamente todos os separadores deste artigo para o mesmo separador. Pode selecionar outro separador em qualquer altura.

Para ligar à área de trabalho, precisa de parâmetros de identificador – uma subscrição, um grupo de recursos e um nome de área de trabalho. Irá utilizar estes detalhes no MLClient do espaço de azure.ai.ml nomes para obter um identificador para a área de trabalho do Azure Machine Learning necessária. Para autenticar, utilize a autenticação predefinida do Azure. Veja este exemplo para obter mais detalhes sobre como configurar credenciais e ligar a uma área de trabalho.

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

#Enter details of your AzureML 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 preparação

Um cluster de cálculo do AzureML é um recurso de computação totalmente gerido que pode ser utilizado para executar a tarefa de preparação. Nos exemplos seguintes, é criado um cluster de cálculo com o nome cpu-compute .

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()

4. Submeta a tarefa de preparação

Para executar este script, irá utilizar um command. O comando será executado ao submetê-lo como um job para o Azure ML.

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, configurou:

  • code - caminho onde o código para executar o comando está localizado
  • command - comando que tem de ser executado
  • environment - o ambiente necessário para executar o script de preparação. Neste exemplo, utilizamos um ambiente organizado ou pronto a utilizar fornecido pelo AzureML chamado AzureML-lightgbm-3.2-ubuntu18.04-py37-cpu. Utilizamos a versão mais recente deste ambiente com a @latest diretiva . Também pode utilizar ambientes personalizados ao especificar uma imagem de docker de base e especificar um yaml conda em cima da mesma.
  • inputs - dicionário de entradas com pares de valor de nome para o comando . A chave é um nome para a entrada no contexto da tarefa e o valor é o valor de entrada. As entradas são referenciadas na utilização command da ${{inputs.<input_name>}} expressão . Para utilizar ficheiros ou pastas como entradas, pode utilizar a Input classe .

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

Quando submete a tarefa, é devolvido um URL ao estado da tarefa no estúdio do AzureML. Utilize a IU do estúdio para ver o progresso da tarefa. Também pode utilizar returned_job.status para verificar o estado atual da tarefa.

Registar o modelo preparado

Os exemplos seguintes demonstram como registar um modelo na área de trabalho do AzureML.

Dica

A name propriedade devolvida pela tarefa de preparação é utilizada como parte do caminho para o modelo.

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

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

ml_client.models.create_or_update(run_model)

Passos seguintes

Agora que tem um modelo preparado, saiba como implementá-lo com um ponto final online.

Para obter mais exemplos, veja o repositório do GitHub de exemplos do AzureML .

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