Перевод англоязычных датасетов на русский язык с помощью OpenNMT

Мир несправедлив, в том числе в объеме доступных русскоязычных датасетов для NLP.
В связи с ростом качества нейросетевых систем машинного перевода возникает мысль прогонять тексты через такой переводчик.
Я взял OpenNMT и en-ru модель отсюда.
На входе - англоязычные диалоги.

Результаты:

- Hello!
- Hi! How are you?
- Not bad! And You?
- I'm doing well. Just got engaged to my high school sweetheart.
- Wowowowow! Congratulations! Is she pretty?
- She 's pretty cute. She invited me to dinner tonight. 🙂
- Cool! Have a good time you both! And what is your hobby?
- I love music! I love Taylor swift. 😉
- Me too. And what about Iggy Pop?
- I love Ziggy! He is my favorite. Are you and your wife millennial too?
- I have no wife. And I'm not millenial, I'm X generation. Hey? Where are you?
- I am sorry to hear that. What do you do for fun?
- I'm playing pipe organ.
- That sounds impressive. I like to go out to eat with my friends.
- Cool! See ya!
----------------------------------------------------
- Здравствуйте!
- Привет! Как дела?
- Неплохо!
- У меня все хорошо.
- Воовы! Поздравляем!
- Она довольно симпатичная.
- Классно провели время вместе!
- Я люблю музыку! Я люблю Тейлор Свифт.
А что насчет Игги Попа?
- Я люблю Зигги! Он мой любимый.
- У меня нет жены. И я не милленал, я - Х поколение.
- Мне очень жаль это слышать.
- Я играю на органе.
- Звучит впечатляюще.
- Круто!



Временами появляется бред, но его не так уж много, так что ручная модерация должна помочь:

- Я разработчик программного обеспечения.
- О, круто.
- Я танцую барабан и базу!

немножно теста NVidia RTX 3090

Примерно час в боевом режиме тренировки модели (файнтюнинг GPT2).
Размер батч подобран так, чтобы как раз влезало в 24 Гб памяти на борту карточки.
Collapse )




Впечатления от работы и нюансы установки:

1) Работает только под новыми драйверами (я ставил 455) и с CUDA 11. Под CUDA 10 не работает.

2) С транковыми дистрами tensorflow и torch не работает.

3) Чтобы завелось с торчем, надо ставить его ночную сборку:

pip install --pre torch torchvision -f https://download.pytorch.org/whl/nightly/cu110/torch_nightly.html

Если просто поставить последнюю версию 1.7, то будет ругаться на неподдерживаемое оборудование.

4) Завести с tensorflow не удалось. Любая попытка использовать транковый tf с CUDA 10 или nightly сборку (pip install tf-nightly-gpu==2.5.0.dev20201028) с CUDA 11 заканчивается либо зависанием, либо кучей ошибок, когда используется RTX 3090. При этом запуск на CPU или на GTX 1080 Ti выполняется нормально. В общем, ждем, когда появится поддержка в стабильной версии.

UPDATE: Если поставить самую распоследнюю ночную сборку (вчерашнюю) tensorflow, то на 3090 тоже вроде запускается тренировка. Но при этом загрузка всех динамических библиотек (всяких libcuda*.so) идет как-то слишком долго.

5) Кушает действительно много, до 330 Вт точно.

6) Греется, где-то до 77C. Шума практически нет.

7) Толстая (3 слота).

PS: на одной из NLP задач с реккурентными сетками, которую успел погонять, RTX3090 практически в 2.5 быстрее, чем GTX 1080 Ti.

Тест на сознание: практический подход

Коллега alexander-xom написал интересный материал Тест на сознание.

В целом, это очень неплохое функциональное представление плана для "эмоционального бота", через тесты :)

Под "эмоциональным ботом" подразумеваю систему, которая имеет внутренние мотивации, простейшим (и древнейшим, если говорить о живых системах) случаем которых будут эмоции.

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

Вопрос: Как на практике может выглядеть механизм таких "хотений" в рамках вопросно-ответной системы?
Collapse )

а ruGPT2 хорош, да

Даже после переобучения на небольшом кусочке (~10%) датасета читчата модель ruGPT2Large начала выдавать вполне годные реплики, хорошо попадающие в контекст беседы:
Collapse )
Болдом выделены фразы, которые приходят именно из сервиса ruGPT2. Беседует тут, кстати, только неживая материя - два бота.

Немного мудрости от читчата

Из тестовой выдачи - моделька читчата генерит ответы на вопросы "что такое" и "кто такой":
Collapse )

Самое эпичное - творческий подход к морфологии, аппроксимация "пенал" до "пенальти" и то, что модель сделала с воротами:

- что такое пенал ?
- штрафной удар по воротамал .

Эксперименты с GPT-2 в чатботе

В тестовый стенд чатбота интегрирована модель GPT-2, дообученная на массиве диалогов. Общий объем диалогов после отфильтровывания мата и жаргона - около 1 Гб, в основном чит-чат. Процедуру обучения GPT-2 пришлось немного доработать, так как оригинальный код рассчитан на большие тексты, а у нас - короткие реплики.

Некоторые тестовые разговоры двух ботов:
Collapse )

Небольшая проверка Sentence Trasformers на русскоязычных данных

Библиотечка https://www.sbert.net/docs/ содержит удобные инструменты как для получения эмбеддингов предложений (согласно доке, поддерживается 100 языков), так для некоторых базовых операций со списками предложений. Например, очень просто делается поиск ближайшего предложения для запроса. При этом используется косинусная метрика близости.

Уместный вопрос - насколько хорошо это работает "из коробки"?

Я сделал небольшой эксперимент с двумя моделями:
Collapse )


Кажется, что работает это с переменным успехом.

Планы по чатботу

Итак, текущее состояние проекта чатбота зафиксировано в релизе 0.0.2.16. Вика стала многословней и чуточку лучше поддерживает чит-чат:
Collapse )
Иногда тестовый бот раскручивает Вику на диалоги из 20+ реплик (с ошибками, увы, над ними еще работать и работать):Collapse )
Что в планах?

1. Надо что-то делать с составными ответами. Например, для человека естественным является такой обмен репликами:

- как тебя зовут
- меня Витя, а тебя?

Collapse )