Алхимия больших моделей: как устроен открытый гигант GPT-NeoX-20B

Yannic Kilcher 21,9 тыс. 20 мин 6 мин 04.02.2022
Главное

Коллектив исследователей EleutherAI представил общественности GPT-NeoX-20B — открытую языковую модель с 20 миллиардами параметров. В свежем интервью популяризатор науки Янник Кильхер обсудил с сооснователем проекта Коннором Лихи технические нюансы разработки, неожиданные баги и особенности обучения крупных нейросетей. Эта работа демонстрирует, как независимая open-source команда способна успешно конкурировать с технологическими гигантами благодаря выстраиванию грамотных и взаимовыгодных партнерских отношений.

🚀 Рождение GPT-NeoX-20B и союз с CoreWeave 0:00

В основе проекта лежит почти год напряженной работы. Идея создания по-настоящему крупной модели зародилась еще в феврале-марте прошлого года, однако разработчики практически сразу столкнулись с глобальным дефицитом чипов, что сильно затормозило проектирование и развертывание вычислительного кластера. В итоге непосредственное обучение стартовало лишь за три месяца до релиза.

Важнейшим фактором успеха проекта стало сотрудничество с технологическим спонсором — компанией CoreWeave. Это бывший крупный майнер криптовалюты, который вовремя трансформировался в специализированного облачного провайдера. Представители CoreWeave сами вышли на EleutherAI после того, как команда выпустила свой знаменитый датасет The Pile и получила первую широкую известность в ИИ-сообществе. Мотив спонсора был прагматичным: им требовалось протестировать собственное новое оборудование под экстремальными нагрузками и найти оптимальные конфигурации серверов для будущих коммерческих клиентов. Коннор Лихи подчеркивает, что сделка носила исключительно бартерный характер:

«Финансового обмена между нами не было, мы просто помогали друг другу».

Единственным компромиссом со стороны EleutherAI стало согласие на семидневный период эксклюзивности: веса модели станут доступны для скачивания всем желающим через неделю, а первые дни запуска тестировать ее можно только на мощностях спонсора через веб-интерфейс. По мнению Лихи, это решение абсолютно не нарушает ценности open-source движения, тем более что академическая статья по итогам исследования все равно еще не дописана и требует времени.

⚙️ Железо фронтира: почему обычные GPU не подходят 3:56

Модель GPT-NeoX-20B обучалась на кластере из 96 видеокарт Nvidia A100. Архитектура объединяла ускорители через продвинутую систему NVLink/NVSwitch (SXM4) и высокоскоростное сетевое соединение HDR InfiniBand.

В процессе создания инфраструктуры инженеры извлекли важный урок. У CoreWeave в пуле были тысячи графических процессоров, изначально развернутых под майнинг или облачный гейминг, но они подключались через стандартные шины PCIe. По словам Лихи, такое железо категорически не подходит для обучения больших языковых моделей, поскольку главным узким местом (бутылочным горлышком) становится скорость коммуникации между отдельными чипами. Для распределенных вычислений подобного масштаба критически важны сверхнизкая задержка сети и прямые интерконнекты между GPU.

Для конечных пользователей у команды отличные новости. Для запуска инференса готовой нейросети не потребуется суперкомпьютер. По оценкам разработчиков, GPT-NeoX-20B способна стабильно работать на любой профессиональной видеокарте с объемом памяти от 48 ГБ, например, на популярных картах Nvidia A6000 или A40.

📊 Баги, токенизаторы и «личность» модели 5:55

Процесс оценки качества ИИ преподнес инженерам немало сюрпризов. Во время обучения промежуточные автоматические тесты показывали крайне разочаровывающие результаты. Как выяснилось позже, причиной был досадный баг в кодовой базе: кастомная оптимизированная функция Softmax (fused softmax) искажала метрики, если контекст не заполнялся текстом полностью. Обучение при этом шло корректно, и как только ошибку в коде исправили, показатели модели во всех бенчмарках мгновенно подскочили на 3–4%.

Лихи описывает профиль получившейся модели следующим образом: она справляется с задачами на чистом естественном языке чуть хуже, чем можно ожидать от системы такого объема, но при этом демонстрирует выдающиеся результаты в тестах на эрудицию и фактологические знания. Это напрямую связано со структурой обучающей выборки The Pile, содержащей колоссальные массивы программного кода, академических статей и медицинских публикаций.

В ходе интервью возникла любопытная деталь касательно тестов: Лихи упомянул провал в бенчмарке HellaSwag, однако позже ведущий Янник Кильхер сделал важное текстовое уточнение. Спикер перепутал названия тестов на бумаге — на самом деле на HellaSwag модель показала себя отлично, а вот необъяснимо низкие результаты были зафиксированы в тесте Winograd Schema Challenge (WSC). Разработчики предполагают, что проблема может крыться в самом датасете, так как предыдущая модель GPT-J тоже справлялась с ним аномально плохо.

Особое внимание уделили токенизатору. Команда EleutherAI создала специализированный токенизатор для The Pile с кастомными токенами (например, для эффективной обработки множественных пробелов в коде). Сооснователь EleutherAI откровенно признает:

«На самом деле никто в индустрии до конца не понимает, как токенизаторы влияют на итоговое качество, все действуют вслепую».

