Важность времени на размышления: как работают вычисления во время инференса

Еще в 2020 году в статье о GPT-3 появился график, заслуживающий отдельного внимания: чем больше языковые модели, тем лучше они справляются с задачами без дообучения (zero-shot). Пять лет этот график был путеводной звездой для исследователей ИИ, влияя на всё — от архитектуры моделей до разработки железа. C выпуском o1 OpenAI пришел с новым графиком. На этот раз речь не только о размере —, а о том, чтобы дать моделям время думать.  

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

Годы AI лаборатории увеличивали модели, делая их больше и кормя данными. Это всё ещё работает, но данных и вычислительных ресурсов теперь начинает не хватать. Новый подход предлагает масштабировать нечто иное: время, которое модели тратят на размышления во время тестирования. Это не «построить умнее мозг», а «дать мозгу больше времени на кофе-брейк, чтобы разобраться».  

Цепочка рассуждений: как ИИ разговаривает сам с собой

Как модель «думает» дольше? Один из способов — Цепочка рассуждений (Chain of Thought, CoT), когда модель генерирует промежуточные шаги перед ответом. Например, O1 делает именно это: создает поток текста, описывающий логику рассуждений. В диалоге с O1 или DeepSeek видно, как она планирует, возвращается к предыдущим мыслям и оценивает варианты — всё на простом языке. Как будто наблюдаешь за детективом-ИИ, расследующим преступление.  

Размышляющие модели учатся этому через обучение с подкреплением (RL), а не копируя человеческие примеры. Это эффективно по данным: модель не нуждается в библиотеке готовых решений — достаточно подсказок от RL, чтобы научиться рассуждать самостоятельно.  

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

Вариант 1: Угадай и проверь (метод «броска спагетти»)

Самый простой подход — «Угадай и проверь». Модель генерирует множество вариантов ответов, проверяет их с помощью верификатора и обучается на успешных попытках. Это как если бы ИИ бросал спагетти в стену, чтобы посмотреть, что прилипнет. Технически это отбор с отклонением (rejection sampling): модели генерирует цепочки, сохраняет удачные и учится на них.  

Плюсы: простота и масштабируемость — по сути, метод грубой силы.  

Минусы: для сложных задач угадать правильный ответ — всё равно что выиграть в лотерею. Если посмотреть на структурированные рассуждения O1 или DeepSeek, это явно не похоже на случайный бросок спагетти. Без квантового компьютера такой подход непрактичен.  

Вариант 2: Поощрение в процессе (подход тренера)

Здесь модель получает обратную связь не только за финальный ответ, но и за каждый шаг рассуждений. Представьте тренера, который не говорит «ты проиграл», а разбирает каждое ваше действие. В работах Google и OpenAI это называют «Моделью поощрения процесса» (Process Reward Model, PRM), которая превосходит метод «угадай и проверь», направляя ход мыслей модели.  

Верификатор тоже может использовать Цепочку рассуждений, объединяя генерацию и проверку в одной модели. Например, вопросы модели к себе вроде «Это хорошее объяснение?» в выводе напоминают такой подход.  

Плюсы: эффективен и близок к тому, как учатся и думают люди.  

Минусы: объединить всё в одной модели — сложная логистическая задача, и реализовать это правильно непросто.  

Вариант 3: Поиск как у шахматного мастера (стиль AlphaZero)

Метод поиска вдохновлен AlphaZero/AplhaGo — самообучающейся программой DeepMind, которая использовала обучение с подкреплением (RL). AlphaZero играла сама с собой, применяла поиск (например, поиск по дереву Монте-Карло, но подойдут и упрощенные стратегии вроде лучевого поиска), чтобы изучать ходы, и училась на результатах. Для языковых моделей это могло бы означать выбор путей рассуждений, их оценку и уточнение стратегии.  

Проблема в том, что даже в игре в шахматы и Го поиск по дереву ограничен по глубине из-за вычислительных ресурсов. Однако игра— это замкнутая среда с четкими правилами, что позволяет делать относительно точные предсказания даже в условиях ограниченных рассуждений. Для общего рассуждения на естественном языке, где варианты на каждом шаге бесконечны, такой подход (пока) не работает.  

Плюсы: позволяет реализовать сложное планирование и backtracking на основе RL.  

Минусы: эффективен только в ограниченных средах (игры), требует огромных ресурсов, и для языковых моделей или общего мышления метод еще не адаптирован.

Вариант 4: Обучение самокоррекции («сам себе терапевт»)

Представьте, что вы блуждаете в лабиринте. Обычная модель может рвануть по одной тропинке и упереться в тупик и на этом закончить, или же бесконечно бродить от одного тупика к другому. Модель с самокоррекцией заметит тупик, вернётся назад и попробует новый путь — обучаясь на ошибках, чтобы улучшить стратегию. Со временем она усваивает эти уроки, чтобы в будущем быстрее находить выход, не натыкаясь на стены. Для модели рассуждений «лабиринт» — это сложная задача, а самокоррекция — её способ прорваться к решению.  

