Ідентифікація перефразованого тексту має ділову цінність у багатьох випадках використання. Наприклад, визначивши перефрази речень, система узагальнення тексту могла б видалити зайву інформацію. Інша програма – ідентифікація документів, які були піддані плагіату. У цій публікації ми детально налаштуємо a Обіймати обличчя трансформатор увімкнений Amazon SageMaker визначити пари перефразованих речень за кілька кроків.
По-справжньому надійна модель може ідентифікувати перефразований текст, коли мова, яка використовується, може бути абсолютно різною, а також визначити відмінності, якщо мова, що використовується, має високе лексичне перекриття. У цій публікації ми зосередимося на останньому аспекті. Зокрема, ми дивимося, чи можемо ми навчити модель, яка зможе визначити різницю між двома реченнями, які мають високе лексичне перекриття та дуже різні або протилежні значення. Наприклад, наступні речення мають однакові слова, але протилежне значення:
- Я летів з Нью-Йорка до Парижа
- Я летів з Парижа до Нью-Йорка
Огляд рішення
Ми проведемо вас через такі кроки високого рівня:
- Налаштуйте середовище.
- Підготуйте дані.
- Токенізуйте набір даних.
- Тонко налаштуйте модель.
- Розгорніть модель і зробіть висновки.
- Оцініть продуктивність моделі.
Якщо ви хочете пропустити налаштування середовища, ви можете використовувати наведений нижче блокнот GitHub і запустіть код у SageMaker.
Раніше в 2022 році Hugging Face і AWS оголосили про партнерство, яке спрощує навчання моделей Hugging Face на SageMaker. Ця функція доступна завдяки розробці Hugging Face Контейнери глибокого навчання AWS (DLC). Ці контейнери включають Hugging Face Transformers, Tokenizer і бібліотеку Datasets, що дозволяє нам використовувати ці ресурси для навчання та роботи з висновками. Список доступних зображень DLC див Доступні зображення контейнерів глибокого навчання. Вони підтримуються та регулярно оновлюються виправленнями безпеки. Ви можете знайти багато прикладів того, як тренувати моделі Hugging Face за допомогою цих DLC і SDK для Python Hugging Face у наступному GitHub репо.
Набір даних PAWS
Усвідомлюючи відсутність ефективних наборів даних пар речень, які демонструють високе лексичне перекриття без перефразування, оригінал Плесна Набір даних, випущений у 2019 році, мав на меті надати спільноті з обробки природних мов (NLP) новий ресурс для навчання та оцінки моделей виявлення парафраз. Пари речень PAWS генеруються в два кроки за допомогою Вікіпедія і Пари запитань Quora (QQP) набір даних. Мовна модель спочатку міняє слова в парі речень з тим самим пакетом слів (BOW), щоб створити пару речень. Крок зворотного перекладу потім генерує парафрази з великим перекриттям BOW, але з використанням іншого порядку слів. Остаточний набір даних PAWS містить загалом 108,000 656,000 позначених людиною пар і XNUMX XNUMX пар із шумами.
У цій публікації ми використовуємо PAWS-Wiki з міткою (останнє) набір даних із Hugging Face. Hugging Face вже здійснив для нас розділення даних, що призводить до 49,000 8,000 пар речень у наборі навчальних даних і 1 XNUMX пар речень кожна для наборів даних перевірки та тестування. У наступному прикладі показано два приклади пар речень із навчального набору даних. Мітка XNUMX означає, що ці два речення є перефразами одне одного.
Вирок 1 | Вирок 2 | етикетка |
Хоча є взаємозамінними, кузовні частини на 2 автомобілях не схожі. | Незважаючи на схожість, частини кузова не є взаємозамінними на 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 та артефактів моделі:
Підготуйте дані
Ми можемо завантажити версію Hugging Face набору даних PAWS з його load_dataset()
команда. Цей виклик завантажує та імпортує сценарій обробки PAWS Python із репозиторію Hugging Face GitHub, який потім завантажує набір даних PAWS з оригінальної URL-адреси, збереженої в сценарії, і кешує дані у вигляді таблиці зі стрілками на диску. Дивіться наступний код:
Перш ніж ми почнемо налаштовувати нашу попередньо навчену модель BERT, давайте подивимося на розподіл цільового класу. Для нашого випадку використання набір даних PAWS має двійкові мітки (0 вказує, що пара речень не є перефразою, а 1 — це). Давайте створимо стовпчасту діаграму, щоб переглянути розподіл класів, як показано в наступному коді. Ми бачимо, що в нашому навчальному наборі є невелика проблема з дисбалансом класів (56% негативних вибірок проти 44% позитивних). Однак дисбаланс досить малий, щоб уникнути застосування методів пом’якшення дисбалансу класів.
Токенізуйте набір даних
Перш ніж ми зможемо розпочати точне налаштування, нам потрібно токенізувати наш набір даних. Для початку припустимо, що ми хочемо точно налаштувати й оцінити roberta-base
трансформатор. Ми вибрали roberta-base
тому що це універсальний трансформатор, який був попередньо навчений на великому корпусі англійських даних і часто показував високу продуктивність у різноманітних завданнях НЛП. Модель спочатку була представлена в статті RoBERTa: надійно оптимізований підхід до переробки BERT.
Виконуємо лексемизацію речень з a roberta-base
tokenizer від Hugging Face, який використовує кодування пар байтів на рівні байтів, щоб розділити документ на маркери. Додаткову інформацію про токенізатор RoBERTa див RobertaTokenizer. Оскільки наші вхідні дані є парами речень, нам потрібно токенізувати обидва речення одночасно. Оскільки більшість моделей BERT вимагає, щоб вхід мав фіксовану токенізовану довжину введення, ми встановлюємо такі параметри: max_len=128
та truncation=True
. Дивіться наступний код:
Останній крок попередньої обробки для точного налаштування нашої моделі BERT полягає в перетворенні токенізованих наборів поїздів і даних перевірки в тензори PyTorch і завантаження їх у наше відро S3:
Точна настройка моделі
Тепер, коли ми закінчили з підготовкою даних, ми готові до тонкого налаштування наших попередньо навчених roberta-base
модель за завданням ідентифікації перефразування. Ми можемо використовувати клас SageMaker Hugging Face Estimator, щоб розпочати процес тонкого налаштування в два кроки. Перший крок — це вказати навчальні гіперпараметри та визначення метрики. Змінна визначення метрики повідомляє інструменту 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
визначає загальний розмір RAM безсерверної кінцевої точки; мінімальний розмір оперативної пам’яті становить 1024 МБ (1 ГБ), а його можна масштабувати до 6144 МБ (6 ГБ). Як правило, ви повинні прагнути вибрати розмір пам’яті, який принаймні такий же великий, як розмір вашої моделі. max_concurrency
визначає квоту на те, скільки одночасних викликів може бути оброблено одночасно (до 50 одночасних викликів) для однієї кінцевої точки.
Нам також потрібно надати URI зображення висновку Hugging Face, який ви можете отримати за допомогою такого коду:
Тепер, коли у нас є файл конфігурації без сервера, ми можемо створити безсерверну кінцеву точку так само, як і нашу кінцеву точку висновку в реальному часі, використовуючи .deploy()
метод:
Кінцева точка має бути створена за кілька хвилин.
Виконайте модельний висновок
Щоб зробити передбачення, нам потрібно створити пару речень, додавши [CLS]
та [SEP]
спеціальні токени і згодом подати вхідні дані кінцевим точкам моделі. Синтаксис для висновку в реальному часі та безсерверного висновку однаковий:
У наступних прикладах ми бачимо, що модель здатна правильно класифікувати, чи містить вхідна пара речень перефразовані речення.
Нижче наведено приклад висновку в реальному часі.
Нижче наведено приклад безсерверного висновку.
Оцініть продуктивність моделі
Щоб оцінити модель, давайте розширимо попередній код і надішлемо всі 8,000 невидимих тестових записів на кінцеву точку реального часу:
Далі ми можемо створити звіт про класифікацію за допомогою витягнутих прогнозів:
Ми отримуємо наступні результати тесту.
Ми можемо це спостерігати roberta-base
має комбінований макросередній бал F1 92% і трохи краще розпізнає речення, які є перефразами. The 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%.
Щоб розширити це рішення, зверніть увагу на таке:
- Спробуйте налаштувати свій власний набір даних. Якщо у вас недостатньо навчальних міток, ви можете оцінити продуктивність точно налаштованої моделі, як показано в цій публікації, на спеціальному наборі тестових даних.
- Інтегруйте цю детально налаштовану модель у програму, що знаходиться нижче по ходу, яка потребує інформації про те, чи є два речення (або блоки тексту) перефразами одне одного.
Щаслива будівля!
Про авторів
Бала Крішнамурті є Data Scientist з AWS Professional Services, де йому подобається застосовувати машинне навчання для вирішення бізнес-проблем клієнтів. Він спеціалізується на обробці природних мов і працював із клієнтами в таких галузях, як програмне забезпечення, фінанси та охорона здоров’я. У вільний час він любить пробувати нову їжу, дивитися комедії та документальні фільми, тренуватися в Orange Theory, а також гуляти на воді (кататися на веслах, снорклінг і, сподіваюся, незабаром дайвінг).
Іван Цуй є дослідником даних з професійними службами AWS, де він допомагає клієнтам створювати та впроваджувати рішення за допомогою машинного навчання на AWS. Він працював з клієнтами в різних галузях промисловості, включаючи програмне забезпечення, фінанси, фармацевтику та охорону здоров'я. У вільний час він із задоволенням читає, проводить час із сім’єю та максимізує портфель акцій.
- Coinsmart. Найкраща в Європі біржа біткойн та криптовалют.
- Платоблокчейн. Web3 Metaverse Intelligence. Розширені знання. БЕЗКОШТОВНИЙ ДОСТУП.
- CryptoHawk. Альткойн Радар. Безкоштовне випробування.
- Джерело: https://aws.amazon.com/blogs/machine-learning/identify-paraphrased-text-with-hugging-face-on-amazon-sagemaker/
- '
- "
- 000
- 10
- 100
- 2019
- 2022
- 84
- МЕНЮ
- доступ
- рахунки
- досягнутий
- через
- ВСІ
- вже
- Amazon
- оголошений
- Інший
- додаток
- Застосування
- приблизно
- аргументація
- доступний
- AWS
- буття
- Переваги
- тіло
- border
- будувати
- бізнес
- call
- здатний
- автомобілів
- випадків
- вантажі
- Вибирати
- Місто
- клас
- класифікація
- код
- Колонка
- комбінований
- співтовариство
- повністю
- обчислення
- довіра
- Контейнери
- містить
- може
- створювати
- створений
- виготовлений на замовлення
- клієнт
- Клієнти
- дані
- вчений даних
- демонструвати
- продемонстрований
- Залежно
- розгортання
- розгорнути
- розгортання
- деталі
- Виявлення
- розробка
- різний
- розподіл
- документальні фільми
- документація
- завантажень
- управляти
- ефективний
- Кінцева точка
- англійська
- Навколишнє середовище
- встановити
- оцінювати
- приклад
- проявляти
- Розширювати
- Face
- сім'я
- особливість
- фінансування
- Перший
- політ
- Сфокусувати
- стежити
- після
- харчування
- Безкоштовна
- Повний
- функція
- функціональність
- майбутнє
- Головна мета
- в цілому
- породжувати
- GitHub
- добре
- великий
- охорона здоров'я
- висота
- допомагає
- тут
- Високий
- вище
- хостинг
- Як
- How To
- HTTPS
- Ідентифікація
- ідентифікувати
- ідентифікує
- Особистість
- зображення
- включати
- У тому числі
- промисловості
- інформація
- вхід
- встановлювати
- зацікавлений
- питання
- IT
- Джобс
- етикетки
- мова
- великий
- запуск
- вивчення
- бібліотека
- список
- загрузка
- машина
- навчання за допомогою машини
- РОБОТИ
- управляти
- пам'ять
- Метрика
- ML
- модель
- Моделі
- більше
- найбільш
- множинний
- Природний
- негативний
- Нью-Йорк
- Нью-Йорк
- ноутбук
- Пропозиції
- оптимізований
- Опції
- порядок
- Інше
- власний
- Папір
- Паріс
- Партнерство
- Проходження
- Патчі
- продуктивність
- періодів
- фармацевтична
- точка
- Політика
- портфель
- позитивний
- практика
- прогноз
- Прогнози
- проблеми
- процес
- обробка
- професійний
- забезпечувати
- питання
- Quora
- Оперативна пам'ять
- рядок
- читання
- реального часу
- рекомендувати
- облік
- випущений
- звітом
- Сховище
- вимагати
- ресурс
- ресурси
- результати
- повертати
- прогін
- біг
- шкала
- Масштабування
- вчений
- безпеку
- обраний
- Без сервера
- Послуги
- комплект
- установка
- аналогічний
- простий
- Розмір
- невеликий
- Софтвер
- solid
- рішення
- Рішення
- ВИРІШИТИ
- спеціальний
- спеціалізується
- конкретно
- Витрати
- Спін
- розкол
- старт
- почалася
- починається
- акції
- зберігання
- зберігати
- Згодом
- поставка
- Швеція
- система
- Мета
- завдання
- методи
- розповідає
- тест
- через
- час
- Токенізація
- токенізований
- Жетони
- топ
- факел
- трафік
- Навчання
- Переклад
- us
- використання
- перевірка достовірності
- значення
- різноманітність
- вид
- вода
- Що
- Чи
- Вікіпедія
- в
- без
- слова
- працював
- робочий
- розробка