Почему модели думают: как работает test-time compute

Почему модели думают: как работает test-time compute

Маленькая модель с долгим размышлением может обойти модель в 14 раз больше, которая отвечает сразу. Это не маркетинговый слоган, а экспериментальный факт из работы Snell et al. (2024), и он переворачивает привычную картину scaling laws. Лилиан Венг, экс-глава safety research в OpenAI, собрала в эссе «Why We Think» самый полный на сегодня обзор того, почему test-time compute работает, где его пределы и какие вопросы остаются открытыми. Разбираем главное.

Что такое test-time compute

Test-time compute (вычисления во время инференса) это дополнительная работа, которую модель выполняет между получением вопроса и выдачей ответа: генерация цепочки рассуждений, сэмплирование нескольких вариантов, самопроверка, вызов внешних инструментов. Классические scaling laws (Kaplan et al. 2020) описывали только три рычага качества: размер модели, объём данных и обучающие вычисления. Время размышления добавляет четвёртый рычаг, причём его можно крутить уже после того, как модель обучена.

В трансформере каждый сгенерированный токен стоит примерно 2 × N флопов, где N это число параметров. Для смеси экспертов (MoE) формула короче: 2 × N / доля активных экспертов. Это жёсткий потолок: на один ответный токен модель тратит фиксированный бюджет. Chain-of-thought снимает ограничение: модель генерирует промежуточные токены, и на каждый из них тоже тратит полный проход. Получается переменный бюджет вычислений, который растёт вместе со сложностью задачи. Простой вопрос отвечается быстро, трудный обрастает длинным рассуждением.

Почему это работает: три объяснения

Первое объяснение психологическое. Даниэль Канеман в «Думай медленно... решай быстро» разделяет мышление на Систему 1 (быструю, интуитивную, склонную к ошибкам) и Систему 2 (медленную, логическую, требующую усилий). LLM, отвечающая сразу, ведёт себя как Система 1: полагается на выученные эвристики и уверенно ошибается. Принуждение к рассуждению включает аналог Системы 2: модель проверяет интуицию шаг за шагом.

Второе объяснение вычислительное. Если смотреть на нейросеть как на систему с фиксированным бюджетом вычислений и памяти на прямой проход, то градиентный спуск сам находит, как организовать эти ресурсы в схемы для расчётов. Дайте архитектуре возможность делать больше вычислений на тесте и обучите её этим пользоваться, и она будет работать лучше. Размышление это просто способ увеличить бюджет.

Третье объяснение вероятностное, и оно самое формальное. Языковую модель можно рассматривать как латентно-переменную модель: задача x, ответ y и скрытая переменная z, цепочка рассуждений. Мы максимизируем маргинальное правдоподобие p(y|x), суммируя по всем возможным рассуждениям. Правильный ответ может быть достижим через много разных z, и чем больше хороших цепочек модель умеет порождать, тем выше итоговая вероятность верного ответа.

Мышление в токенах: что уже работает

Самый зрелый инструментарий это управление декодированием. Параллельный сэмплинг генерирует много ответов сразу и выбирает лучший: best-of-N, beam search, а когда правильного ответа для проверки нет, self-consistency (Wang et al. 2023) берёт ответ большинством голосов среди нескольких цепочек рассуждений. Последовательная ревизия идёт другим путём: модель смотрит на собственный черновик, находит ошибку и переписывает. Первый подход ширит поиск, второй углубляет.

Второй пласт это обучение с подкреплением поверх верифицируемых задач. DeepSeek-R1 прошёл два раунда SFT и RL: сначала холодный старт на тысячах примеров, чтобы убрать смешение языков и плохую читаемость, затем RL на задачах с проверяемыми ответами (математика, код, головоломки) с двумя типами наград, за формат и за правильность. Именно эта схема после успеха o-серии OpenAI стала отраслевым стандартом для reasoning-моделей.

