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


Настройка AutoML для обучения модели обработки естественного языка

ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение Azure CLI ml версии 2 (текущая)Python SDK azure-ai-ml версии 2 (текущая)

Из этой статьи вы узнаете, как обучать модели обработки естественного языка (NLP) в Машинном обучении Azure с помощью автоматизированного машинного обучения (AutoML). Модели NLP можно создавать с помощью AutoML с помощью Интерфейса командной строки машинного обучения Azure версии 2 или пакета SDK Python для Машинного обучения Azure версии 2.

NLP в AutoML позволяет специалистам по машинному обучению и специалистам по обработке и анализу данных использовать собственные текстовые данные и создавать пользовательские модели для многоклассовой классификации текста, многоуровневой классификации текста и распознавания именованных сущностей (NER). Вы можете легко интегрироваться с метками данных Машинного обучения Azure для маркировки текстовых данных или использовать существующие помеченные данные.

AutoML предоставляет возможность использовать распределенное обучение в вычислительных кластерах с несколькими GPU для ускорения обучения моделей. Результирующая модель может выполняться в большом масштабе с помощью возможностей Машинного обучения Azure.

Предпосылки

  • Подписка Azure. Если у вас нет подписки Azure, зарегистрируйтесь, чтобы попробовать бесплатную или платную версию Машинного обучения Azure.

  • Рабочая среда машинного обучения Azure с вычислительными ресурсами для обучения на GPU. Сведения о создании рабочей области см. в разделе Создание ресурсов рабочей области. Дополнительные сведения об экземплярах GPU, предоставляемых Azure, см. в статье о оптимизированных размерах виртуальных машин GPU.

    Замечание

    Некоторые варианты использования NLP, такие как наборы данных, отличные от английского языка, и документы с большим диапазоном, требуют использования многоязычных моделей или моделей с более длинной максимальной длиной последовательности. В этих сценариях может потребоваться более высокая память GPU для успешного обучения модели, например серии NCv3 или NDv2.

  • Некоторые знания о настройке экспериментов AutoML. Дополнительные сведения о шаблоне конструктора экспериментов AutoML см. в разделе Настройка обучения AutoML для табличных данных.

  • Установлен интерфейс командной строки машинного обучения Azure версии 2. Инструкции по обновлению и установке последней версии см. в разделе "Установка и настройка cli" (версия 2).

Выбор задачи NLP

Определите задачу NLP, которую вы хотите выполнить. AutoML поддерживает следующие задачи глубокой нейронной сети NLP:

Задача Синтаксис задания AutoML Описание
Многоклассовая классификация текста CLI версии 2: text_classification
Пакет SDK версии 2: text_classification()
Существует множество возможных классов, и для каждого примера можно определить ровно один класс. Задача заключается в прогнозировании правильного класса для каждого примера.

Например, классифицируйте сценарий фильма как Comedy или Romantic.
Классификация текста с поддержкой нескольких меток CLI версии 2: text_classification_multilabel
Пакет SDK версии 2: text_classification_multilabel()
Существует множество возможных классов, и каждому примеру можно назначить любое количество классов. Задача — прогнозировать все классы для каждого примера.

Например, классифицируйте сценарий фильма как Comedy, Romanticи Comedy and Romantic.
Распознавание именованных сущностей (NER) CLI версии 2:text_ner
Пакет SDK версии 2: text_ner()
Для токенов в последовательностях существует множество возможных тегов. Задача заключается в прогнозировании тегов для всех токенов в каждой последовательности.

Например, извлеките сущности, относящиеся к домену, из неструктурированного текста, например контрактов или финансовых документов.

Пороговое значение

Пороговое значение — это функция классификации текста с несколькими метками, которая определяет пороговое значение, при котором прогнозируемые вероятности создают положительную метку. Более низкие значения позволяют использовать больше меток, что полезно, когда пользователи заинтересованы в полноте, но это может привести к увеличению числа ложных срабатываний. Более высокие значения позволяют уменьшить количество меток, что лучше, когда пользователи заботятся о точности, но может привести к увеличению числа ложных отрицательных результатов.

