Partilhar via


CLI (v2) Trabalho automatizado de classificação de imagens de ML Esquema YAML

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

O esquema JSON de origem pode ser encontrado em https://azuremlsdk2.blob.core.windows.net/preview/0.0.1/autoMLImageClassificationJob.schema.json.

Nota

A sintaxe YAML detalhada neste documento é baseada no esquema JSON para a versão mais recente da extensão ML CLI v2. Esta sintaxe é garantida apenas para funcionar com a versão mais recente da extensão ML CLI v2. Você pode encontrar os esquemas para versões de extensão mais antigas em https://azuremlschemasprod.azureedge.net/.

Sintaxe YAML

Chave Tipo Description Valores permitidos Default value
$schema string O esquema YAML. Se o usuário usar a extensão VS Code do Azure Machine Learning para criar o arquivo YAML, inclusive $schema na parte superior do arquivo permitirá que o usuário invoque o esquema e a conclusão de recursos.
type const Obrigatório. O tipo de trabalho. automl automl
task const Obrigatório. O tipo de tarefa AutoML. image_classification image_classification
name string Nome do trabalho. Deve ser exclusivo em todos os trabalhos no espaço de trabalho. Se omitido, o Azure Machine Learning gerará automaticamente um GUID para o nome.
display_name string Nome para exibição do trabalho na interface do usuário do estúdio. Pode não ser exclusivo dentro do espaço de trabalho. Se omitido, o Aprendizado de Máquina do Azure gerará automaticamente um identificador de substantivo adjetivo legível por humanos para o nome para exibição.
experiment_name string Nome do experimento para organizar o trabalho em. O registo de execução de cada trabalho será organizado sob a experiência correspondente no separador "Experiências" do estúdio. Se omitido, o Azure Machine Learning assumirá como padrão o nome do diretório de trabalho onde o trabalho foi criado.
description string Descrição do trabalho.
tags objeto Dicionário de tags para o trabalho.
compute string Nome do destino de computação no qual executar o trabalho. Essa computação pode ser uma referência a uma computação existente no espaço de trabalho (usando a sintaxe) ou local para designar a azureml:<compute_name> execução local. Para obter mais informações sobre computação para trabalhos de imagem AutoML, consulte a seção Computar para executar experimentos .

Nota: os trabalhos em pipeline não suportam local como compute. *
local
log_verbosity Número Diferentes níveis de verbosidade logarítmica. not_set, debug, info, warning, error, critical info
primary_metric string A métrica que o AutoML otimizará para a seleção do modelo. accuracy accuracy
target_column_name string Obrigatório. O nome da coluna a ser direcionada para previsões. Deve ser sempre especificado. Este parâmetro é aplicável a training_data e validation_data.
training_data objeto Obrigatório. Os dados a serem usados dentro do trabalho. Ele deve conter colunas de recursos de treinamento e uma coluna de destino. O parâmetro training_data deve ser sempre fornecido. Para obter mais informações sobre chaves e suas descrições, consulte a seção Dados de treinamento ou validação . Para obter um exemplo, consulte a seção Consumir dados .
validation_data objeto Os dados de validação a serem usados dentro do trabalho. Ele deve conter recursos de treinamento e coluna de rótulo (opcionalmente, uma coluna de pesos de amostra). Se validation_data for especificado, então training_data e target_column_name os parâmetros devem ser especificados. Para obter mais informações sobre chaves e suas descrições, consulte a seção Dados de treinamento ou validação . Para obter um exemplo, consulte a seção Consumir dados
validation_data_size flutuante Que fração dos dados manter para validação quando os dados de validação do usuário não são especificados. Um valor no intervalo (0,0, 1,0)
limits objeto Dicionário de configurações de limite do trabalho. A chave é o nome do limite dentro do contexto do trabalho e o valor é o valor limite. Para obter mais informações, consulte a seção Configurar as configurações do experimento.
training_parameters objeto Dicionário contendo parâmetros de treinamento para o trabalho. Forneça um objeto que tenha chaves, conforme listado nas seções a seguir.
- Modelo de hiperparâmetros agnósticos
- Classificação de imagem (multi-classe e multi-label) hiperparâmetros específicos.

