Поделиться через


Схема YAML автоматической классификации текста машинного обучения (2) автоматизированной классификации текста машинного обучения

ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения Azure CLI версии 2 (текущее)

Примечание.

Синтаксис YAML, описанный в этом документе, основан на схеме JSON для последней версии расширения ML CLI (версия 2). Этот синтаксис гарантированно работает только с последней версией расширения ML CLI (версия 2). Схемы для старых версий расширений можно найти по адресу https://azuremlschemasprod.azureedge.net/.

Каждая сущность Машинного обучения Azure имеет схематизированное представление YAML. Вы можете создать новую сущность из файла конфигурации YAML с расширением .yml или .yaml.

В этой статье приведена ссылка на некоторые понятия синтаксиса, которые вы увидите при настройке этих файлов YAML для заданий многоуровневой классификации текста NLP.

Исходная схема JSON можно найти по адресу https://azuremlsdk2.blob.core.windows.net/preview/0.0.1/autoMLNLPTextClassificationMultilabelJob.schema.json

Синтаксис YAML

Ключ Тип Описание Допустимые значения Значение по умолчанию
$schema строка Представляет расположение или URL-адрес для загрузки схемы YAML. Если пользователь использует расширение МАШИННОЕ ОБУЧЕНИЕ AZURE VS Code для создания YAML-файла, в том числе $schema в верхней части файла, пользователь может вызвать завершение схемы и ресурсов.
type const Обязательный. Тип задания. automl automl
task const Обязательный. Тип задачи AutoML.
Описание задачи для классификации нескольких меток:
Существует множество возможных классов, и каждому примеру можно назначить любое количество классов. Задача — прогнозировать все классы для каждого примера. Например, классификация киносценария по жанру "Комедия", "Мелодрама" или "Комедия и мелодрама".
text_classification_multilabel
name строка Имя задания. Должно быть уникальным для всех заданий в рабочей области. Если опущено, Машинное обучение Azure автоматически создает GUID для имени.
display_name строка Отображаемое имя задания в пользовательском интерфейсе студии. Может быть неуникальным в пределах рабочей области. Если опущено, Машинное обучение Azure автоматически создает идентификатор прилагательного имени, доступный для чтения.
experiment_name строка Имя эксперимента, по которому будет организовано задание. Запись выполнения каждого задания будет организована в соответствии с соответствующим экспериментом на вкладке "Эксперименты" студии. Если опущено, Машинное обучение Azure по умолчанию по умолчанию будет присвоено имя рабочего каталога, в котором было создано задание.
description строка Описание задания.
tags объект Словарь тегов для задания.
compute строка Имя целевого объекта вычислений для выполнения задания. Чтобы ссылаться на существующие вычислительные ресурсы в рабочей области, мы используем синтаксис: azureml:<compute_name>
log_verbosity число/номер Различные уровни детализации журнала. not_set, , debuginfowarningerror,critical info
primary_metric строка Метрика, которую AutoML оптимизирует для выбора модели. accuracy accuracy
target_column_name строка Обязательный. Имя столбца, предназначенного для прогнозирования. Он всегда должен быть указан. Этот параметр применим к training_data и validation_data.
training_data объект Обязательный. Данные, используемые в задании. Дополнительные сведения см . в разделе с несколькими метками .
validation_data объект Обязательный. Данные проверки, используемые в задании. Он должен соответствовать данным обучения с точки зрения набора столбцов, типа данных для каждого столбца, порядка столбцов слева направо и по крайней мере двух уникальных меток.
Примечание. Имена столбцов в каждом наборе данных должны быть уникальными. Дополнительные сведения см . в разделе проверки данных.
limits объект Словарь конфигураций ограничения задания. Параметры в этом разделе: max_concurrent_trials, max_nodes, max_trials, timeout_minutes, trial_timeout_minutes. Дополнительные сведения см . в ограничениях .
training_parameters объект Словарь, содержащий параметры обучения для задания.
Дополнительные сведения см . в поддерживаемых гиперпараметров.
Примечание. Гиперпараметры, заданные в наборе training_parameters , фиксируются во всех развертных запусках и поэтому не нужно включать в пространство поиска.
sweep объект Словарь, содержащий параметры очистки для задания. Он имеет два ключа : sampling_algorithm (обязательно) и early_termination. Дополнительные сведения см. в разделах о настройке модели и гиперпараметров.
search_space объект Словарь пространства поиска гиперпараметров. Ключ — это имя гиперпараметра, а значение — выражение параметра. Все параметры, которые можно исправить с помощью training_parameters , поддерживаются здесь (чтобы вместо этого переместиться). Дополнительные сведения см . в поддерживаемых гиперпараметров.
Существует два типа гиперпараметров:
- Дискретные гиперпараметры: дискретные гиперпараметры указываются как choice среди дискретных значений. choice может быть одним или несколькими значениями, разделенными запятыми, range объектом или любым произвольным list объектом. Расширенные дискретные гиперпараметры также можно указать с помощью распределения — randint, qlognormal, qnormal, .quniform Дополнительные сведения см. в этом разделе.
- Непрерывные гиперпараметры: непрерывные гиперпараметры задаются как распределение по непрерывному диапазону значений. В настоящее время поддерживаются дистрибутивы : lognormal, normal, loguniform. uniform Дополнительные сведения см. в этом разделе.