Подготовка данных

Для экспериментов AutoML NLP можно предоставить данные в .csv формате для задач многоклассовой и многоуровневой классификации. Для задач NER укажите файлы двух столбцов .txt , которые используют пространство в качестве разделителя и соответствуют формату CoNLL . В следующих разделах содержатся сведения о формате данных, принятом для каждой задачи.

Мультикласс

Для многоклассовой классификации набор данных может содержать до нескольких текстовых столбцов и ровно одного столбца меток. В следующем примере имеется только один текстовый столбец.

text,labels
"I love watching Chicago Bulls games.","NBA"
"Tom Brady is a great player.","NFL"
"There is a game between Yankees and Orioles tonight","MLB"
"Stephen Curry made the highest number of three-pointers","NBA"

Многометочная классификация

Для классификации с несколькими метками столбцы набора данных могут совпадать с несколькими классами, но в столбце меток существуют особые требования к формату. В следующей таблице показаны два принятых формата с примерами.

Параметры форматирования столбца метки Несколько меток Одна этикетка Нет меток
Обычный текст "label1, label2, label3" "label1" ""
Список Python с кавычками "['label1','label2','label3']" "['label1']" "[]"

Это важно

Различные средства синтаксического анализа считывают метки для этих форматов. Для обычного текстового формата все неалфавитно-цифровые символы, кроме _, считываются как разделители меток. Например, метка "cs.AI" считывается как "cs" и "AI". В формате списка Python метка — это "['cs.AI']", которая читается как "cs.AI".

В следующем примере показаны многометочные данные в формате обычного текста:

text,labels
"I love watching Chicago Bulls games.","basketball"
"The four most popular leagues are NFL, MLB, NBA and NHL","football,baseball,basketball,hockey"
"I like drinking beer.",""

В следующем примере показаны данные с несколькими метками в списке на Python в формате кавычек.

text,labels
"I love watching Chicago Bulls games.","['basketball']"
"The four most popular leagues are NFL, MLB, NBA and NHL","['football','baseball','basketball','hockey']"
"I like drinking beer.","[]"

Распознавание именованных сущностей (NER)

В отличие от многоклассовой или многоярлыковой классификации, которая принимает наборы данных формата .csv, для NER требуется формат CoNLL. Файл данных должен содержать ровно два столбца, а маркер и метка в каждой строке разделены одним пробелом.

Например

Hudson B-loc
Square I-loc
is O
a O
famous O
place O
in O
New B-loc
York I-loc
City I-loc

Stephen B-per
Curry I-per
got O
three O
championship O
rings O

Проверка данных

Перед обучением моделей AutoML применяет проверки данных для входных данных, чтобы обеспечить правильную обработку данных. Если какая-либо из этих проверок завершается ошибкой, запуск завершится с соответствующим сообщением об ошибке. Для прохождения проверок валидации данных для каждой задачи необходимы следующие условия.

Замечание

Некоторые проверки данных применимы как к обучаемому набору, так и к набору проверки, а другие применяются только к набору обучения. Если тестовый набор данных не проходит проверку данных, AutoML не может записать его, и ошибка вывода модели или снижение производительности модели возможны.