Третий пласт это вынос части рассуждения наружу. PAL (Gao et al. 2022) и Chain of Code (Li et al. 2023) отдают арифметику и символьные операции интерпретатору кода, освобождая модель от роли калькулятора. Если интерпретатор не справляется, строку кода может «выполнить» сама LLM. Когда к задаче на программирование не прилагаются тесты, модель генерирует unit-тесты сама и проверяет своё решение об них (Shinn et al. 2023).

Отдельная тема, честность размышления. Chain-of-thought удобен как окно во внутренний процесс модели, но только если модель правдиво описывает, что делает. Здесь есть тонкость: RL на результат может незаметно научить модель писать убедительно выглядящие рассуждения, не имеющие отношения к реальному вычислению. Тем не менее мониторинг цепочек уже позволяет ловить reward hacking, причём слабая модель может следить за сильной (Baker et al. 2025). А работа Zaremba et al. (2025) показала побочный бонус: чем дольше модель думает, тем устойчивее она к adversarial-атакам. Длинное размышление даёт время распознать провокацию, которую мгновенный ответ проглотил бы не заметив.

Именно поэтому Венг называет читаемость цепочек не косметическим свойством, а инструментом безопасности. День, когда reasoning-модели начнут «думать» в нечитаемых латентных представлениях эффективнее, чем в токенах, будет днём, когда мы потеряем лучший на сегодня канал наблюдения за ними.

Мышление без слов: непрерывное пространство

Все перечисленное работает в пространстве токенов, но думать можно и в скрытых состояниях. Идея старше LLM: Adaptive Computation Time Грейвса (2016) позволяла сети самой решать, сколько шагов вычислений потратить. Universal Transformer (Dehghani et al. 2019) объединил self-attention с рекуррентностью RNN, а свежая архитектура Geiping et al. (2025) добавляет поверх трансформера рекуррентный блок, который итеративно обновляет случайно инициализированное состояние, концептуально напоминая диффузионную модель.

Детали обучения такой модели поучительны. Число итераций во время тренировки сэмплируют из лог-нормального распределения Пуассона, а градиенты пропускают только через последние 8 итераций, чтобы уложиться в бюджет. Обучение капризно: скрытые состояния могут коллапсировать в одно и то же значение для всех токенов, или модель учится игнорировать входящее состояние вовсе. Пришлось вводить масштабирование эмбеддингов, маленький learning rate и аккуратный подбор гиперпараметров. В эксперименте с моделью 3.5B насыщение качества наступило примерно на 32 итерациях, и открытый вопрос, как архитектура экстраполирует на большее число шагов.

Более дешёвый вариант той же идеи это thinking tokens. Herel и Mikolov (2023) вставляли специальный токен после каждого слова и получили перплексию ниже бейзлайна, особенно на задачах с числами. Pause tokens (Goyal et al. 2024) проще: дописываем к входу бессмысленные символы вроде точек, и модель получает лишние шаги вычислений перед ответом. Никакой лингвистики, чистое время на обдумывание.

Размышление как латентная переменная

Вероятностный взгляд даёт и практические алгоритмы обучения. Если цепочка рассуждений это скрытая переменная, то обучить модель можно классическим EM-алгоритмом: E-шаг сэмплирует хорошие цепочки, M-шаг обновляет параметры под них. Проблема в том, что сэмплировать из истинного апостериорного распределения p(z|x,y) нельзя, поэтому используют разметку людей, MCMC или Монте-Карло с весами важности. Ruan et al. (2025) пошли дальше всех: они генерируют синтетические «латентные мысли» для кусков веб-текста и обучают модель на смеси мыслей и данных, отбирая цепочки по весу w = p(z,x)/q(z|x), который поощряет рассуждения одновременно правдоподобные, простые и небанальные.

Итеративный вариант попроще: генерируем много цепочек и дообучаемся только на тех, что привели к правильному ответу. Подводный камень очевиден: на задачах, которые модель вообще не решает, сигнала нет. STaR (Zelikman et al. 2022) лечит это подсказкой: если задача не решилась, модели показывают ответ и просят построить рассуждение задним числом, а затем учатся и на нём.

