gonzo_ml | Unsorted

Telegram-канал gonzo_ml - gonzo-обзоры ML статей

21999

Авторы: Гриша Сапунов, ранее руководитель разработки Яндекс-Новостей, ныне CTO Intento. Области интересов: AI/ML/DL, биоинформатика. Лёша Тихонов, ранее аналитик в Яндексе, автор Автопоэта, Нейронной Обороны... Области интересов: discrete domain, NLP, RL.

Subscribe to a channel

gonzo-обзоры ML статей

Non-Reasoning данные включали creative writing, role-play, и simple question answering, и были сгенерены DeepSeek-V2.5 с последующей верификацией человеком.

Reinforcement Learning (RLHF по сути) включал два подвида: rule-based Reward Model (RM) и model-based RM.

Там, где можно было валидировать правилами, использовали rule-based RM. Например, так можно проверять некоторые математические задачи с детерминистическим результатом и заданным форматом ответа, а на задачах LeetCode можно получать фидбек от компилятора. Где можно использовать такой подход, старались использовать его, он защищён от манипуляции.

В вопросах с ground truth ответом в свободной форме использовали модель, которая оценивала насколько ответ матчится с этим ground truth. В более открытых постановках, когда и явного ground truth нет (например, в creative writing), reward model предоставляла фидбек по исходному запросу и ответу. RM были обучены на SFT чекпойнтах DeepSeek-V3. Для большей надёжности preference data не только давали финальный reward, но и содержали chain-of-thought цепочку рассуждений, ведущих к этому reward. Вроде как помогает от reward hacking.