См . раздел выражений параметров для набора возможных выражений.
outputs объект Словарь конфигураций выходных данных для задания. Ключ — это имя выходных данных в контексте задания, а значение — выходная конфигурация.
outputs.best_model объект Словарь выходных конфигураций для оптимальной модели. Дополнительные сведения см. в разделе "Лучшая конфигурация выходных данных модели".

Другой синтаксис, используемый в конфигурациях:

Ограничения

Ключ Тип Описание Допустимые значения Значение по умолчанию
max_concurrent_trials целое число Это максимальное количество испытаний (дочерних параметров), которые могут выполняться параллельно. 1
max_trials целое число Представляет максимальное количество пробных версий задания AutoML nlp, которое может попытаться запустить алгоритм обучения с различным сочетанием гиперпараметров. 1
timeout_minutes целое число Представляет максимальное время в минутах, которое может занять отправленное задание AutoML для выполнения. После этого задание завершится. Время ожидания по умолчанию в заданиях NLP AutoML составляет 7 дней. 10080
trial_timeout_minutes целое число Представляет максимальное время в минутах, когда каждая пробная версия (дочернее задание) в отправленном задании AutoML может выполняться. После этого дочернее задание завершится.
max_nodes целое число Максимальное количество узлов из резервного вычислительного кластера для использования для задания. 1

Поддерживаемые гиперпараметры

В следующей таблице описаны гиперпараметры, поддерживаемые AutoML NLP.

Наименование параметра Описание Синтаксис
gradient_accumulation_steps Количество обратных операций, градиенты которых должны быть суммированы перед выполнением одного шага градиентного спуска путем вызова функции шага оптимизатора.

Это используется для использования эффективного размера пакета, который gradient_accumulation_steps раз больше максимального размера, который соответствует GPU.
Принимаются только положительные целые числа.
learning_rate; Начальная скорость обучения. Должен быть плавающей запятой в диапазоне (0, 1).
learning_rate_scheduler Тип планировщика скорости обучения. Должен выбрать один из вариантов linear, cosine, cosine_with_restarts, polynomial, constant, constant_with_warmup.
model_name Имя одной из поддерживаемых моделей. Должен выбрать один из вариантов bert_base_cased, bert_base_uncased, bert_base_multilingual_cased, bert_base_german_cased, bert_large_cased, bert_large_uncased, distilbert_base_cased, distilbert_base_uncased, roberta_base, roberta_large, distilroberta_base, xlm_roberta_base, xlm_roberta_large, xlnet_base_cased, xlnet_large_cased.
number_of_epochs Число эпох обучения. Принимаются только положительные целые числа.
training_batch_size Размер пакета, используемого для обучения. Принимаются только положительные целые числа.
validation_batch_size Размер пакета, используемого для проверки. Принимаются только положительные целые числа.
warmup_ratio Соотношение общих шагов обучения, используемых для линейной прогрева от 0 до learning_rate. Должно быть значением типа float в диапазоне [0, 1].
weight_decay Значение распада веса при оптимизаторе имеет значение оптимизатора, адама или адама. Должно быть значением типа float в диапазоне [0, 1].

