Как стать автором
Обновить

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

Время на прочтение9 мин
Количество просмотров50K
Всего голосов 20: ↑18 и ↓2+25
Комментарии51

Комментарии 51

Очень захватывающе, спасибо! Всегда с большим увлечением читаю новости о GPT-3.


Не подскажете: какое минимальное железо требуется чтобы запустить хотя бы минимальную версию ruGPT?


В идеале хотелось бы готовый docker-image, который можно просто запустить на любом лэптопе и попробовать поиграться с сетью.

Спасибо! Минимально нужно 14Gb памяти на GPU — на лэптопе или в Колабе: colab.research.google.com/drive/1bwNxmVJMJ3x_N5ylS-nylkQpHUAF0DES?usp=sharing клонируется репо, там есть все requirements к питоновским библиотекам.

Вот еще примре со школьного трека — обучаем сетку за 20 минут писать сочинения в колабе: colab.research.google.com/drive/1h6r6Qg9xwyIzz6-FXgB9tIjAzce0gc2d?usp=sharing

"Мама, купи мне GTX 3090! Это для учёбы, честно!"

То есть это gpt-3-small? Боюсь спросить, а large тогда что требует?
Ну на одну Tesla V100-SXM3 32 Gb помещается
Это другая сторона медали вот таких здоровых моделей, конечно
Dell HHCJ6 NVIDIA Tesla K80 24GB GDDR5 PCI-E 3.0 Server GPU Accelerator

То есть такой железки должно хватить?
Получение ответов от сети работает на 3gb 1060 для моделей small и medium. Донастройка уже не получается.
Как бы без всяких соревнований, конкурсов, розыгрышей и всей этой моложожной хайп-требухи привинтить GPT-3 к своему боту и сидеть с ним баловаться?
А кто вам мешает? Берите из репозитория и используйте.
Примеров бы (а не призывов).
Примеров чего? В тексте есть и ссылки на Colab-нетбуки и примеры использования.
Вот скриншот всего «ноутбука».

image

После знакомства с теми же нотубуками на kaggle, прямо скажем, ожидаешь хотя бы не трёх пунктов по полстроки с непонятно чем.

Впрочем, политика понятна. Наверное, поэтому у вас аудитория — пара десятков человек (и все журналисты), а у людей, на которых вы ссылаетесь — пара миллионов.
Напишите, пожалуйста, конкретные пожелания по расширению, и мы постараемся их учесть.
Я не знаю, какие у меня пожелания по расширению, их сейчас нет, потому что я даже не понимаю, как освоить работу с имеющейся моделью. Я не ультрагик, которому всё уже самодостаточно и который готов трепетать на одну аббревиатуру.

Единственный путь — идти на англоязычный сайт мимо вас и там с ними работать. Как освоюсь там, может быть напишу.
К сожалению, я пока не очень понимаю, чего именно вы хотите. Вы что-то не понимаете, но что именно не понимаете сказать не можете. Поэтому мне трудно вам помочь.
Ну понятно, лол, я ж не журналист.
Хотелось бы, например, чтобы вы показали параметры и код для каждого приведённого примера. А то, вот, народ (внизу) запускает и не получает того же самого (качественно).
Ну штош, ни вы, ни я не журналисты. Народ (внизу) запускает и получает нормальные результаты. Параметры и код для каждого примера — принято, будут.
Человек просит мануал по запуску.
То есть как человеку который ранее не увлекался ML — запустить эту систему.
Какой софт надо ставить, как запускать и т.д.

Нужен python, и библиотеки из нашего репозитория.


Либо просто ничего не ставить, а запускать все готовое в колаб-ноутбуке (ссылки в статье) — это такая бесплатная среда для программирования на python

В колабе есть конкретный пример, но можно делать и без него.
все модели есть, и код к ним: репо

Вот рабочий ноутбук с загрузкой маленькой модели colab.research.google.com/github/sberbank-ai/ru-gpts/blob/master/examples/ruGPT3_generation_example.ipynb
А что с ним в этом виде делать и, главное, зачем? Менять циферки наобум и любоваться на строчку текста?
Context >>> пользователь zazar не понимает
11/20/2020 12:13:56 - WARNING - transformers.modeling_utils -   Setting `pad_token_id` to 50256 (first `eos_token_id`) to generate sequence
ruGPT:
пользователь zazar не понимает, о чём говорит пользователь ma_sam.  Но это не значит, что он не понимает, о чём говорит пользователь ma_sam. 
 Пользователь ma_sam, в свою очередь, не понимает, о чём говорит пользователь zazar. 
 Таким образом, мы имеем ситуацию, когда пользователь ma_sam, не понимая о чём говорит пользователь ma_sam, не понимая о чём говорит пользователь zazar, не понимает, о чём говорит пользовател
Context >>>

Нажмите Runtime -> Runn all, когда все ячейки выполнятся, тогда в конце будет Context >>> и туда можно ввести текст свой.