Как и в DeepSeek-V2, авторы использовали Group Relative Policy Optimization (GRPO), вариант Proximal Policy Optimization (PPO), разработанный также в DeepSeek в рамках работы DeepSeekMath (https://arxiv.org/abs/2402.03300). GRPO позволяет избавиться от отдельной value model, которая обычно такого же размера, что и policy model — вот ещё одно место, где они сэкономили на вычислениях и памяти. Вместо value function используется средний reward на множестве сэмплов, сгенерённых по одному и тому же входному запросу. KL лосс (который нужен, чтобы модель не уходила в сильно другой и нечитаемый текст) в такой схеме тоже упрощается, но делается не между reward и полиси, а напрямую между референс моделью и полиси. Advantage в GRPO по сути вычисляется как z-score.

В этих методах я не специалист, интересно, можно было бы заменить на DPO или нет?

Для разных доменов использовались разные промпты.

Полученная чат модель по бенчмаркам выглядит весьма достойна, сравнима с Claude-Sonnet-3.5-1022 и GPT-4o-05. При этом мы помним, что обучение Sonnet стоило в разы больше, десятки миллионов долларов (/channel/gonzo_ML/3275), хотя конечно тут мутно, что именно там Дарио репортит, но вряд ли это полная стоимость включая эксперименты и т.п.

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

Также упоминается, что для задач, где сложно сделать валидацию и алгоритмический фидбек, в работе использовали подход constitutional AI (/channel/gonzo_ML/1285), который мне очень нравится (в первую очередь тем, что он скейлится). По сути модель сама оценивала себя, они это назвали Self-Rewarding. Подход тоже улучшил качество, особенно в субъективных оценках. Так понимаю, в планах добавить больше конституционных инпутов.

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


Что особенно хочется отметить по результатам разбора DeepSeek? DeepSeek — это не просто топовая модель, конкурент западных. Это полноценная экосистема научных работ, тут под десяток разных наработок из их предыдущих статей. Интересно, опубликуют ли свой фреймворк для обучения? Это пока, кажется, один из основных missing parts.

Читать полностью…

gonzo-обзоры ML статей

HuggingFace тем временем выкатил свой AI App Store:

https://huggingface.co/spaces

Читать полностью…

gonzo-обзоры ML статей

Предсказание токенов сделано последовательным. Для предсказания D дополнительных токенов используется D MTP модулей (MTP Modules), у них шареные эмбеддинги и выходная голова. На вход им прилетает выход слоя основной модели или предыдущего MTP модуля, а также эмбеддинги следующего токена, всё нормализуется RMSNorm и конкатенируется. Каждый модуль считает кроссэнтропийный лосс, по всем модулям вычисляется средний лосс и он с коэффициентом 𝜆 выступает как дополнительный лосс модели (0.3 для первых 10T токенов, 0.1 для последующих 4.8T). При инференсе MTP модули отбрасываются, но можно и использовать для speculative decoding.

MTP стабильно улучшает перформанс на большинстве бенчмарков. В экспериментах acceptance rate для следующего токена находился в диапазоне от 85% до 90%. В комбинации со speculative decoding TPS возрастает в 1.8 раза.


❇️ Другая интересная часть — инфраструктура.

DeepSeek-V3 обучался на кластере из 2048 NVIDIA H800 GPU. Напомню, что H800 — это урезанная H100 для Китайского рынка. У H800 ослаблен interconnect (bandwidth ниже более чем в два раза и количество линков NVLink тоже уменьшено), а также в десятки раз понижены флопсы для FP64 — для нейросетей неважно, а атомные бомбы считать хуже. Чтобы нумерация была “особенно логичной”, H200 — это улучшенная версия H100 с большим объёмом более быстрой памяти.

Для обучения внутри компании написали свой закрытый фреймворк HAI-LLM.

DeepSeek-V3 использует 16-way Pipeline Parallelism (PP), 64-way Expert Parallelism (EP) с 8 нодами, и ZeRO-1 Data Parallelism (DP). Для эффективного PP разработали алгоритм DualPipe, перекрывающий фазы коммуникации и вычисления в forward и backward фазах. Приводит к уменьшению pipeline bubbles. Благодаря суровым оптимизациям памяти обошлись без Tensor Parallelism (TP). Кроме этого разработали эффективные cross-node all-to-all communication kernels.


❇️ Но самая интересная для меня часть здесь — это FP8 Training.

Кто не знает, что такое FP32, FP16, BF16, вэлкам в мой старый пост: https://moocaholic.medium.com/fp64-fp32-fp16-bfloat16-tf32-and-other-members-of-the-zoo-a1ca7897d407. FP8 там нет, но по аналогии поймёте, что это такое.

Кажется, это первая открытая реально большая продакшн модель, обученная в FP8. Llama3, например, вроде как в BF16 обучалась, и я так понимаю это примерно стандарт, ну либо микс FP32/16. Да, была более ранняя работа (https://arxiv.org/abs/2409.12517) от израильтян из Habana (теперь Интел). Там в FP8 обучали 7B модель на 2T токенов на интеловско-хабановских же Gaudi2 и получали качество сравнимое с BF16 при улучшении throughput на 34%. Была и ещё более ранняя FP8-LM (https://arxiv.org/abs/2310.18313) от Microsoft, где обучали GPT-175B. Они даже библиотечку опубликовали (https://github.com/Azure/MS-AMP). В принципе не удивлюсь, если OpenAI в итоге тоже внутри на FP8 перешли, но от них молчок. Что там у Гугла тоже не поймёшь. Но ставлю на BF16 🙂

В реальности у DeepSeek, конечно, тоже mixed precision — какие-то вещи по-прежнему считаются в более полных форматах, BF16 или даже FP32. В таких форматах остались: embedding module, the output head, MoE gating modules, normalization operators, and attention operators (вот тут я не совсем понял, какие именно). Также в большей разрядности пишут master weights, weight gradients, и optimizer states. Это всё повышает стабильность обучения, кажется, основную проблему низкоразрядных форматов (ну за пределами отсутствия поддержки в кернелах и железе). Но большинство тяжёлых вычислений в FP8. Отчасти поэтому, я думаю, они сумели сильно сэкономить в деньгах на компьют. В идеальной теории это повышает доступный компьют в два раза, одновременно уменьшая во столько же требования к памяти.

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

Читать полностью…

gonzo-обзоры ML статей

DeepSeek-V3 Technical Report
Статья: https://arxiv.org/abs/2412.19437
Репа: https://github.com/deepseek-ai/DeepSeek-V3

Предыдущий пост про DeepSeek был попсовый (/channel/gonzo_ML/3239), сегодня хочется пройтись по некоторым техническим решениям в DeepSeek, которые мы тут раньше не обсуждали.

В-нулевых, что важно знать про DeepSeek-V3 — это всё ещё относительно классический трансформер декодер (но с MoE, /channel/gonzo_ML/472). DeepSeek-V3 содержит 671B параметров, из которых активны 37B для каждого токена. 61 трансформерный слой, d_h = 7168.

В работе есть несколько интересных решений, которые хочется отметить для истории. Для начала пара вещей, проверенных в DeepSeek-V2 (https://arxiv.org/abs/2405.04434).


❇️ Во-первых, Multi-head Latent Attention (MLA). Что это такое?

В классическом Multi-Head Attention (MHA) эмбеддинги входных токенов h_t проецируются в векторы query, key, value q_t, k_t, v_t через незавимимые матрицы проекций W^q, W^k, W^v и затем нарезаются на векторы для отдельных голов внимания. После работы self-attention (тот самый softmax(QK/sqrt(d))*V ), получаем o_t для отдельных голов, конкатенируем и далее через матрицу W^o генерим выход слоя.

MLA делает низкоранговую компрессию для key и values, где h_t сначала проецируется в низкоранговый латентный вектор c_t, а потом из этого вектора через отдельные матрицы W^uk, W^uv, разворачивается в k_t, v_t. Размер латентного вектора, d_c, сильно меньше, чем итоговая размерность с учётом всех голов (d_h*n_h). На инференсе это сокращает размер необходимого KV-кеша, потому что надо кешировать только низкоразмерные c_t, а не полноразмерные k_t, v_t как раньше. Более того, матрицы проекций из c_t в ключи и значения можно вообще убрать, матрицу для k_t (W^uk) можно инкорпорировать внутрь матрицы для получения q_t (W^q), а матрицу для v_t (W^uv) внутрь выходной матрицы W^o.

На самом деле и для q_t тоже делается низкоранговая компрессия в свой вектор c_t, это не влияет на KV-кеш, но помогает уменьшить объём памяти для активаций при обучении.

Была проблема с тем, что позиционные эмбеддинги RoPE несовместимы с низкоранговой компрессией KV, для решения этой проблемы предложили decoupled RoPE strategy с дополнительными многоголовыми q^R и шареным k^R со своей размерностью d^R_h на голову. Итоговые вектора для Q и K являются конкатенацией векторов полученных из соответствующего низкорангового вектора c_t и вектора для RoPE (q^R, k^R).

Посмотрите на формулы (раздел 2.1.2), там понятнее, чем текстом.

В DeepSeek-V2, размерность латентного вектора d_c была установлена в 4d_h (суммарная размерность четырёх голов), а размерность для RoPE d^R_h в d_h/2 (полголовы). В MLA DeepSeek-V3 128 голов внимания, каждая размерности 128. Размерность d_c равна 512.

Помните, что это не единственный способ оптимизации внимания при ускорении генерации и от классического MHA уже много где ушли в Multi-Query Attention (MQA) имени Ноама Шазира (https://arxiv.org/abs/1911.02150), где K и V шарятся между всеми головами внимания (что сильно ускоряет инференс и слегка ухудшает качество), и Grouped-Query Attention (GQA) тоже от Гугла (https://arxiv.org/abs/2305.13245), которое было срединным путём между MHA и MQA, и где количество key-value голов было больше одной, но меньше полного набора как у query — здесь по одной key-value голове на группу query голов — и качество можно приближать к оригинальному MHA.

MLA хорошо экономит кеш, сравним с GQA с 2.25 групп, при этом перформанс даже выше MHA. В общем выглядит так, что MLA должен теперь доминировать везде. Не знаю, есть ли что-то лучше из опубликованного?

Читать полностью…

gonzo-обзоры ML статей

Финальный шаг был сделан в нашумевшем техрепорте о r1. Во-первых, в одном из экспериментов они вообще отказались от сфт колдстарта и сразу начинали учить модель через GRPO — и всё завелось. Во-вторых, если я правильно понял, они вообще не использовали ревард модель на промптах про математику — потому что её использование приводило к reward hacking. Вместо этого они проверяли формат вывода регэкспом и проверяли, правильный ли ответ был сгенерирован, то есть использовали ревард не нейронный, а rule based. И ничего, даже с такими простыми эвристиками модель сама обучалась CoT, метрики росли и итоговая модель, R1-Zero, показывала очень хорошие скоры на бенчмарках. В R1 сфт всё таки добавили, но это сделали исключительно чтобы повысить читаемость цепочек размышлений — скоры на бенчах выросли не так сильно и, по сути, это было не обязательно.

Не всё так однозначно хорошо, конечно, потому что такой rl-only подход, по всей видимости, не работает на моделях меньшего размера. Авторы попробовали обучить Qwen-32B только через RL, всё заработало, модель стала по качеству примерно как QwQ — но простой сфт на цепочках от R1 дал гораздо более высокий результат.

Рискну предположить, но возможно, что что-то подобное было сделано и в o1 — и это вполне укладывается в описание процесса файнтюна о1-mini, про который рассказывали во время рождественских видео опенаи. Если это так, то признаю, в том самом сентябрьском посте с критикой OpenAI я был неправ :)

Это что, получается, рл, наконец-то заработал?

Ссылки:

Deepseek Math: https://arxiv.org/abs/2402.03300
Qwen 2 Math: https://qwen2.org/math/
Qwen 2.5 Math: https://qwenlm.github.io/blog/qwen2.5-math/
Deepseek R1: https://arxiv.org/abs/2501.12948

Читать полностью…

gonzo-обзоры ML статей

Worth watching. Много интересных рассуждений, не в режиме для теленовостей.

https://youtu.be/b_DUft-BdIE?si=HIECi3BXXj9TvbmG

Пример со стержнями и дисками прикольный.

Читать полностью…

gonzo-обзоры ML статей

Уже даже перестало быть смешно.

https://x.com/SchmidhuberAI/status/1885357355938046382?t=s0IbbVihpRgYYY5tVzb8WA&s=19

Читать полностью…

gonzo-обзоры ML статей

Я тут упоминал, что в рамках курса по AI Alignment решил копнуть немного в сторону mech interp (/channel/gonzo_ML/3200) и сделать нанорисёч на базе Gemma 2B. Вычленить какую-то цепь (circuit) времени не было, но немного успел поиграться с выкидыванием слоёв и обнаружил неожиданный для себя результат.

Если вкратце, то наверное пара вещей:

1. Все 26 слоёв декодера чем-то занимаются, от первого до последнего, эмбеддинги даже визуально меняются. Эту картинку приводил в прошлый раз. При этом опять же на глаз видно несколько групп слоёв с похожими паттернами активаций. Что именно они там делают, пока хз.

2. Если выкидывать слои, то определённо есть более критичные, и что неожиданно, кроме понятного критичного в начале, есть неожиданные критичные в середине, возможно, на границе тех самых визуально выделяемых групп. Интересно, что в них такого.

Может, конечно, это просто артефакт конкретного эксперимента, датасета и модели, но может и нет.

Написал про это здесь:
https://gonzoml.substack.com/p/not-all-layers-are-equal

Colab ноутбук для тех, кто захочет продолжить изыскания и покопаться сам, здесь:
https://colab.research.google.com/drive/1Dita8PWjxc_nPjOKCGKyuv7tVamZIc-h?usp=sharing

Картинка с "важностью" слоёв ниже.

Читать полностью…

gonzo-обзоры ML статей

Спасибо DeepSeek, иначе бы ещё ждали :)

https://openai.com/index/openai-o3-mini/

Читать полностью…

gonzo-обзоры ML статей

Пятничного прекрасного вам в ленту.

История ИИ от Демокрита Крита до наших дней.

https://www.aiprm.com/timeline-of-ai-technology/

И до Шмидхубера была жизнь!

Читать полностью…

gonzo-обзоры ML статей

Сегодня немного в другую сторону.

Y combinator выкатил свой список перспективных направлений, который они называют Request for Startups. Причём выкатить они его решили всего через три месяца после предыдущего. Обычно они делают это реже, но слишком много изменений произошло за последние месяцы, особенно в AI.

Интересно почитать и подумать.

Темы на Spring 2025 такие:
Introduction
A Secure AI App Store
Datacenters
Compliance and Audit
DocuSign 2.0
Browser & Computer Automation
AI Personal Staff for Everyone
Devtools for AI Agents
The Future of Software Engineering
AI Commercial Open Source Software (AICOSS)
AI Coding Agents for Hardware-Optimized Code
B2A: Software Where the Customers Will All Be Agents
Vertical AI Agents
Startup Founders with Systems Programming Expertise
Inference AI Infrastructure in the World of Test-Time Compute

Introduction

From the AI breakthroughs of the last few months, a wave of new startup opportunities have been unlocked.  We used to publish requests for startups no more than once a year, but we decided to publish this list just 3 months after our last one to help point founders to the idea spaces that have just opened up.

You've probably followed the recent advances which underlie these ideas. With Operator and Computer Use, AI systems can now use computers. Reasoning models like OpenAI's O1/O3 and Deepseek R1 have made it possible to build AI systems that match and even surpass humans. They also require new compute infrastructure. And DeepSeek R1 has shown the world that there is huge untapped potential in low-level optimizations.

These are ideas we think are now worth working on.

https://www.ycombinator.com/rfs

Читать полностью…

gonzo-обзоры ML статей

"Bloomberg has reported that Microsoft is investigating whether data belonging to OpenAI - which it is a major investor in - has been used in an unauthorised way."

https://www.bbc.co.uk/news/articles/c9vm1m8wpr9o.amp

Это даже немного смешно. Чуваки, которые спарсили весь интернет, не заплатив никому из авторов всех этих данных (кроме тех, кто их потом засудил), теперь говорят, что данные спёрли у них.

Читать полностью…

gonzo-обзоры ML статей

Когда данные готовы остается придумать как обучать модель. Нужно, чтобы модель могла и читать текст, и писать текст, и квадратики с полигонами рисовать. В 2017 Vasvani et. al подарил нам универсальный способ представить и обработать что угодно:
1. Сделаем из входа последовательность токенов.
2. Засунем в трансформер.

Изображение превращается в эмбеддинги патчей по методологии как в Visual Transformer. Текст превращается в эмбеддинги как в любой языковой модели. Здесь всё стандартно. Из необычных инноваций: давайте сделаем специальные токены для координат. Авторы покрыли изображение сеткой и для каждой точки на сетке ввели специальный токен. Например, есть токен для точки (0, 0). Это как бы служебное слово, точно так же как <pad>, <unk> и прочие. Вы можете подавать его на вход модели, можете получать на выход. Готово, ваша модель умеет оперировать координатами в явном виде, а значит может читать и создавать ббоксы и полигоны. Токенизация это одна из главных причин почему LLM на данный момент не умеют делать детекцию: у них нет нормальной репрезентации для локаций на изображении. Авторы решили вопрос максимально просто и элегантно. Теперь любой вход можно представить как последовательность и засунуть в трансформер.

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

Вот это самая интересная часть статьи. Авторы просто выбрасывают всё, что мы придумали в CV, и заменяют одной функцией ошибки: cross-entropy loss. Они фиксируют, что вход должен быть json и выход должен быть json. Так что модель становится авторегрессионным генератором текста, точно так же как GPT, и просто предсказывает следующий токен. Следующий токен может быть в том числе одним из токенов зарезервированных под координаты. То есть эти ребята взяли и заменили весь наш computer vision на NLP. Одна функция ошибки, чтобы править всеми, и по наши костыли наконец-то пришел bitter lesson.

То есть в плане архитектуры Florence-2 это на самом деле VLM.

Читать полностью…

gonzo-обзоры ML статей

Админ трогал траву как не в себя, но наконец добрался рассказать вам про самую поразительную работу за 2024.

Я считаю, что про неё недостаточно говорят, а про решателей шокльной математики (o1/o3) и агентов слишком много. Ваша любимая 400b VLM плохо рисует bounding boxes, а эта 770m шутка делает их отлично хоть на CPU. При этом VLM обучалась на немыслимом количестве данных, а у этой штуки было меньше примеров, чем у CLIP. Да что далеко ходить: у меня друг делает стартап по CV, мы с ним обсуждали эту модель, он её попробовал и перестал обучать свои YOLO детекторы: потому что эта штука просто работает. Причем несмотря на необходимость обнаруживать строительные машины на фотографиях с плохих камер в родной атмосфере слякоти и грязи.

#обзор_статьи
# Florence-2: Advancing a Unified Representation for a Variety of Vision Tasks
Скачивайте и играйтесь на HF.

Что если я скажу, что есть модель, которая умеет хорошо делать Zero-Shot детекцию, сегментацию, captioning и OCR? Что при этом её можно промптить, например требуя найти на картинке всех собак или сделать сегментацию объекта внутри ббокса? Вы наверное подумаете, что это новая огромная VLM. Но нет, эта модель размером всего 770M, то есть как большой ViT. Можно запускать хоть на CPU. Более того, её можно дообучать, в том числе легко сделать из неё supervised детектор прикрутив ей свою любимую голову, скажем от DETR.

В Computer Vision у всех комплексы по поводу foundational models. Мы завидуем ребятам из NLP. Стало модно выпускать большие модели и говорить: "теперь у нас тоже фаундейшнл!" Однако что такого foundational, скажем, в Segment Anything? Это просто сегментатор обученный на большом количестве качественной синтетики. В моем понимании foundational это когда ты в свободной форме даешь модели любую задачу и она её решает, как GPT-4o, а не когда тебе нужно определенным образом зампромптить модель, чтобы получить решение задачи сегментации.

Florence-2 это первая модель в CV которую я действительно готов назвать foundational. С одной стороны из-за её широкой полезности, так как она позволяет решать все популярные задачи в CV. Но так же из-за того, каким образом она сделала. Минимум костылей, как вы сейчас увидите.

Перейдем к сути, благо статья простая и благодаря этому очень красивая. Авторы рассуждают последовательно.

Чего мы хотим от универсальной CV модели?
1. Image-level understanding: понимание высокоуровневой семантики. Например, на картинке кошка или собака? Можно так же сказать, что это способность связать изображение и текстовое описание. Эту задачу отлично решает CLIP.
2. Region/pixel-level recognition: обнаружение объектов на изображениях и понимание их расположения. С этим отлично справляются supervised классификаторы, детекторы и сегментаторы.
3. Fine-grained visual-semantic alignment: связь между областями изображения, в том числе совсем маленькими, и текстом. Обнаружение частей изображений которые относятся к фразам, объектам, атрибутам и отношениям. Это способность обнаружить и отличить "нос собаки", "нос собаки слева", "нос рыжей собаки", "коричневый нос собаки" и так далее.

Когда желания определены дело за малым: выбрать данные, функцию ошибки и архитектуру. Через эти компоненты мы по факту формируем оптимизационную задачу.

Авторы решили, что для получения трех компонент понимания изображений нужно много разных аннотаций, которые можно распределить по двум осям:
1. Spatial hierarchy: аннотации должны включать разные масштабы изображений, чтобы модели требовалось понимание и на уровне изображения, и на уровне пикселей.
2. Semantic granularity: в текстах (описаниях, промптах, лейблах) должны встречаться разные уровни абстракции, требующие от модели как понимания общих концептов, так и небольших деталей и нюансов.

Читать полностью…

gonzo-обзоры ML статей

Ирония технологической гонки

**

Кто не в курсе еще, то модель DeepSeek выкатил китайский хедж-фонд ))

