Русский
Русский
English
Статистика
Реклама

Тестируем ruGPT-3 на новых задачах

Рекомендательные системы с нуля, чат-боты и многое другое


Погрузившись в пучину текстовых данных, в октябре этого года мы обучили модели ruGPT-3 модели для русского языка на основе архитектуры от OpenAI. Но на что же способны эти модели? В этой статье мы соберем первые примеры применения модели и попробуем новые.

Мы представляем первые результаты самой большой из обученных моделей ruGPT-3 Large, разработанной совместно с командами SberDevices, Sber.AI и SberCloud. Изучим границы ее применения вместе с вами.

image

В этом году на AI Journey мы подготовили соревнование применений ruGPT-3 в трек можно сдать любое решение с использованием модели, оцениваемое по трем шкалам инновационность, эмоциональное вовлечение и бизнес-применимость.
Спойлер:
1 млн рублей за первое место



Как дообучить модель на новой задаче?


Модели и код к ним находятся в репозитории sberbank-ai: можно использовать библиотку transformers или Megatron-LM.

В этой статье я привожу примеры с использованием huggingface/transformers код для кейсов приведены здесь:

Карточки моделей в библиотеке transformers: Large Medium Small

При запуске скрипта генерации проще сделать Run all и затем немного подождать, пока модель загрузится.
image
Скрипт в последней ячейке попросит ввести начало текста моя любимая затравка: Бразильские ученые открыли редкий вид карликовых единорогов, обитающих на западе Ютландии. Получаем:
ruGPT-3 Small: Бразильские ученые открыли редкий вид карликовых единорогов, обитающих на западе Ютландии. Об этом сообщает Agence France-Presse. Единорог, получивший название Pygmaliona (лат. Pygmaliona pygmalioni), был обнаружен исследователями в ходе работ в области биологии. Его длина составляет менее 30 сантиметров, а масса около 1 килограмма. Животное относится к семейству единороговых. В его рационе преобладают растения, в том числе и карликовые деревья.


В Colab-ноутбук помещается только ruGPT-3 Small, поэтому лучше используйте карточки с памятью больше 14Gb.

Кстати, на время соревнования мы даем участникам дорожки доступ к мощностям Christofari!
Для участников трека ruGPT-3 мы выделили 100 аккаунтов в каждом аккаунте 1 GPU Tesla V100-SXM3 32 Gb бесплатно на время соревнования.
Как получить аккаунт?
1) Зарегистрируйтесь на трек ruGPT-3 (AI 4 Humanities) ods.ai/tracks/aij2020
2) Напишите короткое письмо с названием вашей команды и задачей на AIJ_ruGPT-3@sberbank.ru

image

Few-Shot vs Fine Tuning