Ну, подобную пену я получал ещё во время первого анонса ruGPT-3. Даже скриншот прилагал: habr.com/ru/company/sberbank/blog/524522/#comment_22290054
Хотелось бы, к примеру, чтобы это была квазиосмысленная беседа, а не просто выдернутая откуда-то цитата (плохо скомпонованная и обрезанная) по ключевому слову, чем она вот так вот, как вы привели, выглядит.
Чувствуется черрипикинг. Не в том смысле, что подобраны удачные примеры, а в том, что предлагаемые скрипты и параметры запуска к таким результатам не приводят.

1) В примерах из поста модель всегда генерирует законченное предложение.
На деле без тюнинга так не получается – приходится эвристикой обрезать до самой правой точки.
2) (но связано с 1) Модель генерирует столько токенов, сколько указано в параметре length. Модель не обучалась на токене конца текста – поэтому приходится загружать модель снова, чтобы ожидать текст примерно другой длины. Скрипты тюнинга не позволяют добавить собственные токены (приходится дописывать реализацию).
3) Параметры запуска не соответствуют тем, которые приложены в примере на колабе.

Если взять «рекомендуемые» параметры запуска, на примере с диалогом саппорта мы получим следующее. Тут изменилась только длина – диалог из примера 1217 символов, соответственно, установил length=1250.

image

Видим, что модель заикается, и как-то совсем не про саппорт. Может быть, дело в неправильном вводе новой строки? Питоновский input() с этим не справляется, поэтому заменим input() на другой метод и запустим снова:

image
К сожалению, до конца не влезает. Конец выглядит так:
image

Подтвердите – примеры из статьи подредактированы (обрезка справа) и получены с другими параметрами?
Спасибо за комментарий!

Нет, примеры не обрезаны — но они получены с помощью модели ruGPT-3 Large, она чуть получше генерирует, чем модель Small. Я делаю через демку, запущенную на Кристофари — к сожалению, не могу ее дать пока в паблик.
У генеративных моделей есть такие проблемы, что они могут зацикливаться, это правда — в таких случаях как раз нужен постпроцессинг. image
Я запускаю Large модельку на своих мощностях (не на колабе). Поэтому и смущает – видимо, дефолтные параметры запуска всё-таки не те, которые в колабе. Это, в принципе, нормально, просто может быть неявно для пользователей, которые ожидают увидеть примерно такое же качество генерации, а в итоге получают то, что у меня на скринах.
А какие вы параметры генератора используете?
Дефолтные из скрипта запуска (напомню, что там температура 1.0), за исключением предлагаемых на колабе k=5 и p=0.95. Из отсебятины лишь length 1250, чтобы воспроизвести диалог похожей длины.

Поэкспериментировал с температурой (1→0.7), top_k (5 → 40) – лучше не стало.
Я могу ввести repetition_penalty и заюзать другие техники – но посыл в том, что пример с диалогом не воспроизводим из коробки. Ну или есть особое сочетание параметров, о котором я не знаю
Попробуйте temperature = 0.9, top_k = 0, top_p = 0.95.
Спасибо, так действительно получше:

image

С оговоркой:
В статье написано, что контекст – первые две строчки. С ними при этих параметрах тоже ужас (фразы в основном из знаков препинания). Обязательно нужно ввести «User1: » в конце, как, в принципе, во всех few-shot примерах.

И тогда предлагаемые на колабе параметры не очень хороши.

И всё-таки последняя фраза обрезается. Ну это поправимо, конечно, просто жаль, что модель не может нормально остановиться и генерирует по максимуму.

Получается, top_k-сэмплирование не работает для Large?
(на этом моменте не уверен, что дискуссию не нужно продолжать на гитхабе, всё-таки пост не об этом).
Да, «User1:» нужно, конечно, добавить. top_k работает, тут оптимальные параметры зависят от конкретной задачи. Те, что я привёл, это некие усреднённые эмпирически подобранные. Да, я думаю, что можно перебраться на github.
которые ожидают увидеть примерно такое же качество генерации, а в итоге получают то, что у меня на скринах.


Вот-вот!
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Можно ли работать с этой моделью (Large) без GPU вообще?
Можно
Как им вообще удалось запихать питон в искусственный интеллект? Ведь там нужна скорость, вроде.

Так все числа же при этом жуются сишными библиотеками с векторизацей и GPU, питон работает как обёртка для ввода-настройки-вывода.

Все «мясо» выглядит в виде умножения/сложения больших списков. Это сделано через нативные библиотеки и хорошо оптимизировано — используются векторные операции или GPU.
Питон используется для построения архитектуры, пост- и предобработки данных. И, видимо, достаточно удобен для этого, если он так распространен.
Игрался с моделью ещё после прошлой статьи, потребовалась некоторая модификация исходных скриптов, чтобы она хорошо работала. В частности, выпиливание лишних токенов: html-разметки, ссылок, странных пробелов и переносов строк. Зато после этого стало прекрасно. Если кому-то интересно, вот ноутбук: colab.research.google.com/drive/1r5ufZF9SZPowAs0K8pQzESIjbcb1WTMd