Задача Проверка данных
Все задачи Требуются по крайней мере 50 примеров обучения.
Multiclass и multilabel Данные обучения и данные проверки должны иметь следующие данные:
— тот же набор столбцов.
— Тот же порядок столбцов слева направо.
— Тот же тип данных для столбцов с тем же именем.
— По крайней мере две уникальные метки.
— Уникальные имена столбцов в каждом наборе данных. Например, обучающий набор не может иметь несколько столбцов с именем Age.
Только для нескольких классов Нет.
Только для нескольких классов меток — Формат столбца метки должен находиться в допустимом формате.
— По крайней мере один пример должен иметь 0 или 2 или более метки; в противном случае это следует рассматривать как задачу с несколькими классами.
— Все метки должны быть в формате str или int, и не должны перекрываться.
— У вас не может быть одновременно метки 1 и '1'.
Только NER — Файл не может начинаться с пустой строки.
— Каждая строка должна быть пустой строкой или следовать формату {token} {label} , в котором между маркером и меткой нет пробела после метки.
— Все метки должны начинаться с I-B-или быть точно O, и регистр учитывается.
— Между двумя образцами должна быть ровно одна пустая строка, а в конце файла — ровно одна пустая строка.

Настройка эксперимента

Функция AutoML NLP активируется с помощью заданий типа automl, специфичных для задачи, того же рабочего процесса, который используется для отправки задач классификации, регрессии и прогнозирования AutoML. Вы задаете такие параметры, как experiment_name, compute_nameи входные данные, как и для этих экспериментов. Однако существуют следующие ключевые различия:

  • Вы можете игнорировать primary_metric, так как это только для отчетов. AutoML обучает только одну модель за один запуск для NLP, и нет возможности выбора модели.
  • Параметр label_column_name требуется только для задач многоклассовой и многоуровневой классификации текста.
  • Если более 10% образцов в наборе данных содержат более 128 маркеров, это длинный диапазон. Чтобы использовать функцию текста с длинным диапазоном, вам потребуется номер SKU NC6 или более поздней версии GPU, например NCv3 или NDv2 .

Для заданий CLI версии 2 для AutoML вы настраиваете эксперимент в YAML файле. См. следующие примеры.

Параметры языка

В рамках функциональности NLP AutoML поддерживает предобученный текст, специфичный для определённого языка, и многоязычный предобученный текст на 104 языках для моделей глубокой нейронной сети (DNN), таких как модели двунаправленных представлений кодировщика на основе трансформеров (BERT). Выбор языка по умолчанию используется на английском языке.

В следующей таблице приведены сведения о том, какая модель применяется на основе типа задачи и языка. Дополнительные сведения см. в поддерживаемых языках и их кодах.

Задача Синтаксис для dataset_language Алгоритм текстовой модели
Классификация текста с поддержкой нескольких меток "eng"
"deu"
"mul"
Английский BERT без регистра
Немецкий BERT
Многоязычный BERT

Для всех других языков AutoML применяет многоязычный BERT.
Многоклассовая классификация текста "eng"
"deu"
"mul"
Английский вариант BERT
Многоязычный BERT

Для всех других языков AutoML применяет многоязычный BERT.
Распознавание именованных сущностей (NER) "eng"
"deu"
"mul"
Английский вариант BERT
Немецкий BERT
Многоязычный BERT

Для всех других языков AutoML применяет многоязычный BERT.

BERT также используется в процессе обучения экспериментов AutoML с изображением. Дополнительные сведения см. в разделе интеграция BERT и разработка признаков в AutoML (версия SDK 1).

Язык набора данных можно указать в разделе «Featurization» конфигурационного файла YAML.

featurization:
   dataset_language: "eng"

Отправка задания AutoML

Чтобы отправить задание AutoML, выполните следующую команду CLI версии 2. Замените заполнители именем файла и пути YAML, именем рабочей области, группой ресурсов и идентификатором подписки.


az ml job create --file ./<YAML filename> --workspace-name <machine-learning-workspace> --resource-group <resource-group> --subscription <subscription ID>

Вы также можете запускать эксперименты NLP с распределенным обучением в вычислительном кластере Машинного обучения Azure.

Примеры кода

Настройка моделей и гиперпараметров (пробная версия)

Это важно

Эта функция сейчас доступна в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем использовать её для производственных нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены.

Для получения дополнительной информации см. Дополнительные условия использования для предварительных версий Microsoft Azure.