Para obter um exemplo, consulte a seção Arquiteturas de modelo suportadas.
sweep objeto Dicionário contendo parâmetros de varredura para o trabalho. Tem duas chaves - sampling_algorithm (obrigatório) e early_termination. Para obter mais informações e um exemplo, consulte Métodos de amostragem para a varredura, Seções de políticas de término antecipado.
search_space objeto Dicionário do espaço de pesquisa de hiperparâmetros. A chave é o nome do hiperparâmetro e o valor é a expressão do parâmetro. O usuário pode encontrar os possíveis hiperparâmetros a partir de parâmetros especificados para training_parameters a chave. Para obter um exemplo, consulte a seção Varrendo hiperparâmetros para seu modelo .
search_space.<hyperparameter> objeto Existem dois tipos de hiperparâmetros:
- Hiperparâmetros discretos: Os hiperparâmetros discretos são especificados como um choice entre valores discretos. choice pode ser um ou mais valores separados por vírgula, um range objeto ou qualquer objeto arbitrário list . Hiperparâmetros discretos avançados também podem ser especificados usando uma distribuição - randint,qlognormal , qnormal, qloguniform, . quniform Para obter mais informações, veja esta secção.
- Hiperparâmetros contínuos: Os hiperparâmetros contínuos são especificados como uma distribuição ao longo de um intervalo contínuo de valores. Atualmente, as distribuições suportadas são - lognormal, normal, loguniform, uniform. Para obter mais informações, veja esta secção.

Consulte Expressões de parâmetro para obter o conjunto de expressões possíveis a serem usadas.
outputs objeto Dicionário de configurações de saída do trabalho. A chave é um nome para a saída dentro do contexto do trabalho e o valor é a configuração de saída.
outputs.best_model objeto Dicionário de configurações de saída para o melhor modelo. Para obter mais informações, consulte Melhor configuração de saída do modelo.

Dados de formação ou validação

Chave Tipo Description Valores permitidos Default value
description string As informações detalhadas que descrevem esses dados de entrada.
path string Path pode ser um file caminho, folder caminho ou pattern para caminhos. pattern especifica um padrão de pesquisa para permitir globbing(* e **) de arquivos e pastas contendo dados. Os tipos de URI suportados são azureml, https, wasbs, abfsse adl. Para obter mais informações sobre como usar o azureml:// formato URI, consulte Sintaxe yaml principal. URI do local do arquivo de artefato. Se esse URI não tiver um esquema (por exemplo, http:, azureml: etc.), ele será considerado uma referência local e o arquivo para o qual ele aponta será carregado para o blob-storage do espaço de trabalho padrão à medida que a entidade for criada.
mode string Mecanismo de entrega do conjunto de dados. direct direct
type const Para gerar modelos de visão computacional, o usuário precisa trazer dados de imagem rotulados como entrada para o treinamento do modelo na forma de um MLTable. MLTable MLTable

Melhor configuração de saída do modelo

Chave Tipo Description Valores permitidos Default value
type string Obrigatório. Tipo de melhor modelo. O AutoML permite apenas modelos mlflow. mlflow_model mlflow_model
path string Obrigatório. URI do local onde o(s) arquivo(s) de artefato de modelo estão armazenados. Se esse URI não tiver um esquema (por exemplo, http:, azureml: etc.), ele será considerado uma referência local e o arquivo para o qual ele aponta será carregado para o blob-storage do espaço de trabalho padrão à medida que a entidade for criada.
storage_uri string A URL HTTP do modelo. Use este URL com az storage copy -s THIS_URL -d DESTINATION_PATH --recursive para baixar os dados.

Observações