Там генератор гороскопов, биографий людей по имени и фамилии, и поздравлений с ДР.
Пример гороскопа:

Гороскоп на завтра, 2 ноября 2020 года.

ОВЕН
Время с 21:40 до 23:30 может стать для вас очень трудным, но в конце концов, вы обязательно выйдите из него победителем, несмотря на все трудности. Не позволяйте мелочам мешать вашей внутренней гармонии. В этот день будут возникать ситуации, которые поставят вашу жизнь перед новыми перспективами.

ТЕЛЕЦ
В этот день не исключены мелкие неприятности. Но благодаря вашему упорству и напору они обязательно пройдут. Будьте внимательны, старайтесь выбирать друзей, которые смогут помочь вам справиться с проблемами. Также в этот день не забудьте принять ванну. И не пейте много спиртного. Этот день очень полезен для зачатия. В это время особенно полезны любые контрацептивы.

БЛИЗНЕЦЫ
В этот день вам удастся добиться того, к чему вы стремились много лет, но сегодня, благодаря новым возможностям и новым возможностям ваших друзей и близких, ваше дело должно наконец сдвинуться с мертвой точки. Не стоит тратить на это слишком много сил, но и слишком медленно двигаться тоже не следует. Постарайтесь воспользоваться представившимися возможностями и не упускать их.



Как незаметно в процессе разговора User1 и User2 ролями поменялись :)

Кстати, да!

User2: Потому что я зашел на оф. сайт, а там скорость какая-то маленькая…
User1: Вы говорите, что скорость маленькая, но, может быть, она и должна быть маленькой?

Production ready я считаю.

Почему модель в примерах называется rugpt3large_based_on_gpt2? Это просто новый гигантский вариант на архитектуре GPT2, который лучше работает чем попытка смоделировать архитектуру реальной GPT3?
Название с «based_on_gpt2» — это грязный хак ради сохранения совместимости. В библиотеке transformers есть популярная обертка для работы с GPT-2, которую все используют — в нее очень удобно подгружать веса GPT-3, но нужно пройти проверку на наличие «gpt2» в названии модели))
Вроде бы говорится что в Сбер ruGPT Large 760 миллионов параметров. В то время как в оригинале 175 миллиардов. Не скажется ли это на качестве работы российской версии? Ведь
получается, что она даже меньше чем GPT 2
У GPT-3 есть оригинально несколько реализаций — в оригинальной статье приводятся вот такие варианты:
image

Мы реализовали варианты Large, Medium и Small пока что, чтобв проверить, на что они способны. Кажется, эксперимент удачный — теперь не жалко запускать обучение модели больше.
Кстати, какие у вас ожидания по времени обучения моделей покрупнее? Сколько учились Small, Medium и Large?
И вам нужны ещё текстовые датасеты или уже всего хватает?
Мало примеров, хотелось бы увидеть пример по суммаризации
Еще в 2015 году я опубликовал статью с описанием,
что система основанная на прогнозировании потока
будет себя вести именно так как здесь описано.
habr.com/ru/post/377607

Чуть позже у себя на сайте описал
более лаконичное определение механизма выполняющего
любые задачи на основе этих соображений,
и почему именно так должно работать.
www.create-ai.org/begin

Реализацию продумывал основанную не на нейронных сетях,
а чисто на паттернах, расчеты вероятностей, выделение
классов. Программы работающие на точных алгоритмах
выполняются существенно эффективней чем на нейронных сетях.

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

В общем, было бы у меня время и деньги на это время,
давно бы доделал бы эту систему, и возможно даже
более эффективную.

Спасибо за статью )

Colab по приведенной ссылке
https://colab.research.google.com/github/sberbank-ai/ru-gpts/blob/master/examples/ruGPT3_generation_example.ipynb

выдает ошибку на этапе
!pip3 install transformers==2.8.0

ошибка такая:

Building wheels for collected packages: tokenizers, sacremoses error: subprocess-exited-with-error

× Building wheel for tokenizers (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip.
Building wheel for tokenizers (pyproject.toml) ... error
ERROR: Failed building wheel for tokenizers
Building wheel for sacremoses (setup.py) ... done
Created wheel for sacremoses: filename=sacremoses-0.0.53-py3-none-any.whl size=895241 sha256=617956bc9914a734482cba0b84ef9e9cd84230fdebdffe0639cae5cc59fe822a
Stored in directory: /root/.cache/pip/wheels/00/24/97/a2ea5324f36bc626e1ea0267f33db6aa80d157ee977e9e42fb
Successfully built sacremoses
Failed to build tokenizers
ERROR: Could not build wheels for tokenizers, which is required to install pyproject.toml-based projects

Соответственно, ошибки выдаются и на этапе !sh setup.sh



Зарегистрируйтесь на Хабре, чтобы оставить комментарий