Русскоязычная модель GPT-3 выложена в открытый доступ

Русскоязычная модель GPT-3 выложена в открытый доступ

Совместными усилиями нескольких подразделений Сбера русскоязычная модель GPT-3 Large с 760 миллионами параметров натренирована на корпусе текстов объемом 600 Гб. Об этом рассказал сотрудник SberDevices Сергей Марков.

Две революции NLP

За последние 10 лет в области обработки естественного языка (Natural language processing, NLP) произошли две настоящие технологические революции.

Как пишет Сергей Марков, первая революция в NLP была связана с успехами моделей, основанных на векторных представлениях семантики языка, получаемых при помощи методов обучения без учителя (Unsupervised learning). Расцвет этих моделей начался с публикации результатов Томаша Миколова (Tomas Mikolov), аспиранта Йошуа Бенджио (Yoshua Bengio) (одного из «отцов-основателей» современного глубокого обучения, лауреата Премии Тьюринга), и появления популярного инструмента word2vec. Вторая же революция началась с развития механизмов внимания в рекуррентных нейронных сетях, вылившаяся в понимание того, что механизм внимания самодостаточен и вполне может быть использован и без самой рекуррентной сети. Появившаяся в результате нейросетевая модель получила название «трансформер» [transformer]. Она была представлена научному сообществу в 2017 году в статье с программным названием «Внимание — это всё, что вам нужно» [Attention Is All You Need],  написанной группой исследователей из Google Brain и Google Research. Быстрое развитие сетей, основанных на трансформерах, привело к появлению гигантских языковых моделей, подобных Generative Pre-trained Transformer 3 (GPT-3) от OpenAI, способных эффективно решать множество задач из области NLP.

Вычислительные ресурсы

Для обучения гигантских трансформерных моделей нужны значительные вычислительные ресурсы. Не получится просто взять современную видеокарту и обучить такую модель на домашнем компьютере. В оригинальной публикации OpenAI представлено 8 вариантов модели, и если взять самую маленькую из них (GPT-3 Small) со 125 миллионами параметров и попытаться обучить её при помощи профессиональной видеокарты NVidia V100, оснащённой мощными тензорными ядрами, то на это уйдёт примерно полгода. Если же взять самый большой вариант модели со 175 млрд параметров, то результата придётся дожидаться почти 500 лет.

Понятно, что подобные эксперименты доступны только компаниям, обладающим значительными вычислительными ресурсами. Именно для решения подобных задач в 2019 году Сбер ввёл в эксплуатацию суперкомпьютер «Кристофари». 75 вычислительных узлов DGX-2 (в каждом по 16 карт NVidia V100), связанных сверхбыстрой шиной на базе технологии Infiniband, позволяют обучить GPT-3 Small всего за несколько часов. Однако и для такой машины задача обучения более крупных вариантов модели не является тривиальной. Процесс обучения, использующий одновременно множество вычислительных узлов в ситуации, когда веса модели не помещаются в памяти одной карты, является весьма нестандартным.

Сергей Марков отмечает: «В общем, мы оказались в ситуации, когда для наших целей не годился привычный многим torch.distributed. Вариантов у нас было не так уж и много, в итоге мы обратились к «родной» для NVidia реализации Megatron-LM и новому детищу Microsoft — DeepSpeed, что потребовало создания на «Кристофари» кастомных докерных контейнеров, с чем нам оперативно помогли коллеги из SberCloud. DeepSpeed, в первую очередь, дал нам удобные инструменты для model parallel тренировки, то есть разнесения одной модели на несколько GPU и для шардирования оптимизатора между GPU. Это позволяет использовать более крупные батчи, а также без горы дополнительного кода обучать модели с более чем 1,5 миллиардами весов.»

Проект по обучению GPT-3 потребовал объединения усилий сразу нескольких подразделений. Со стороны SberDevices лидерскую роль в этом процессе взяло на себя Управление экспериментальных систем машинного обучения, а со стороны Sberbank.AI — команда AGI NLP. В проект также активно включились коллеги из SberCloud, занимающиеся сопровождением «Кристофари».

Первые эксперименты

В первую версию русскоязычного обучающего корпуса суммарным объёмом свыше 600 Гб вошла огромная коллекция русской литературы, снапшоты русской и английской Википедии, коллекция снапшотов новостных и вопрос-ответных сайтов, публичные разделы Pikabu, полная коллекция материалов научно-популярного портала 22century.ru и банковского портала banki.ru, а также корпус Omnia Russica. Кроме того, были включены снапшоты github и StackOverflow.