Способность учиться самокоррекции — ключевой механизм, объясняющий, как модели используют вычислительные ресурсы на этапе вывода для решения сложных задач.  

В контексте цепочек рассуждений (самокоррекция означает, что модель может:   

  1. Сгенерировать первоначальную логическую цепочку,   

  2. Обнаружить ошибки в собственных рассуждениях,   

  3. Скорректировать подход, чтобы прийти к верному ответу — без участия человека. Это как встроенный редактор или отладчик. Например, если модель решает математическую задачу и ошибается в расчете (скажем, пишет, что 2 + 2 = 5), она не продолжает цепочку с неверным результатом. Вместо этого она останавливается, распознает ошибку и пробует другой метод.  

Это особенно важно для языковых моделей: в отличие от шахмат с их конечным набором ходов, язык предлагает бесконечные способы выражать идеи и рассуждать — и столько же способов ошибиться. Самокоррекция позволяет модели исследовать варианты, откатываться при необходимости и уточнять выводы, делая ее устойчивее к сложным, открытым задачам.  

Традиционные языковые модели генерируют одну цепочку рассуждений и следуют ей, даже если она ошибочна. Самокорректирующиеся модели, напротив, адаптируются на лету, имитируя то, как люди пересматривают неверные допущения. Эта гибкость может быть ключом к их высокой эффективности в сложных задачах — по сути, они встраивают в процесс рассуждений метод проб и ошибок. Как если бы у модели был внутренний терапевт, говорящий: «Давай подумаем, почему это не сработало, и попробуем иначе».  

Как модель учится самокоррекции? Процесс включает этапы:   

  1. Генерация случайной цепочки: модель создает первоначальные рассуждения. Из-за ошибок в логике или фактах это может привести к неверному ответу.  

  2. Обнаружение ошибки: с помощью верификатора или внутренней системы оценки модель понимает, что цепочка неверна.  

  3. Поиск исправления: модель исследует альтернативные пути — выполняет мини-поиск — чтобы найти исправленную цепочку, устраняющую ошибку.

  4. Обучение через процесс: c помощью обучения с подкреплением (RL) модель обучается не только на правильных ответах, но и на всём пути от ошибки до её исправления. Это учит её распознавать паттерны ошибок и восстанавливаться после них.  

Тут есть очень интересный прием — концепция «Потока поиска» (Stream of Search): Вместо явного перебора вариантов в виде дерева во время инференса (что медленно), модель может линеаризовать этот процесс в единую последовательность на этапе обучения. Например, поток может выглядеть так:   

Начальная мысль:»2 + 2 = 5» → Обнаружена ошибка: «Это неверно» → Откат: «Давайте пересчитаем» → Исправление:»2 + 2 = 4» → Достигнут правильный ответ.  

e55f8a8d58e81ca239256b7eb6b7cfc3.png

Идея в том, чтобы взять всё дерево рассуждений (включая верные и ошибочные ветви) и «уплощить» его, то есть создать единую длинную цепочку рассуждений из всех ветвей. Обучая модель на таких последовательностях, мы учим её имитировать поисковое поведение в рамках одной плавной цепочки рассуждений, что делает вывод эффективным. Это хак, но очень удачный, для генерации синтетических цепочек, включающих весь процесс исправления ошибок. Это критически важно, так как привлечение людей для генерации тестовых данных с рассуждениями было бы слишком дорогим и ненадежным. Очень рекомендую ознакомиться с упомянутой статьей.  

Проблемы и решения

Научить модель самокоррекции непросто. Вот основные сложности и способы их преодоления:   

— Игнорирование ошибок: если модель учится сразу переходить к правильным ответам, минуя исправление, это лишает смысла самокоррекцию. Решение — акцентировать в обучении сам процесс исправления, а не только итог.  

— Сдвиг распределения: если исправления в обучении не соответствуют типичным ошибкам модели, она не сможет обобщать. Решение — стратегия on-policy: модель генерирует ошибочную цепочку, а затем учится корректировать именно её, сохраняя процесс релевантным.  

— Вычислительные затраты: важный момент. Поиск исправлений ресурсоемок. Методы вроде «Потока поиска» аппроксимируют процесс, а эффективные алгоритмы RL оптимизируют обучение.  

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

Это шаг к ИИ, который не просто повторяет ответы, а действительно размышляет над задачами. Однако метод требователен к ресурсам, и без тщательной проработки модель может начать переисправлять или скатиться к шаблонным решениям.  

Последствия

Это не академическая абстракция — это прорыв.  Время вывода важно, большие модели это хорошо, но следующий рубеж — скорость мышления.  Цепочки рассуждений также позволяют заглянуть в мозг модели, делая ИИ менее чёрным ящиком и добавляя столь важную прозрачность и объяснимость решений.

Всем добра!

© Habrahabr.ru