Это второй пост из серии из двух частей, в которой я предлагаю практическое руководство для организаций, чтобы вы могли оценить качество моделей суммирования текста для своего домена.
Для введения в суммирование текста, обзора этого руководства и шагов по созданию базового плана для нашего проекта (также называемого разделом 1) обратитесь к первый пост.
Этот пост разделен на три раздела:
- Раздел 2. Генерация сводок с помощью нулевой модели
- Раздел 3. Обучение модели суммирования
- Раздел 4. Оценка обученной модели
Раздел 2. Генерация сводок с помощью нулевой модели
В этом посте мы используем понятие беспроблемное обучение (ZSL), что означает, что мы используем модель, которая была обучена резюмировать текст, но не видела ни одного примера набор данных arXiv. Это немного похоже на попытку нарисовать портрет, когда все, чем вы занимаетесь в своей жизни, — это рисование пейзажей. Вы умеете рисовать, но, возможно, не слишком хорошо знакомы с тонкостями портретной живописи.
Для этого раздела мы используем следующие ноутбук.
Почему обучение с нулевым выстрелом?
ZSL стал популярен в последние годы, потому что он позволяет вам использовать самые современные модели НЛП без обучения. И их производительность иногда просто поразительна: Рабочая группа больших научных исследований недавно выпустила свою модель T0pp (произносится как «T Zero Plus Plus»), которая была специально обучена для исследования многозадачного обучения с нулевым выстрелом. Он часто может превосходить модели в шесть раз больше на БОЛЬШАЯ скамья эталон, и может превзойти GPT-3 (в 16 раз больше) на нескольких других тестах НЛП.
Еще одним преимуществом ZSL является то, что для его использования требуется всего две строки кода. Пробуя его, мы создаем второй базовый уровень, который мы используем для количественной оценки повышения производительности модели после точной настройки модели в нашем наборе данных.
Настройте конвейер обучения с нулевым выстрелом
Чтобы использовать модели ZSL, мы можем использовать Hugging Face’s API конвейера. Этот API позволяет нам использовать модель суммирования текста всего с двумя строками кода. Он выполняет основные этапы обработки в модели НЛП:
- Предварительно обработайте текст в формат, понятный модели.
- Передайте предварительно обработанные входные данные модели.
- Постобработайте прогнозы модели, чтобы вы могли их понять.
Он использует модели суммирования, которые уже доступны на Хаб модели Hugging Face.
Чтобы использовать его, запустите следующий код:
Вот и все! Код загружает модель суммирования и создает сводки локально на вашем компьютере. Если вам интересно, какую модель он использует, вы можете найти ее в исходный код или используйте следующую команду:
Когда мы запускаем эту команду, мы видим, что модель по умолчанию для суммирования текста называется sshleifer/distilbart-cnn-12-6
:
Мы можем найти модель карты для этой модели на веб-сайте Hugging Face, где мы также можем видеть, что модель была обучена на двух наборах данных: Набор данных CNN Dailymail и Набор данных экстремального суммирования (XSum). Стоит отметить, что эта модель не знакома с набором данных arXiv и используется только для суммирования текстов, похожих на те, на которых она обучалась (в основном новостные статьи). Цифры 12 и 6 в названии модели относятся к количеству слоев кодировщика и слоя декодера соответственно. Объяснение того, что это такое, выходит за рамки этого руководства, но вы можете прочитать об этом больше в посте. Представляем БАРТ Сэм Шлейфер, создавший модель.
В будущем мы будем использовать модель по умолчанию, но я рекомендую вам попробовать другие предварительно обученные модели. Все модели, подходящие для обобщения, можно найти на Сайт обнимающего лица. Чтобы использовать другую модель, вы можете указать имя модели при вызове Pipeline API:
Извлекающее и абстрактное обобщение
Мы еще не говорили о двух возможных, но разных подходах к резюмированию текста: добывающий против абстрактный. Извлекательное обобщение — это стратегия объединения выдержек из текста в резюме, тогда как абстрактное обобщение включает в себя перефразирование корпуса с использованием новых предложений. Большинство моделей обобщения основаны на моделях, генерирующих новый текст (это модели генерирования естественного языка, как, например, GPT-3). Это означает, что модели реферирования также генерируют новый текст, что делает их абстрактными моделями реферирования.
Создавайте нулевые сводки
Теперь, когда мы знаем, как его использовать, мы хотим использовать его в нашем тестовом наборе данных — том же наборе данных, который мы использовали в раздел 1 для создания базовой линии. Мы можем сделать это с помощью следующего цикла:
Мы используем min_length
и max_length
параметры для управления сводкой, которую генерирует модель. В этом примере мы установили min_length
до 5, потому что мы хотим, чтобы заголовок состоял как минимум из пяти слов. И оценивая справочные резюме (фактические названия исследовательских работ), мы определяем, что 20 может быть разумным значением для max_length
. Но опять же, это только первая попытка. Когда проект находится на стадии экспериментов, эти два параметра можно и нужно изменить, чтобы увидеть, изменится ли производительность модели.
Дополнительные параметры
Если вы уже знакомы с генерацией текста, возможно, вы знаете, что существует множество других параметров, влияющих на текст, генерируемый моделью, например поиск луча, выборка и температура. Эти параметры дают вам больший контроль над генерируемым текстом, например, делают текст более беглым и менее повторяющимся. Эти методы недоступны в Pipeline API — вы можете увидеть в исходный код который min_length
и max_length
учитываются только параметры. Однако после обучения и развертывания собственной модели у нас есть доступ к этим параметрам. Подробнее об этом в разделе 4 этого поста.
Оценка модели
После того, как мы сгенерировали нулевые сводки, мы можем снова использовать нашу функцию ROUGE, чтобы сравнить сводки-кандидаты с эталонными сводками:
Выполнение этого расчета на сводках, созданных с помощью модели ZSL, дает нам следующие результаты:
Когда мы сравниваем их с нашим базовым уровнем, мы видим, что эта модель ZSL на самом деле работает хуже, чем наша простая эвристика, состоящая в том, чтобы просто взять первое предложение. Опять же, в этом нет ничего неожиданного: хотя эта модель умеет резюмировать новостные статьи, она никогда не видела примера резюмирования реферата научной исследовательской работы.
Базовое сравнение
Теперь мы создали две базовые линии: одну с использованием простой эвристики и одну с помощью модели ZSL. Сравнивая оценки ROUGE, мы видим, что простая эвристика в настоящее время превосходит модель глубокого обучения.
В следующем разделе мы возьмем ту же модель глубокого обучения и попытаемся улучшить ее производительность. Мы делаем это, обучая его на наборе данных arXiv (этот шаг также называется тонкая настройка). Мы пользуемся тем, что он уже умеет обобщать текст в целом. Затем мы показываем множество примеров нашего набора данных arXiv. Модели глубокого обучения исключительно хорошо выявляют шаблоны в наборах данных после того, как они на них обучены, поэтому мы ожидаем, что модель станет лучше справляться с этой конкретной задачей.
Раздел 3. Обучение модели суммирования
В этом разделе мы обучаем модель, которую мы использовали для нулевых сводок в разделе 2 (sshleifer/distilbart-cnn-12-6
) в нашем наборе данных. Идея состоит в том, чтобы научить модель тому, как выглядят резюме тезисов научных работ, показав ей множество примеров. Со временем модель должна распознавать закономерности в этом наборе данных, что позволит создавать более качественные сводки.
Стоит еще раз отметить, что если у вас есть размеченные данные, а именно тексты и соответствующие сводки, вы должны использовать их для обучения модели. Только так модель сможет изучить закономерности вашего конкретного набора данных.
Полный код для обучения модели приведен ниже. ноутбук.
Настроить обучающую работу
Поскольку обучение модели глубокого обучения на ноутбуке займет несколько недель, мы используем Создатель мудреца Амазонки вместо этого учебная работа. Для получения более подробной информации см. Обучите модель с помощью Amazon SageMaker. В этом посте я кратко расскажу о преимуществах использования этих обучающих заданий, помимо того факта, что они позволяют нам использовать экземпляры вычислений на GPU.
Предположим, у нас есть кластер экземпляров GPU, которые мы можем использовать. В этом случае мы, вероятно, захотим создать образ Docker для запуска обучения, чтобы мы могли легко воспроизвести среду обучения на других машинах. Затем мы устанавливаем необходимые пакеты, и, поскольку мы хотим использовать несколько экземпляров, нам также необходимо настроить распределенное обучение. Когда обучение будет завершено, мы хотим быстро выключить эти компьютеры, поскольку они обходятся дорого.
Все эти шаги абстрагируются от нас при использовании обучающих заданий. На самом деле мы можем обучить модель так же, как описано, указав параметры обучения, а затем просто вызвав один метод. SageMaker позаботится обо всем остальном, включая остановку экземпляров графического процессора после завершения обучения, чтобы не нести никаких дополнительных затрат.
Кроме того, ранее в 2022 году Hugging Face и AWS объявили о партнерстве, которое еще больше упрощает обучение моделей Hugging Face в SageMaker. Эта функция доступна благодаря разработке Hugging Face. Контейнеры глубокого обучения AWS (DLC). Эти контейнеры включают Hugging Face Transformers, Tokenizers и библиотеку наборов данных, что позволяет нам использовать эти ресурсы для обучения и логических выводов. Список доступных образов DLC см. в разделе Доступные Изображения контейнеров для глубокого обучения Hugging Face. Они поддерживаются и регулярно обновляются исправлениями безопасности. Мы можем найти много примеров того, как обучать модели Hugging Face с помощью этих DLC и Обнимающее лицо Python SDK В следующих Репо GitHub.
Мы используем один из этих примеров в качестве шаблона, потому что он делает почти все, что нам нужно для нашей цели: обучить модель суммирования для определенного набора данных распределенным образом (с использованием более одного экземпляра GPU).
Однако мы должны учитывать одну вещь: в этом примере используется набор данных непосредственно из концентратора наборов данных Hugging Face. Поскольку мы хотим предоставить свои собственные пользовательские данные, нам нужно немного изменить блокнот.
Передать данные в задание на обучение
Чтобы учесть тот факт, что мы приносим свой собственный набор данных, нам нужно использовать каналы. Для получения дополнительной информации см. Как Amazon SageMaker предоставляет обучающую информацию.
Лично я нахожу этот термин немного запутанным, поэтому я всегда думаю, отображение когда я слышу каналы, потому что это помогает мне лучше визуализировать происходящее. Поясню: как мы уже узнали, задание по обучению раскручивает кластер Эластичное вычислительное облако Amazon (Amazon EC2) и копирует на него образ Docker. Однако наши наборы данных хранятся в Простой сервис хранения Amazon (Amazon S3), и этот образ Docker не может быть доступен. Вместо этого задание обучения должно копировать данные из Amazon S3 по заранее определенному пути локально в этом образе Docker. Для этого мы сообщаем заданию обучения, где находятся данные в Amazon S3 и куда в образе Docker следует скопировать данные, чтобы задание обучения могло получить к ним доступ. Мы карта расположение Amazon S3 с локальным путем.
Мы устанавливаем локальный путь в разделе гиперпараметров обучающего задания:
Затем мы сообщаем заданию обучения, где находятся данные в Amazon S3, при вызове метода fit(), который запускает обучение:
Обратите внимание, что имя папки после /opt/ml/input/data
соответствует названию канала (datasets
). Это позволяет учебному заданию копировать данные из Amazon S3 в локальный путь.
Начать обучение
Теперь мы готовы начать тренировочную работу. Как упоминалось ранее, мы делаем это, вызывая метод fit()
метод. Учебное задание длится около 40 минут. Вы можете следить за ходом выполнения и просматривать дополнительную информацию в консоли SageMaker.
Когда работа по обучению завершена, пришло время оценить нашу недавно обученную модель.
Раздел 4. Оценка обученной модели
Оценка нашей обученной модели очень похожа на то, что мы делали в разделе 2, где мы оценивали модель ZSL. Мы вызываем модель и генерируем сводки-кандидаты и сравниваем их с эталонными сводками, вычисляя баллы ROUGE. Но теперь модель находится в Amazon S3 в файле с именем model.tar.gz
(чтобы найти точное местоположение, вы можете проверить тренировочное задание на консоли). Итак, как мы можем получить доступ к модели для создания сводок?
У нас есть два варианта: развернуть модель на конечной точке SageMaker или загрузить ее локально, как мы сделали в разделе 2 с моделью ZSL. В этом уроке я развернуть модель на конечной точке SageMaker потому что это более удобно, и, выбрав более мощный экземпляр для конечной точки, мы можем значительно сократить время вывода. Репозиторий GitHub содержит ноутбук который показывает, как оценить модель локально.
Развернуть модель
Обычно очень просто развернуть обученную модель в SageMaker (см. еще раз следующий пример на GitHub из обнимающего лица). После того, как модель обучена, мы можем вызвать estimator.deploy()
а SageMaker сделает все остальное за нас в фоновом режиме. Поскольку в нашем руководстве мы переключаемся с одной записной книжки на другую, мы должны сначала найти задание обучения и связанную с ним модель, прежде чем мы сможем ее развернуть:
После получения местоположения модели мы можем развернуть его на конечной точке SageMaker:
Развертывание в SageMaker является простым, поскольку оно использует Набор инструментов SageMaker Hugging Face Inference, библиотека с открытым исходным кодом для обслуживания моделей Transformers в SageMaker. Обычно нам даже не нужно предоставлять сценарий вывода; набор инструментов позаботится об этом. Однако в этом случае инструментарий снова использует Pipeline API, и, как мы обсуждали в разделе 2, Pipeline API не позволяет нам использовать расширенные методы генерации текста, такие как поиск луча и выборка. Чтобы обойти это ограничение, мы предоставляем пользовательский сценарий вывода.
Первая оценка
Для первой оценки нашей недавно обученной модели мы используем те же параметры, что и в разделе 2, с нулевой моделью для создания резюме кандидатов. Это позволяет сделать сравнение яблок с яблоками:
Мы сравниваем сводки, сгенерированные моделью, с эталонными сводками:
Это обнадеживает! Наша первая попытка обучить модель без какой-либо настройки гиперпараметров значительно улучшила показатели ROUGE.
Вторая оценка
Теперь пришло время использовать некоторые более продвинутые методы, такие как поиск луча и выборка, чтобы поиграть с моделью. Подробное объяснение того, что делает каждый из этих параметров, см. Как сгенерировать текст: использование различных методов декодирования для генерации языка с Transformers. Давайте попробуем это с полуслучайным набором значений для некоторых из этих параметров:
При запуске нашей модели с этими параметрами мы получаем следующие оценки:
Это не сработало так, как мы надеялись — баллы ROUGE немного снизились. Однако не позволяйте этому отбить у вас желание попробовать разные значения этих параметров. Фактически, это точка, где мы заканчиваем фазу настройки и переходим к фазе экспериментов проекта.
Заключение и следующие шаги
Мы завершили установку для этапа экспериментов. В этой серии из двух частей мы загрузили и подготовили наши данные, создали базовый уровень с помощью простой эвристики, создали еще один базовый уровень с помощью обучения с нулевым выстрелом, а затем обучили нашу модель и увидели значительное увеличение производительности. Теперь пришло время поэкспериментировать с каждой частью, которую мы создали, чтобы сделать резюме еще лучше. Рассмотрим следующее:
- Предварительно обработайте данные правильно – Например, удалить стоп-слова и знаки препинания. Не стоит недооценивать эту часть — во многих проектах по науке о данных предварительная обработка данных является одним из самых важных аспектов (если не самым важным), и специалисты по данным обычно тратят на эту задачу большую часть своего времени.
- Попробуйте разные модели – В нашем уроке мы использовали стандартную модель для суммирования (
sshleifer/distilbart-cnn-12-6
), но многие другие модели доступны, которые вы можете использовать для этой задачи. Один из них может лучше соответствовать вашему варианту использования. - Выполнить настройку гиперпараметров — При обучении модели мы использовали определенный набор гиперпараметров (скорость обучения, количество эпох и так далее). Эти параметры не высечены на камне — как раз наоборот. Вы должны изменить эти параметры, чтобы понять, как они влияют на производительность вашей модели.
- Используйте разные параметры для генерации текста – Мы уже сделали один раунд создания сводок с различными параметрами для использования поиска луча и выборки. Попробуйте разные значения и параметры. Для получения дополнительной информации см. Как сгенерировать текст: использование различных методов декодирования для генерации языка с Transformers.
Надеюсь, вы дочитали до конца и нашли этот урок полезным.
Об авторе
Хайко Хотц является старшим архитектором решений для искусственного интеллекта и машинного обучения и возглавляет сообщество обработки естественного языка (NLP) в AWS. До этой должности он был руководителем отдела обработки данных службы поддержки клиентов Amazon в ЕС. Heiko помогает нашим клиентам добиться успеха в их путешествии в области искусственного интеллекта и машинного обучения на AWS и сотрудничает с организациями во многих отраслях, включая страхование, финансовые услуги, СМИ и развлечения, здравоохранение, коммунальные услуги и производство. В свободное время Хайко как можно больше путешествует.
- Коинсмарт. Лучшая в Европе биржа биткойнов и криптовалют.
- Платоблокчейн. Интеллект метавселенной Web3. Расширение знаний. БЕСПЛАТНЫЙ ДОСТУП.
- КриптоХок. Альткоин Радар. Бесплатная пробная версия.
- Источник: https://aws.amazon.com/blogs/machine-learning/part-2-set-up-a-text-summarization-project-with-hugging-face-transformers/
- "
- &
- 100
- 2022
- 7
- 84
- 9
- О нас
- АБСТРАКТ НАЯ
- доступ
- Учетная запись
- дополнение
- дополнительный
- продвинутый
- плюс
- AI
- Все
- уже
- Несмотря на то, что
- Amazon
- объявило
- Другой
- API
- около
- статьи
- доступен
- AWS
- фон
- Базовая линия
- Ширина
- становиться
- не являетесь
- эталонный тест
- польза
- Немного
- призывают
- заботится
- изменение
- код
- сообщество
- Вычисление
- компьютеры
- сама концепция
- Консоли
- Контейнеры
- содержит
- контроль
- Удобно
- Расходы
- может
- создает
- Создающий
- изготовленный на заказ
- Служба поддержки игроков
- Клиенты
- данным
- наука о данных
- развертывание
- Развитие
- DID
- различный
- распределенный
- Docker
- не
- домен
- вниз
- загрузок
- легко
- поощрять
- Конечная точка
- Развлечения
- Окружающая среда
- EU
- многое
- пример
- ожидать
- Экстракты
- Face
- финансовый
- финансовые услуги
- Во-первых,
- соответствовать
- следовать
- после
- формат
- вперед
- найденный
- функция
- функциональность
- далее
- Общие
- порождать
- поколение
- GitHub
- будет
- хорошо
- GPU / ГРАФИЧЕСКИЙ ПРОЦЕССОР
- инструкция
- здравоохранение
- помогает
- Выделите
- Как
- How To
- HTTPS
- идея
- идентифицирующий
- изображение
- важную
- улучшать
- включают
- В том числе
- Увеличение
- промышленности
- повлиять
- информация
- устанавливать
- страхование
- тонкости
- IT
- работа
- Джобс
- Основные
- пейзаж
- язык
- портативный компьютер
- больше
- Лиды
- УЧИТЬСЯ
- узнали
- изучение
- Библиотека
- Список
- локальным
- в местном масштабе
- расположение
- Длинное
- машина
- обучение с помощью машины
- Продукция
- ДЕЛАЕТ
- производство
- Медиа
- против
- ML
- модель
- Модели
- БОЛЕЕ
- самых
- а именно
- натуральный
- Новости
- ноутбук
- номер
- номера
- Опции
- заказ
- организации
- Другое
- бумага & картон
- Партнерство
- Патчи
- производительность
- фаза
- Играть
- Точка
- Популярное
- возможное
- мощный
- Predictions
- Проект
- проектов
- предлагает
- обеспечивать
- приводит
- цель
- быстро
- разумный
- признавать
- обязательный
- исследованиям
- Полезные ресурсы
- ОТДЫХ
- Итоги
- год
- Run
- Бег
- Наука
- Ученые
- Поиск
- безопасность
- смысл
- Серии
- обслуживание
- Услуги
- выступающей
- набор
- значительный
- аналогичный
- просто
- ШЕСТЬ
- So
- Решения
- конкретно
- тратить
- Начало
- начинается
- современное состояние
- диск
- Стратегия
- успешный
- Коммутатор
- снижения вреда
- тестXNUMX
- Через
- время
- Название
- Обучение
- типично
- понимать
- us
- использование
- обычно
- использовать
- ценностное
- Вебсайт
- Что
- КТО
- Википедия.
- в
- без
- слова
- Работа
- разрабатывать
- работавший
- стоимость
- лет
- нуль