YaLM 100B — это GPT-подобная нейронная сеть для генерации и обработки текста. Его могут свободно использовать разработчики и исследователи со всего мира.
Модель использует 100 миллиардов параметров. Обучение модели заняло 65 дней на кластере из 800 видеокарт A100 и 1,7 ТБ онлайн-текстов, книг и бесчисленного множества других источников на английском и русском языках.
Подробности обучения и лучшие практики по ускорению и стабилизации можно найти в статьях на Medium (англ.) и Хабре (рус.).
Мы использовали DeepSpeed для обучения модели и черпали вдохновение из примера Megatron-LM. Однако код в этом репозитории отличается от кода, который использовался для обучения модели. Скорее это стандартный пример из репозитория DeepSpeed с минимальными изменениями, необходимыми для построения нашей модели.
Перед загрузкой весов убедитесь, что на диске имеется 200 ГБ свободного места. Предполагается, что модель (код основан на microsoft/DeepSpeedExamples/Megatron-LM-v1.1.5-ZeRO3) будет работать на нескольких графических процессорах с тензорным параллелизмом. Он был протестирован на 4 (A100 80g) и 8 (V100 32g) графических процессорах, но способен работать с различными конфигурациями с общим объемом памяти графического процессора ≈200 ГБ, которые правильно делят весовые размеры (например, 16, 64, 128).
bash download/download.sh
чтобы загрузить веса моделей и словарь../yalm100b_checkpoint/weights/
, а словарь — в ./yalm100b_checkpoint/vocab/
.docker/pull.sh
. Он совместим с A100 и V100.docker/build.sh
(который просто создаст образ Docker из docker/Dockerfile
).docker/run.sh
(тома, имя и другие параметры можно изменить) . Вы можете начать со следующих скриптов:
examples/generate_interactive.sh
: интерактивная генерация из командной строки, самый простой способ опробовать модель.examples/generate_conditional_sampling.sh
: условная генерация со стратегией выборки. По умолчанию используется Top-p, не стесняйтесь менять температуру или использовать top-k. Входные данные — это jsonlines (пример: examples/example_cond_input.json
), выходные данные будут теми же jsonlines с добавленным к каждой строке сгенерированным текстовым полем.examples/generate_conditional_greedy.sh
: то же, что и предыдущий, но генерация является жадной. Подходит для решения задач с малым количеством выстрелов.examples/generate_unconditional.sh
: безусловная генерация. Входные данные не используются, выходные данные будут в формате jsonlines. Модель опубликована под лицензией Apache 2.0, которая разрешает как исследовательское, так и коммерческое использование. Megatron-LM лицензируется по лицензии Megatron-LM.
Набор данных, используемый для обучения ЯЛМ-100Б, состоит из следующих частей (приблизительные проценты измеряются в токенах, видимых моделью):
25% The Pile — открытый набор данных на английском языке от команды Eleuther AI.
75% текстов на русском языке собрано нашей командой (приведены проценты от всего набора данных)
49% российских веб-страниц из поискового индекса Яндекса фильтруются от ~100 Тб до ~1 Тб с помощью следующей эвристики:
12% Новости из разных источников из Поиска Яндекса
10% Книги из набора данных, используемого в Russian Distribution Thesarus.
3% Разные тексты из набора данных «Тайга».
1,5% Диалоги из социальных сетей предварительно обрабатываются аналогично тому, как Reddit обрабатывается в The Pile.
0,5% русская часть Википедии
Некоторые подмножества просматривались до 3 раз за время обучения.
Модель обучалась на кластере из 800 A100 в течение ~65 дней. За это время он израсходовал 300 миллиардов токенов. Вы можете увидеть TensorBoard с LR и графиком наращивания, метриками обучения и нашими «термометрами» на странице HF.