Все тут - https://fastsalttimes.com/quant-fund-to-create-superintelligence/🤣

Читать полностью…

gonzo-обзоры ML статей

Сегодня обсудим процедуру обучения DeepSeek-V3. Архитектура и технические решения были разобраны в предыдущем посте (/channel/gonzo_ML/3292).

На всякий случай ещё раз явно проговорю, это не DeepSeek-R1, которая reasoning по типу o1/o3, это базовая чат-модель, на которой R1 была обучена. Не уверен, что буду делать разбор R1, имеющегося разбора V3 и поста от Аламмара (https://newsletter.languagemodels.co/p/the-illustrated-deepseek-r1), кажется, достаточно. Но посмотрим.

Из технически важных моментов хочется ещё раз обратить внимание на важность обучения в FP8 из предыдущего поста (/channel/gonzo_ML/3294). Это биг дил, что наконец оно завелось в промышленном режиме для большой модели хорошего качества. Эффективно оно удваивает доступные вычислительные мощности или даёт возможность обучать модели в два раза большего размера.

Обучение разделено на pre-training и post-training.

Pre-training.


Относительно предыдущего DeepSeek-V2 (https://arxiv.org/abs/2405.04434) увеличена доля примеров про математику и программирование, а также расширен набор языков за пределы английского и китайского. При этом всё равно, английский + китайский составляют большую часть датасета, а описания композиции и распределения других языков я не нашёл.

Всего итоговый датасет содержит 14.8T токенов (у предыдущей версии было 8.1T токенов). Токенизатор BPE со словарём в 128k. Относительно предыдущей версии токенизатор изменён и обучен на более мультиязычном корпусе, а также добавлены токены, комбинирующие пунктуацию с переносами строк.

В предобучении в дополнение к стандартному Next-Token-Prediction используется Fill-in-Middle (FIM) стратегия с частотой 0.1, применённая в DeepSeekCoder-V2 (https://arxiv.org/abs/2406.11931), но изобретённая ранее в OpenAI (https://arxiv.org/abs/2207.14255), где модель должна восстановить середину текста. Если точнее, то используется подход Prefix-Suffix-Middle (PSM) для структурирования данных (на уровне документов) следующим образом:

<|fim_begin|>𝑓_pre<|fim_hole|>𝑓_suf<|fim_end|>𝑓_middle<|eos_token|>.

Во время предобучения максимальная длина последовательности 4k токенов.

После предобучения применяют YaRN (https://arxiv.org/abs/2309.00071) для расширения контекста и делают две дополнительные фазы обучения по 1000 шагов, где расширяют контекст с 4k до 32k, а затем до 128k.

В итоге на множестве бенчмарков, включая английский, китайский, код, математику и один мультиязычный, в целом бьют предыдущую версию DeepSeek-V2, а также две dense модели, Qwen2.5 72B Base и LLaMA-3.1 405B Base, получая сильнейшую из открытых моделей. Сравнение с Qwen2.5 72B Base интересно, это была одна из сильных моделей, активных параметров у неё получается практически в два раза больше, чем у DeepSeek. У LLaMA-3.1 405B Base их вообще в 11 раз больше, но она на этих бенчмарках хуже.

Авторы заявляют, что для DeepSeek-V3 на каждый триллион токенов обучения требуется 180K H800 GPU-часов.

Post-training.

Состоит из двух частей, Supervised Fine-Tuning (SFT) и RL.

SFT делался на дополнительных Reasoning и Non-Reasoning данных. Это всё было сделано для разных областей (упоминания конкретных доменов далее) и итоговый датасет для instruction-tuning составляет 1.5M примеров.

Reasoning данные фокусировались на математике, программировании, логических задачах. Данные генерировались внутренней DeepSeek-R1 моделью (которая в свою очередь была обучена на DeepSeek-V3 в качестве базы — см.рекурсия). Но проблема с данными от R1 была в её многословности, overthinking и плохом форматировании.

Для генерации данных из конкретного домена создавалась экспертная модель, также обученная через SFT + RL. Генерировались два типа SFT сэмплов: <problem, original response> и <system prompt, problem, R1 response>. В промпте были инструкции для рефлексии и верификации. В RL фазе с высокой температурой генерились ответы модели, и постепенно модель выучивала паттерны R1. После обучения с помощью rejection sampling генерировались примеры для SFT оригинальной модели.

Читать полностью…

gonzo-обзоры ML статей

Также вложились в оптимизацию хранения и коммуникации, что помогло сэкономить и в потреблении памяти, и в оверхеде на коммуникацию.

FP8 обучение провалидировали на DeepSeek-V2 с 16B и 230B параметров, там разница между FP8 и BF16 оказалась в пределах случайности.

Ждём теперь, когда Америка обяжет Нвидию ограничить FP4 и FP8 🙂


❇️ Для инференса тоже сделали оптимизации.

Деплоймент фаз prefilling и decoding разделён. Напомню, что во время prefill обрабатываются все токены промпта и вычисляются все промежуточные KV, в во время decode происходит авторегрессионная генерация токена за токеном. Подробнее тут (https://developer.nvidia.com/blog/mastering-llm-techniques-inference-optimization/).

Для prefill минимальный деплой юнит содержит 4 ноды с 32 GPU и конкретные настройки параллелизма. При декодировании, где нужно суммарно 9 экспертов, минимальный юнит содержит 40 нод с 320 GPU и имеет свои настройки.


❇️ Отдельная интересная секция — это “3.5. Suggestions on Hardware Design”.

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

Среди рекомендаций есть группа про коммуникацию и про компьют.

На коммуникацию приходилось выделять 20 из 132 SM, которые могли бы заниматься вычислениями. Авторы хотели бы использовать GPU со-процессор или специальный сетевой со-процессор, в который можно было бы выгружать подобные задачи. Кто помнит 386/387 и далее, когда были процессоры и арифметические со-процессоры? Вот теперь зреют графические процессоры и со-процессоры! Хотя, кажется, они давно уже есть, те же DPU? С точки зрения программирования интересно было бы унифицировать сети Infiniband (scale-out) and NVLink (scale-up).

С точки зрения компьюта есть запрос на повышение точности аккумуляции внутри тензорных ядер, поддержку tile- и block-wise квантований, онлайн квантования, и поддержку транспонированных GEMM-операций.


На этом пока закончу технический разбор, может быть ещё пройдёмся по обучению и последующим моделям.

Читать полностью…

gonzo-обзоры ML статей

❇️ Во-вторых, DeepSeekMoE (https://arxiv.org/abs/2401.06066)

“Эксперты” сидят в FFN слоях, не в MLA, и слой заменяется на выбор и вызов какого-то числа “экспертов” из всех доступных. По сути каждый эксперт — это отдельный слой FFN, который выбирается каким-то алгоритмом роутинга. Классический GShard (/channel/gonzo_ML/473) активировал двух экспертов на слой, Switch Transformer (/channel/gonzo_ML/473) одного. Соответственно каждый токен отправляется на обработку выбранным экспертам, и если их больше одного, их ответы каким-то образом смешиваются (например, с весами).

DeepSeekMoE пытается добиться от экспертов большей специализации. Для этого экспертов разбивают на более мелких. То есть каждого эксперта разбили на m штук, но при этом и активируем больше, тоже в m раз, так что суммарные вычисления остаются примерно такими же. Это называется Fine-Grained Expert Segmentation. Вместо K активных экспертов из N получаем mK из mN. Выходит более интересная комбинаторика в виде сильно большего количества вариантов, кто может быть задействован, соответственно может получиться более интересная специализация экспертов.

С другой стороны может требоваться какое-то общее знание и для этого осмысленно выделить сколько-то шаренных экспертов, которым токены отправляются всегда. Тогда есть надежда, что общее знание будет выучиваться там, а не в куче остальных экспертов независимо. Можно сказать, что в итоге есть N_s shared экспертов и N_r routed экспертов. В DeepSeek-V3 используется 1 shared, 256 routed, из них выбирается 8 активных.

Routed эксперты выбираются как top-k, по affinity скору, рассчитываемому как скалярное произведение входного эмбеддинга токена и центроида конкретного эксперта. Я не заметил описания, как вычисляется этот центроид, но допускаю, что это какое-то среднее значение активаций (или входов) всех токенов, на которые реагирует данный эксперт. В DeepSeek-V2 брали softmax от этого произведения, в DeepSeek-V3 перешли к sigmoid, а также добавили нормализацию всех скоров перед их применением.

Чтобы избежать коллапса при роутинге (например, когда всё отправляется одним и тем же экспертам) в DeepSeek-V2 был специальный балансирующий лосс, даже два: один на уровне экспертов, другой на уровне вычислительных девайсов, что логично, баланса хочется и там, и там. Слишком большой лосс может ухудшить перформанс модели и в DeepSeek-V3 отказались от дополнительного лосса, использовав специальную стратегию балансировки auxiliary-loss-free load balancing strategy, опубликованную командой чуть ранее (https://arxiv.org/abs/2408.15664). В ней при роутинге к affinity score добавляется bias и по результату берётся top-k. Для вычисления коэффициента при смешивании экспертов (gating value) этот bias не используется. За изменение bias отвечает специальная процедура, которая следит, какие эксперты вызывались внутри батча и если кто-то перегружен, понижает ему этот bias (и повышает, если эксперт сидит без дела). Работает лучше, чем с лоссом. Прикольно, назад от бэкпропа. Хотя может просто не нашли правильный подход для обучения бэкпропом…

Чтобы избежать дисбаланса в рамках обрабатываемой последовательности также добавили Complementary Sequence-Wise Auxiliary Loss с очень маленьким весом. Есть алгоритмический Node-Limited Routing, ограничивающий девайсы, идейно близкий к балансирующему лоссу в DeepSeek-V2. Каждый токен отправляется максимум на 4 узла.


❇️ Далее новые вещи. Используется Multi-Token Prediction (MTP). Идея MTP в том, что в каждой позиции предсказывается больше одного токена. В текущей модели это два токена, текущий и следующий. По идее это усиливает обучающий сигнал и может повысить data efficiency. Также это может помочь модели лучше готовиться к предсказанию будущих токенов.

Читать полностью…

gonzo-обзоры ML статей

Любопытное интервью с Дэвидом Дойчем. У него в частности свой особый взгляд на соотношение между AI и AGI

https://youtu.be/jQnoxhoWhXE?si=y_wtBbmyiP1XJnC9

Читать полностью…

gonzo-обзоры ML статей

Про магию Deepseek, RL и GRPO

Когда-то, давным давно, никто не занимался глупостями, и не использовал RL в обучении языковых моделей. Был unsupervised претрейнинг, был SFT для обучения моделей следования инструкциям, были какие-то энкодер специфичные лоссы, которые никак не были связаны с генерацией текста, ну и, в общем то, всё.

Потом наступили времена GPT-3.5 и соответствующей статьи опенаи. Авторы добавили третий шаг после претрейна и сфт — RLHF в виде PPO. Работало это так: африканцы, работающие за копейки (по меркам западного мира, по меркам их родных стран получали они вполне неплохо), размечали диалоговые данные на предмет соответствия заданным в ТЗ требованиям, на этих разметках обучался текстовый классификатор, который использовался в лоссе при обучении. Чтобы модель не ломалась и не начинала генерить, например, пустые предсказания (потому что если промолчать, то сойдёшь за умного), дополнительно накладывался KLD-штраф на слишком большой отход от генераций референс моделью. В итоге, постепенно, модель начинала генерить текст, который лучше рейтился классификатором -- и при условии соответствия классификатора human reference'ам, модель переставала быть токсичной, рассказывать про изготовление бомб и крэка и так далее.

Одним из больших плюсов такого подхода было то, что при наличии ревард-модели (классификатора), обучать модель генерациям можно на неразмеченных данных. По сути, ревард модель на лету их размечает, а нам надо только следить за падающим лоссом. С другой стороны, PPO — это штука сложная, нестабильная и требовательная к качеству ревард модели. Если её слишком сложно обмануть, то начнётся reward hacking и модель испортится. Плюс мб это skill issue, но сколько бы я не пробовал применять PPO, у меня всегда взрывался KLD и итоговая модель ломалась. Судя по моим консультациям с коллегами, у них было то же самое — и единственным способом с этим бороться было делать чекпоинты почаще и откатываться на последний рабочий чекпоинт в случае взрыва.

Было ясно, что надо как-то всё упростить, и следующим шагом стал DPO. В нём полностью избавились от отдельной ревард модели, используя саму обучаемую модель для оценки генераций. Если на пальцах — мы берём датасет, где ответы на промпты размечены на chosen и rejected, потом считаем логпробы обучаемой и референсной модели при генерации обоих вариантов ответа, нормируем ответы референсной и обучаемой модели друг на друга и потом оптимизируем сигмоиду от взвешенной разности между этими логпробами.

Это, по сути, стало стандартом для преференс-тюнинга моделей. При наличии даже небольшого размеченного датасета можно было быстро и дёшево обучить инстракт модель тому или иному стилю или добавить в её ответы какие-то свойства. К примеру, авторы моделей через DPO делали их цензурирование, а потом деятели коммьюнити через тот же DPO пытались модели расцензурить. Вариаций на тему этого лосса был миллион, все они отличаются какими-то небольшими изменениями оригинальной формулы и время от времени с ноги влетают на нипс.

А потом, в феврале 2024 года — почти год назад — появилась статья про модель DeepSeek Math, где авторы предложили тот самый GRPO, который используется в так хайпующем сейчас R1. Там они тоже решили отталкиваться от PPO как от базового лосса, но решили пойти чуть в другую сторону. Вместо per-prompt оптимизации, в GRPO сначала семплится батч из промптов, потом для каждого ответа считается ревард, потом из каждого реварда вычитается среднее по всем ревардам в батче и нормируется на std, так получаем advantage. Дальше мы считаем частное между предсказаниями новой и старой моделей и вычитаем KLD, чтобы модель не сильно уходила от изначальных ответов.

В итоге, DeepSeek Math с небольшим сфт колдстартом и GRPO била гораздо большие по размеру модели на основных бенчмарках по матеше. Потом тот же подход повторили Qwen Team — в Qwen 2 Math они тоже использовали GRPO для обучения, а в Qwen-2.5-Math доразметили датасет через Qwen-2-Math и получили ещё более качественную модель.

Читать полностью…

gonzo-обзоры ML статей

Про ограниченность ресурсов и инновации.

Это соавтор QLoRALLM.int8()k-bit inference scaling lawsPetalsSWARM если что.

Читать полностью…

gonzo-обзоры ML статей

Это уже было, но чтоб не искать.

Читать полностью…

gonzo-обзоры ML статей

Пожалуй, это достойно не только чата, но и всего канала

https://youtu.be/vxkBE23zDmQ?si=DK5E-ox1wUjqhwIB

Читать полностью…

gonzo-обзоры ML статей

И чтобы два раза не вставать:

Сколько времени прошло от сайнс-фикшна до воплощения, на примере 50 технологий.

https://www.aiprm.com/science-fiction-technologies/

Читать полностью…

gonzo-обзоры ML статей

Thomas Wolf, кофаундер HuggingFace, написал пост про пару вчерашних LLM анонсов. Нет смысла пересказывать это своими словами, оставлю as is:

Taking a moment to detail yesterday's two new open-source AI model releases that I briefly mentioned in my long post. They are again pushing the state of the art!

Small 3 by Mistral (Paris, France) is your top-level mid-sized model for fast-inference under Apache 2 licence. A 24B model made to run fast while keeping good performances (about GPT-4 level of performances in a model 70x smaller, generally about the perf/latency of today's GPT-4o-mini):
Check it out at https://huggingface.co/mistralai/Mistral-Small-24B-Instruct-2501
And read the blog post at https://mistral.ai/news/mistral-small-3/

Tülu 3 by AllenAI (Seattle, US) is your new very large open-source frontier model. With 405B parameters you won't run it everywhere for sure but according to the benchmarks of the AllenAI team it seems to outperform the base model being DeepSeek that everyone is talking about.
Check it out at https://huggingface.co/allenai/Llama-3.1-Tulu-3-405B
And read the blog post at https://allenai.org/blog/tulu-3-405B

By the way, both are the third versions released by these teams, and with the current base model from DeepSeek also being V3, seems like the whole open-source AI community is well aligned on versioning for some reason.

Now the remaining part for both Small 3 and Tülu 3 will be to fine-tune these models following the DeepSeek recipe and turn them into the reasoning models we're starting to love.

If you want to follow that endeavor, you can, for instance, head to our open-r1 GitHub repo, where we're reproducing the DeepSeek R1 reasoning recipe and extending it to many open-source models and domains.

Exciting times to be alive!

https://www.linkedin.com/posts/thom-wolf_taking-a-moment-to-detail-yesterdays-two-activity-7291061177445470208-XDIS

Ждём открытых reasoning моделей вменяемого размера!

Читать полностью…

gonzo-обзоры ML статей

DeepSeek продолжает знатно всех будоражить. Спасибо китайцам, что всех расшевелили!

Дарио Амодеи написал эссе про экспортный контроль:
https://darioamodei.com/on-deepseek-and-export-controls

Но мне там не про экспортный контроль понравилось, а вот это вот:

"In 2020, my team published a paper suggesting that the shift in the curve due to algorithmic progress is ~1.68x/year. That has probably sped up significantly since; it also doesn't take efficiency and hardware into account. I'd guess the number today is maybe ~4x/year."

Оценка алгоритмического прогресса в 4x за год — это очень интересно.

И в целом раздел про динамику ИИ разработки любопытен. Там упоминаются три разные динамики:

1. Scaling laws. Вбухиваешь больше compute, получаешь лучше качество (при прочих равных).
2. Shifting the curve. Те самые алгоритмические улучшения, которые 4x за год.
3. Shifting the paradigm. Изменяем то, что скейлится. В 2020-2023 были предобученные модели, в 2024 появился RL и цепочки рассуждений, теперь скейлят их.

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

Ещё из интересных цифр есть стоимость обучения Claude 3.5 Sonnet: "Claude 3.5 Sonnet is a mid-sized model that cost a few $10M's to train (I won't give an exact number)."

А типа с трендом про 4x/год они как раз и ожидали модель уровня 3.5 Sonnet/GPT-4o и дешевле в 3-4 раза примерно сейчас. Ну, предсказывать прошлое легко.

"All of this is to say that DeepSeek-V3 is not a unique breakthrough or something that fundamentally changes the economics of LLM’s; it’s an expected point on an ongoing cost reduction curve. What’s different this time is that the company that was first to demonstrate the expected cost reductions was Chinese."

Основной месседж про DeepSeek в духе, что V3 был реально инновацией, в основном инженерной, "и мы за ними следили!", а R1 типо вообще не инновация. Просто реплицировали o1. А про то, что они сделали это в опенсорсе, молчат. По словам Амодеи, переход от V3 к R1 был простым и дешёвым (важна хорошая базовая модель, здесь это V3), и теперь можно ожидать хорошие модели с ризонингом от разных компаний.

В целом, сквозит в последних сообщениях OpenAI, Антропика и некоторых других относительно DeepSeek какое-то лёгкое обесценивание и попытка оправдаться, что мы не хуже. За Гуглом, к слову, такого пока не заметил.

Основная часть про экспортный контроль уже не очень интересная. Она о том, что DeepSeek глобально ничего не изменил, все и так туда идут, находки DeepSeek будут инкорпорированы в обучение несколько-миллиардо-долларовых моделей, которые получатся получше, чем ожидалось изначально, но всё равно потребуют миллионы GPU. AI умнее большинства людей ожидается в 2026-27 годах. И там вопрос, сумеет ли Китай собрать миллионы чипов — от этого зависит, будет мир униполярным или биполярным. И чтобы хорошие победили плохих, нужны экспортные ограничения.

Такие дела. Mixed feelings от всего эссе.

Читать полностью…

gonzo-обзоры ML статей

В итоге мы имеем универсальный швейцарский нож который работает действительно хорошо.

Можно детектить свою кошку, делать подписи и таким образом получать промпты для генерации картинки которая вам понравилась (пример для FLUX), поиск, эмбеддинги, использовать как часть inpainting пайплайна (выделить объект, перерисовать своей любимой диффузионкой), даже просто классифицировать, удалять с изображений фон, делать OCR (кстати лучше, чем тессеракт и многие OCR API). Да ещё и простое дообучение, народ уже штампует свои LoRA.

Это статья не про то, как авторы изобрели вундервафлю. Наоборот, они смогли упростить весь computer vision до одной функции ошибки, что меня очень впечатлило. Они получили крутую модель не потому, что закидали её данными, параметрами и сожжеными деньгами. Просто хорошо подумали, что хотят получить и как этого можно добиться.

Что делает Florence-2 одной из немногих статей за год, особенно в CV, в которой сделали что-то нетипичное относительно текущей парадмигы. Да ещё и получили полезную для нас, работяг, модель.

Скачивайте и играйтесь на HF.

Читать полностью…

gonzo-обзоры ML статей

В итоге они собирали такие типы обучающих примеров:
1. Captioning трех видов: brief, detailed, more detailed. Задачи связанные с описанием изображения.
2. Region-text: phrase, brief. Это, например, детекция: найди всех кошек. Phrase будет при этом вариацией когда в качестве промпта подается сложная фраза, а brief когда, условно, "кошка." Сюда относится и обратная задача: опиши объект в данном регионе, коротко или объемно. Это и сегментация, и OCR, и так далее.
3. Text-Phrase-Region: brief, detailed, more detailed. Это в основном про grounding: такая задача, где модели требуется выделить часть из длинного текста и сопоставить эту часть с чем-то на изображении. Например, это может быть параграф текста, в котором модели нужно выделить все сущности и выделить их на изображении.

По части данных CLIP когда-то изменил парадигму в CV: 400 миллионов собранных из интернета пар изображение-подпись оказались гораздо лучше чем 328к качественной разметки MS COCO. Масштаб победил: лучше куча мусора, но зато большая!

Florence-2 кладет всех на лопатки используя всего 126m изображений. Что меньше чем у CLIP (400m), Flamingo (185m) и даже обычного ViT (300m). Но есть важная деталь: в датасете Florence-2 на 128m изображений приходится 5 миллиардов аннотаций. Авторы называют эту парадигму multi-task learning. Вместо того, чтобы собирать огромное количество примеров (задача,изобрадеине), давайте заставим модель решать много разных задач для каждого изображения. Одно и то же изображение получает много лейблов: короткое описание, длинное описание, bbox для сущностей, сегментационные маски, и так далее. Если подумать, это разумно: я ведь не хочу модель, которая для каких-то изображений умеет делать подписи, а для других умеет делать детекцию. Я хочу модель, которая сможет сделать с любым изображением всё, что мне нужно.

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

В парадигме multi-task learning так же удобно собирать разметку. Как и во многих современных работах, авторы сделали data engine итеративно улучшающий разметку. Процесс простой: берем изображения, делаем для них разметку с помощью специализированных моделей. Возьмем наш любимый OCR, Segment Anything для сегментации, OWL ViT 2 для детекции, и так далее. Таким образом мы получаем шумную синтетику. Далее мы фильтруем её как можно лучше. Обучаем на этой версии датасета Florence-2. С помощью этой версии модели и специалистов генерируем шумную разметку снова, снова фильтруем, обучаем модель и так далее пока не надоест. Всё это возможно благодаря тому, что набор изображений небольшой и фиксированный.

Читать полностью…

gonzo-обзоры ML статей

Хороший разбор интересной статьи

Читать полностью…

gonzo-обзоры ML статей

В продолжение темы, Jay Alammar, у которого были прекрасные визуальные объяснения про работу трансформера, в сто раз лучшие оригинальной статьи, выпустил только что иллюстрированный DeepSeek-R1

https://newsletter.languagemodels.co/p/the-illustrated-deepseek-r1

Читать полностью…
Subscribe to a channel