Эпоха 6 · Генеративка и системы · 2024

58 o1 / Test-Time Compute

Learning to Reason with LLMs (OpenAI o1, 2024) · Scaling LLM Test-Time Compute Optimally… · Snell и др., 2024
🟥 читать целиком~2 чоригинал ↗
Суть за 20 секунд. Новая ось масштабирования. Раньше растили обучение (Kaplan/Chinchilla). o1 (сен 2024) показал: RL-обученное длинное рассуждение + больше «думания» на инференсе резко поднимают качество на трудных задачах — test-time compute стал scaling-осью. Snell и др.: при compute-optimal распределении бюджета инференса можно быть ×4 эффективнее best-of-N, а маленькая модель + test-time — обойти большую.

Контекст

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:

\[ y^{\star} = \arg\max_{y \in \{y_1,\dots,y_N\}} V(y),\qquad y_i \sim \pi(\cdot \mid x) \]

Есть и «вертикальный» способ — длиннее и качественнее одна цепочка (адаптивное уточнение, revision). Качество — функция двух бюджетов; при фиксированной сумме оптимальная доля смещается к инференсу на трудных задачах:

\[ \text{quality} = f\big(C_{\text{train}},\, C_{\text{test}}\big),\qquad \text{fix } C_{\text{total}} \;\Rightarrow\; \text{shift budget to } C_{\text{test}} \text{ on hard } x \]

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 учит модель делать ОДНУ длинную самопроверяемую цепочку
test-time compute («думание») → качество → o1: дольше думает → точнее обычная модель (без reasoning-RL) на трудных задачах прирост наибольший
Точность растёт с временем «думания» на инференсе — новая ось масштабирования рядом с обучением. RL учит модель тратить это думание с пользой (самопроверка, backtracking), а не просто генерировать дольше.
Аналогия. Экзамен. Можно нанять более способного человека (растить обучение — параметры и данные). А можно дать тому же человеку больше времени подумать, расписать решение и перепроверить себя. На трудных задачах второе часто выгоднее и дешевле, чем искать гения. o1 — это ещё и натренированное умение пользоваться этим временем: не просто сидеть дольше, а думать структурно.

Почему это важно

Сместил парадигму фронтира с «больше параметров» на «больше думать» и открыл класс reasoning-моделей (o1, затем o3, DeepSeek-R1 и волна). Это прямой ответ на исчерпание данных (#42): когда обучающую ось масштабировать всё труднее, появляется вторая — инференсная. Для system-design это меняет экономику: часть «интеллекта» переезжает из веса модели в бюджет инференса.

Связи

← новая ось к42. Chinchilla

Chinchilla оптимизировала обучающий compute (параметры vs токены). Test-time compute добавляет ортогональную ось: тратить на инференс. Когда данные для обучения в дефиците, именно инференсная ось даёт следующий скачок.

← масштабирует43. Chain-of-Thought

CoT (2022) показал, что рассуждение по шагам помогает — но через промпт. o1 превращает длину и качество рассуждения в ресурс, которым можно масштабировать точность, и учит его RL, а не подсказкой.

↔ открытая реализация53. DeepSeek V3 / R1

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.