Их токенизатор кодирует сложные медицинские термины как единые неделимые токены, из-за чего в нем порой не хватает базовых слов, которые часто встречаются в художественной литературе. Большие модели также обладают тем, что Лихи метафорически называет «личностью»: например, если оригинальная GPT-3 от OpenAI стабильно генерирует текст при стандартной температуре выборки токенов ($1.0$), то архитектура GPT-J категорически требует снижения этого параметра до $0.8$, иначе она начинает выдавать бессвязный бред.

💻 Эволюция кодовых баз: от «проклятого» Neo к PyTorch 11:20

История создания линеек моделей EleutherAI — это цепочка технологических вызовов. Разработка начиналась с проекта GPT-Neo, который обучался на облачных процессорах TPU от Google в рамках программы TensorFlow Research Cloud. Сейчас Коннор Лихи открыто называет кодовую базу Neo «невероятно проклятой» и настоятельно рекомендует разработчикам даже не открывать ее, так как проект полностью заброшен и не поддерживается.

Параллельно развивалась ветка GPT-J, написанная на фреймворке JAX. Этот проект практически в одиночку создал программист Бен Ван, которого Лихи уважительно называет «абсолютным безумцем». Однако создать версию GPT-J на 20 миллиардов параметров не удалось по ряду веских причин:

В итоге для флагманского проекта NeoX команда сделала выбор в пользу PyTorch и традиционных GPU, что оказалось гораздо удобнее в реальном инженерном цикле. Ключевую роль в техническом проектировании новой кодовой базы сыграл Сид Блэк, ставший идейным лидером большинства проектов линейки Neo.

🔮 Алхимия машинного обучения и будущие перспективы 14:19

Коннор Лихи признает, что обучение современных больших моделей — это «алхимия внутри алхимии». Огромная часть успехов в сфере ИИ строится на фольклоре, интуиции и секретных рецептах. Например, критически важным для стабилизации обучения нейросети оказалось ручное изменение технического параметра оптимизатора Adam $\beta_2$ с дефолтных $0.99$ до $0.95$. Без этого нюанса обучить крупную модель практически невозможно, она постоянно ломается. При этом на вопрос, почему в OpenAI используют ту или иную технику (например, weight decay), сотрудники топ-уровня порой честно отвечают: «Потому что Алек Рэдфорд сказал, что это помогает».

В качестве контраста Лихи приводит масштабный международный проект Big Science от Hugging Face, который на тот момент столкнулся с колоссальными трудностями при обучении своей 100-миллиардной модели. Нейросеть постоянно уходила в математическую расходимость (divergence), заставляя инженеров откатывать прогресс на дни назад. В одном из случаев выяснилось, что сбой вызвал банальный дефект в данных — строка из 500 000 последовательных обратных слэшей в обучающем тексте.

На этом фоне GPT-NeoX-20B вела себя на удивление стабильно, хотя Лихи признает, что дедупликацию Pile в будущем можно провести еще чище. Сейчас протестировать возможности новой модели может любой желающий через интерфейс платформы GooseAI, разработанной партнерами из компании Anlatan. По прогнозам создателей, лучше всего GPT-NeoX-20B проявит себя в генерации кода и научных исследованиях. Спикер приводит в пример практикующего врача, который успешно использовал предыдущие модели EleutherAI в качестве генератора гипотез для эпидемиологических исследований. При этом важно помнить, что перед нами классическая базовая модель, обученная простому предсказанию следующего токена без контрастивного обучения или fine-tuning, а значит, ее реальный потенциал энтузиастам еще только предстоит раскрыть.

💬 Цитаты

«Финансового обмена между нами не было, мы просто помогали друг другу»

Коннор Лихи 02:50

«На самом деле никто в индустрии до конца не понимает, как токенизаторы влияют на итоговое качество, все действуют вслепую»

Коннор Лихи 10:01

«Обучение больших моделей — это чистая алхимия»

Коннор Лихи 14:56
👥 Спикеры
🔗 Упомянутые сайты и проекты
📖 Термины
Токенизатор
Компонент нейросети, преобразующий входящий текст в отдельные фрагменты или числа (токены) для их математической обработки.
Инференс
Этап работы уже обученной нейросети, когда она выполняет практическую задачу пользователя по генерации или анализу.
Расходимость (Divergence)
Критический сбой в процессе обучения ИИ, при котором математическая ошибка вычислений начинает лавинообразно расти.
Абляция (Ablation)
Эксперимент, при котором из нейросети поочередно удаляют отдельные функции для оценки их изолированного влияния на результат.
📊 Цифры
🗓 Хронология
  1. Около года назад Выпуск датасета The Pile и первые переговоры EleutherAI со спонсором CoreWeave.
  2. Февраль-март прошлого года Начало активного проектирования архитектуры будущей 20B модели и преодоление дефицита чипов.
  3. 3 месяца назад Официальный запуск процесса обучения GPT-NeoX-20B на мощностях CoreWeave.
  4. 2 недели назад Успешное завершение процесса тренировки модели и переход к финальным тестам.
⚖️ Другая сторона
Искусственный интеллект GPT-NeoX-20B EleutherAI Коннор Лихи The Pile Янник Кильхер