58 o1 / Test-Time Compute
Контекст
Scaling laws (#37) и Chinchilla (#42) масштабировали обучение: больше параметров и токенов. Но качественные данные конечны (#42), и упор в один рычаг исчерпывается. Оставался другой, почти не тронутый рычаг — тратить больше compute не на обучение, а на инференс: дать модели дольше «думать» над ответом.
Идея и механизм
o1 обучен через RL производить длинную внутреннюю цепочку рассуждений — не как промпт-трюк (CoT #43), а как выученную способность: выписывать шаги, проверять себя, возвращаться к ошибкам, пробовать пути. Ключевое наблюдение: качество растёт монотонно и с train-time RL, и с test-time «думанием» — чем больше токенов рассуждения на инференсе, тем точнее ответ на трудных задачах. Snell и др. формализуют, как оптимально тратить test-time бюджет (поиск против verifier-моделей vs адаптивное уточнение ответа), и показывают: распределять бюджет по сложности промпта (compute-optimal) — до ×4 эффективнее, чем наивный best-of-N, а иногда маленькая модель с test-time compute бьёт куда большую.
оптимизация · масштабирование Две оси бюджета и verifier-поиск
Простейший способ потратить test-time compute — насэмплировать N ответов и выбрать лучший по verifier-модели V:
Есть и «вертикальный» способ — длиннее и качественнее одна цепочка (адаптивное уточнение, revision). Качество — функция двух бюджетов; при фиксированной сумме оптимальная доля смещается к инференсу на трудных задачах:
Snell и др.: наивный best-of-N расходует бюджет одинаково на лёгкие и трудные промпты; compute-optimal стратегия выделяет его адаптивно по сложности — отсюда >4× выигрыш эффективности. RL (o1) при этом учит модель тратить «думание» полезно, а не просто дольше.
Python Test-time scaling: best-of-N с verifier
def answer(model, verifier, x, N):
ys = [model.sample(x) for _ in range(N)] # N рассуждений — тратим test-time compute
return max(ys, key=verifier.score) # выбираем лучший по verifier
# compute-optimal: N зависит от сложности x (маленький для лёгких, большой для трудных)
# o1 идёт дальше: RL учит модель делать ОДНУ длинную самопроверяемую цепочку
Почему это важно
Сместил парадигму фронтира с «больше параметров» на «больше думать» и открыл класс reasoning-моделей (o1, затем o3, DeepSeek-R1 и волна). Это прямой ответ на исчерпание данных (#42): когда обучающую ось масштабировать всё труднее, появляется вторая — инференсная. Для system-design это меняет экономику: часть «интеллекта» переезжает из веса модели в бюджет инференса.
Связи
Chinchilla оптимизировала обучающий compute (параметры vs токены). Test-time compute добавляет ортогональную ось: тратить на инференс. Когда данные для обучения в дефиците, именно инференсная ось даёт следующий скачок.
CoT (2022) показал, что рассуждение по шагам помогает — но через промпт. o1 превращает длину и качество рассуждения в ресурс, которым можно масштабировать точность, и учит его RL, а не подсказкой.
R1 — публичный аналог идеи o1: reasoning, выращенный RL на проверяемых наградах. Та же линия «test-time рассуждение как способность», но с открытыми весами и описанным рецептом (см. #59 GRPO).
Вопросы пытливого ума
Чем «думать дольше» у o1 отличается от просто длинного CoT-промпта?
CoT (#43) — промпт-трюк: просим модель рассуждать по шагам. o1 обучен (RL) генерить полезные длинные цепочки — самопроверять, отбрасывать тупиковые ветки, возвращаться к ошибкам. Думание становится выучиваемой способностью, а его длина — ручкой качества. Разница как между «попросить подумать вслух» и «натренировать думать эффективно».
Почему маленькая модель + test-time compute может обойти большую?
На трудных задачах поиск, верификация и уточнение при инференсе добавляют «эффективной ёмкости» дешевле, чем раздувание параметров. Snell и др. показали: если распределять test-time бюджет по сложности (compute-optimal), это >4× эффективнее best-of-N — и малая модель, которой дали «подумать», обходит большую, отвечающую сразу. Компьют переносится из обучения в инференс.
Есть ли предел у test-time scaling?
Да. На лёгких задачах лишнее думание не помогает (а иногда «overthinking»/переусложнение вредит). Стоимость инференса растёт — дорогие, медленные ответы. Выигрыш зависит от качества verifier/награды. И это не заменяет обучение, а дополняет его. Test-time compute — мощный рычаг, но не бесплатный и не универсальный.
Что читать в оригинале
Читать целиком. OpenAI «Learning to Reason with LLMs» — кривые роста качества и с train-time RL, и с test-time думанием (главный тезис). Snell и др. (arXiv 2408.03314) — формализация compute-optimal test-time: поиск против verifier vs revision, распределение бюджета по сложности, сравнение с best-of-N.