O az ml job comando pode ser usado para gerenciar trabalhos do Azure Machine Learning.

Exemplos

Exemplos estão disponíveis no repositório GitHub de exemplos. Exemplos relevantes para o trabalho de classificação de imagens estão ligados abaixo.

YAML: Trabalho de classificação de imagem AutoML

$schema: https://azuremlsdk2.blob.core.windows.net/preview/0.0.1/autoMLJob.schema.json

type: automl

experiment_name: dpv2-cli-automl-image-classification-experiment
description: A multi-class Image classification job using fridge items dataset

compute: azureml:gpu-cluster

task: image_classification
log_verbosity: debug
primary_metric: accuracy

target_column_name: label
training_data:
  # Update the path, if prepare_data.py is using data_path other than "./data"
  path: data/training-mltable-folder
  type: mltable
validation_data:
  # Update the path, if prepare_data.py is using data_path other than "./data"
  path: data/validation-mltable-folder
  type: mltable

limits:
  timeout_minutes: 60
  max_trials: 10
  max_concurrent_trials: 2

training_parameters:
  early_stopping: True
  evaluation_frequency: 1

sweep:
  sampling_algorithm: random
  early_termination:
    type: bandit
    evaluation_interval: 2
    slack_factor: 0.2
    delay_evaluation: 6

search_space:
  - model_name:
      type: choice
      values: [vitb16r224, vits16r224]
    learning_rate:
      type: uniform
      min_value: 0.001
      max_value: 0.01
    number_of_epochs:
      type: choice
      values: [15, 30]

  - model_name:
      type: choice
      values: [seresnext, resnet50]
    learning_rate:
      type: uniform
      min_value: 0.001
      max_value: 0.01
    layers_to_freeze:
      type: choice
      values: [0, 2]

YAML: Trabalho de pipeline de classificação de imagem AutoML

$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline

description: Pipeline using AutoML Image Multiclass Classification task

display_name: pipeline-with-image-classification
experiment_name: pipeline-with-automl

settings:
  default_compute: azureml:gpu-cluster

inputs:
  image_multiclass_classification_training_data:
    type: mltable
    # Update the path, if prepare_data.py is using data_path other than "./data"
    path: data/training-mltable-folder
  image_multiclass_classification_validation_data:
    type: mltable
    # Update the path, if prepare_data.py is using data_path other than "./data"
    path: data/validation-mltable-folder

jobs:
  image_multiclass_classification_node:
    type: automl
    task: image_classification
    log_verbosity: info
    primary_metric: accuracy
    limits:
      timeout_minutes: 180
      max_trials: 10
      max_concurrent_trials: 2
    target_column_name: label
    training_data: ${{parent.inputs.image_multiclass_classification_training_data}}
    validation_data: ${{parent.inputs.image_multiclass_classification_validation_data}}
    sweep:
      sampling_algorithm: random
      early_termination:
        type: bandit
        evaluation_interval: 2
        slack_factor: 0.2
        delay_evaluation: 6
    search_space:
      - model_name:
          type: choice
          values: [vitb16r224, vits16r224]
        learning_rate:
          type: uniform
          min_value: 0.001
          max_value: 0.01
        number_of_epochs:
          type: choice
          values: [15, 30]

      - model_name:
          type: choice
          values: [seresnext, resnet50]
        learning_rate:
          type: uniform
          min_value: 0.001
          max_value: 0.01
        layers_to_freeze:
          type: choice
          values: [0, 2]
    training_parameters:
      early_stopping: True
      evaluation_frequency: 1
    # currently need to specify outputs "mlflow_model" explicitly to reference it in following nodes
    outputs:
      best_model:
        type: mlflow_model
  register_model_node:
    type: command
    component: file:./components/component_register_model.yaml
    inputs:
      model_input_path: ${{parent.jobs.image_multiclass_classification_node.outputs.best_model}}
      model_base_name: fridge_items_multiclass_classification_model

Próximos passos