Scaling laws для времени размышления

Здесь начинается самое практически важное. Snell et al. (2024) сравнили вычисления на претрейне и на инференсе и выяснили: они не обмениваются один к одному. Test-time compute легко закрывает разрыв на лёгких и средних задачах, когда отставание базовой модели невелико, но буксует на трудных. Решающий параметр это соотношение токенов: вычисления на инференсе выгодны, только пока инференс-токенов существенно меньше, чем было потрачено на претрейн. Сильная базовая модель остаётся необходимостью, длительным размышлением нельзя компенсировать большую дыру в способностях.

Команда s1 (Muennighoff, Yang et al. 2025) проверила зависимость качества от длины размышления напрямую, техникой budget forcing: чтобы удлинить рассуждение, модели принудительно подставляли слово «wait», чтобы укоротить, токен конца размышления. Корреляция между длиной цепочки и точностью оказалась положительной. Но вот контрольный эксперимент неожиданный: если управлять длиной через rejection sampling, то есть просто отбрасывать слишком длинные или короткие генерации, зависимость переворачивается, и более длинные цепочки дают худший результат. Как именно получено длинное рассуждение, важно не меньше, чем сама длина.

Практическая сторона: сколько стоит минута размышления

Для инженеров, выбирающих между большой моделью с мгновенным ответом и маленькой с reasoning-режимом, выводы Snell et al. переводятся в простую экономику. Маленькая модель с test-time compute выигрывает там, где запросы разнообразны по сложности: лёгкие решаются дёшево и быстро, трудные получают дополнительный бюджет. Но цена запроса становится переменной и плохо предсказуемой, а латентность на трудных задачах растёт до десятков секунд. Поэтому в продакшене всё чаще встречается гибрид: роутер сначала оценивает сложность запроса и решает, включать ли размышление. Это ровно та «адаптивность расхода вычислений», которую Венг называет открытой проблемой, и которую продуктовые команды решают эвристиками уже сегодня, не дожидаясь исследований.

Часто задаваемые вопросы

Может ли маленькая модель с размышлением заменить большую?

Только в ограниченном диапазоне. По данным Snell et al. (2024), test-time compute закрывает небольшой разрыв на простых и средних задачах, но на трудных задачах сильная базовая модель незаменима. Вычисления на инференсе выгодны, пока их объём заметно меньше обучающих.

Почему просто удлинить цепочку рассуждений недостаточно?

Эксперименты s1 показали: budget forcing (принудительное продление через «wait») повышает точность, а отбор длинных генераций через rejection sampling наоборот ухудшает её. Качество зависит от того, как модель научилась тратить дополнительное время, а не от самой длины.

Можно ли доверять рассуждениям, которые показывает модель?

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

Что дальше

Венг завершает эссе списком открытых проблем, и он читается как роадмап отрасли на ближайшие годы. Как заставить модель выдавать честные, читаемые рассуждения при RL-обучении и не соскользнуть в reward hacking, который сам по себе никто толком не умеет определять. Как научить самокоррекции там, где нет эталонного ответа. Как гонять RL с цепочками рассуждений для задач без чёткой оценки: креативное письмо, коучинг, мозговой штурм. Как перенести выигрыш от долгого размышления обратно в базовую модель через дистилляцию, чтобы в продакшене не платить за каждую минуту думанья. И наконец, как сделать расход вычислений по-настоящему адаптивным, чтобы модель сама чувствовала, где хватит секунды, а где нужен час.

Главный вывод прост: интеллект модели больше не заморожен после обучения. Между «ответить сразу» и «ответить хорошо» появилась ось, вдоль которой можно двигаться ценой времени и токенов. Понимание того, где эта ось работает, а где упирается в потолок базовой модели, сегодня отличает грамотное использование reasoning-моделей от дорогого шаманства.

← Все записи