Обучающие или проверяющие данные

Ключ Тип Описание Допустимые значения Значение по умолчанию
description строка Подробные сведения, описывающие входные данные.
path строка Путь от места загрузки данных. Путь может быть путем, file путем folder или pattern для путей. pattern задает шаблон поиска, позволяющий разрешать глоббинг (* и **) файлов и папок, содержащих данные. Поддерживаются следующие типы URI: azureml, https, wasbs, abfss и adl. Дополнительные сведения об использовании формата URI см. в основном синтаксисе azureml://yaml. URI расположения файла артефакта. Если этот URI не содержит схему (например, http:, azureml: и т. д.), то он считается локальной ссылкой и файлом, на который он указывает, передается в хранилище BLOB-объектов рабочей области по умолчанию при создании сущности.
mode строка Механизм доставки набора данных. direct direct
type const Чтобы создать модели nlp, пользователю необходимо предоставить обучающие данные в виде MLTable. Дополнительные сведения см. в статье о подготовке данных mltable mltable

Оптимальная конфигурация выходных данных модели

Ключ Тип Описание Допустимые значения Значение по умолчанию
type строка Обязательный. Тип лучшей модели. AutoML разрешает только модели машинного потока. mlflow_model mlflow_model
path строка Обязательный. URI расположения, в котором хранятся файлы артефактов модели. Если этот URI не содержит схему (например, http:, azureml: и т. д.), то он считается локальной ссылкой и файлом, на который он указывает, передается в хранилище BLOB-объектов рабочей области по умолчанию при создании сущности.
storage_uri строка URL-адрес HTTP модели. Используйте этот URL-адрес для az storage copy -s THIS_URL -d DESTINATION_PATH --recursive скачивания данных.

Замечания

Команду az ml job можно использовать для управления заданиями Машинного обучения Azure.

Примеры

Примеры доступны в репозитории примеров GitHub. Ниже приведены примеры, относящиеся к многозначным заданиям классификации текста NLP.

YAML: задание многоуровневой классификации текста AutoML

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

type: automl
experiment_name: dpv2-cli-text-classification-multilabel-paper-cat
description: A text classification multilabel job using paper categorization data

compute: azureml:gpu-cluster

task: text_classification_multilabel
primary_metric: accuracy
log_verbosity: debug

limits:
  timeout_minutes: 60

target_column_name: "terms"
training_data:
  path: "./training-mltable-folder"
  type: mltable
validation_data:
  type: mltable
  path: "./validation-mltable-folder"
# featurization:
#   dataset_language: "eng"

YAML: задание конвейера многоуровневой классификации текста AutoML

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

description: Pipeline using AutoML Text Classification Multilabel task

display_name: pipeline-with-text-classification-multilabel
experiment_name: pipeline-with-automl

settings:
  default_compute: azureml:gpu-cluster

inputs:
  text_classification_multilabel_training_data:
    type: mltable
    path: ./training-mltable-folder
  text_classification_multilabel_validation_data:
    type: mltable
    path: ./validation-mltable-folder

jobs:
  preprocessing_node:
    type: command
    component: file:./components/component_preprocessing.yaml
    inputs:
      train_data: ${{parent.inputs.text_classification_multilabel_training_data}}
      validation_data: ${{parent.inputs.text_classification_multilabel_validation_data}}
    outputs:
      preprocessed_train_data:
        type: mltable
      preprocessed_validation_data:
        type: mltable
  text_classification_multilabel_node:
    type: automl
    task: text_classification_multilabel
    log_verbosity: info
    primary_metric: accuracy
    limits:
      max_trials: 1
      timeout_minutes: 60
    target_column_name: terms
    training_data: ${{parent.jobs.preprocessing_node.outputs.preprocessed_train_data}}
    validation_data: ${{parent.jobs.preprocessing_node.outputs.preprocessed_validation_data}}
    # 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.text_classification_multilabel_node.outputs.best_model}}
      model_base_name: paper_categorization_model

Следующие шаги