AutoML NLP позволяет предоставить список моделей и сочетаний гиперпараметров с помощью пространства поиска гиперпараметров в конфигурации. Hyperdrive создает несколько дочерних запусков. Каждый дочерний запуск является тонкой настройкой для данной модели NLP и набора значений гиперпараметров, которые были выбраны и перебраны на основе предоставленного пространства поиска.

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

В следующем списке показаны все предварительно обученные модели DNN текста, доступные в AutoML NLP для точной настройки:

  • bert-base-cased
  • bert-large-uncased
  • bert-base-многоязычный регистр
  • bert-base-german-cased
  • bert-large-cased
  • "DistilBERT-base-cased"
  • distilbert-base-uncased
  • роберта-база
  • роберта-большой
  • distilroberta-base
  • xlm-roberta-base
  • xlm-roberta-large
  • xlnet-base-cased
  • xlnet-large-cased

Большие модели больше, чем их базовые аналоги, и обычно являются более производительными, но занимают больше памяти GPU и времени для обучения. Требования К SKU большой модели более жесткие и требуют использования виртуальных машин серии NDv2 для достижения наилучших результатов.

Поддерживаемые алгоритмы моделей Hugging Face (предварительный просмотр)

С помощью новой серверной части, работающей в конвейерах машинного обучения Azure, можно использовать любые модели классификации текста и маркеров из Концентратора распознавания лиц Hugging для классификации текста и классификации маркеров , которые являются частью библиотеки преобразователей, например microsoft/deberta-large-mnli. Вы также можете найти проверенный список моделей в реестре моделей машинного обучения Azure , которые проверяются с помощью компонентов конвейера.

Использование любой модели Hugging Face запускает выполнение через компоненты конвейера. Если вы используете как устаревшие, так и модели Hugging Face, все запуски и испытания активируются с помощью компонентов.

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

В следующей таблице описаны гиперпараметры, поддерживаемые 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_uncasedbert_base_multilingual_casedbert_base_german_casedbert_large_casedbert_large_uncaseddistilbert_base_caseddistilbert_base_uncasedroberta_baseroberta_largedistilroberta_basexlm_roberta_basexlm_roberta_largexlnet_base_casedxlnet_large_cased
number_of_epochs Число эпох обучения. Должно быть положительным целым числом.
training_batch_size Размер пакета, используемого для обучения. Должно быть положительным целым числом.
validation_batch_size Размер пакета, используемого для проверки. Должно быть положительным целым числом.
warmup_ratio Соотношение общих шагов обучения, используемых при линейном прогреве от 0 до learning_rate. Тип значения должен быть числом с плавающей запятой в диапазоне [0, 1].
weight_decay Значение сокращение веса, если используется оптимизатор sgd, adam или adamw. Тип значения должен быть числом с плавающей запятой в диапазоне [0, 1].

Все дискретные гиперпараметры допускают только распределения выбора, такие как гиперпараметры с целочисленным типом training_batch_size и строковым типом model_name. Все непрерывные гиперпараметры, такие как learning_rate, поддерживают все распределения.

Настройка параметров очистки

Вы можете настроить все параметры, связанные с очисткой. Несколько подпространств модели можно создать с помощью гиперпараметров, условных для соответствующей модели, как показано в каждом примере настройки гиперпараметров.

Поддерживаются те же дискретные и непрерывные варианты распространения, которые доступны для общих заданий HyperDrive. Для получения информации обо всех девяти вариантах перейдите к разделу Настройка модели с гиперпараметрами.

limits: 
  timeout_minutes: 120  
  max_trials: 4 
  max_concurrent_trials: 2 

sweep: 
  sampling_algorithm: grid 
  early_termination: 
    type: bandit 
    evaluation_interval: 10 
    slack_factor: 0.2 

