Настройка AutoML для обучения модели обработки естественного языка
ПРИМЕНИМО К:Расширение машинного обучения Azure CLI версии 2 (в настоящее время)Пакет SDK для Python azure-ai-ml версии 2 (текущая версия)
Ознакомившись с этой статьей, вы научитесь обучать модели обработки естественного языка (NLP) с помощью автоматизированного машинного обучения в пакете Машинного обучения Azure. Вы можете создавать модели NLP с помощью автоматизированного машинного обучения с помощью пакета SDK Python для Машинного обучения Azure версии 2 или ИНТЕРФЕЙСА командной строки Машинного обучения Azure версии 2.
Автоматизированное машинное обучение поддерживает NLP, что позволяет специалистам по машинном обучению и специалистам по обработке и анализу данных использовать собственные текстовые данные и создавать пользовательские модели для задач NLP. Задачи NLP включают многоклассовую классификацию текста, классификацию текста с несколькими метками и распознавание именованных сущностей (NER).
Также можно плавно интегрировать возможность маркировки данных Машинного обучения Azure, чтобы помечать текстовые данные или пользоваться уже помеченными данными. Автоматизированное ML позволяет использовать распределенное обучение на вычислительных кластерах с несколькими GPU для ускоренного обучения моделей. Результирующая модель может быть введена в эксплуатацию в большом масштабе с помощью возможностей MLOps Машинного обучения Azure.
Предварительные требования
ОБЛАСТЬ ПРИМЕНЕНИЯ:расширение Машинного обучения для Azure CLI версии 2 (текущая версия)
Подписка Azure. Если у вас нет подписки Azure, зарегистрируйтесь для использования бесплатной или платной версии службы Машинного обучения Azure.
Рабочая область Машинного обучения Azure с вычислительными ресурсами обучения GPU. Сведения о создании рабочей области см. в разделе Создание ресурсов рабочей области. Дополнительные сведения об экземплярах GPU, предоставляемых Azure, см. в статье Размеры виртуальных машин, оптимизированных для GPU .
Предупреждение
В некоторых вариантах использования NLP, таких как наборы данных не на английском языке и документы с увеличенным диапазоном, необходима поддержка многоязычных моделей и моделей с увеличенной наибольшей длиной последовательности. Вследствие этого в таких сценариях для обучения модели может потребоваться память GPU большего размера, например серии NCv3 или ND.
Установленное CLI для Машинного обучения Azure версии 2. Руководство по обновлению и установке последней версии см. в разделе Установка и настройка CLI (версия 2).
В этой статье предполагается, что вам известны основные принципы настройки эксперимента автоматизированного машинного обучения. Следуйте инструкциям практического руководства, чтобы ознакомиться с основными конструктивными шаблонами экспериментов автоматизированного машинного обучения.
Выбор задачи NLP
Определите, какую задачу NLP необходимо выполнить. В настоящее время в автоматизированном ML поддерживаются следующие задачи глубокой нейронной сети для NLP.
Задача | Синтаксис задания AutoML | Описание |
---|---|---|
Классификация текста по нескольким классам | CLI (версия 2): text_classification Пакет SDK (версия 2): text_classification() |
Существует множество возможных классов, и для каждого примера можно определить ровно один класс. Задача заключается в прогнозировании правильного класса для каждого примера. Например, классифицировать сценарий фильма как "Комедия" или "Романтический". |
Классификация текста по нескольким меткам | CLI (версия 2): text_classification_multilabel Пакет SDK (версия 2): text_classification_multilabel() |
Существует множество возможных классов, и каждому примеру можно назначить любое количество классов. Задача заключается в прогнозировании всех классов для каждого примера. Например, можно классифицировать сценарий фильма как "Комедия", "Романтический" или "Комедия и романтик". |
Распознавание именованных сущностей (NER) | CLI версии 2:text_ner Пакет SDK (версия 2): text_ner() |
Для токенов в последовательностях существует множество возможных тегов. Задача заключается в прогнозировании тегов для всех токенов в каждой последовательности. Например, извлечение сущностей, относящихся к предметной области, из неструктурированного текста, например контрактов или финансовых документов. |
Пороговое значение
Пороговое значение — это функция с несколькими метками, которая позволяет пользователям выбирать пороговое значение, которое прогнозируемые вероятности приведут к положительной метки. Более низкие значения позволяют использовать больше меток, что лучше, если пользователи больше заботятся об отзыве, но этот вариант может привести к большему количества ложных срабатываний. Более высокие значения позволяют уменьшить количество меток и, следовательно, лучше для пользователей, которые заботятся о точности, но этот вариант может привести к большему количества ложноотрицательных значений.
Подготовка данных
Для экспериментов NLP в автоматизированном машинном обучении (ML) можно подключить ваши данные в формате .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 most number of 3-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
, для распознавания именованных сущностей требуется формат 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
Проверка данных
Перед обучением модели автоматизированное машинное обучение применяет проверки входных данных, чтобы убедиться, что данные могут быть правильно обработаны. Если любая из этих проверок заканчивается неудачно, запуск тоже завершается сбоем с соответствующим сообщением об ошибке. Далее описаны требования для прохождения проверок данных для каждой задачи.
Примечание
Одни проверки данных применимы к наборам обучения и проверки, другие — только к набору обучения. Если тестовый набор данных не смог пройти проверку, это означает, что автоматизированное ML не смогло его записать и возможен сбой вывода модели или снижение ее производительности.
Задача | Проверка данных |
---|---|
Все задачи | Требуется как минимум 50 примеров для обучения |
Несколько классов и несколько меток | Данные для обучения и проверки должны содержать: – одинаковый набор столбцов – одинаковый порядок столбцов слева направо – одинаковый тип данных в столбцах с теми же именами – как минимум две уникальные метки – уникальные имена столбцов в каждом наборе данных (например, набор для обучения не должен содержать несколько столбцов Age) |
Только для нескольких классов | Нет |
Только для нескольких меток | – формат столбца меток должен быть допустимым – как минимум один пример должен либо не содержать меток, либо содержать более двух, иначе получится задача multiclass – все метки должны быть в формате str или int без пересечения У вас не должно быть как метки 1 , так и метки '1' |
Только для NER | — файл не должен начинаться с пустой строки. — Каждая строка должна быть пустой или соответствовать формату {token} {label} , где между маркером и меткой есть ровно один пробел, а после метки нет пробелов.– все метки должны начинаться с I- или B- либо быть в виде O С учетом регистра– ровно одна пустая строка между двумя примерами – ровно одна пустая строка в конце файла |
Настройка эксперимента
Возможность NLP автоматизированного машинного обучения активируется в рабочем процессе automl
, с помощью которого отправляются эксперименты автоматизированного машинного обучения для классификации, регрессии и прогнозирования. Параметры, такие как experiment_name
, compute_name
и входные данные, задаются одинаково для подобных экспериментов.
Однако есть значительные различия:
- Вы можете игнорировать
primary_metric
, так как он используется только для создания отчетов. В настоящее время автоматизированное ML может обучать только одну модель NLP за запуск, и выбрать модель невозможно. - Параметр
label_column_name
требуется только для задач классификации текста с несколькими классами и метками. - Если более 10 % выборок в наборе данных содержат более 128 маркеров, это считается большим диапазоном.
ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение ML для Azure CLI версии 2 (текущая версия)
Для автоматизированных заданий ML CLI версии 2 эксперимент настраивается в YAML-файле, как показано ниже.
языковые параметры;
В рамках возможностей NLP автоматизированное ML поддерживает 104 языка с использованием предварительно обученных языковых и многоязычных текстовых моделей глубокой нейронной сети, например семейство моделей BERT. В настоящее время по умолчанию выбран английский язык.
В следующей таблице описывается применение моделей в зависимости от типа и языка задач. См. полный список поддерживаемых языков и их кодов.
Тип задачи | Синтаксис для dataset_language |
Алгоритм текстовой модели |
---|---|---|
Классификация текста по нескольким меткам | "eng" "deu" "mul" |
Языковая модель BERT для английского языка в нижнем регистре Языковая модель BERT для немецкого языка Многоязычная языковая модель BERT Для остальных языков в автоматизированном ML применяется многоязычная языковая модель BERT. |
Классификация текста по нескольким классам | "eng" "deu" "mul" |
Языковая модель BERT для английского языка с учетом регистра Многоязычная языковая модель BERT Для остальных языков в автоматизированном ML применяется многоязычная языковая модель BERT. |
Распознавание именованных сущностей (NER) | "eng" "deu" "mul" |
Языковая модель BERT для английского языка с учетом регистра Языковая модель BERT для немецкого языка Многоязычная языковая модель BERT Для остальных языков в автоматизированном ML применяется многоязычная языковая модель BERT. |
ОБЛАСТЬ ПРИМЕНЕНИЯ:расширение Машинного обучения для Azure CLI версии 2 (текущая версия)
Вы можете указать язык набора данных в разделе конструирования признаков для файла YAML конфигурации. BERT также используется в процессе конструирования признаков при обучении эксперимента автоматизированного машинного обучения. Узнайте больше об интеграции BERT и конструировании признаков в автоматизированном МАШИНном обучении (ПАКЕТ SDK версии 1).
featurization:
dataset_language: "eng"
Распределенное обучение
Вы также можете выполнять эксперименты NLP с распределенным обучением в вычислительном кластере Машинного обучения Azure.
ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение ML для Azure CLI версии 2 (текущая версия)
Отправка задания AutoML
ОБЛАСТЬ ПРИМЕНЕНИЯ:расширение Машинного обучения для Azure CLI версии 2 (текущая версия)
Чтобы отправить задание AutoML, выполните следующую команду CLI версии 2 и укажите для нее путь к файлу yml, имя рабочей области, группу ресурсов и идентификатор подписки.
az ml job create --file ./hello-automl-job-basic.yml --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
Примеры кода
ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение ML для Azure CLI версии 2 (текущая версия)
Ознакомьтесь с указанным ниже примером файлов YAML для каждой задачи NLP.
Очистка модели и настройка гиперпараметров (предварительная версия)
Важно!
Эта функция сейчас доступна в виде общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания. Ее не следует использовать для производственных рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены.
Дополнительные сведения см. в статье Дополнительные условия использования предварительных выпусков 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
- роберта-бейс
- roberta-large
- distilroberta-base
- xlm-roberta-base
- xlm-roberta-large
- xlnet-base-cased
- xlnet-large-cased
Обратите внимание, что большие модели больше, чем их базовые аналоги. Как правило, они более производительны, но занимают больше памяти GPU и времени для обучения. Таким образом, их требования к SKU являются более строгими: мы рекомендуем запускать на виртуальных машинах серии ND для достижения наилучших результатов.
Поддерживаемые алгоритмы модели — HuggingFace (предварительная версия)
С помощью новой серверной части, работающей в конвейерах Машинного обучения Azure, вы можете дополнительно использовать любую модель классификации текста и маркеров из HuggingFace Hub для классификации текстов, классификации маркеров , которая является частью библиотеки преобразователей (например, microsoft/deberta-large-mnli). Вы также можете найти проверенный список моделей в реестре моделей Машинного обучения Azure , которые были проверены с помощью компонентов конвейера.
Использование любой модели HuggingFace приведет к запуску с использованием компонентов конвейера. Если используются модели прежних версий и HuggingFace, все запуски и пробные версии будут запускаться с помощью компонентов.
Поддерживаемые гиперпараметры
В следующей таблице описаны гиперпараметры, поддерживаемые AutoML NLP.
Имя параметра | Описание | Синтаксис |
---|---|---|
gradient_accumulation_steps | Количество операций назад, градиенты которых должны быть суммированы перед выполнением одного шага градиентного спуска путем вызова функции step оптимизатора. Это необходимо для использования эффективного размера пакета, который в 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 | Значение распада веса, если оптимизатор имеет значение sgd, adam или adamw. | Должно быть значением типа float в диапазоне [0, 1]. |
Все дискретные гиперпараметры разрешают только распределения выбора, такие как гиперпараметры с целым числом training_batch_size
и гиперпараметры со строковым типом model_name
. Все непрерывные гиперпараметры, такие как learning_rate
, поддерживают все распределения.
Настройка параметров очистки
Вы можете настроить все параметры, связанные с очисткой. Несколько подпространств модели можно создать с помощью гиперпараметров, условных для соответствующей модели, как показано в примере настройки каждого гиперпараметров.
Здесь поддерживаются те же дискретные и непрерывные варианты распространения, которые доступны для общих заданий HyperDrive. Просмотр всех девяти параметров в разделе Настройка модели гиперпараметров
ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение ML для Azure CLI версии 2 (текущая версия)
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 |
Бюджет эксперимента
При необходимости можно указать бюджет эксперимента для задания обучения NLP AutoML, используя timeout_minutes
параметр в limits
— время в минутах до завершения эксперимента. Если ни один из них не указан, время ожидания эксперимента по умолчанию составляет семь дней (максимум 60 дней).
AutoML NLP также поддерживает trial_timeout_minutes
, максимальное количество времени в минутах, которое может быть запущено отдельной пробной версией перед завершением, и max_nodes
максимальное количество узлов из резервного вычислительного кластера, используемого для задания. Эти параметры также относятся к разделу limits
.
ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение ML для Azure CLI версии 2 (текущая версия)
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 . |
Вы можете настроить все параметры очистки, как показано в этом примере.
ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение ML для Azure CLI версии 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, полученные оценки могут быть очень низкими, иногда даже нулевыми. Эта оценка сопровождается более высокими значениями потерь, что означает, что нейронной сети не удалось свестись. Эти оценки могут возникать чаще на определенных номерах SKU GPU.
Хотя такие случаи редки, они возможны, и лучший способ их обработки — использовать настройку гиперпараметров и предоставлять более широкий диапазон значений, особенно для гиперпараметров, таких как скорость обучения. Пока наша возможность настройки гиперпараметров не будет доступна в рабочей среде, мы рекомендуем пользователям, у которых возникли эти проблемы, использовать вычислительные кластеры NC6 или ND6. Эти кластеры обычно имеют довольно стабильные результаты обучения.