Optimizing Large Language Model Training Using FP4 Quantization
Ruizhe Wang, Yeyun Gong, Xiao Liu, Guoshuai Zhao, Ziyue Yang, Baining Guo, Zhengjun Zha, Peng Cheng
Статья: https://arxiv.org/abs/2501.17116
Формат мини.
Только обсудили обучение DeepSeek в FP8 (https://www.group-telegram.com/gonzo_ML.com/3294) и упомянули старую работу про FP8-LM (https://arxiv.org/abs/2310.18313) от Microsoft, как та же команда анонсировала обучение в FP4!
С помощью ухищрений в виде differentiable quantization estimator для точного обновления весов и outlier clamping and compensation strategy для предотвращения коллапса активаций достигли качества аналогичного обучению в BF16 и FP8 и обучили 13B модель на 100B токенов.
FP16 использует формат E5M10 (5 бит на экспоненту, 10 на мантиссу), BF16 — E8M7, FP8 обычно есть в двух вариантах с E4M3 (был у DeepSeek-V3) и E5M2, а здесь FP4 сделали в формате E2M1. Ещё один бит — знак, если что.
Нвидиа теперь репортит флопсы в FP4 (https://www.group-telegram.com/gonzo_ML.com/3182), эта разрядность поддерживается новыми GPU, так что можно ожидать ещё одного удвоения производительности/размера моделей относительно DeepSeek, или учетверения относительно более традиционных моделей типа Llama.
Так и доFP1 INT1 дойдём!
Очень круто.
Ruizhe Wang, Yeyun Gong, Xiao Liu, Guoshuai Zhao, Ziyue Yang, Baining Guo, Zhengjun Zha, Peng Cheng
Статья: https://arxiv.org/abs/2501.17116
Формат мини.
Только обсудили обучение DeepSeek в FP8 (https://www.group-telegram.com/gonzo_ML.com/3294) и упомянули старую работу про FP8-LM (https://arxiv.org/abs/2310.18313) от Microsoft, как та же команда анонсировала обучение в FP4!
С помощью ухищрений в виде differentiable quantization estimator для точного обновления весов и outlier clamping and compensation strategy для предотвращения коллапса активаций достигли качества аналогичного обучению в BF16 и FP8 и обучили 13B модель на 100B токенов.
FP16 использует формат E5M10 (5 бит на экспоненту, 10 на мантиссу), BF16 — E8M7, FP8 обычно есть в двух вариантах с E4M3 (был у DeepSeek-V3) и E5M2, а здесь FP4 сделали в формате E2M1. Ещё один бит — знак, если что.
Нвидиа теперь репортит флопсы в FP4 (https://www.group-telegram.com/gonzo_ML.com/3182), эта разрядность поддерживается новыми GPU, так что можно ожидать ещё одного удвоения производительности/размера моделей относительно DeepSeek, или учетверения относительно более традиционных моделей типа Llama.
Так и до
Очень круто.
arXiv.org
Optimizing Large Language Model Training Using FP4 Quantization
The growing computational demands of training large language models (LLMs) necessitate more efficient methods. Quantized training presents a promising solution by enabling low-bit arithmetic...
Дарио Амодеи написал программное заявление
"Time is short, and we must accelerate our actions to match accelerating AI progress. Possibly by 2026 or 2027 (and almost certainly no later than 2030), the capabilities of AI systems will be best thought of as akin to an entirely new state populated by highly intelligent people appearing on the global stage—a “country of geniuses in a datacenter”—with the profound economic, societal, and security implications that would bring."
https://www.anthropic.com/news/paris-ai-summit
"Time is short, and we must accelerate our actions to match accelerating AI progress. Possibly by 2026 or 2027 (and almost certainly no later than 2030), the capabilities of AI systems will be best thought of as akin to an entirely new state populated by highly intelligent people appearing on the global stage—a “country of geniuses in a datacenter”—with the profound economic, societal, and security implications that would bring."
https://www.anthropic.com/news/paris-ai-summit
Anthropic
Statement from Dario Amodei on the Paris AI Action Summit
A call for greater focus and urgency
FP1 в массы! Если реально есть потенциал ускорить обучение LLM в 16 раз (относительно BF16) или обучить модель в 16 раз большую, то это очень интересно.
Forwarded from КПД
QuEST: Stable Training of LLMs with 1-Bit Weights and Activations
[Статья][Код]
Введение
Уважаемые коллеги из IST, в частности, @black_samorez_channel выпустили статью про стабильное обучение моделей с квантизованными весами и активациями.
Статей с той же аббревиатурой пруд пруди на архиве:
- Вот
- Вот
- Вот
- И вот
Но эта - особенная!
Ранее уже неоднократно поднимался (в том числе и на этом канале) вопрос о том, в какой точности оптимально учить модель (веса и активации), дабы получить наилучшее качество при заданном размере (через PTQ или QAT). Ранее утверждали, что 6-7 бит оптимально при квантизации весов и активаций в INTx/FPx. Но сама процедура была незамысловата, и нет гарантий, что нельзя пробить существенно Парето-фронт. Свежие результаты (смотри краткий обзор на gonzo-ml) показывают, что в fp4 тоже можно эффективно обучать.
В данной же статье авторам удается достичь Парето-оптимальности в W3A3/W4A4 и стабильного обучения в W1A1 😮 (уже не оптимального, но на одном уровне с fp16).
[Статья][Код]
Введение
Уважаемые коллеги из IST, в частности, @black_samorez_channel выпустили статью про стабильное обучение моделей с квантизованными весами и активациями.
Статей с той же аббревиатурой пруд пруди на архиве:
- Вот
- Вот
- Вот
- И вот
Но эта - особенная!
Ранее уже неоднократно поднимался (в том числе и на этом канале) вопрос о том, в какой точности оптимально учить модель (веса и активации), дабы получить наилучшее качество при заданном размере (через PTQ или QAT). Ранее утверждали, что 6-7 бит оптимально при квантизации весов и активаций в INTx/FPx. Но сама процедура была незамысловата, и нет гарантий, что нельзя пробить существенно Парето-фронт. Свежие результаты (смотри краткий обзор на gonzo-ml) показывают, что в fp4 тоже можно эффективно обучать.
В данной же статье авторам удается достичь Парето-оптимальности в W3A3/W4A4 и стабильного обучения в W1A1 😮 (уже не оптимального, но на одном уровне с fp16).
Forwarded from КПД
Метод
Основным затруднением при оптимизации весов и активаций в низкой точности является высокая степень шума. Напомню, что операция квантизации недифференцируема, и дабы все можно было оптимизировать градиентными методами применяют трюк имени Бенджио под названием STE (небось, тоже спиздил у Шмидхубера) , где градиент просто пробрасывается через недифференцируемую операцию (как будто вместо нее стоит функция y=x). Но при низких битностнях, такая оценка сильно расходится от истинного градиента и не сходится нормально.
Авторы формулируют задачу оптимизации STE, как минимизацию между оцененным псевдоградиентом и истинным. Предполагая гладкость функции потерь по весам, можно оценить ошибку градиента, как константа на ошибку квантизации весов.
Веса модели разделяют на 2️⃣ группы - с ошибкой квантизации ниже и выше некоторого порога. На шаге оптимизации учитывают только градиенты от весов с ошибкой ниже заданного порога, ибо вторые как раз и вносят шум и нестабильность в обучение.
Далее, дабы работать с более регулярным распределением весов/активаций, которое проще квантизовать, применяют пару трюков:
1️⃣ Чтобы привести распределение в более удобо квантизуемый вид применяют известный старым читателям канала трюк - вращения Адамаровыми матрицами как весов и активаций. В результате получают что-то близкое к гауссиане.
2️⃣ Дабы привести все приблизительно к
То есть в итоге алгоритм выглядит следующим образом:
🎯 На прямом проходе вращаем и нормализуем веса, сохраняя Адамаровы матрицы
🎯 На обратном проходе применяем обратное Адамарово преобразование и маскируем градиент
В Ablation показывают, что trust estimator (отбрасывание градиентов по шумным весам) в связке с Адамаровыми вращениями дает хорошую близость с истинным градиентом, в то время как vanilla STE и без Адамара корреляция низкая.
Основным затруднением при оптимизации весов и активаций в низкой точности является высокая степень шума. Напомню, что операция квантизации недифференцируема, и дабы все можно было оптимизировать градиентными методами применяют трюк имени Бенджио под названием STE
Авторы формулируют задачу оптимизации STE, как минимизацию между оцененным псевдоградиентом и истинным. Предполагая гладкость функции потерь по весам, можно оценить ошибку градиента, как константа на ошибку квантизации весов.
Веса модели разделяют на 2️⃣ группы - с ошибкой квантизации ниже и выше некоторого порога. На шаге оптимизации учитывают только градиенты от весов с ошибкой ниже заданного порога, ибо вторые как раз и вносят шум и нестабильность в обучение.
Далее, дабы работать с более регулярным распределением весов/активаций, которое проще квантизовать, применяют пару трюков:
1️⃣ Чтобы привести распределение в более удобо квантизуемый вид применяют известный старым читателям канала трюк - вращения Адамаровыми матрицами как весов и активаций. В результате получают что-то близкое к гауссиане.
2️⃣ Дабы привести все приблизительно к
N(0, 1)
применяют RMS нормализацию к результату шага 1. А для N(0, 1
) можно уже численно найти оптимальный скейлинг фактор для решетки квантизации и пользоваться им.То есть в итоге алгоритм выглядит следующим образом:
🎯 На прямом проходе вращаем и нормализуем веса, сохраняя Адамаровы матрицы
🎯 На обратном проходе применяем обратное Адамарово преобразование и маскируем градиент
В Ablation показывают, что trust estimator (отбрасывание градиентов по шумным весам) в связке с Адамаровыми вращениями дает хорошую близость с истинным градиентом, в то время как vanilla STE и без Адамара корреляция низкая.
Forwarded from КПД
Эксперименты
Обучают семейство моделей размером от 30 до 800М параметров архитектуры 🦙-2 на C4 с более-менее стандартным рецептом обучения. По умолчанию отношение количества данных к числу параметров
Как меру качества берут перплексию на отложенной выборке.
QuEST работает лучше, чем PACT и LSQ бейзлайны.
Далее фитируют scaling law, который отличается от оригинального из статьи про Шиншиллу фактором eff(P) - поправкой на битность параметра (eff(P) = 1 для fp16). Исходя из эмпирических графиков лосса для моделей разного размера и битности, получают Парето-оптимальность в 4-х битах. 4 битный параметр эффективно равен 0.7 fp16, но модель-то при этом в 4 раза меньше, отсюда выигрыш в 2.7 раз по эффективности.
Метод пробуют на FP4 и 2:4 sparsity + INT4, где все тоже неплохо заводится.
В ablation показывают, что Адамаровы вращения дают некоторый прирост качества на W1A1 и W2A2, при этом лишь немного замедляя инференс.
Вывод
Как мне кажется, довольно обнадеживающий экспериментальный результат. Все больше и больше подтверждений тому, что следует с самого начала учить в низкой точности дабы нищеброды потом уже не просили униженно GGUF, GPTQ или AWQ кванты. Интересно, можно ли пробить ниже еще порог Парето-оптимальности по битностям весов/активаций или мы упираемся уже в некий потолок? Ждем экспериментов на большем масшабе. Глядишь Meta, Qwen или DeepSeek порадуют.
Обучают семейство моделей размером от 30 до 800М параметров архитектуры 🦙-2 на C4 с более-менее стандартным рецептом обучения. По умолчанию отношение количества данных к числу параметров
D/N=100
.Как меру качества берут перплексию на отложенной выборке.
QuEST работает лучше, чем PACT и LSQ бейзлайны.
Далее фитируют scaling law, который отличается от оригинального из статьи про Шиншиллу фактором eff(P) - поправкой на битность параметра (eff(P) = 1 для fp16). Исходя из эмпирических графиков лосса для моделей разного размера и битности, получают Парето-оптимальность в 4-х битах. 4 битный параметр эффективно равен 0.7 fp16, но модель-то при этом в 4 раза меньше, отсюда выигрыш в 2.7 раз по эффективности.
Метод пробуют на FP4 и 2:4 sparsity + INT4, где все тоже неплохо заводится.
В ablation показывают, что Адамаровы вращения дают некоторый прирост качества на W1A1 и W2A2, при этом лишь немного замедляя инференс.
Вывод
Как мне кажется, довольно обнадеживающий экспериментальный результат. Все больше и больше подтверждений тому, что следует с самого начала учить в низкой точности дабы нищеброды потом уже не просили униженно GGUF, GPTQ или AWQ кванты. Интересно, можно ли пробить ниже еще порог Парето-оптимальности по битностям весов/активаций или мы упираемся уже в некий потолок? Ждем экспериментов на большем масшабе. Глядишь Meta, Qwen или DeepSeek порадуют.
s1: Simple test-time scaling
Niklas Muennighoff, Zitong Yang, Weijia Shi, Xiang Lisa Li, Li Fei-Fei, Hannaneh Hajishirzi, Luke Zettlemoyer, Percy Liang, Emmanuel Candès, Tatsunori Hashimoto
Статья: https://arxiv.org/abs/2501.19393
Репа: https://github.com/simplescaling/s1
Продолжая тему про Test-time compute (https://www.group-telegram.com/gonzo_ML.com/3175). SFT на маленьком датасете в 1k примеров + простые стратегии чтобы заставить модель подумать подольше — и вуаля, бьём o1-preview на MATH and AIME24!
DeepSeek-R1 (https://www.group-telegram.com/gonzo_ML.com/3319) безусловно был достижением в обучении модели с ризонингом через RL, и в этом смысле открытый мир приблизился или даже догнал достижения OpenAI в лице o1, но эта работа не целилась в демонстрацию test-time scaling behaviour. В текущей работе совмещают и сильный ризонинг (но без RL), и скейлинг.
Рецепт простой и дешёвый.
1) Собираем датасет s1K из 1000 тщательно отобранных пар вопросов и ответов с reasoning traces, дистиллированных из Gemini Thinking Experimental.
2) Делаем на этом датасете SFT (PyTorch FSDP, 5 эпох, BF16) открытой модели (Qwen2.5- 32B-Instruct), в течение 26 минут на 16 H100 GPUs (это может стоить примерно от $25). Получаем модель s1-32B.
3) После обучения контролируем количество test-time compute через прямолинейную стратегию budget forcing, которая заключается в том, что 1) если модель нагенерировала уже слишком много токенов, то принудительно заканчиваем процесс добавлением end-of-thinking токена, а 2) если модель нагенерировала мало, то наоборот не даём её добавить этот токен окончания размышлений, а добавляем “Wait” и стимулируем модель подумать ещё.
4) Профит! График демонстрирует test-time scaling. Да ещё и получаем модель на Парето-фронте по sample efficiency, лучше o1-preview.
Модель полностью открыта: веса, данные и код.
Теперь чуть подробнее про отдельные шаги.
📔Датасет
Датасет собирался в два этапа. Сначала собрали 59K (59,029) вопросов из 16 источников.
Взяли задачи из имеющихся датасетов (NuminaMATH, AIME, OlympicArena, OmniMath, AGIEval) и создали пару своих, s1-prob с вопросами по теории вероятности (182 штуки), и s1-teasers с головоломками (23 штуки). Вообще не очень привычно слышать про датасеты из 23 примеров…
Для каждого вопроса сгенерировали reasoning trace и решение через Google Gemini Flash Thinking API, получили 59K триплетов <вопрос, размышление, решение>. Почистили этот набор против имеющихся вопросов для evaluation через 8-граммы и дедупликацию.
Можно было сразу на этих 59k и обучать, но хотели найти минимальную конфигурацию, поэтому устроили три стадии фильтрации.
1) Качество (Quality) должно быть высоким. Смотрим на сэмплы и убираем проблемные примеры, например, с плохим форматированием. Уменьшили датасет до 51,581 примеров и из них отобрали 384 в финальный 1k датасет.
2) Сложность (Difficulty) должна быть на уровне и требовать ризонинга. Выкинули слишком лёгкие примеры, которые решил Qwen2.5-7B-Instruct или Qwen2.5-32B-Instruct. Корректность оценивал Claude 3.5 Sonnet относительно референса. Сложность оценивали по длине цепочки рассуждений, подразумевая, что более сложный вопрос требует более длинной цепочки. Сократили датасет до 24,496 примеров.
3) Разнообразие (Diversity): датасеты должны быть из разных областей и с разными задачами. Sonnet классифицировал задачи по Mathematics Subject Classification (MSC), далее выбирали случайно один из доменов, из него сэмплили задачу так, чтобы предпочитались более длинные рассуждения, и повторяли пока не наберётся 1000 примеров. Итого набрали 50 разных доменов.
⚒️Test-time scaling
Авторы разделяют методы скейлинга на последовательные (результат зависит от предыдущих размышлений) и параллельные (типа голосования большинства). Сфокусировались на последовательных, потому что по мнению авторов они должны скейлиться лучше.
Niklas Muennighoff, Zitong Yang, Weijia Shi, Xiang Lisa Li, Li Fei-Fei, Hannaneh Hajishirzi, Luke Zettlemoyer, Percy Liang, Emmanuel Candès, Tatsunori Hashimoto
Статья: https://arxiv.org/abs/2501.19393
Репа: https://github.com/simplescaling/s1
Продолжая тему про Test-time compute (https://www.group-telegram.com/gonzo_ML.com/3175). SFT на маленьком датасете в 1k примеров + простые стратегии чтобы заставить модель подумать подольше — и вуаля, бьём o1-preview на MATH and AIME24!
DeepSeek-R1 (https://www.group-telegram.com/gonzo_ML.com/3319) безусловно был достижением в обучении модели с ризонингом через RL, и в этом смысле открытый мир приблизился или даже догнал достижения OpenAI в лице o1, но эта работа не целилась в демонстрацию test-time scaling behaviour. В текущей работе совмещают и сильный ризонинг (но без RL), и скейлинг.
Рецепт простой и дешёвый.
1) Собираем датасет s1K из 1000 тщательно отобранных пар вопросов и ответов с reasoning traces, дистиллированных из Gemini Thinking Experimental.
2) Делаем на этом датасете SFT (PyTorch FSDP, 5 эпох, BF16) открытой модели (Qwen2.5- 32B-Instruct), в течение 26 минут на 16 H100 GPUs (это может стоить примерно от $25). Получаем модель s1-32B.
3) После обучения контролируем количество test-time compute через прямолинейную стратегию budget forcing, которая заключается в том, что 1) если модель нагенерировала уже слишком много токенов, то принудительно заканчиваем процесс добавлением end-of-thinking токена, а 2) если модель нагенерировала мало, то наоборот не даём её добавить этот токен окончания размышлений, а добавляем “Wait” и стимулируем модель подумать ещё.
4) Профит! График демонстрирует test-time scaling. Да ещё и получаем модель на Парето-фронте по sample efficiency, лучше o1-preview.
Модель полностью открыта: веса, данные и код.
Теперь чуть подробнее про отдельные шаги.
📔Датасет
Датасет собирался в два этапа. Сначала собрали 59K (59,029) вопросов из 16 источников.
Взяли задачи из имеющихся датасетов (NuminaMATH, AIME, OlympicArena, OmniMath, AGIEval) и создали пару своих, s1-prob с вопросами по теории вероятности (182 штуки), и s1-teasers с головоломками (23 штуки). Вообще не очень привычно слышать про датасеты из 23 примеров…
Для каждого вопроса сгенерировали reasoning trace и решение через Google Gemini Flash Thinking API, получили 59K триплетов <вопрос, размышление, решение>. Почистили этот набор против имеющихся вопросов для evaluation через 8-граммы и дедупликацию.
Можно было сразу на этих 59k и обучать, но хотели найти минимальную конфигурацию, поэтому устроили три стадии фильтрации.
1) Качество (Quality) должно быть высоким. Смотрим на сэмплы и убираем проблемные примеры, например, с плохим форматированием. Уменьшили датасет до 51,581 примеров и из них отобрали 384 в финальный 1k датасет.
2) Сложность (Difficulty) должна быть на уровне и требовать ризонинга. Выкинули слишком лёгкие примеры, которые решил Qwen2.5-7B-Instruct или Qwen2.5-32B-Instruct. Корректность оценивал Claude 3.5 Sonnet относительно референса. Сложность оценивали по длине цепочки рассуждений, подразумевая, что более сложный вопрос требует более длинной цепочки. Сократили датасет до 24,496 примеров.
3) Разнообразие (Diversity): датасеты должны быть из разных областей и с разными задачами. Sonnet классифицировал задачи по Mathematics Subject Classification (MSC), далее выбирали случайно один из доменов, из него сэмплили задачу так, чтобы предпочитались более длинные рассуждения, и повторяли пока не наберётся 1000 примеров. Итого набрали 50 разных доменов.
⚒️Test-time scaling
Авторы разделяют методы скейлинга на последовательные (результат зависит от предыдущих размышлений) и параллельные (типа голосования большинства). Сфокусировались на последовательных, потому что по мнению авторов они должны скейлиться лучше.
Предложили вышеупомянутый метод Budget forcing, где можно задать минимальное и максимальное количество токенов в test time. Для форсирования ответа используется end-of-thinking token delimiter и строка “Final Answer:”, для форсирования размышлений — подавление генерации end-of-thinking token delimiter и строка “Wait”.
В качестве бейзлайна сравнивали с (I) Conditional length-control methods, когда в промпте говорят, какой длины ответ нужен (там внутри несколько разных методов про длину в токенах, в шагах и общая рекомендация генерить подлиннее или покороче), и (II) Rejection sampling, когда генерим, пока не попадём в заданный бюджет.
🏁Evaluation
При оценке смотрим не только на точность, но и на контролируемость. На фиксированном бенчмарке варьируем test-time compute и получаем кусочно-линейную функцию с зависимостью точности от длины размышлений.
Измеряем несколько метрик:
* Control — доля ответов вписавшихся в бюджет (мин/макс количество токенов).
* Scaling — наклон кусочно-линейной функции, положительный наклон хорошо и чем больше, тем лучше.
* Performance — максимальное качество на бенчмарке.
Проверяли на AIME24, MATH500 и GPQA Diamond.
Сравнивались с серией o1 от OpenAI, DeepSeek R1 (оригинал и 32B дистиллят), Qwen QwQ-32B-preview, Sky-T1-32B-Preview, Bespoke32B, Google Gemini 2.0 Flash Thinking Experimental.
В целом у модели достойный результат, качество приближается к Gemini. Перформанс растёт с увеличением количества размышлений. На AIME24 после шести Wait происходит насыщение. Majority voting не скейлится так хорошо, как форсирование более длинной цепочки размышлений.
Абляции показали, что от датасета много зависит. Если пожертвовать одним из трёх принципов, качество выходит хуже. Обучение на полном 59K датасете даёт более высокое качество (но не то чтобы прям сильно), ценой сильно больших ресурсов, 394 H100 GPU часов против 7.
Среди разных методов контроля длины budget forcing даёт максимальное качество на AIME24, отличную (100%) контролируемость и хороший скейлинг (у class-conditional control он повыше).
Если попробовать просто сэмплить ответы нужной длины и отбрасывать что не вписывается (Rejection sampling), то так не работает, тренд скейлинга негативный — модель выдаёт более хороший результат при более коротком ответе (но для этого надо сэмплить сильно больше раз).
Это всё очень прикольный результат, чисто SFT очень малого размера. Интересно, что будет, если таки совместить это с последующим RL.
В качестве бейзлайна сравнивали с (I) Conditional length-control methods, когда в промпте говорят, какой длины ответ нужен (там внутри несколько разных методов про длину в токенах, в шагах и общая рекомендация генерить подлиннее или покороче), и (II) Rejection sampling, когда генерим, пока не попадём в заданный бюджет.
🏁Evaluation
При оценке смотрим не только на точность, но и на контролируемость. На фиксированном бенчмарке варьируем test-time compute и получаем кусочно-линейную функцию с зависимостью точности от длины размышлений.
Измеряем несколько метрик:
* Control — доля ответов вписавшихся в бюджет (мин/макс количество токенов).
* Scaling — наклон кусочно-линейной функции, положительный наклон хорошо и чем больше, тем лучше.
* Performance — максимальное качество на бенчмарке.
Проверяли на AIME24, MATH500 и GPQA Diamond.
Сравнивались с серией o1 от OpenAI, DeepSeek R1 (оригинал и 32B дистиллят), Qwen QwQ-32B-preview, Sky-T1-32B-Preview, Bespoke32B, Google Gemini 2.0 Flash Thinking Experimental.
В целом у модели достойный результат, качество приближается к Gemini. Перформанс растёт с увеличением количества размышлений. На AIME24 после шести Wait происходит насыщение. Majority voting не скейлится так хорошо, как форсирование более длинной цепочки размышлений.
Абляции показали, что от датасета много зависит. Если пожертвовать одним из трёх принципов, качество выходит хуже. Обучение на полном 59K датасете даёт более высокое качество (но не то чтобы прям сильно), ценой сильно больших ресурсов, 394 H100 GPU часов против 7.
Среди разных методов контроля длины budget forcing даёт максимальное качество на AIME24, отличную (100%) контролируемость и хороший скейлинг (у class-conditional control он повыше).
Если попробовать просто сэмплить ответы нужной длины и отбрасывать что не вписывается (Rejection sampling), то так не работает, тренд скейлинга негативный — модель выдаёт более хороший результат при более коротком ответе (но для этого надо сэмплить сильно больше раз).
Это всё очень прикольный результат, чисто SFT очень малого размера. Интересно, что будет, если таки совместить это с последующим RL.
arXiv.org
s1: Simple test-time scaling
Test-time scaling is a promising new approach to language modeling that uses extra test-time compute to improve performance. Recently, OpenAI's o1 model showed this capability but did not publicly...