В случае с такими большими генеративными моделями, как GPT-like архитектуры, есть несколько способов управиться с ними.
  • Первый способ: назовем его традиционный дообучить модель на доступном количестве примеров выполнять конкретное задание. В таком случае генеративная модель выучит формат ввода и вывода (GPT-3 очень редко ошибается в формате), и будет генерировать данные согласно вашей задаче. Это может быть разметка данных (в формате исходный текст текст в разметке) или просто генерация по заданному началу.
  • Второй способ: новый, называемый обычно затравочное программирование (англ. prompt engineering с легкой руки [Гверна Бренуэна] (http://personeltest.ru/aways/www.gwern.net/GPT-3#prompts-as-programming) мы даже ничего не дообучаем, а сразу пытаемся получить из модели то, что хотим.

Как работает затравочное программирование?


Дообучать большие модели бывает очень дорого, поэтому такой способ общения с ними позволяет избежать даже этого. Суть затравочного программирования в том, чтобы подобрать такие заготовленные примеры и начала для генерации, чтобы дальше модель выдавала ровно то, что надо.
Подбирая затравки и гиперпараметры генератора (температура, top_n, top_k), можно добиться вполне сносных ответов за счет только предварительного обучения модели.
image
Пример затравки с 1 примером и описание задачи.

Протестируем оба способа на практике попробуем решить популярные задачи с нуля, а специфичные решить с дообучением.

Рекомендательные системы


Сделаем рекомендательную систему без обучения: будем подавать ruGPT-3 Large информацию о предпочтениях пользователя в виде текста, и будем смотреть, как модель продолжит его. Можем сгенерировать сразу много вариантов, чтобы получить побольше рекомендаций.

Рекомендации фильмов:
Затравка: Мои любимые фильмы Матрица, Олдбой,
ruGPT-3 Large: Мои любимые фильмы Матрица, Олдбой, Крёстный отец, Игра в имитацию, Остин Пауэрс.
ruGPT-3 Large: Мои любимые фильмы Матрица, Олдбой, Спасение рядового Райана, Нечто, Затура (последняя, кстати, стоит того, чтобы ее посмотреть).
ruGPT-3 Large: Мои любимые фильмы Матрица, Олдбой, Эквилибриум и др.


Затравка: Я люблю советские комедии: Приключения Шурика,
ruGPT-3 Large: Я люблю советские комедии: Приключения Шурика, Собака на сене и Веселые ребята.
ruGPT-3 Large: Я люблю советские комедии: Приключения Шурика, Любовь и голуби.
ruGPT-3 Large: Я люблю советские комедии: Приключения Шурика, Три плюс два, Служебный роман и другие.


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

Рекомендации музыки:
Затравка: Тем людям, кому нравится Гражданская оборона, также понравятся группы #(как обычно, специально оставляем незакрытую кавычку)
ruGPT-3 Large: Тем людям, кому нравится Гражданская оборона, также понравятся группы Ленинград и Пикник.
ruGPT-3 Large: Тем людям, кому нравится Гражданская оборона, также понравятся группы ДДТ и Король и Шут.
ruGPT-3 Large: Тем людям, кому нравится Гражданская оборона, также понравятся группы Алиса, Доктор Пеппер, Машина времени, ДДТ и Крематорий.

Результаты получаются все время разные потенциально можно нагенерировать N вариантов, извлечь все названия групп и собрать Counter самых популярных вуаля рекомендательная система с нуля.

Генерация отзывов



Возьмем более сложную задачу заставим модель мимикрировать под человека в обсуждениях или магазинах:
Затравка: Напиши комментарий под видео.
Опять какой-то челлендж
ruGPT-3 Large: Напиши комментарий под видео.
Опять какой-то челлендж решили провести. Это даже не флешмоб, это уже идиотизм.


Затравка: Напиши отзыв о стиральной машине.
Данная модель стиральной машины
ruGPT-3 Large: Напиши отзыв о стиральной машине.
Данная модель стиральной машины оснащена встроенной функцией самоочистки.
В конструктивном решении стиральной машины предусмотрено устройство автоматического затирания воды, которая способна удалять накипь и прочие загрязнения даже в труднодоступных местах.
Стоит отметить, что после процедуры чистки, во время отжима появляется специфический запах. У некоторых моделей, в результате эксплуатации, он сохраняется в течение всего срока службы стиральной машины.


Завтравка: Напиши отзыв о фильме.
Фильм "1+1"
ruGPT-3 Large: Напиши отзыв о фильме.
Фильм "1+1" очень нравится, хотя и смотреть его стоит не каждому. Актёрский состав в нём великолепен. Смотрится без особого напряжения и с интересом. В фильме очень много смешных моментов. Так же советую посмотреть фильм "Зелёная книга", также фильм с Дженнифер Лопес и Крисом де Бургом.


Как видим, для тематик, широко распространенных в интернете, модель может генерировать связные тексты и без обучения. Но где же без дообучения все же никак?
Таких случая можно выделить 3:
сложный формат данных если при генерации без обучения вы теряете качество за счет генерации в неправильном формате задача NER, генерация кода, символьные вычисления и т.д.;
явная необходимость отвечать согласно заданному набору знаний, правил вы делаете QA по документации вашей компании, по учебникам, вики, без примеси социальных сетей и личного мнения;
ваша задача, скорее всего, не представлена в текстах рунета достаточно, чтобы модель могла хорошо генерировать в ее рамках например, генерация изображений по текстам.

StackOverflow


Поднимем планку сложности: скачаем русский [stack overflow](http://personeltest.ru/aways/ru.stackoverflow.com/) и попробуем сделать вопросно-ответную систему. Сможем ли мы сразу выучить и стиль ответов, и знания, и несколько языков программирования? Сразу получить хороший результат в таокй задаче нелегко, но мы можем развлечься за 5 эпох модель научилась воспроизводить стилистику, сильно путаясь в содержании. Зато хорошо выучила ссылки на документацию вполне неплохой итог для 5 эпох обучения.

Формат обучения: подаем тексты вопросов и лучших ответов в формате Q:blabla A:blabla.

Q: Как мне вывести список в обратном порядке в python? Я новичок
A: Простейший способ получить необходимый список: push.log("Shalom").
Установка значения означает угрозу попыткой нажатий на какую-нибудь цифру справа, поэтому я действую наоборот. Изменение размера и числа означает перегрузку времени активации
set.log()**)
rGet = puts.random(extents) log.findIndex(puts.current) void join($window, command='unsetMainServer onManager') }
Нет ничего хуже, чем полный дебаггинг


Q: Как мне вывести список в обратном порядке в python? Я новичок
A: import pycode as pyc;
// в этой статье я рассказал о месте показа списка в моей программе (подробно в статье href=https://docs.python.org/3/library/pycode.html )

(такой библиотеки на самом деле нет, модель сгенерировала ссылку на документацию)

Для таких задач можно вводить дополнительные аргументы например, название раздела/тематики/языка программирования, про который нужно ответить, и обучать модель на данных вида {параметр: значение, вопрос: текст_вопроса, ответ: текст_ответа}.

По части и кода, и текста сразу у нас пока фейл может, кто-то сделает лучше в рамках трека? На англоязычной модели с кодом уже есть вполне удачные реализации: написание html-кода элементов веб-страниц, генерация шаблонов Figma.

Пробуем другие языки! Twitter и не только


Основной язык обучения модели русский, но можно ли применять модель в мультиязычных задачах? Чуть-чуть других языков всегда попадает в обучающую выборку из веба, поэтому надежда есть. Прямолинейный подход с затравками показывает, что про английский модель немного знает:
ruGPT-3 Large:
кошка > cat
собака > dog
груша > pear
программист > coder

Ну, почти:
кошка > cat
собака > dog
груша > pear
питонист > Python

Иногда и совсем не получается:
кошка > cat
собака > dog
груша > pear
яблоко > bunch # пошел продолжать дальше
Кошка > dog
Хомяк > cat
Зверёк > dog

image

Почему бы не потренироваться на чисто англоязычных данных: я взяла датасет twitter-text-classification из Kaggle-соревнования.

После 5 эпох на 5 тысячах первых комментариев (20 минут в Colab) получаем вполне сносную генерацию очень даже токсичных комментариев на английском:

Context >>> Is it
ruGPT-3 Small: Is it's the case that #Microsoft is using #SAP to manage #Microsofts business?

Context >>> It is
ruGPT-3 Small: It is the only one that I've been trying to do. Siri is on the verge of death, and I'm not aware of why she has to be on the verge.

Context >>> Why
ruGPT-3 Small: Why do I go here? I'm wondering if I can use the #Microsoft Windows 8 Pro for the #WindowsPhone phone? Thanks!

Диалоговые системы


Уже сейчас, без предобучения, довольно хорошо работает применения модели к диалоговым системам: модель может выполнять функцию chit-chat (разговор ни о чем), свободно болтая на различные темы. С дообучением на конкретных сценариях и доменах можно реализовать и бизнес-приложения.
Пример ниже пример диалога без обучения, на узконаправленную тему саппорт интернет-провайдера.
Затравка: первые 2 строчки дальше генерация.
User1: Привет, я Маша! Чем могу помочь?
User2: У меня не работает интернет.
User1: Какой у вас тариф?
User2: У меня тариф 500мбит
User1: Что случилось?
User2: Проблемы с интернетом. Т.е. с телефоном. Я сейчас отключу сеть и подключу телефон
User1: Почему Вы звоните сейчас?
User2: Потому что я зашел на оф. сайт, а там скорость какая-то маленькая...
User1: Вы говорите, что скорость маленькая, но, может быть, она и должна быть маленькой?
User2: Но я до этой скорости не дотерпел
User1: Извините, мы тут не при чем. Мы позвонили в службу поддержки и сказали, что Вы звоните на этот номер.
User2: Мы звонили, но никто не отвечал. Я попробовал еще раз.
User1: У меня не получается подключиться к интернету. У меня кабель, значит, пропадает.
User2: Прошу Вас, скажите, что у вас происходит?
User1: Почему такая скорость?
User2: Мы приносим свои извинения. Но Вы в любом случае должны внести плату за интернет и все подключить.
User1: Все оплатить?
User2: Да
User1: У меня нет сейчас такой возможности. Я предлагаю Вам прийти на нашу бесплатную горячую линию и проверить оборудование.
User1: Извините, но я сейчас не могу. Надо кое-что оплатить.
User2: Пожалуйста, я свяжусь с вами в течение дня.
User1: Да
User2: Спасибо

Конечно, без предобучения у модели нет явного представления о сценариях и скриптах специалистов поддержки, однако, даже такой холодный старт уже показывает стандартный путь выяснить, что произошло отболтаться перенаправить звонок. Можно вспомнить классику:
User1: Техническая поддержка Стрима, инженер 656, Дмитрий, здравствуйте.
User2: Договор оформлен на Уральского, телефон 7661669, у меня к вам следующий вопрос: а вот скажите мне пожалуйста, что, когда теперь заканчивается сессия, что, теперь, это теперь будут разрывы при моём тарифе, да?
User1: Данная тарификация установлена с 1 сентября. Как только будут разрывы в телефонной связи, оператор будет сразу обращаться к вашему оператору, чтобы узнать с вами ли вы.
User2: Я так понимаю, что, да, то есть я что-то потерял в связи с этим?
User1: Да, поскольку с 1 сентября меняется тарифная сетка. То есть, до этого были какие-то перебои с доступом в интернет, на некоторых серверах было около месяца, что это было связано с перебоями в телекоме, вот это всё. Но не более того.
User2: Я специально проверял, там было просто кратковременные задержки, были, я бы сказал, какие-то незначительные.
User1: Да.
User2: То есть, ничего не потеряли?
User1: Ну как, надо немножко потерпеть, потерпеть.
User2: Спасибо, Дмитрий, до встречи.

В общем, надо потерпеть. Модель даже запомнила, что User1 зовут Дмитрий, и User2 соответствующе с ним попрощался.

Вместо заключения


Чтобы продолжать развивать направление генеративных моделей и улучшать архитектуры в задачах NLP, всегда необходимо понимать границы применимости той или иной технологии и ее востребованность.

Сейчас с каждым выходом подобных архитектур Reformer, Longformer, BigBird и т.д. мы смотрим на большие предобученные модели немного по-новому, ставя перед ними новые задачи.

Помимо вышеупомянутых кейсов, ruGPT-3 точно может применяться и приносить пользу в таких практиках, как:
  • аугментация текстовых данных для задач ML
  • диалоговые модели для автоматизации
  • задачи генеративной суммаризации
  • рерайтинг, генерация новостей, спортивных заметок по структурированной информации.


Надеемся, что демо и модели принесут сообществу пользу и фан!

И, конечно, ждем ваших решений на треке ruGPT-3 до конца 22 ноября!
Источник: habr.com
К списку статей
Опубликовано: 20.11.2020 14:23:38
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Блог компании сбер

Блог компании sberdevices

Машинное обучение

Искусственный интеллект

Natural language processing

Artificial intelligence

Gpt-3

Gpt

Text generation

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru