Идентификация перефразированного текста имеет ценность для бизнеса во многих случаях использования. Например, идентифицируя перефразирование предложений, система суммирования текста может удалить избыточную информацию. Еще одним приложением является выявление плагиата документов. В этом посте мы настраиваем Обнимая лицо трансформатор включен Создатель мудреца Амазонки определить пары перефразированных предложений за несколько шагов.
По-настоящему надежная модель может идентифицировать перефразированный текст, когда используемый язык может быть совершенно другим, а также выявлять различия, когда используемый язык имеет большое лексическое перекрытие. В этом посте мы сосредоточимся на последнем аспекте. В частности, мы смотрим, можем ли мы обучить модель, которая может определять разницу между двумя предложениями, которые имеют большое лексическое совпадение и очень разные или противоположные значения. Например, в следующих предложениях одни и те же слова, но противоположные значения:
- Я летел из Нью-Йорка в Париж
- Я летел из Парижа в Нью-Йорк
Обзор решения
Мы проведем вас через следующие общие этапы:
- Настройте среду.
- Подготовьте данные.
- Токенизировать набор данных.
- Настройте модель.
- Разверните модель и выполните вывод.
- Оцените производительность модели.
Если вы хотите пропустить настройку среды, вы можете использовать следующую записную книжку на GitHub и запустите код в SageMaker.
Ранее в 2022 году Hugging Face и AWS объявили о партнерстве, которое еще больше упрощает обучение моделей Hugging Face в SageMaker. Эта функция доступна благодаря разработке Hugging Face. Контейнеры глубокого обучения AWS (DLC). Эти контейнеры включают Hugging Face Transformers, Tokenizers и библиотеку наборов данных, что позволяет нам использовать эти ресурсы для обучения и логических выводов. Список доступных образов DLC см. Доступные образы контейнеров глубокого обучения. Они поддерживаются и регулярно обновляются исправлениями безопасности. Вы можете найти много примеров того, как обучать модели Hugging Face с помощью этих DLC и Обнимающее лицо Python SDK В следующих Репо GitHub.
Набор данных PAWS
Понимая нехватку эффективных наборов данных пар предложений, которые демонстрируют высокое лексическое перекрытие, но не являются перефразированием, оригинал ПЛЮСНЫ набор данных, выпущенный в 2019 году, призван предоставить сообществу обработки естественного языка (NLP) новый ресурс для обучения и оценки моделей обнаружения парафраз. Пары предложений PAWS генерируются в два этапа с использованием Википедия. и Пары вопросов Quora (QQP) набор данных. Языковая модель сначала меняет местами слова в паре предложений с одним и тем же пакетом слов (BOW), чтобы создать пару предложений. Затем на этапе обратного перевода создаются парафразы с большим перекрытием BOW, но с другим порядком слов. Окончательный набор данных PAWS содержит в общей сложности 108,000 656,000 пар, помеченных человеком, и XNUMX XNUMX пар, помеченных шумом.
В этом посте мы используем PAWS-Wiki Labeled (финал) набор данных из Hugging Face. Hugging Face уже выполнил для нас разделение данных, в результате чего в наборе обучающих данных было 49,000 8,000 пар предложений, а в наборах данных проверки и тестирования — по 1 XNUMX пар предложений. В следующем примере показаны два примера пар предложений из обучающего набора данных. Метка XNUMX указывает, что два предложения являются парафразами друг друга.
Приговор 1 | Приговор 2 | этикетка |
Несмотря на взаимозаменяемость, части кузова на двух автомобилях не похожи. | Несмотря на то, что детали кузова на двух автомобилях похожи, они не взаимозаменяемы. | 0 |
Кац родился в Швеции в 1947 году и переехал в Нью-Йорк в возрасте 1 года. | Кац родился в 1947 году в Швеции и переехал в Нью-Йорк в возрасте одного года. | 1 |
Предпосылки
Вам необходимо выполнить следующие предварительные условия:
- Зарегистрируйте учетную запись AWS, если у вас ее нет. Для получения дополнительной информации см. Настройка предварительных условий для Amazon SageMaker.
- Начните использовать Экземпляры записных книжек SageMaker.
- Настройте правильно Управление идентификацией и доступом AWS (IAM) разрешения. Для получения дополнительной информации см. Роли SageMaker.
Настройте среду
Прежде чем мы начнем изучать и подготавливать наши данные для тонкой настройки модели, нам нужно настроить нашу среду. Начнем с запуска экземпляра ноутбука SageMaker. Выберите регион AWS в своей учетной записи AWS и следуйте инструкциям, чтобы создать экземпляр блокнота SageMaker. Для запуска экземпляра ноутбука может потребоваться несколько минут.
Когда экземпляр записной книжки запущен, выберите conda_pytorch_p38
как ваш тип ядра. Чтобы использовать набор данных Hugging Face, нам сначала нужно установить и импортировать библиотеку Hugging Face:
Далее давайте установим сеанс SageMaker. Мы используем по умолчанию Простой сервис хранения Amazon (Amazon S3), связанный с сеансом SageMaker, для хранения набора данных PAWS и артефактов модели:
Подготовьте данные
Мы можем загрузить версию набора данных PAWS для Hugging Face с его load_dataset()
команда. Этот вызов загружает и импортирует сценарий обработки PAWS Python из репозитория Hugging Face на GitHub, который затем загружает набор данных PAWS из исходного URL-адреса, хранящегося в сценарии, и кэширует данные в виде таблицы Arrow на диске. См. следующий код:
Прежде чем мы начнем тонкую настройку нашей предварительно обученной модели BERT, давайте посмотрим на наше целевое распределение классов. В нашем случае набор данных PAWS имеет двоичные метки (0 означает, что пара предложений не является перефразированием, а 1 указывает, что это так). Давайте создадим столбчатую диаграмму для просмотра распределения классов, как показано в следующем коде. Мы видим, что в нашем обучающем наборе есть небольшая проблема дисбаланса классов (56% отрицательных образцов против 44% положительных образцов). Однако дисбаланс достаточно мал, чтобы избежать использования методов смягчения дисбаланса классов.
Маркировать набор данных
Прежде чем мы сможем приступить к тонкой настройке, нам нужно токенизировать наш набор данных. В качестве отправной точки предположим, что мы хотим настроить и оценить roberta-base
трансформатор. Мы выбрали roberta-base
потому что это преобразователь общего назначения, предварительно обученный на большом массиве данных на английском языке и часто демонстрирующий высокую производительность в различных задачах НЛП. Первоначально модель была представлена в статье Роберта: надежно оптимизированный подход к предварительной подготовке BERT.
Мы выполняем токенизацию предложений с roberta-base
tokenizer от Hugging Face, который использует кодировку байтовой пары на уровне байтов для разделения документа на токены. Для получения более подробной информации о токенизаторе RoBERTa см. РобертаТокенайзер. Поскольку наши входные данные представляют собой пары предложений, нам нужно токенизировать оба предложения одновременно. Поскольку большинство моделей BERT требуют, чтобы ввод имел фиксированную токенизированную длину ввода, мы устанавливаем следующие параметры: max_len=128
и truncation=True
, Смотрите следующий код:
Последним шагом предварительной обработки для точной настройки нашей модели BERT является преобразование токенизированных наборов данных поезда и проверки в тензоры PyTorch и загрузка их в нашу корзину S3:
Точная настройка модели
Теперь, когда мы закончили с подготовкой данных, мы готовы к точной настройке нашего предварительно обученного roberta-base
модель на задаче идентификации перефразирования. Мы можем использовать класс SageMaker Hugging Face Estimator, чтобы начать процесс точной настройки в два этапа. Первый шаг — указать гиперпараметры обучения и определения метрик. Переменная определения метрик сообщает оценщику Hugging Face Estimator, какие типы метрик следует извлекать из журналов обучения модели. Здесь нас в первую очередь интересует извлечение метрик проверочного набора в каждую эпоху обучения.
Второй шаг — создание экземпляра Оценщика обнимающего лица и запуск процесса точной настройки с помощью .fit()
Метод:
Процесс тонкой настройки занимает примерно 30 минут с использованием указанных гиперпараметров.
Разверните модель и выполните вывод
SageMaker предлагает несколько вариантов развертывания в зависимости от вашего варианта использования. Для постоянных конечных точек в реальном времени, которые делают один прогноз за раз, мы рекомендуем использовать Услуги хостинга SageMaker в режиме реального времени. Если у вас есть рабочие нагрузки, которые имеют периоды простоя между скачками трафика и допускают холодный запуск, мы рекомендуем использовать Бессерверный вывод. Бессерверные конечные точки автоматически запускают вычислительные ресурсы и масштабируют их в зависимости от трафика, устраняя необходимость выбирать типы экземпляров или управлять политиками масштабирования. Мы демонстрируем, как развернуть нашу отлаженную модель Hugging Face как в конечной точке логического вывода в реальном времени, так и в конечной точке бессерверного логического вывода.
Развертывание в конечной точке логического вывода в реальном времени
Вы можете развернуть учебный объект на хостинге для логического вывода в реальном времени в SageMaker, используя .deploy()
метод. Полный список допустимых параметров см. Обнимающая модель лица. Для начала давайте развернем модель на один экземпляр, передав следующие параметры: initial_instance_count
, instance_type
и endpoint_name
, Смотрите следующий код:
Развертывание модели занимает несколько минут. После развертывания модели мы можем отправить образцы записей из невидимого набора тестовых данных в конечную точку для вывода.
Развертывание на конечной точке бессерверного вывода
Чтобы развернуть наш учебный объект на бессерверной конечной точке, нам нужно сначала указать бессерверный файл конфигурации с memory_size_in_mb
и max_concurrency
аргументы:
memory_size_in_mb
определяет общий размер оперативной памяти вашей бессерверной конечной точки; минимальный размер ОЗУ составляет 1024 МБ (1 ГБ) и может увеличиваться до 6144 МБ (6 ГБ). Как правило, вы должны стремиться выбрать объем памяти, который по крайней мере равен размеру вашей модели. max_concurrency
определяет квоту на количество одновременных вызовов, которые могут быть обработаны одновременно (до 50 одновременных вызовов) для одной конечной точки.
Нам также необходимо указать URI изображения для вывода Hugging Face, который можно получить с помощью следующего кода:
Теперь, когда у нас есть бессерверный файл конфигурации, мы можем создать бессерверную конечную точку так же, как и нашу конечную точку логического вывода в реальном времени, используя .deploy()
Метод:
Конечная точка должна быть создана за несколько минут.
Выполнить вывод модели
Чтобы делать прогнозы, нам нужно создать пару предложений, добавив [CLS]
и [SEP]
специальные токены и впоследствии отправить входные данные на конечные точки модели. Синтаксис для вывода в реальном времени и бессерверного вывода одинаков:
В следующих примерах мы видим, что модель способна правильно классифицировать, содержит ли входная пара предложений перефразированные предложения.
Ниже приведен пример логического вывода в реальном времени.
Ниже приведен пример бессерверного вывода.
Оцените производительность модели
Чтобы оценить модель, давайте расширим предыдущий код и отправим все 8,000 невидимых тестовых записей в конечную точку в реальном времени:
Затем мы можем создать отчет о классификации, используя извлеченные прогнозы:
Получаем следующие результаты теста.
Мы можем заметить, что roberta-base
имеет комбинированный макро-средний балл F1 92% и немного лучше справляется с обнаружением предложений, которые являются перефразированием. roberta-base
Модель работает хорошо, но рекомендуется вычислять производительность модели, используя хотя бы одну другую модель.
Следующая таблица сравнивает roberta-base
результаты производительности на том же тестовом наборе по сравнению с другим точно настроенным трансформатором, называемым paraphrase-mpnet-base-v2
, преобразователь предложений, предварительно обученный специально для задачи идентификации перефразирования. Обе модели обучались на экземпляре ml.p3.8xlarge.
Результаты показывают, что roberta-base
имеет на 1% более высокий балл F1 с очень похожим временем обучения и логического вывода при использовании хостинга логического вывода в реальном времени на SageMaker. Однако разница в производительности между моделями относительно незначительна. roberta-base
в конечном итоге является победителем, поскольку у него немного лучшие показатели производительности и почти одинаковое время обучения и вывода.
Точность | Вспоминать | F1-оценка | Время обучения (оплачивается) | Время вывода (полный набор тестов) | |
Роберта-Бейс | 0.92 | 0.93 | 0.92 | 18 минут | 2 минут |
перефразировать-mpnet- база-v2 |
0.92 | 0.91 | 0.91 | 17 минут | 2 минут |
Убирать
Когда вы закончите использовать конечные точки модели, вы можете удалить их, чтобы избежать будущих расходов:
Заключение
В этом посте мы обсудили, как быстро построить модель идентификации парафраз с помощью преобразователей Hugging Face в SageMaker. Мы доработали два предварительно обученных трансформатора, roberta-base
и paraphrase-mpnet-base-v2
, используя набор данных PAWS (который содержит пары предложений с высоким лексическим перекрытием). Мы продемонстрировали и обсудили преимущества инференса в реальном времени по сравнению с развертыванием бессерверного инференса, последний из которых представляет собой новую функцию, предназначенную для скачкообразных рабочих нагрузок и избавляющую от необходимости управлять политиками масштабирования. На невидимом тестовом наборе с 8,000 записей мы продемонстрировали, что обе модели получили оценку F1 более 90%.
Чтобы расширить это решение, рассмотрите следующее:
- Попробуйте выполнить точную настройку с помощью собственного пользовательского набора данных. Если у вас недостаточно обучающих меток, вы можете оценить производительность точно настроенной модели, подобной той, что продемонстрирована в этом посте, на пользовательском тестовом наборе данных.
- Интегрируйте эту отлаженную модель в нижестоящее приложение, которому требуется информация о том, являются ли два предложения (или блоки текста) пересказами друг друга.
Счастливое строительство!
Об авторах
Бала Кришнамурти — специалист по данным в AWS Professional Services, где ему нравится применять машинное обучение для решения бизнес-задач клиентов. Он специализируется на примерах использования обработки естественного языка и работал с клиентами в таких отраслях, как программное обеспечение, финансы и здравоохранение. В свободное время он любит пробовать новую еду, смотреть комедии и документальные фильмы, тренироваться в Orange Theory и отдыхать на воде (гребля на байдарках, подводное плавание и, надеюсь, скоро дайвинг).
Иван Кюи — специалист по данным в AWS Professional Services, где он помогает клиентам создавать и развертывать решения с использованием машинного обучения в AWS. Он работал с клиентами в различных отраслях, включая программное обеспечение, финансы, фармацевтику и здравоохранение. В свободное время он любит читать, проводить время с семьей и максимизировать свой портфель акций.
- Коинсмарт. Лучшая в Европе биржа биткойнов и криптовалют.
- Платоблокчейн. Интеллект метавселенной Web3. Расширение знаний. БЕСПЛАТНЫЙ ДОСТУП.
- КриптоХок. Альткоин Радар. Бесплатная пробная версия.
- Источник: https://aws.amazon.com/blogs/machine-learning/identify-paraphrased-text-with-hugging-face-on-amazon-sagemaker/
- '
- "
- 000
- 10
- 100
- 2019
- 2022
- 84
- О нас
- доступ
- Учетная запись
- достигнутый
- через
- Все
- уже
- Amazon
- объявило
- Другой
- Применение
- Применение
- примерно
- Аргументы
- доступен
- AWS
- не являетесь
- Преимущества
- тело
- граница
- строить
- бизнес
- призывают
- способный
- легковые автомобили
- случаев
- расходы
- Выберите
- Город
- класс
- классификация
- код
- Column
- сочетании
- сообщество
- полностью
- Вычисление
- доверие
- Контейнеры
- содержит
- может
- Создайте
- создали
- изготовленный на заказ
- клиент
- Клиенты
- данным
- ученый данных
- демонстрировать
- убивают
- в зависимости
- развертывание
- развернуть
- развертывание
- подробнее
- обнаружение
- Развитие
- различный
- распределение
- документальные фильмы
- Документация
- загрузок
- управлять
- эффективный
- Конечная точка
- Английский
- Окружающая среда
- установить
- оценивать
- пример
- проявлять
- Расширьте
- Face
- семья
- Особенность
- финансы
- First
- полет
- Фокус
- следовать
- после
- питание
- Бесплатно
- полный
- функция
- функциональность
- будущее
- общее назначение
- в общем
- порождать
- GitHub
- хорошо
- большой
- здравоохранение
- высота
- помогает
- здесь
- High
- высший
- хостинг
- Как
- How To
- HTTPS
- Идентификация
- определения
- идентифицирующий
- Личность
- изображение
- включают
- В том числе
- промышленности
- информация
- вход
- устанавливать
- заинтересованный
- вопрос
- IT
- Джобс
- Этикетки
- язык
- большой
- запуск
- изучение
- Библиотека
- Список
- загрузка
- машина
- обучение с помощью машины
- ДЕЛАЕТ
- управлять
- Память
- Метрика
- ML
- модель
- Модели
- БОЛЕЕ
- самых
- с разными
- натуральный
- отрицательный
- New York
- Нью-Йорк
- ноутбук
- Предложения
- оптимизированный
- Опции
- заказ
- Другое
- собственный
- бумага & картон
- Париж
- Партнерство
- Прохождение
- Патчи
- производительность
- периодов
- в Фармацевтической отрасли
- Точка
- сборах
- «портфель»
- положительный
- практика
- прогноз
- Predictions
- проблемам
- процесс
- обработка
- профессиональный
- обеспечивать
- вопрос
- Quora
- Оперативная память
- все
- Reading
- реального времени
- рекомендовать
- учет
- выпустил
- отчету
- хранилище
- требовать
- ресурс
- Полезные ресурсы
- Итоги
- возвращают
- Run
- Бег
- Шкала
- масштабирование
- Ученый
- безопасность
- выбранный
- Serverless
- Услуги
- набор
- установка
- аналогичный
- просто
- Размер
- небольшой
- Software
- твердый
- Решение
- Решения
- РЕШАТЬ
- особый
- специализируется
- конкретно
- Расходы
- Вращение
- раскол
- Начало
- и политические лидеры
- начинается
- акции
- диск
- магазин
- впоследствии
- поставка
- Швеция
- система
- цель
- задачи
- снижения вреда
- говорит
- тестXNUMX
- Через
- время
- лексемизацию
- лексемы
- Лексемы
- топ
- факел
- трафик
- Обучение
- Переводы
- us
- использование
- Проверка
- ценностное
- разнообразие
- Вид
- Вода
- Что
- будь то
- Википедия.
- в
- без
- слова
- работавший
- работает
- разработка