search_space: 
  - model_name: 
      type: choice 
      values: [bert_base_cased, roberta_base] 
    number_of_epochs: 
      type: choice 
      values: [3, 4] 
  - model_name: 
      type: choice 
      values: [distilbert_base_cased] 
    learning_rate: 
      type: uniform 
      min_value: 0.000005 
      max_value: 0.00005 

Методы выборки для сканирования

При очистке гиперпараметров необходимо указать метод выборки, используемый для очистки определенного пространства параметров. Следующие методы выборки поддерживаются с параметром sampling_algorithm :

Тип выборки Синтаксис задания AutoML
Случайный random
Сетка grid
Байесовский bayesian

Бюджет эксперимента

При необходимости можно указать бюджет эксперимента для задания обучения AutoML NLP с помощью timeout_minutes параметра в поле limits. Этот параметр определяет время за несколько минут до завершения эксперимента. Если время ожидания не указано, время ожидания эксперимента по умолчанию — семь дней, а максимальное — 60 дней.

AutoML NLP также поддерживает trial_timeout_minutes, максимальное время в минутах, в течение которого отдельное испытание может выполняться до завершения, а max_nodes, максимальное количество узлов из основного вычислительного кластера, используемого для задания. Эти параметры также задаются в limits разделе.

limits: 
  timeout_minutes: 60 
  trial_timeout_minutes: 20 
  max_nodes: 2 

Политика преждевременного завершения

Вы можете автоматически завершить выполнение плохо выполняемых запусков с помощью политики раннего завершения. Досрочное завершение повышает эффективность вычислений, экономя вычислительные ресурсы, которые в противном случае будут тратиться на менее перспективные конфигурации.

AutoML NLP поддерживает политики раннего завершения с помощью early_termination параметра. Если политика завершения не указана, все конфигурации выполняются до завершения. Дополнительные сведения см. в разделе "Указание политики раннего завершения".

Ресурсы для проведения операции

Вы можете контролировать ресурсы, потраченные на очистку гиперпараметра, указав max_trials и max_concurrent_trials для очистки.

Параметр Подробные сведения
max_trials Максимальное число конфигураций для очистки. Должно быть целым числом от 1 до 1000. При изучении только гиперпараметров по умолчанию для заданного алгоритма модели задайте для этого параметра значение 1. Значение по умолчанию — 1.
max_concurrent_trials Максимальное количество запусков, которые могут выполняться одновременно. Если задано, должно быть целым числом от 1 до 100. Значение по умолчанию — 1.

ЗАМЕТКА.
— количество параллельных запусков ограничено ресурсами, доступными в указанной целевой вычислительной среде. Убедитесь, что целевой объект вычислений имеет доступные ресурсы для требуемого параллелизма.
max_concurrent_trials значение ограничивается max_trials внутри системы. Например, если заданы значения max_concurrent_trials=4, max_trials=2, они обновляются внутри как max_concurrent_trials=2, max_trials=2.

В следующем примере показано, как настроить параметры, связанные с свипом.

sweep:
  limits:
    max_trials: 10
    max_concurrent_trials: 2
  sampling_algorithm: random
  early_termination:
    type: bandit
    evaluation_interval: 2
    slack_factor: 0.2
    delay_evaluation: 6

Известные проблемы

Некоторые наборы данных создают низкие оценки, даже ноль независимо от задачи NLP. Высокие значения потерь сопровождают эти оценки, подразумевая, что нейронной сети не удалось сойтись. Такие случаи являются редкими, но возможны, и могут происходить чаще на определенных сериях GPU.

Лучший способ обработки этих случаев — использовать настройку гиперпараметра и предоставить более широкий диапазон значений, особенно для гиперпараметров, таких как ставки обучения. Пока возможность настройки гиперпараметров не будет доступна в рабочей среде, используйте вычислительные кластеры NC6 или ND6 при возникновении этих проблем. Обычно эти кластеры имеют довольно стабильные результаты обучения.