В качестве основы для первых экспериментов были выбраны архитектуры GPT-3 Medium (350 миллионов параметров) и GPT-3 Large (760 миллионов параметров). При этом обучались модели как с чередованием блоков трансформера с разреженным [sparse] и полным [dense] механизмами внимания, так и модели, в которых все блоки внимания были полными. Дело в том, что в оригинальной работе от OpenAI говорится о чередовании блоков, но не приводится их конкретная последовательность. Если все блоки внимания в модели будут полными, это увеличивает вычислительные затраты на обучение, но гарантирует, что предсказательный потенциал модели будет использован в полной мере.

Что дальше

В настоящее время в научном сообществе ведётся активное изучение различных моделей внимания, предназначенных для снижения вычислительных затрат при обучении моделей и увеличения точности. За короткое время исследователями были предложены лонгформер [longformer], реформер [reformer], трансформер с адаптивным диапазоном внимания [adaptive attention span], сжимающий трансформер [compressive transformer], поблочный трансформер [blockwise transformer], BigBird, трансформер с линейной сложностью [linformer] и ряд других аналогичных моделей. При этом модели, составленные из одних только dense-блоков, являются своеобразным бенчмарком, позволяющим оценить степень снижения точности различных «ускоренных» вариантов модели.

Важно понимать, что модели типа GPT-1/2/3, на самом деле, решают ровно одну задачу — они пытаются предсказать следующий токен (обычно слово или его часть) в последовательности по предшествующим. Такой подход позволяет использовать для обучения «неразмеченные» данные, то есть обойтись без привлечения «учителя», а с другой стороны позволяет решать довольно широкий спектр задач из области NLP. Ведь в тексте диалога, например, реплика-ответ является продолжением истории общения, в художественном произведении — текст каждого абзаца продолжает предшествующий текст, а в сессии вопросов и ответов текст ответа следует за текстом вопроса. Модели большой ёмкости в результате могут решать многие такие задачи без специального дообучения — им достаточно тех примеров, которые укладываются в «контекст модели», который у GPT-3 довольно внушительный — целых 2048 токенов. GPT-3 способна не только генерировать тексты (в том числе стихи, шутки и литературные пародии), но и исправлять грамматические ошибки, вести диалоги и даже писать более-менее осмысленный программный код.

Комментарии к тексту

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

У OpenAI половинчатая позиция. С одной стороны, они шарят архитектуру моделей, довольно подробно всё описывают, но при этом сами веса обученных моделей либо публикуют с большой задержкой, либо не публикуют вовсе. Это приводит к тому, что воспроизвести их работу могут только крупные компании, обладающие серьёзными вычислительными ресурсами.

Самая большая OpenAI версия GPT-3 со 175 млрд весов в 230 раз больше, чем ruGPT-3.

В коментариях также указаны ссылки.

github.com/sberbank-ai/ru-gpts
github.com/sberbank-ai/ruGPT3_demos

В репозитории:

ruGPT2Large: это GPT-2 Large (контекст 1024)
ruGPT3Medium2048: это GPT-3 Medium (контекст 2048)
ruGPT2048: это GPT-3 Large (контекст 2048)

на huggingface:

huggingface.co/sberbank-ai/rugpt2large
huggingface.co/sberbank-ai/rugpt3medium_based_on_gpt2
huggingface.co/sberbank-ai/rugpt3large_based_on_gpt2

Данные модели можно использовать на условиях лицензии MIT.

Один из комментаторов сообщил об оценке скорости работы модели:

На 2080 Large модель работает нормально, отвечает с задержкой 1-2 сек.
Кушает 4.6-5.5гб видеопамяти, если указывать символов на вывод больше то 8гб может не хватить.
Также 5 гигабайт оперативной памяти, при старте на секунд 5-10 грузит проц 3900xt на 80%.
Сам графический процессор при генерации текста сильно не нагружает, в целом у кого 1060 6GB, Large модель должна работать спокойно. Все карточки ценового сегмента ниже уже нет.
Также пробовал на CPU, откушало 12 гигабайт оперативной памяти, загружало процессор на 50-60%. Работало все довольно медленно, ответа нужно было ждать около ~20 секунд.

Ряд комментаторов высказывает опасения, что неконролируемое распространение алгоритмов типа GPT-3 приведет к замусориванию интернета сгенерированными текстами.

Пример работы третьей модели
Пример работы третьей модели

 


Источник: Блог компании Сбер, 22 октября 2020, Сбер выложил русскоязычную модель GPT-3 Large с 760 миллионами параметров в открытый доступ