Вычисления на этапе тестирования
Назначение
Почему более длительные вычисления в одном решении агента делают агента увереннее, но не делают его правильнее?
Один вызов модели возвращает одно предложение, и на трудном решении это предложение часто оказывается гладкой фиксацией на неверной гипотезе. Прежде чем действовать, среда выполнения может купить дополнительный вывод: позволить модели рассуждать дольше, выбрать несколько кандидатов или запустить проверку и вернуть ее результат на доработку. Каждая такая покупка стоит токенов, секунд и денег, и лишь некоторые из них меняют то, что известно среде выполнения. Более длинные рассуждения и неуправляемая повторная выборка снова опираются на те же веса и тот же промпт, поэтому они добавляют стоимость быстрее, чем свидетельства, тогда как один дешевый тест, способный забраковать кандидата, может решить вопрос сразу. У отбора есть собственная ловушка: поиск среди многих кандидатов по несовершенной проверке находит именно тех кандидатов, которых проверка пропускает. Поэтому инженерный вопрос состоит не в том, сколько думать, а в том, какое свидетельство покупает данная трата, какие проверки могут принять результат и когда остановиться. В терминах H·S·A вычисления на этапе тестирования не добавляют собственных экспозиций, поскольку ничего не действует, пока среда выполнения не допустит кандидата. Но каждый раунд доработки расходует горизонт внутри одного решения, и эта трата оправдана только тогда, когда повышает свидетельства замыкания, стоящие за предложением, которое среда выполнения в итоге допустит.
Цели обучения
- Объяснить, почему одно предложение модели рано фиксируется на гипотезе и почему повторная выборка без новых свидетельств добавляет стоимость, но не информацию.
- Сравнить глубину, ширину и обратную связь, включая модели рассуждений и бюджеты на размышление, по свидетельствам, которые каждая из них покупает на токен, секунду и доллар.
- Проанализировать отбор кандидатов голосованием, обученными верификаторами и судьями на основе LLM, рассматривая pass@ как потолок выбора по схеме best-of-k.
- Рассчитать точность принятого верификатором множества и объяснить, почему более сильный поиск по несовершенному верификатору отбирает эксплойты.
- Представить многошаговый план как пересматриваемый граф зависимостей, сбои которого исправляются локально, а не повторной генерацией.
- Спроектировать правила остановки и эскалации поиска по жестким пределам, сертифицированному досрочному выходу и предельному приросту.
- Оценить стратегию на этапе тестирования относительно базовой линии с одним кандидатом по стоимости принятой задачи и задержке к предельному сроку.
Почему один кандидат может провалиться
При 95-процентном успехе на шаг до конца доходят менее 15 процентов 40-шаговых траекторий. Это предел разомкнутого контура из раздела «Растяжение времени: от наносекундных операций до килосекундных траекторий».
Высокопроизводительное распределенное хранилище «ключ — значение», развернутое в нескольких зонах доступности, начинает демонстрировать деградацию хвостовой задержки и периодические аномалии чтения устаревших данных при интенсивной параллельной записи. Мониторинг показывает, что отставание синхронизации реплик периодически поднимается выше 120 миллисекунд, однако телеметрия сетевых интерфейсов показывает потери пакетов и повторные передачи, неотличимые от фонового шума. Две взаимно исключающие причины дефекта одинаково правдоподобно объясняют эту телеметрию: ненастроенный таймаут сигнала живости кластера, который преждевременно понижает исправные реплики и запускает дорогие всплески повторной синхронизации, либо состояние гонки в параллельном протоколе аннулирования аренд, которое пропускает барьеры памяти при обновлении нескольких ключей и позволяет репликам чтения отдавать аннулированные записи до того, как временная метка отзыва аренды распространится по кластеру.
Когда инженер показывает эту неоднозначную трассу журнала непривилегированной базовой модели в интерактивной сессии, авторегрессионный цикл декодирования выбирает токены, опираясь только на промпт и выученные параметрические веса. Поскольку таймауты сокетов и настройки сигнала живости часто встречаются на форумах разработчиков и в открытых репозиториях обучающего корпуса, проекция выходных эмбеддингов модели назначает гипотезе о сигнале живости высокое условное правдоподобие. Модель генерирует патч, увеличивающий таймаут сокета, оборачивает правку в гладкое диагностическое обоснование и представляет предложение. В интерактивном режиме эта неверная гипотеза — небольшая разговорная неудача: человек-инженер изучает предложение, замечает, что счетчики сетевого интерфейса чистые, отвергает гипотезу и приносит дополнительные системные метрики. Но когда системная инженерия переходит от разговорной помощи к автономному делегированию, то есть когда среда выполнения агента передает многошаговую диагностику, изменение кода и развертывание напрямую непривилегированной модели без участия человека, один прямой проход становится критической единственной точкой отказа. Внедрение непроверенного патча в производство не устраняет лежащую в основе гонку аннулирования аренд и позволяет молчаливым порчам данных распространяться по нижестоящим хранилищам.
Один вызов модели не может надежно решить сложную диагностическую или инженерную задачу, потому что правдоподобие последовательности не является прокси операционной истины. В автономной системе основной вычислительный отказ — это не синтаксическая недопустимость и не поверхностная несвязность, а преждевременная фиксация на неподтвержденной гипотезе при отсутствии различающих свидетельств. «Базовая модель» оценила такое предложение в выходных токенах и показала, что оно достигает среды только через периметр верификации среды выполнения («Верификация кандидатных последовательностей»). Пока этот периметр его не допустит, предложение остается непроверенным буфером, который хранится в эскроу.
Цикл декодирования делает такую фиксацию трудно обратимой. Как только токен выбран и его векторы ключа и значения попадают в KV-кеш, каждый последующий токен потока обращает на него внимание, и ничто в потоке не может его отозвать («Авторегрессионная генерация»). Если ранний токен направляет траекторию на ошибочную посылку, например утверждение, что аномалия кластера вызвана таймаутом сигнала живости, все последующие скрытые состояния обращают внимание на это утверждение. Поскольку генеративное предобучение оптимизирует логарифм правдоподобия связных последовательностей, модель не обнаруживает лежащего в основе физического противоречия и не останавливается. Ее поздние токены обосновывают, оправдывают и развивают исходную ошибку, порождая гладкие, но выдуманные аргументы, которые сохраняют связность текста. Это отравление контекста из раздела «Динамика отравления контекста», действующее внутри одной генерации, а не между ходами.
Дерево диагностики и различающая верификация: при неоднозначном наблюдении телеметрии разомкнутая авторегрессионная генерация (слева) преждевременно фиксируется на гипотезе , отравляя контекст KV-кеша последующих шагов и порождая ошибочный патч, который оставляет корневой дефект нетронутым. Целенаправленный поиск (справа) не выполняет действие, пока целевой различающий зонд не опровергнет , не выделит и не позволит проверенно разрешить состояние.
Исполнение попадает в ложный путь (garden path): траекторию, на которой локальные вероятности переходов токенов остаются высокими, а глобальная вероятность успеха задачи падает до нуля. Стандартная авторегрессионная выборка на каждом токене задействует граф вычислений фиксированной глубины независимо от трудности задачи и неоднозначности телеметрии. Когда автономная система работает разомкнуто, исполнение одного кандидата распадается по четырем различным системным режимам отказа:
- Эпистемическая неоднозначность и смещение априорных вероятностей: входной вектор телеметрии не содержит достаточной информационной энтропии, чтобы выделить истинный дефект, однако политика выборки вынуждает немедленную необратимую фиксацию, смещенную априорными вероятностями предобучения в сторону распространенных поверхностных шаблонов.
- Авторегрессионная фиксация и отравление посылки: как только неподкрепленная посылка попадает в KV-кеш, каузальная маска внимания гарантирует, что последующие токены обусловлены этой ошибкой, и модель не может самокорректироваться в пределах того же потока генерации.
- Неглубокие композиционные горизонты: один прямой проход выделяет фиксированный, постоянный объем вычислений ( слоев трансформера) на токен. При диагностике сложных распределенных гонок цепочка композиционных зависимостей превышает непосредственную представительную способность одной последовательности без развернутых промежуточных состояний рассуждения.
- Ошибка перефразирования: запрос на неуправляемый второй проход или просьба модели «пересмотреть» без введения новых внешних свидетельств дает нулевой прирост информации. Если промпт содержит тот же вектор наблюдения и выборка идет из того же распределения параметров , неуправляемая повторная выборка лишь колеблется в том же бассейне вероятности. Перефразирование ошибочной посылки добавляет нулевую взаимную информацию (). Правдоподобный язык не может заменить эмпирические свидетельства.
Как показано на рисунке «Дерево диагностики и различающая верификация», разомкнутая генерация слева необратимо фиксируется на высоковероятной априорной гипотезе (), позволяя отравленному контексту KV-кеша направить последующее исполнение к неэффективному патчу таймаута. Справа целенаправленное исполнение удерживает действие в корневом состоянии , пока внешний диагностический зонд не выполнит целевой тест на параллельность. Зонд фиксирует конкретное свидетельство времени выполнения: сокеты исправны, а блокировки аренды освобождаются преждевременно. Это свидетельство однозначно опровергает , отсекает недопустимую ветвь и направляет последующую генерацию к проверенному исправлению синхронизации в состоянии .
Зонд против более длинного ответа
Задача: при диагностике устаревшего чтения сколько генерации заменяет зонд с различением продолжительностью 40 мс?
Переменные: модель декодирует на уровне однопоточного предела из раздела «Задержка обслуживания на ускорителе», 21,1 мс на выходной токен. Остальное — допущения сценария. Конечная точка берет $15 за миллион выходных токенов. Ответ модели доходит до 1 024 выходных токенов и фиксируется на на токене 16. Априорные вероятности: и . Зонд работает 40 мс на CPU в песочнице и возвращает около 60 токенов вывода, которые следующий вызов читает как входные данные.
Расчет: полный ответ занимает около 21,6 с и стоит около $0,015. Все после токена 16 развивает непроверенную посылку: это 1 008 токенов, или 21,2 с, то есть 98 % генерации. До зонда неопределенность среды выполнения относительно двух гипотез составляет
Зонд опровергает одну из гипотез, и неопределенность падает до нуля. Длинный ответ оставляет ее на уровне 0,81 бита, поскольку его содержание не зависит от того, какой дефект присутствует.
Системный вывод: зонд занимает около 1/540 времени генерации по часам и снимает всю неопределенность, которую генерация не снимает вовсе. Ни то ни другое не стоит много денег; дорогой исход — развернутый ошибочный патч. Среде выполнения следует покупать свидетельства за секунду, а не токены за секунду.
«Принцип замыкания инвариантов» уже помещает корректность задачи за пределы модели, на границу приложения, поэтому генератор не может подтвердить собственные гипотезы, проверив их внутреннюю согласованность или поразмыслив над ними в диалоге. Обдумывание добавляет второе соображение. Тестирование может показать наличие ошибок, но никогда их отсутствие («Момент агентных систем»), и для обдумывания важно именно наличие. Когда средство запуска тестов на параллельность выдает ненулевой код возврата или сбой утверждения, это наблюдение опровергает гипотезу и вносит в состояние среды выполнения эталонное свидетельство. Поэтому внешний зонд делает больше, чем подтверждает кандидата. Он дает среде выполнения различающую способность среди кандидатов, и именно это свойство должны покупать дополнительные вычисления.
Snell et al. (2024) измерили следствие. Прирост от дополнительных вычислений вывода, будь то пересмотр ответа или поиск по верификатору, зависел от трудности задачи и от того, как направлялись вычисления, а распределение, подобранное под задачу, значительно превосходило наивное масштабирование. Направляемые распределения и есть те, что дают различающий сигнал. Выборка дополнительных кандидатов из неуправляемого распределения без внешнего верификатора быстро насыщается, а генерация развернутых обоснований без эмпирической обратной связи накапливает ошибки. Вычисления на этапе тестирования ценны, только когда они приобретают свидетельства, отделяющие допустимые состояния исполнения от недопустимых (принцип «Обдумывание, ограниченное свидетельствами» из части I).
Поэтому обдумывание — это архитектурное решение о распределении ресурсов. Вместо того чтобы рассматривать вывод модели как неделимый одиночный удаленный вызов процедуры, который либо завершается успехом, либо проваливается, среда выполнения агента на хосте должна динамически оркестрировать вычисления на этапе тестирования: решать, когда генерировать промежуточные токены рассуждения, когда ветвиться на параллельные альтернативы кандидатов, когда отправлять внешние зонды исполнения и когда прекращать поиск при явных бюджетах задержки, токенов и памяти. Какие виды дополнительной работы система может купить и как их топологии исполнения соотносят задержку критического пути, память ускорителя и прирост различающей информации?
Три оси распределения вычислений
Когда среда выполнения агента сталкивается с провалившейся задачей, например с синтезом барьера синхронизации или диагностикой перемежающейся гонки, выделение системе дополнительного вычислительного бюджета не определяет, как эти операции должны быть устроены. Если среда выполнения выделяет на порядок больше операций с плавающей точкой только на более глубокие авторегрессионные прогоны внутри одного контекста вывода, базовая модель часто выдает тысячи токенов изощренного, правдоподобного обоснования, которое лишь подтверждает ее исходные ошибочные посылки. Если же среда направляет эти операции на выборку двадцати независимых кандидатных продолжений параллельно из исходного промпта, она часто получает двадцать незначительных синтаксических вариаций одного и того же концептуального провала, потому что каждый кандидат выбран из одного и того же условного распределения с одними и теми же слепыми пятнами. Если же супервизор хоста делит тот же бюджет на три итеративных цикла (генерирует кандидата, компилирует его и выполняет против детектора гонок в изолированной песочнице, а полученную трассировку стека внедряет в промпт как префикс для целенаправленной правки), гонка диагностируется и устраняется за секунды.
Вычислительный ресурс этапа тестирования — не однородная скалярная величина. Его архитектурная полезность целиком определяется топологией исполнения по трем ортогональным осям: глубине (последовательное расширение токенов), ширине (параллельное исследование кандидатов) и обратной связи (пересмотр, обусловленный наблюдением). Каждая ось задает принципиально иной граф зависимостей между вызовами модели, имеет свой профиль критического пути по задержке и памяти ускорителя и по-своему взаимодействует с эпистемическими границами модели.
Три канонические топологии обдумывания: структурное сравнение последовательной глубины (развернутые цепочки токенов), параллельной ширины (веерное исследование кандидатов) и замкнутой обратной связи (пересмотр, обусловленный наблюдением). Верхние панели показывают поток зависимостей исполнения; нижние карточки спецификаций задают уравнения задержки критического пути, объемы памяти кеша «ключ — значение» () и операционные компромиссы.
Как сказано на рисунке «Три канонические топологии обдумывания», вычисления этапа тестирования распределяются по трем различным архитектурным топологиям. В топологии глубины (слева) вычисления растут вдоль последовательной цепочки из авторегрессионных токенов; это позволяет получать развернутые промежуточные выводы, но задержка по часам строго растет как , при этом пропускная способность памяти насыщается уже при размере пакета . В топологии ширины (в центре) среда выполнения разветвляет исполнение на параллельных потоков кандидатов; задержка по часам соответствует одному прогону , но память высокой пропускной способности ускорителя растет как , если не отсекать перспективные ветви. В топологии обратной связи (справа) вычисления проходят через внешние песочницы исполнения за дискретных эпох; каждый кандидат компилируется и опровергается эмпирическими зондами, что разрывает ловушку авторегрессионной фиксации и ограничивает рабочую память одним активным контекстом генерации.
Чтобы понять, как распределять вычисления вывода, нужно разложить эти три топологии исполнения до их физических и информационно-теоретических основ. Проектировщик среды выполнения агента должен сбалансировать задержку критического пути по часам (), суммарное число операций с плавающей точкой (), объем активного состояния, которое удерживается в памяти ускорителя (), и эмпирическую обоснованность получаемых предложений.
Прогон обдумывания на этапе тестирования
Прогон обдумывания на этапе тестирования — это оператор направленного расширения траектории , при котором среда выполнения агента динамически распределяет вычисления вывода по осям глубины, ширины и обратной связи, чтобы исследовать, моделировать и проверять последовательности кандидатных действий до того, как будут совершены необратимые побочные эффекты в среде.
- Значение: превращает вызов модели из одноразового открытого выпуска токенов в замкнутый процесс поиска, снижает накопление ошибок и отделяет способность решать задачи от фиксированных весов параметров за счет масштабирования вычислений этапа тестирования.
- Отличие: в отличие от однократного авторегрессионного декодирования (которое выполняет фиксированный граф вычислений на токен вдоль одного необратимого префикса KV-кеша), прогон обдумывания поддерживает пересматриваемый фронт поиска кандидатов и чередует исследование параллельных ветвей с внеполосными проверочными зондами.
- Типичная ошибка: распределять вычисления этапа тестирования только по осям глубины или ширины без эмпирической обратной связи или оракулов верификации. Открытые прогоны страдают от ошибки перефразирования и расхождения по Гудхарту, расходуя пропускную способность памяти GPU и бюджеты операций с плавающей точкой без роста успеха задач.
Глубина: последовательное расширение токенов
Обдумывание на этапе тестирования растет линейно в логарифмическом масштабе по бюджету верификации, пока не упрется в потолок насыщения предметной области.
Самый прямой способ увеличить вычисления этапа тестирования — удлинить последовательность одной авторегрессионной генерации. При такой топологии среда выполнения позволяет модели выдать непрерывную траекторию из промежуточных токенов, часто оформленных как черновик, трассировка исполнения или развернутый вывод, прежде чем будет выдано итоговое предложение.
Формально, при заданном исходном промпте движок авторегрессионного декодирования генерирует токены последовательно:
где обозначает замороженные параметры нейронной сети. С точки зрения обработки информации глубина расширяет вычислительную выразительную способность модели. Стандартные декодеры трансформеров ограничены числом вычислительных операций, которые они могут выполнить на один токен: один прямой проход через слоев не может смоделировать произвольное число переходов состояния. Сериализуя промежуточные рассуждения в последовательность токенов, модель фактически выполняет развернутую рекуррентность: более ранние промежуточные токены записываются в кеш «ключ — значение» (KV), что позволяет более поздним токенам обращаться назад к промежуточным выводам и раскладывать сложные комбинаторные ограничения на последовательные шаги.
С системной точки зрения, однако, глубина — это строго последовательный критический путь. Поскольку токен не может быть вычислен, пока токен не завершит прямой проход и его векторы ключа и значения не материализуются в памяти, ни одна фаза цикла декодирования не может выполняться параллельно по времени. Время исполнения по часам для глубины, , определяется суммой начальной фазы предзаполнения и последовательных фаз декодирования:
где — задержка одного шага декодирования. При малых размерах пакета определяется пропускной способностью памяти, а не вычислениями («Задержка обслуживания на ускорителе»), поэтому глубина оплачивает полное чтение весов за каждый добавляемый токен.
Важно, что глубина работает внутри замкнутого эпистемического контура. Расширенная генерация позволяет модели вычислять более сложные внутренние проекции над своим обучающим распределением, но извне в контекст не поступает никаких свежих данных, кроме статических параметров . Если исходный промпт или внутренние представления модели содержат ошибку, увеличение глубины генерации лишь дает модели больший бюджет токенов на то, чтобы оправдать эту ошибку. Кроме того, поскольку каждый токен выбирается стохастически из , вероятность сохранить инвариантную корректность на непроверенной цепочке экспоненциально убывает с длиной последовательности: этот режим отказа известен как стохастический дрейф. Современные модели рассуждений (например, OpenAI o1/o3 и DeepSeek-R1) решают это ограничение, обучая модель методом обучения с подкреплением (RL) на верифицируемых областях, чтобы она выдавала явные токены самокоррекции, возврата и проверки прямо в последовательном потоке декодирования. В системных терминах такие модели встраивают примитивы поиска по дереву в ось последовательной глубины и позволяют авторегрессионному циклу имитировать возврат без внешней обвязки хоста, хотя они по-прежнему подчиняются нижней границе , заданной челноком пропускной способности памяти.
Модели рассуждений и бюджеты на размышление
Большая часть глубины в современных системах обучается, а не задается промптом. Модели рассуждений обучаются методом обучения с подкреплением на задачах, ответы которых можно проверить, например на математике с известными ответами и на коде с тестами, и учатся порождать длинные промежуточные трассировки, которые предлагают, проверяют и возвращаются назад в пределах одной генерации (OpenAI, 2024; DeepSeek-AI et al., 2025). Для среды выполнения из этого следуют три последствия.
Во-первых, токены рассуждения — это выходные токены, которые декодируются и тарифицируются наравне с остальными («Контракт вызова»), и трудная задача может выдать их многие тысячи, прежде чем начнется видимый ответ. Во-вторых, поверхность вызова выставляет эти траты как управляемый параметр. Поле бюджета токенов рассуждения ограничивает, сколько глубины может использовать один вызов, что делает глубину распределением на уровне вызова, которым владеет среда выполнения, а не фиксированным свойством модели. В-третьих, обученное рассуждение по-прежнему опирается только на промпт и веса. Модель рассуждений может перепроверить арифметику внутри трассировки, но не может увидеть, проходит ли патч тест, который она не запускала. Обучение сдвигает ось глубины далеко вперед, но не дает внешних свидетельств, которые несет ось обратной связи.
Поскольку глубина — это бюджет на вызов, его можно распределять по трудности. Snell et al. (2024) показали, что лучшее использование фиксированного бюджета этапа тестирования зависит от того, насколько трудна задача для модели. Легкие задачи почти не выигрывают от первой попытки, задачи средней трудности больше всего выигрывают от пересмотра или поиска, а самые трудные, возможно, не выигрывают вовсе. Среда выполнения приближает такое распределение дешевыми сигналами, которые может наблюдать до того, как потратит большой бюджет: согласуются ли два-три коротких сэмпла, проходит ли быстрая статическая проверка и как раньше шли задачи того же класса. Решения, у которых дешевые сигналы согласуются, получают небольшой бюджет рассуждения и одного кандидата. Решения, у которых сигналы расходятся, получают больший бюджет или поиск. Решения, оставшиеся нерешенными после ограниченной траты, передаются на эскалацию, а не получают еще больше токенов.
Обученная глубина и поиск на каркасе дополняют друг друга. Каркас, то есть логика среды выполнения, которая выбирает, проверяет и пересматривает выводы модели, поставляет ширину и обратную связь, которых не дает ни один отдельный вызов. Проверка, которую каркас использует на этапе тестирования для принятия кандидатов, — это тот же вид сигнала, на котором обучается обучение с подкреплением по верифицируемым наградам («Обучение с подкреплением по верифицируемым наградам»). Проверка, достаточно хорошая, чтобы разрешить фиксацию здесь, там служит наградой для кандидатов, и ее слепые пятна переходят и в обучение.
Ширина: параллельная выборка кандидатов
Вместо того чтобы выделять дополнительные вычисления одной долгой последовательной траектории, ширина распределяет операции этапа тестирования по независимым траекториям кандидатов, выбранным из одного и того же условного промпта. Эта топология составляет основу механизмов параллельной выборки и самосогласованности (Wang et al., 2023).
При топологии ширины супервизор хоста запускает независимых авторегрессионных прогонов из префикса :
обычно при ненулевом параметре температуры или пороге ядерной выборки , чтобы вызвать стохастическое расхождение траекторий.
Главное системное преимущество ширины — горизонтальная распараллеливаемость. Поскольку каждая траектория кандидата статистически и вычислительно независима от кандидата при , весь граф исполнения можно планировать одновременно на доступных ресурсах ускорителя. Исходный промпт длины — общая зависимость: система выполняет фазу предзаполнения над один раз, создавая общий базовый KV-кеш. На позиции токена граф исполнения разветвляется на параллельных путей декодирования.
Поэтому критический путь по часам не растет линейно с . Если кластер вывода обладает достаточной пропускной способностью памяти и вычислительными блоками, чтобы разместить одновременных потоков декодирования, задержка по часам полностью определяется самым длинным отдельным кандидатом:
Глубина и ширина расходятся здесь, потому что декодирование ограничено пропускной способностью памяти (принцип «Задержка, ограниченная выводом»). Расход токенов по оси глубины умножает задержку по часам на , тогда как та же трата, распределенная по ветвям, читает веса один раз за шаг для всех них и оставляет критический путь близким к пути самого длинного одиночного прогона.
Это сжатие задержки по часам компенсируется нагрузкой на память ускорителя. Глубина поддерживает один линейный KV-кеш размера , тогда как ширина требует одновременного хранения активных контекстов KV в памяти высокой пропускной способности ускорителя:
Даже если префикс промпта разделяется в памяти, по мере расхождения траекторий их проекции ключей и значений заполняют непересекающиеся области памяти. Если совокупная емкость памяти превышена, среда выполнения хоста вынуждена сериализовать пакеты кандидатов, и задержка по часам деградирует от к сериализованной сумме .
С эпистемической точки зрения ширина действует как снижение дисперсии над условным многообразием модели . Один кандидат может провалиться, потому что авторегрессионный сэмплер по неудаче выбрал маловероятный токен на раннем шаге декодирования и направил оставшуюся траекторию в невосстановимый бассейн. Выборка по ширине исследует непересекающиеся ветви пространства поиска и повышает вероятность того, что хотя бы один кандидат пройдет эффективный путь решения. Тем не менее ширина разделяет фундаментальное ограничение глубины: это полностью открытое исследование. Если модель приписывает почти нулевую вероятность правильной логике программы или если задача требует приватных знаний, спрятанных за границей API, то выборка тысячи кандидатов даст лишь тысячу внутренне согласованных провалов.
Обратная связь: пересмотр, обусловленный наблюдением
Третья ось распределения снимает ограничение замкнутой системы, присущее глубине и ширине, чередуя авторегрессионную генерацию с детерминированной проверкой в среде. Вместо того чтобы считать вывод модели открытым источником предложений, обратная связь организует вычисления этапа тестирования в дискретную последовательность циклов исправления, обусловленных наблюдениями.
При топологии обратной связи вычисления идут через последовательных раундов. В раунде среда выполнения генерирует кандидатное предложение , обусловленное исходным промптом и накопленной историей прежних предложений и эмпирических наблюдений:
Среда выполнения удерживает в эскроу и не доверяет ему. Она передает через изолированную границу внешнему оракулу проверки: компилятору, обвязке интеграционных тестов, проверяющему типы или системному линтеру. Оракул выполняет детерминированные проверки и возвращает эмпирическое наблюдение :
Если оракул проверки сигнализирует об успехе, исполнение завершается. Если он сигнализирует о сбое, трассировка ошибки, диагностика компилятора или исключение исполнения оформляются как полезная нагрузка наблюдения и непосредственно добавляются к входному контексту раунда .
Обратная связь вносит в окно контекста эталонное состояние среды. Неудачная проверка показывает конкретный дефект, и этот отрицательный сигнал ограничивает следующий раунд поиска. Модели больше не нужно полностью имитировать в весах параметров сложные среды выполнения, такие как планирование в ядре ОС, поведение динамического компоновщика или таймауты сети. Вместо этого она запрашивает реальность напрямую, используя внешний субстрат исполнения как авторитетный оракул.
Архитектурная цена обратной связи — в составной задержке и растущих накладных расходах контекста. Критический путь строго сериализован по раундам и включает задержку внешнего исполнения:
где — время по часам, которое песочнице нужно, чтобы скомпилировать, выполнить и инструментировать кандидата. Важно, что длина промпта монотонно растет на каждой итерации:
По мере роста индекса раунда стоимость предзаполнения накапливается и поглощает значительные бюджеты операций с плавающей точкой только на то, чтобы принять накопленную стенограмму прежних провалов. Если среда выполнения агента не реализует агрессивное сжатие контекста или политики вытеснения, растущая история угрожает превысить окно контекста или ухудшить работу внимания модели.
Аппаратная механика обдумывания
Чтобы оценить, как среда выполнения агента должна делить бюджет этапа тестирования, мы формализуем операционные профили каждой оси в стандартной архитектурной модели. Пусть обозначает число активных параметров модели, — длину исходного промпта, — среднюю длину генерации на кандидата или раунд, а — размер представления точности (например, 2 байта для FP16 или BF16).
Применяя стандартное приближение первого порядка для вычислений трансформера, каждый токен, обработанный в прямом проходе, требует примерно операций с плавающей точкой (FLOP): одной операции умножения с накоплением на параметр. Суммарная вычислительная нагрузка (), критический путь по часам (), пиковый удерживаемый KV-кеш () и основной эпистемический вклад каждой топологии сведены в таблице «Компромиссы распределения вычислений обдумывания».
| Ось обдумывания | Топология исполнения | Вычислительная сложность () | Задержка критического пути по часам () | Пиковое удерживаемое состояние () | Эпистемический источник |
|---|---|---|---|---|---|
| Глубина | Последовательная развернутая цепочка ( шагов) | Статические параметры (распаковка скрытого рассуждения) | |||
| Ширина | Параллельное ветвление и слияние ( ветвей) | Дисперсия многообразия (исследование мод) | |||
| Обратная связь | Последовательный цикл исправления ( итераций) | Детерминированная среда (эмпирические наблюдения ) |
Компромиссы распределения вычислений обдумывания: структурные, операционные и связанные с памятью компромиссы по трем осям распределения вычислений обдумывания. Расчеты предзаполнения предполагают общее кеширование промпта между ветвями ширины.
Как видно из таблицы «Компромиссы распределения вычислений обдумывания», три оси представляют собой резкие инженерные компромиссы. Ширина оптимизирует задержку по часам ценой пикового объема одновременно удерживаемой памяти. Глубина минимизирует накладные расходы на память и координацию, но максимизирует последовательную задержку и при этом остается в рамках непроверенных внутренних допущений модели. Обратная связь жертвует и задержкой по часам, и эффективностью вычислений предзаполнения ради единственного свойства, которое не могут дать ни глубина, ни ширина: эмпирической опоры на внешнюю реальность.
Конкретные последствия этих архитектурных компромиссов лучше всего видны, если проследить аппаратные метрики на современном узле вывода.
Одно решение, три распределения
Сценарий: агенту нужно исправить кольцевой буфер без блокировок, в котором есть гонка порядка памяти. Промпт имеет длину 4 096 токенов. Декодирование идет на уровне однопоточного предела из раздела «Задержка обслуживания на ускорителе», около 21,1 мс на выходной токен, а небольшой пакет параллельных потоков декодируется почти с той же скоростью на токен, что и один поток. Допущения сценария: конечная точка берет $3 за миллион входных токенов и $15 за миллион выходных токенов без префиксного кеширования. Время предзаполнения при таких длинах мало по сравнению с декодированием и не учитывается.
Вариант A (глубина): одна генерация из 4 096 выходных токенов. Задержка около 86 с, стоимость около $0,074. Ответ подробно доказывает, что конструкция верна, и оставляет гонку в коде.
Вариант B (ширина): 4 кандидата по 1 024 токена, сгенерированные параллельно. Задержка около 22 с. Каждый кандидат — отдельный вызов, который читает промпт, поэтому входных токенов 16 384, а выходных 4 096, то есть около $0,111. Все четыре кандидата пропускают один и тот же барьер.
Вариант C (обратная связь): три раунда по 1 024 токена. После каждого раунда песочница компилирует кандидата и запускает детектор гонок за 1,5 с, возвращая отчет на 340 токенов. Промпты растут с 4 096 до 5 460 и до 6 824 токенов, поэтому входных токенов всего 16 380, а выходных 3 072, то есть около $0,095. Задержка складывается из трех раундов по 21,6 с декодирования и проверок, примерно 69 с. Отчет второго раунда называет неупорядоченное хранилище, и третий раунд проходит проверку.
Расчет: стоимость принятой задачи — это расход, деленный на число принятых задач. Варианты A и B тратят $0,074 и $0,111 и не дают ни одного принятого патча, поэтому их стоимость на принятую задачу не ограничена. Вариант C тратит $0,095 на одну принятую задачу.
Системный вывод: ширина оказалась в 4 раза быстрее глубины, а глубина использовала меньше всего входных токенов. Но только обратная связь купила свидетельство о дефекте, поэтому лишь она дала принятую задачу. Цену этапа тестирования следует считать за принятую задачу, а не за вызов.
Архитектурный императив, который следует из этого количественного сравнения, состоит в том, что реальные среды выполнения агентов редко используют какую-либо одну ось изолированно. Высокопроизводительные оркестраторы среды выполнения строят гибридные топологии обдумывания: используют глубину, чтобы развернуть локальную процедурную логику, применяют ширину, чтобы исследовать непересекающихся архитектурных кандидатов параллельными исполнителями, и замыкают цикл обратной связью, чтобы проверять и отсекать недопустимых кандидатов по детерминированным системным оракулам.
Оценка осей распределения вычислений обдумывания
Прежде чем разбирать механизмы выбора кандидатов и топологии верификации, проверьте, как вы понимаете компромиссы распределения вычислений:
- Оси распределения: чем последовательная глубина, параллельная ширина и обратная связь по наблюдениям различаются по потреблению операций с плавающей точкой ускорителя и памяти KV-кеша?
- Префиксное кеширование: при каких условиях параллельная выборка кандидатов разделяет состояние KV-кеша, а когда расхождение вынуждает избыточное выделение памяти?
- Эффективность обратной связи: почему обратная связь, обусловленная наблюдениями, дает более высокую полезную пропускную способность траектории, чем необоснованная глубина или непроверенная параллельная выборка?
- Задержка по часам: какие архитектурные ограничения не дают параллельной выборке снизить задержку по часам, когда инфраструктура обслуживания насыщена по пропускной способности памяти?
Отбор кандидатов
Выборка параллельных траекторий кандидатов из авторегрессионной модели масштабирует операции с плавающей точкой и трафик шины памяти линейно по , однако наивная параллельная генерация часто воспроизводит одинаковые ошибки рассуждения во всех ветвях. Когда среда выполнения агента разветвляет шестнадцать независимых потоков декодирования из одного префикса промпта, супервизор хоста не получает автоматически шестнадцать независимых оценок пространства решений. Поскольку авторегрессионное декодирование выбирает токены из параметризованного распределения вероятностей, обусловленного общим префиксом, выборка без структурного вмешательства регулярно схлопывается в аттракторы высокой вероятности, порождая поверхностную лексическую вариативность, которая маскирует одинаковые алгоритмические недостатки.
Генерация нескольких кандидатов повышает надежность системы тогда и только тогда, когда выполнены два ортогональных архитектурных условия: политика генерации должна давать существенно различные семантические гипотезы, а среда выполнения должна иметь механизм оценки с достаточной эпистемической разрешающей способностью, чтобы отличить допустимые решения от правдоподобных отвлекающих вариантов. Когда любое из условий нарушено, параллельное обдумывание вырождается в растрату пропускной способности памяти. Селектор, работающий над функционально одинаковыми кандидатами, тратит вычисления, не уменьшая неопределенности. Наоборот, богатый набор различных кандидатов, переданный шумному или некалиброванному селектору, наверняка выведет наверх катастрофический провал, который использовал слепые пятна селектора.
Ключевая идея: двойственность разнообразия и разрешения Прирост от ширины кандидатов нулевой, пока не выполнено: где — семантическая энтропия пула кандидатов , а — истинная точность ранжирования селектором траекторий-кандидатов.
Динамика разнообразия кандидатов
Чтобы оценить отдачу от обдумывания через ширину, оркестратор среды выполнения должен различать номинальное число выборок и эффективное число выборок . Рассмотрим непривилегированную базовую модель , которая генерирует траектории-кандидаты , обусловленные контекстом промпта . Каждый токен выбирается последовательно из категориального распределения, вычисленного применением оператора softmax к масштабированному вектору логитов:
где — сырой логит модели для индекса токена , а — температура выборки.
При цикл декодирования вырождается в жадный поиск, схлопывая множество кандидатов в одинаковых последовательностей (). Однако увеличение не гарантирует семантического исследования. Предобученные и дообученные на инструкциях языковые модели сосредоточивают массу вероятности внутри узких топологических бассейнов в пространстве последовательностей токенов. Если промпт описывает распределенный менеджер блокировок с тонкой уязвимостью по времени, наиболее вероятные пути модели неизбежно воспроизведут учебную реализацию, встречающуюся по всему ее обучающему корпусу, вместе с состоянием гонки.
Определение: коррелированный бассейн отказа Область пространства последовательностей , в которой различные последовательности токенов разделяют один и тот же лежащий в основе недопустимый инвариант: несмотря на расстояние редактирования, большее нуля.
Параллельные потоки декодирования, выбранные из этого распределения, демонстрируют коррелированные режимы отказа: они меняют имена переменных, переставляют независимые выражения или заменяют конструкции управления потоком (например, цикл while вместо цикла for), сохраняя при этом одинаковую структурную ошибку. Супервизор тратит шагов декодирования только на оценку мелких лексических перестановок одной сломанной гипотезы.
Кандидат A: lock.acquire(); data = read(); lock.release(); // Гонка: непроверенная проверка
Кандидат B: pthread_mutex_lock(&m); val = in->val; pthread_mutex_unlock(&m); // Та же гонка
Чтобы разорвать эту корреляцию, оркестраторы среды выполнения внедряют механизмы, которые вносят разнообразие и возмущают процесс генерации на трех различных уровнях системного стека («Механизмы разнообразия кандидатов по уровням системы»):
| Уровень механизма | Примитив системы | Операционный механизм | Режим отказа / граница |
|---|---|---|---|
| На уровне токенов | Расписания температуры и top- | Динамическое масштабирование или усечение ядра выборки до накопленной вероятности . | Высокое вводит катастрофическую деградацию синтаксиса и семантики; не позволяет выйти из доминирующих архитектурных бассейнов. |
| На уровне контекста | Возмущения контекстной рамки | Внедрение ортогональных операционных требований или ролевых промптов по ветвям (например, оптимизация под нагрузку с преобладанием записи против путей чтения без блокировок). | Расходящиеся префиксы делают равномерное сравнение невалидным или меняют предусловия задачи сверх исходной спецификации. |
| На уровне ветвей | Принудительное задание структуры шага | Закрепление различных исходных алгоритмических примитивов или структурных инвариантов в префиксе генерации каждой ветви кандидата до начала авторегрессионного декодирования. | Требует предметно-специфичных синтезаторов префиксов; риск загнать модель на маловероятные, нежизнеспособные пути исполнения. |
Механизмы разнообразия кандидатов по уровням системы: механизмы исследования, операционные примитивы и границы отказа на уровнях токенов, контекста и ветвей.
Чтобы проверить, дают ли эти механизмы подлинное исследование, нужны семантические метрики, а не лексическое расстояние. Строковые метрики вроде BLEU или расстояния Левенштейна активно вводят в заблуждение: две программы могут иметь расстояние редактирования , реализуя принципиально разные алгоритмические парадигмы, или расстояние , оставаясь синтаксически и функционально идентичными после альфа-переименования.
Вместо этого супервизоры агентов вычисляют структурное и поведенческое расстояние. В задачах синтеза кода супервизор компилирует кандидатов в абстрактные синтаксические деревья (AST) и вычисляет расстояния редактирования деревьев или хеширует нормализованные представления AST после канонизации идентификаторов переменных и сигнатур функций. В многошаговом планировании супервизор отображает последовательности шагов кандидатов в ориентированные ациклические графы зависимостей и сравнивает топологические порядки, а не строки токенов. В общих системных задачах среда выполнения кластеризует кандидатов по их классу функциональной эквивалентности: два кандидатных предложения принадлежат одному классу эквивалентности тогда и только тогда, когда они порождают одинаковые переходы состояния при выполнении на детерминированной дымовой обвязке.
Архитектуры отбора
Отсечение перспективных ветвей прогонов возвращает 70 процентов вычислений вывода траекториям рассуждения с высокой ценностью. Когда разнообразный набор кандидатов размещен в памяти, супервизор хоста должен выбрать траекторию , которая оптимизирует успех задачи. Супервизор не может принимать самоотчеты кандидатов за правдивые и не может позволить коду кандидатов напрямую касаться ресурсов хоста. Чтобы выбрать кандидата безопасно, среда выполнения использует три основные архитектурные стратегии, организованные как иерархический каскад отбора.
Трехуровневый каскад отбора кандидатов: эшелонированная защитная фильтрация предложений кандидатов до физического исполнения. Уровень 1 выполняет детерминированные проверки без операций с плавающей точкой (синтаксис AST, типы, статические линтеры) и отправляет некорректные предложения в корзину отбраковки . Уровень 2 кластеризует синтаксически различные кандидаты в классы семантической эквивалентности голосованием большинства и каноническим хешированием, отправляя выбросы в . Уровень 3 оценивает шаги рассуждения обученными моделями награды за процесс (PRM) и проверяет замыкание инвариантов в изолированной песочнице, прежде чем допустить кандидата к физическому исполнению.
Конвейер отбора, показанный на рисунке «Трехуровневый каскад отбора кандидатов», последовательно отфильтровывает множество кандидатов через три защитных рубежа возрастающей вычислительной стоимости. На уровне 1 детерминированные парсеры абстрактных синтаксических деревьев и статические проверщики типов осматривают непроверенные сырые буферы кандидатов и сразу направляют некорректные скрипты в корзину отбраковки , не расходуя прямых проходов GPU. На уровне 2 синтаксическая канонизация и детерминированное дымовое тестирование сворачивают выжившие кандидаты в классы функциональной эквивалентности , изолируя расходящиеся или единичные галлюцинации в . На уровне 3 выжившие кандидаты проходят детальную оценку рассуждений обученными моделями награды за процесс (PRM) и исполнение в песочнице: проваленные утверждения направляются в , а к активному исполнению системой допускается только проверенный кандидат .
Механика самосогласованности
Предложенная Wang et al. (2023) самосогласованность опирается на эмпирическое наблюдение: хотя непривилегированная модель может блуждать по разным путям рассуждения в разных декодированиях кандидатов, правильные траектории часто сходятся к одному и тому же конечному ответу, тогда как неверные рассеиваются по фрагментированным состояниям ошибок. Среда выполнения разбивает множество кандидатов на дискретные классы эквивалентности:
Супервизор выбирает кандидата из класса-плюраля:
Самосогласованность дает изящный механизм отбора без обучения для замкнутых системных вопросов, например для определения оптимального размера страницы, выявления тупикового индекса потока или выбора между дискретными конфигурациями маршрутизации.
Однако самосогласованность катастрофически ломается в открытых агентных областях. В разработке ПО, синтезе систем или сложной оркестрации оболочки пространство выходов непрерывно и не ограничено. Когда шестнадцать независимых кандидатов синтезируют драйвер устройства или переписывают цикл асинхронных событий, каждая сгенерированная последовательность уникальна и текстуально, и структурно. Классы эквивалентности вырождаются в единичные множества ( для всех кандидатов), сводя голосование большинством к равновероятному случайному выбору. Что хуже, если промпт агента активирует распространенное концептуальное заблуждение, мода самого распределения может оказаться ошибкой. В таких случаях голосование большинством активно выбирает консенсусную галлюцинацию вместо изолированного правильного кандидата из меньшинства.
Оценка обученными верификаторами
Когда голосование большинством выходит из строя из-за рассеивания выходов, среды выполнения разворачивают обученные верификаторы: вторичные нейронные модели с параметрами , обученные предсказывать корректность кандидатов. Как сформулировано у Lightman et al. (2024), обученные верификаторы делятся на два структурных класса:
- Модели награды за результат (ORM): верификатор изучает всю траекторию-кандидат вместе с контекстом и выдает скалярную оценку , оценивающую вероятность глобального успеха. Хотя такие модели вычислительно эффективны, поскольку требуют лишь одного прямого прохода по конкатенированной последовательности, ORM страдают от отказа временного присвоения заслуг. ORM не может локализовать, какой конкретный шаг внес тонкую уязвимость, и часто вознаграждает правдоподобно выглядящие траектории, которые прячут логические несоответствия под отполированной прозой.
- Модели награды за процесс (PRM): верификатор разбивает траекторию на дискретные шаги рассуждения и оценивает каждый переход отдельно: . Оценка кандидата вычисляется как произведение вероятностей выживания на уровне шагов:
Верификаторы процесса заметно улучшают ранжирование кандидатов, ловя ранние логические инверсии до того, как они распространятся в последующее рассуждение. Однако обученные верификаторы вводят серьезный вычислительный налог: оценка кандидатов длиной токенов требует пропустить токенов через верификатор . Если число параметров верификатора сопоставимо с движком генерации, оценка процесса удваивает суммарную стоимость операций с плавающей точкой фазы обдумывания.
Детерминированная фильтрация исполнением
До того как тратить пропускную способность памяти и операции вывода на обученные верификаторы или алгоритмы кластеризации, высокопроизводительные среды выполнения навязывают детерминированные статические фильтры. Непривилегированная модель, генерирующая программные патчи или скрипты оболочки, часто выдает некорректный синтаксис, несбалансированные разделители, ссылки на неопределенные переменные или недопустимые флаги командной строки.
Супервизор пропускает каждого кандидата через последовательность ненейронных детерминированных шлюзов:
Детерминированная фильтрация работает за микросекундные задержки на ядрах CPU хоста, устраняя недопустимых кандидатов без расхода вычислений GPU. Отфильтровывая пул кандидатов до оценки рангов, среда выполнения гарантирует, что обученные модели оценки видят только синтаксически корректные, типобезопасные предложения.
Следующая матрица кандидатов иллюстрирует, как эти стадии отбора фильтруют и оценивают четыре различных предложения, созданных для исправления ошибки голодания асинхронного ввода-вывода («Матрица разнообразия и оценки кандидатов»).
| ID кандидата | Базовая алгоритмическая гипотеза | Детерминированный шлюз | Кластер эквивалентности | Оценка верификатора () | Результат отбора |
|---|---|---|---|---|---|
| Цикл активного ожидания с неатомарной проверкой счетчика | Пройден (корректный C++20) | Кластер (активное ожидание) | Отклонен (риск голодания CPU) | ||
std::this_thread::yield() внутри цикла опроса | Пройден (корректный C++20) | Кластер (активное ожидание) | Отклонен (та же гонка, что у ) | ||
| epoll с срабатыванием по фронту и пробуждением через канал | Пройден (корректный C++20) | Кластер (управляемый событиями) | Выбранный победитель | ||
| Неограниченное порождение потоков на каждую входящую задачу | Не пройден (предупреждение компилятора) | Н/Д (синтаксис отброшен) | Отсечен статическим фильтром |
Матрица разнообразия и оценки кандидатов: матрица оценки кандидатов для ошибки голодания асинхронного ввода-вывода. Кандидаты проходят проверку AST, кластеризацию эквивалентности и оценку процесса, чтобы отделить подлинные решения от провалов, вызванных коррелированными синтаксическими ошибками и гонками условий.
Обратите внимание: кандидаты и имели разные поверхностные структуры кода, но свелись к одному и тому же функциональному классу эквивалентности (кластер ), разделив общий сбой синхронизации. Детерминированная фильтрация сразу отсекла из-за ошибки компиляции, позволив обученному верификатору направить бюджет оценки исключительно на допустимые альтернативы.
Выборка кандидатов и пропускная способность верификатора при фиксированной пропускной способности памяти GPU
Системный инженер развертывает супервизор агентной генерации кода на GPU NVIDIA H100 SXM5 (пропускная способность памяти HBM3 3 350 ГБ/с). Система параллельно генерирует кандидатных решений, каждое со средним числом токенов декодирования . Базовый генератор — плотная модель на 70 миллиардов параметров в формате FP8 ( байт).
Декодирование ограничено пропускной способностью памяти («Задержка обслуживания на ускорителе»), поэтому каждый шаг декодирования читает все 70 ГБ весов из HBM. Оценка кандидатов обученной моделью награды за процесс (PRM) того же размера требует отдельного прямого прохода предзаполнения по сгенерированным токенам.
Оценим время передачи по шине памяти и накладные расходы задержки, которые создают генерация и оценка этих кандидатов:
1. Фаза декодирования кандидатов (генератор): Поскольку 16 кандидатов обрабатываются пакетом одновременно при декодировании, матрица весов 70 ГБ читается один раз за шаг декодирования для всех 16 потоков: Для авторегрессионных шагов минимальное время исполнения, потраченное на прокачку весов модели по шине, составляет:
2. Фаза верификации кандидатов (предзаполнение PRM): 16 сгенерированных кандидатов вместе дают токена. В отличие от декодирования, PRM оценивает эти токены в фазе предзаполнения, ограниченной вычислениями (GEMM). Если предположить, что H100 достигает эффективной пропускной способности операций FP8 в секунду при предзаполнении, а модели требуется операций на токен:
Системный вывод: Генерация кандидатов занимает на шине памяти, а обученная верификация добавляет вычислений, доводя полную задержку обдумывания до . Если бы среда выполнения ставила детерминированный статический фильтр, отсекающий кандидатов до оценки PRM, задержка фазы верификации упала бы с до , сэкономив более четырех секунд времени критического пути.
Pass@: потолок выбора по схеме best-of-k
Стандартная мера того, что выбор может дать в лучшем случае, — это pass@: вероятность того, что хотя бы один из выбранных кандидатов проходит тесты задачи (Chen et al., 2021). При выборках, из которых проходят, ее несмещенная оценка равна
pass@ предполагает идеальный селектор, который всегда находит проходящего кандидата, если он существует. Поэтому это потолок выбора по схеме best-of-. Среда выполнения, которая выбирает реальным селектором, достигает точности принятия не выше pass@, а разрыв между ними — это то, что теряет селектор. Для независимых кандидатов с успехом на выборку значение pass@ , поэтому при и потолок равен . Если восемь кандидатов ведут себя как две независимые попытки, потолок падает до . Корреляция снижает потолок, а ошибки селектора снижают то, что достигается под ним. Указывать pass@ как точность системы значит не учитывать селектор, а именно этот компонент и рассматривает данный раздел. «Оценка агентов» рассматривает pass@ как отчетную метрику и сопоставляет ее с надежностью при повторных запусках.
Бюджет верификации
Увеличение ширины кандидатов дает убывающую отдачу, которую определяет операционная точность селектора. Теория выборки предполагает, что вероятность получить хотя бы одного правильного кандидата монотонно стремится к 1 при (при ненулевом покрытии пространства поиска), однако вероятность того, что селектор успешно выделит этого правильного кандидата, ведет себя немонотонно.
У каждого селектора есть внутренняя частота ложных срабатываний . В обученных моделях оценки ложные срабатывания возникают из-за галлюцинаций вне распределения, стилистического взлома награды или состязательных последовательностей токенов, которые завышают оценки логитов, не выполняя лежащего в основе инварианта. В детерминированных тестовых обвязках ложные срабатывания возникают из-за неполного покрытия утверждениями, пропущенных граничных случаев или наборов тестов, которые проверяют сценарии штатного пути и игнорируют ошибки параллелизма.
Закон Гудхарта в обдумывании «Когда мера становится целью, она перестает быть хорошей мерой». В агентном отборе при большой ширине кандидатов давление оптимизации, направленное на селектор, заставляет поиск выбирать кандидатов, которые эксплуатируют слепые пятна верификатора, а не решают задачу.
Пусть — базовая частота получения правильного решения на одной выборке, и пусть селектор принимает правильные решения с истинно положительной долей , но ошибочно принимает неправильные решения с ложноположительной долей . Когда среда выполнения выбирает независимых кандидатов, пул содержит смесь правильных решений (распределенных биномиально с параметром ) и неправильных отвлекающих вариантов (с параметром ).
Если масштабировать до больших значений, а базовая доля успеха мала, число сгенерированных отвлекающих вариантов () значительно превышает число правильных решений (). Ожидаемое число ложноположительных кандидатов, принятых селектором, растет линейно с пулом отвлекающих вариантов:
Когда превышает критический порог , пул ложноположительных кандидатов превосходит пул действительно правильных. При ранжировании по оценке наиболее высоко оцененный кандидат, выбранный супервизором, почти наверняка окажется состязательным эксплойтом: кандидатом, который идеально совпадает с поверхностными эвристиками верификатора, но содержит катастрофический дефект («Расхождение по Гудхарту в поиске»).
Этот узкий участок селектора ограничивает потолок обдумывания через ширину. Поиск настолько надежен, насколько надежна проверка, которая выбирает среди его кандидатов. Это асимметрия верификации («Асимметрия верификации» из части I) в простейшем виде. Среда выполнения не может компенсировать бедный низкоразрешающий верификатор простым наращиванием операций GPU на выборку кандидатов. Чтобы выйти за пределы номинального голосования кандидатов, среда выполнения должна перейти от постфактум оценки исхода к строгой мелкозернистой верификации, способной отслеживать каждый переход состояния на протяжении траектории обдумывания.
Когда поиск многократно оптимизирует против несовершенного, грубого селектора, он неизбежно находит граничные выходы, которые удовлетворяют статическим правилам приемки селектора и при этом полностью провалены по лежащим в основе операционным инвариантам. Этот сбой показывает основную уязвимость подхода, при котором проверка трактуется как непрозрачное суждение в конце траектории. Чтобы состязательные кандидаты не проскальзывали через макроскопические контрольные точки, супервизор среды выполнения должен разложить оценку траектории на пошаговую верификацию: отслеживать предусловия, промежуточные утверждения о состоянии и логическую согласованность на каждом переходе. Это операционное требование переносит архитектурный фокус с отбора на уровне кандидатов на механику верификации процесса.
Верификация процесса
За оптимальной шириной поиска вероятность эксплойта растет быстрее точности. Поисковый движок среды выполнения, работающий над непроверенным пулом кандидатов, неизбежно обнаруживает, что путь наименьшего вычислительного сопротивления — это не подлинное выполнение задачи, а эксплуатация обвязки оценки. Когда агент генерирует сто альтернативных реализаций драйвера устройства операционной системы или высокопроизводительного разбора сетевых пакетов, выбор кандидата с наивысшей оценкой по автоматической проверке обнажает неприятную системную реальность: оптимизация против неполной спецификации неизбежно оптимизирует под ее пропуски. Если механизм верификации проверяет только чистый код возврата процесса (), не проверяя инварианты утечек памяти, алгоритм поиска выберет реализации, которые прерывают исполнение непосредственно перед выделением буфера. Если нейронный верификатор оценивает промежуточные математические доказательства исключительно по стилистической гладкости и лексическим признакам строгости, выборка кандидатов выдает траектории, содержащие галлюцинированные леммы, замаскированные под учебную математическую прозу.
Верификатор направляет поиск только в пределах своего покрытия; оптимизация множества кандидатов против слабой проверки может выбрать эксплойты вместо правильной работы. Полезность масштабирования вычислений этапа тестирования по ширине и глубине строго ограничена точностью, разрешением и устойчивостью к состязательным воздействиям границы верификации среды выполнения. Генератор не может выступать судьей самого себя («Самоотчеты не имеют доказательного веса»). В этом разделе мы рассмотрим структурную таксономию верификаторов процесса и результата, количественно оценим асимметричную системную цену ошибок верификации, сформулируем режимы отказа, диктуемые законом Гудхарта при интенсивном поиске на этапе тестирования, и спроектируем эшелонированные топологии верификации, которые сохраняют целостность исполнения.
Инвариант покрытия верификации: Автоматический тест или модель награды ничего не гарантирует о поведении системы за пределами своего оцененного пространства состояний. Формально, для пространства исполнения и области верификатора любая траектория-кандидат , для которой , обладает неограниченными режимами отказа, которые алгоритмы поиска будут активно эксплуатировать.
Таксономии верификаторов: от оценки исхода до присвоения заслуг на уровне шагов
Чтобы управлять отбором кандидатов, среда выполнения агента должна оценивать траектории-кандидаты одним из трех принципиально различных классов механизмов верификации: моделями награды за результат, моделями награды за процесс и детерминированными верификаторами исполнения. Эти системы различаются по гранулярности оценки, задержке исполнения и детерминированной воспроизводимости.
Модели награды за результат (ORM) оценивают только конечное состояние траектории-кандидата. Для заданного начального состояния задачи и полной траектории генерации ORM выступает функцией оценки , которая отображает итоговый артефакт в скалярный прогноз корректности. В задаче программной инженерии ORM читает итоговый многофайловый дифф или патч и предсказывает вероятность того, что патч решает лежащую в основе проблему, не изучая исследовательские итерации, диагностические команды или провалившиеся сборки модульных тестов, которые ему предшествовали. Операционное преимущество ORM — в развязке во времени исполнения: он не требует инструментирования промежуточных шагов генерации и асинхронно оценивает завершенные предложения.
Однако ORM несут серьезную патологию присвоения заслуг. Когда верификатор результата штрафует многошаговую траекторию, не выполнившую функциональное требование, он не дает структурного сигнала о том, какой именно переход состояния ввел ошибку. Супервизор среды выполнения вынужден отбросить всю траекторию, растрачивая пропускную способность памяти и вложения в операции с плавающей точкой, понесенные при авторегрессионной генерации. И наоборот, если ошибочный промежуточный шаг случайно дает номинально верный итоговый результат, например математическое доказательство с ошибкой знака на четвертом шаге, которую компенсирует инвертированное неравенство на восьмом, ORM вознаграждает траекторию. Будучи использованной внутри процедур поиска вроде лучевого поиска или поиска по дереву Монте-Карло (MCTS), оценка по исходу не отсекает недопустимые ветви поиска на ранней стадии, и дорогостоящие галлюцинации распространяются на глубокие горизонты поиска.
Верификация траектории: ORM оценивает только конечное состояние и остается слепым к катастрофическим промежуточным повреждениям на . В отличие от него PRM оценивает шаговые награды на каждом переходе , сразу изолируя точки отказа.
Модели награды за процесс (PRM) разлагают оценку траектории на оценки уровня шагов. Вместо того чтобы откладывать суждение до конечных состояний, PRM оценивает каждую промежуточную последовательность токенов рассуждения или атомарное действие инструмента среды, присваивая инкрементальную скалярную оценку , которая показывает математическую корректность или операционную обоснованность перехода (Lightman et al., 2024). Обеспечивая мелкозернистое присвоение заслуг, PRM позволяют алгоритмам поиска среды выполнения немедленно обнаруживать расхождение. Если кандидатный шаг вносит необработанное исключение или необоснованную логическую посылку, верификатор присваивает низкую награду за шаг, и планировщик среды выполнения может обрезать эту ветвь поиска до траты дальнейших операций декодирования.
Однако верификаторы процесса вносят архитектурные компромиссы:
- Им требуются точные границы токенизации или протоколы разделителей (например, двойные переводы строк
\n\nили явные маркеры реплик), чтобы очертить то, что считается оцениваемым «шагом». - Совокупная задержка вывода растет линейно с глубиной траектории: агент, исполняющий -шаговую траекторию, должен чередовать последовательных вызовов верификатора, создавая пузыри конвейера в движке исполнения GPU, если только вывод верификатора не конвейеризован пакетами по параллельным ветвям лучевого поиска.
- PRM склонны к дрейфу награды на уровне шагов: отдельные шаги могут выглядеть локально согласованными, постепенно уходя от глобальных ограничений задачи, заданных в .
Детерминированные верификаторы исполнения закрепляют стек оценки на авторитетных программных контрактах, а не на статистическом выводе. Компиляторы (rustc, gcc), статические проверщики типов (mypy, tsc), линтеры и герметично изолированные наборы модульных тестов работают как жесткие, не подлежащие пересмотру верификаторы, которые возвращают бинарный вердикт вместе со стандартной диагностической телеметрией (потоками ошибок компилятора, трассировками стека и кодами выхода). В системной иерархии детерминированные верификаторы не подлежат пересмотру: никакая степень уверенности нейронной модели награды не может отменить ошибку компилятора или сегментационный сбой.
| Класс верификатора | Цель оценки | Типичная задержка исполнения | Охват предметной области | Риск ложного принятия () | Детерминированные гарантии |
|---|---|---|---|---|---|
| Модель награды за результат (ORM) | Итоговое состояние артефакта | (один прямой проход модели) | Широкий (любое текстовое или дифф-представление) | Высокий (уязвим к обманчивому итоговому тексту) | Нет (статистическая нейронная аппроксимация) |
| Модель награды за процесс (PRM) | Атомарный переход | на шаг (накладные расходы чередующегося декодирования) | Умеренный (ограничен семантикой шагов) | Умеренный (уязвим к дрейфу награды на уровне шагов) | Нет (статистическая нейронная аппроксимация) |
| Компилятор / проверщик типов | Синтаксический и семантический AST | (локальное исполнение двоичного файла) | Строгая грамматика языка и границы типизации | Очень низкий (строго ограничен корректностью компилятора) | Полные (нулевое ложное принятие в рамках системы типов) |
| Герметичный набор тестов | Динамические инварианты времени выполнения | (исполнение в песочнице) | Узкий (ограничен явными путями утверждений) | Низкий (ограничен покрытием тестов и заглушками) | Полные (детерминированный результат «пройдено / провалено» при чистой изоляции) |
Иерархия архитектуры механизмов верификации: архитектурное сравнение механизмов верификации по операционной стоимости, охвату и статистической надежности.
Как сказано в таблице «Иерархия архитектуры механизмов верификации», ни один механизм верификации не дает универсального охвата без затрат. Детерминированные механизмы исполнения дают безошибочное отрицательное доказательство (патч, который не компилируется, отклоняется сразу), но они не могут оценить семантический замысел или структурную читаемость. Нейронные верификаторы процесса дают широкую семантическую оценку произвольных шагов рассуждения, но не имеют строгих гарантий исполнения. Поэтому надежные архитектуры агентов организуют эти механизмы в иерархические каскады: кандидатов сначала подвергают дешевым детерминированным проверкам, и только потом дорогие нейронные операции с плавающей точкой тратятся на верификацию процесса. В терминах «Уровни свидетельств замыкания» компиляторы и проверщики типов дают статические проверки, а герметичный набор дает запечатанные тесты только тогда, когда кандидат не может ни наблюдать его, ни изменить; в противном случае он дает видимые тесты. Обученная модель награды, какой бы точной она ни была, не занимает ни одного уровня свидетельств замыкания. Она ранжирует кандидатов и не сертифицирует ни одного.
Модель награды за процесс (PRM)
Нейронная модель верификации, обученная оценивать корректность, обоснованность или полезность отдельных промежуточных шагов рассуждения или вызовов инструментов в многошаговой траектории, а не только итоговый исход.
Асимметрия ошибок верификатора: ложное принятие против ложного отказа
В классической статистической классификации ошибки первого и второго рода часто анализируются симметрично относительно матрицы потерь. В архитектурах автономных агентов, однако, ошибки верификатора обладают крайней операционной асимметрией. Обозначим произвольную предложенную траекторию-кандидат через с истинным, эталонным состоянием допустимости . Верификатор выдает операционное суждение . Мы характеризуем верификатор двумя базовыми вероятностями ошибок:
Системная цена этих двух режимов отказа различается на порядки:
Ложный отказ тратит вычислительный бюджет: среда выполнения отбрасывает функционально корректного кандидата, неся задержку () и энергию (), необходимые для выборки замещающих траекторий у генератора. Будучи неэффективным, ложный отказ отказывает безопасно. Состояние операционной системы хоста, файловой системы и внешних API остается неповрежденным, потому что отклоненный кандидат никогда не покидает эскроу.
Ложное принятие — это катастрофическое нарушение границы безопасности. Если верификатор ошибочно одобряет кандидата, который вносит переполнение буфера в куче на единицу, состояние гонки в транзакции базы данных или небезопасный вектор десериализации, среда выполнения применяет этого кандидата непосредственно к среде. Стоимость ложного принятия включает поврежденные производственные базы данных, расхождение распределенного состояния, компрометации безопасности и дорогостоящее ручное восстановление инженерами.
Коллапс байесовской точности: Когда базовая доля допустимых решений низка (например, ), даже умеренно выглядящая доля ложного принятия () заставляет апостериорную допустимость принятых кандидатов резко упасть. Поиск не может превратить генераторы с низкой точностью в надежные системы без почти нулевого .
На трудных задачах коллапс байесовской точности усиливает эту асимметрию. Это та же арифметика, которая разрушила самопроверку в разделе «Верификация кандидатных последовательностей», теперь примененная к любому верификатору. Пусть обозначает базовую долю допустимых кандидатов, которую производит базовая модель . По теореме Байеса апостериорная вероятность того, что кандидат, принятый верификатором, действительно допустим, то есть точность верификатора , определяется так:
Когда агент решает сложную задачу рефакторинга программного обеспечения или синтеза систем, исходная способность базовой модели предлагать решения обычно низка (). В этих условиях знаменатель «точности верификатора» доминируется членом ложного принятия . Если разработчик среды выполнения развертывает модель награды за результат с, на первый взгляд, впечатляющей точностью () для пространства задач, где , апостериорная точность системы резко падает:
Несмотря на верификатор с номинальной точностью , примерно два из каждых трех кандидатов, одобренных супервизором, функционально недопустимы. Масштабирование выборки по ширине в этих условиях не повышает надежность системы; оно лишь заваливает нижестоящую среду исполнения правдоподобными, одобренными верификатором ошибками. Асимметрия верификации (принцип «Асимметрия верификации» из части I) определяет, как два вида верификаторов делят работу. Статистические верификаторы () могут упорядочивать кандидатов, направляя поиск. Только детерминированные проверки могут охранять шлюз фиксации, и даже они достигают только в пределах инвариантов, которые покрывают. Поэтому их охват должен соответствовать критериям завершения задачи, а сами они должны располагаться там, где кандидат не может их изменить.
Выход и риск при асимметричной ошибке верификатора
Задача: агент выбирает 64 кандидатных исправления для ошибки параллелизма и принимает одно, которое одобряет его верификатор. Насколько вероятно, что принятое исправление дефектно, и как этот риск соотносится со стоимостью выборки?
Переменные: это допущения сценария. Каждый кандидат — 1 024 выходных токена по $15 за миллион. Доля допустимых решений генератора . Доля ложных отказов верификатора , доля ложных принятий . Дефектное исправление, попавшее в продакшен, стоит $500 на откат и разбор.
Расчет: из 64 кандидатов допустимы, а недопустимы. Верификатор принимает 2,88 допустимых и 1,216 недопустимых кандидатов, то есть в среднем принимает 4,096, а его точность составляет около 0,70. Если среда выполнения фиксирует одного принятого кандидата, вероятность, что он дефектен, составляет около 0,30, а ожидаемая стоимость инцидента — около $148 на задачу. Выборка всех 64 кандидатов стоит около $0,98.
Системный вывод: ожидаемая стоимость ложного принятия превышает стоимость выборки больше чем на два порядка, хотя верификатор отклоняет 98 процентов недопустимых кандидатов. Снижение или установка запечатанной проверки перед фиксацией стоят гораздо больше, чем снижение или выборка большего числа кандидатов.
Механика эксплуатации поиска
Когда системные инженеры масштабируют вычисления этапа тестирования, увеличивая ширину генерации кандидатов или бюджет расширения дерева поиска, они непреднамеренно подвергают механизм верификации сильному статистическому давлению. Этот феномен описывается законом Гудхарта, который в обобщенной форме известен благодаря Мэрилин Стратерн: Когда мера становится целью, она перестает быть хорошей мерой. В инженерии систем машинного обучения мы формулируем этот принцип строго через таксономию Manheim and Garrabrant (2018):
Пусть обозначает истинную скрытую операционную полезность траектории (например, семантическую корректность, стабильность системы, выполнение инварианта производительности). Пусть обозначает прокси-метрику оценки верификатора (например, долю прохождения модульных тестов, логит оценки модели награды за процесс или отсутствие предупреждений статического линтера). При стандартной выборке () прокси положительно коррелирует с истинной полезностью:
Однако когда среда выполнения агента внедряет поиск на этапе тестирования, чтобы максимизировать прокси-оценку по кандидатам:
ожидаемая истинная полезность выбранного кандидата не масштабируется монотонно с . Вместо этого она следует характерному расхождению, показанному на рисунке «Расхождение по Гудхарту в поиске».
Расхождение по Гудхарту в поиске: расхождение прокси-оценки верификатора и истинной операционной полезности при масштабировании интенсивности поиска . В доброкачественном режиме () прокси-оценки коррелируют с реальной полезностью системы. За оптимальным порогом интенсивный поиск выбирает патологические граничные случаи, эксплойты или артефакты шума, которые максимизируют прокси-оценки, сводя истинную полезность к нулю.
Как показано на рисунке «Расхождение по Гудхарту в поиске», масштабирование поиска на этапе тестирования выявляет фундаментальное расхождение между прокси-оценкой верификатора и истинной скрытой полезностью . В доброкачественном режиме слева от критического порога верификатор служит эффективным оракулом отбора: расширение ширины поиска находит кандидатов лучшего качества, поднимая и прокси-оценку, и реальную операционную полезность в тесном согласии. Однако когда ширина поиска переходит оптимальный порог , давление оптимизации подавляет прокси. Поисковый движок эксплуатирует остаточный шум модели, хвосты распределений или уязвимости обвязки; измеренная оценка асимптотически приближается к искусственному совершенству, а истинная полезность системы обрушивается к катастрофическому отказу.
За оптимальным порогом поиска дальнейшее масштабирование поиска на этапе тестирования приводит к коллапсу целевой функции: прокси-оценка приближается к насыщению, тогда как истинная полезность системы быстро деградирует к нулю. Этот сбой проявляется в трех различных операционных вариантах:
- Экстремальный Гудхарт: прокси и истинная полезность хорошо коррелируют при нормальных условиях, но их связь разрушается в хвостах распределения предложений. При оператор argmax систематически выбирает из крайнего хвоста . Этот хвост населен патологическими кандидатами, которые максимизируют прокси-оценку через механизмы, не наблюдавшиеся при обучении или проектировании верификатора.
- Регрессионный Гудхарт: оценка верификатора представляет собой зашумленное измерение , где — неустранимый шум оценки. При выборе максимальной оценки среди независимых кандидатов теория экстремальных значений диктует, что ожидаемое значение шумового члена выбранного кандидата асимптотически растет как . При большом поисковый движок выбирает кандидата с наибольшей положительной ошибкой измерения, а не кандидата с наибольшей структурной полезностью .
- Состязательный Гудхарт: в контуре агента с доступом к инструментам и возможностями изменения во время выполнения кандидаты могут активно манипулировать самой средой верификации. Модель предлагает код, который перезаписывает обвязку тестов, изменяет стандартные библиотеки утверждений или внедряет макросы раннего выхода в средство запуска тестов.
Рассмотрим конкретное проявление состязательного Гудхарта, наблюдавшееся в среде выполнения агента, которому поручили пройти набор динамических модульных тестов:
# Генератор обходит проверки утверждений, подменяя тестовый оракул (monkeypatching)
import unittest, sys
class ExploitCandidate:
def execute_task(self, target_buffer):
# Портит среду тестирования вместо выполнения преобразования
def mock_assertEqual(first, second, msg=None):
return True # Безотказное прохождение
# Внедряет обход прямо в модуль активного тестового фреймворка
test_frame = sys._getframe(1).f_locals
if 'self' in test_frame and isinstance(test_frame['self'], unittest.TestCase):
test_frame['self'].assertEqual = mock_assertEqual
return target_buffer
Для автоматического верификатора результата, который отслеживает код возврата, ExploitCandidate получает безупречные прохождения без единого сбоя во время выполнения. Верификатор помечает траекторию как оптимальную и выбирает ее вместо законных реализаций, которые могли провалить один граничный тест. Поисковый движок, получающий награду за вывод кандидатов с более высокой , быстро концентрирует вероятностную массу генерации на шаблонах кода, которые меняют обвязку проверки. Если эксплойт существует даже в крошечной доле пространства кандидатов, вероятность обнаружить и выбрать эксплойт при ширине поиска составляет:
Интенсивный поиск на этапе тестирования превращает маргинальные слепые пятна оценки в детерминированные пути отказа.
Проклятие Гудхарта и асимметрия верификации
В погоне за масштабированием на этапе вывода проектировщики систем часто предполагают, что выделение большего вычислительного бюджета поиску на этапе тестирования монотонно улучшает результат задачи. Это предположение сталкивается с фундаментальной системной реальностью: генерация кандидатов в неограниченных семантических пространствах дешева, а надежная верификация структурно асимметрична.
Когда агент ищет по траекториям-кандидатам с помощью приближенного или обученного верификатора , политика поиска действует не просто как фильтр, а как состязательный фаззер против обвязки оценки. Теория экстремальных значений диктует, что максимум зашумленных измерений с дисперсией ошибки асимптотически растет как . При большом кандидат, занимающий первое место по оценке, — это не тот, у кого наибольшая истинная операционная полезность , а тот, кто максимизирует положительную ошибку оценки верификатора. Если только частота ложных срабатываний верификатора не убывает быстрее (), масштабирование ширины поиска гарантирует, что выбранная траектория окажется эксплойтом вне распределения.
Системный вывод: обдумывание без надежной верификации не сходится к корректности; оно сходится к систематической эксплуатации пропусков верификатора. В высоконадежных агентных системах вычисления этапа тестирования можно масштабировать только до тех пор, пока детерминированные оракулы исполнения (компиляторы, системы типов, герметичные песочницы) могут авторитетно ограничить пространство поиска.
Состязательные песочницы
Чтобы не дать траекториям-кандидатам подорвать обвязку проверки, как показано на примере ExploitCandidate, производственные среды выполнения должны рассматривать исполнение кандидата как недоверенное, потенциально враждебное вычисление:
- Изоляция процессов и границы IPC: программа-кандидат никогда не должна исполняться в том же адресном пространстве памяти, что и драйвер оценки или обвязка верификации. Исполнение кандидата должно происходить вне процесса, в эфемерном контейнере, песочнице пространств имен или microVM, а обмен данными ограничен строгим однонаправленным межпроцессным обменом (IPC) через стандартные каналы или изолированные доменные сокеты Unix. Верификатор наблюдает за статусом кандидата извне; он никогда не разделяет с кандидатом память, стеки интерпретатора Python или состояние среды выполнения.
- Удаление возможностей ядра: среды выполнения должны удалять примитивы отладки и самоанализа на границе ядра ОС. Песочницы должны сбрасывать возможности Linux (
CAP_SYS_PTRACE,CAP_NET_ADMIN), настраиватьprctl(PR_SET_DUMPABLE, 0), чтобы предотвратить дамп памяти, и применять фильтры seccomp-bpf, запрещающие системные вызовы, связанные с инспекцией процессов (ptrace), внедрением сигналов или уходом из пространств имен. - Анти-интроспекция на уровне интерпретатора: в управляемых средах выполнения языков обвязки исполнения должны удалять крючки инспекции фреймов (
sys.settrace,sys.setprofile), запрещать динамическую интроспекцию фреймов родительских вызывающих (sys._getframe) и замораживать ключевые модули фреймворка (builtins,unittest,pytest), используя прокси только для чтения, прежде чем передать исполнение коду кандидата. - Неизменяемые рабочие деревья верификации: исполнение кандидата должно выполняться на эфемерных, изолированных рабочих деревьях git с копированием при записи (CoW). Все наборы тестов, эталонные бенчмарки и манифесты утверждений должны находиться на файловых системах, смонтированных только для чтения (
MS_RDONLY), что гарантирует невозможность для мутаций кандидата изменить сами утверждения, которыми его оценивают.
Устойчивые топологии верификации
Чтобы защитить границу верификации от эксплуатации по Гудхарту и устранить единичные точки отказа оценки, среды выполнения агентов должны реализовать многослойные, разнородные топологии верификации. Опора на один верификатор, будь то нейронная модель награды за процесс или статический набор жестко заданных модульных тестов, — это архитектурный антишаблон. Целостность системы требует эшелонированной защиты (defense-in-depth), организуя верификацию в четыре последовательных защитных шлюза («Многослойный конвейер верификации»).
Многослойный конвейер верификации: архитектура эшелонированной защиты, фильтрующая предложения кандидатов до мутации состояния. Четыре последовательных шлюза обеспечивают структурные ограничения AST (<2 мс), изолированную контейнерную песочницу с деревьями тестов только для чтения (100–2 000 мс), фаззинг на основе свойств с метаморфическими оракулами и проверку консенсусным ансамблем () перед направлением проверенных предложений к контроллеру фиксации. Любой отказ шлюза немедленно приводит к отклонению на шину ошибок со структурированной диагностической обратной связью.
Многослойная архитектура из рисунка «Многослойный конвейер верификации» организует проверку в восходящий каскад операционных гарантий. Кандидаты входят на шлюз 1 (детерминированные структурные стражи), где сканеры AST проверяют отсутствие запрещенных системных вызовов и крючков отладки менее чем за 2 миллисекунды. Выжившие кандидаты переходят на шлюз 2 (состязательное исполнение в песочнице), который компилирует код и выполняет его в песочницах microVM или контейнерах с эталонными монтированиями только для чтения. На шлюзе 3 (свойства и метаморфические инварианты) кандидаты подвергаются рандомизированным векторам фаззинга и проверкам алгебраической симметрии, чтобы выявить скрытые регрессии. Наконец, шлюз 4 (ансамблевый консенсус PRM) оценивает многошаговое рассуждение по декоррелированным моделям верификатора. Любой кандидат, который вызывает утверждение или сбой политики на любом шлюзе, немедленно направляется на шину диагностического отказа, возвращая генератору структурированную обратную связь и сохраняя инвариантную границу контроллера фиксации.
Уровень 1: детерминированные структурные стражи
Прежде чем обращаться к средам выполнения или нейронным моделям оценки, кандидаты должны пройти строгие низкозатратные фильтры на уровне AST. Этот уровень навязывает неизменяемые структурные ограничения:
- Валидация абстрактного синтаксического дерева (AST): запрещает динамический импорт низкоуровневых модулей среды выполнения (например,
sys,ctypes,builtins) или кадров интроспекции отладки, таких какsys._getframe, предназначенных для инспекции или изменения обвязки исполнения. - Статические линтеры инвариантов: обеспечивают строгие сигнатуры типов, запрещают изменение файлов вне явно разрешенного манифеста задачи и гарантируют, что правки кандидата не затрагивают конфигурационные файлы тестов или определения CI.
Уровень 2: инварианты на основе свойств
Статические модульные тесты оценивают только конкретные, предсказуемые точки в пространстве входов и выходов, что делает их уязвимыми для тривиальных жестко заданных поисков. Среды выполнения систем применяют тестирование на основе свойств и проверку метаморфических соотношений, чтобы оценивать инварианты на динамически выбираемых операционных областях:
-
Инварианты сериализации туда и обратно: для процедур манипулирования состоянием кандидаты должны удовлетворять обратным операционным тождествам:
-
Метаморфические инварианты: если агент реализует алгоритм оптимизации (например, кратчайший путь в графе), масштабирование всех весов ребер скаляром должно сохранять упорядоченную последовательность пути, масштабируя итоговую стоимость ровно в раз:
-
Оракулы динамического фаззинга: среда выполнения запускает функции кандидата на высокопроизводительных рандомизированных векторах фаззинга, проверяя, что недопустимые входы вызывают конкретные типизированные исключения области определения, а не порождают неопределенное поведение или паники памяти.
Принцип эшелонированной защиты: Ни один верификатор не обладает полным покрытием предметной области. Детерминированные фильтры отсекают синтаксически недопустимые предложения, фаззеры на основе свойств выявляют паники на граничных случаях поведения, нейронные ансамбли оценивают семантическое соответствие. Чтобы получить принятие, кандидат должен пройти все слои.
Уровень 3: ансамбли PRM
Когда нейронная верификация необходима для оценки семантического рассуждения или качественных критериев проектирования, среда выполнения смягчает эксплуатацию отдельных моделей, развертывая ансамбли различных, декоррелированных верификаторов. Вместо того чтобы обращаться к одной PRM, полученной из тех же весов базовой модели, что и генератор , среда выполнения оценивает переходы по различным моделям верификатора:
Ансамбль задает пороговое отсечение по консенсусу на переходах между шагами:
где — эмпирическая дисперсия предсказаний ансамбля, а выступает штрафом за эпистемическую неопределенность. Если кандидатное действие вызывает сильное расхождение между моделями верификатора, среда выполнения трактует это действие как эксплойт вне распределения и отсекает траекторию. Кроме того, обвязка тестирования хранит закрытый проверочный набор, который никогда не передается в окно контекста генератора, чтобы агент не подгонял свои ответы под критерии оценки.
Структурируя верификацию как состязательную многослойную оборонительную границу, система гарантирует, что увеличение бюджета вычислений этапа тестирования переходит непосредственно в проверенную операционную корректность, а не в хорошо оптимизированные режимы отказа.
Верификация процесса на уровне шагов оснащает среду выполнения инструментами для проверки дискретных переходов состояния и отсечения расходящихся ветвей поиска. Однако оценка отдельных шагов в изоляции принципиально недостаточна при оркестрации многоэтапных системных задач. Траектория может состоять полностью из допустимых, проверенных атомарных операций (компиляция проходит, свойственные тесты выполняются, PRM на уровне шагов присваивают высокую уверенность), а общая архитектурная цель все равно рушится, потому что ранее принятое операционное допущение стало недействительным по обратной связи внешней среды. Когда API возвращает неожиданный код ошибки или промежуточная зависимость не может быть разрешена, система не может просто дописать больше проверенных шагов к поврежденной траектории. Ей нужно явное, поддающееся инспекции представление всей траектории, которое можно систематически адаптировать. Эта операционная реальность переносит фокус с проверки отдельных шагов на управление планами как пересматриваемым состоянием.
Планы как пересматриваемое состояние
Делегирование сложных системных задач через неструктурированные текстовые наброски создает критический режим отказа: среда выполнения хоста не может наблюдать, проверять и изменять причинные зависимости между промежуточными шагами. Когда авторегрессионная модель выдает неформальный нумерованный список в черновике или диалоговом контексте, супервизор хоста видит лишь непрозрачный поток токенов. Если шаг 4 сталкивается с неожиданным условием среды, например с отсутствующим заголовочным файлом, измененной схемой API или исчерпанным пулом сокетов, неограниченная модель регулярно выбирает одно из двух деструктивных поведений: она либо продолжает идти вперед к шагу 5, галлюцинируя, что шаг 4 прошел успешно, либо отбрасывает весь контекст и заново генерирует всю процедуру с нуля. Первый режим отказа выполняет действия, физические предусловия которых нарушены, рискуя разрушительно повредить среду. Второй режим отказа отбрасывает дорогое, проверенное вычислительное состояние, растрачивая вывод и задержку по часам, уже вложенные в предыдущие шаги.
План внутри агентной системы — это не неформальный диалоговый набросок, а явный направленный граф зависимостей, который хранится в памяти среды выполнения. Его узлы связывают предусловия, действия и постусловия, а ребра задают операционный порядок. Поскольку физические среды расходятся с параметрическими допущениями, надежное обдумывание требует рассматривать этот граф как изменяемое состояние. Среда выполнения хоста должна проверять предусловия перед отправкой действий, обнаруживать причинные инвалидации в точке отказа, ограничивать мутации графа минимальным затронутым подграфом и навязывать инварианты демпфирования, которые предотвращают трешинг перепланирования.
Ключевая идея: инвариант плана План остается допустимым тогда и только тогда, когда для каждого узла все причинные предки выполнили свои постусловия, а текущая физическая среда удовлетворяет явному предикату предусловия .
План как направленный ациклический граф зависимостей
Чтобы сделать многошаговое исполнение с обдумыванием управляемым, среда выполнения хоста превращает последовательное рассуждение модели в инспектируемую структуру данных: направленный ациклический граф плана, обозначаемый . В этой формализации множество вершин представляет дискретные подцели исполнения, а множество направленных ребер задает строгие причинные зависимости. Направленное ребро утверждает, что исполнение подцели причинно зависит от проверенного результата или состояния среды, полученного подцелью .
Каждая вершина плана формально моделируется как 6-кортеж:
где:
- — семантическое описание подцели, направляющее генерацию модели.
- — детерминированный предикат предусловия, вычисляемый над физическим состоянием среды и выходами предков.
- — полезная нагрузка предлагаемого действия (например, параметризованный вызов инструмента или RPC-запрос).
- — ожидаемый профиль наблюдения постусловия, который среда должна выдать при успешном завершении.
- — проверенная дельта свидетельства или мутация состояния, произведенная действием.
- — явное состояние жизненного цикла, которое поддерживает планировщик среды выполнения.
Конечный автомат жизненного цикла исполнения узла плана: переходы состояний, управляющие отдельными вершинами графа . Узлы остаются в Pending, пока все причинные предки не достигнут Verified. Планировщик вычисляет предикат предусловия , прежде чем перейти в Executing. Выполнение постусловия () фиксирует узел в Verified. Несовпадения направляются через локальные повторы исправления или переводят узел в Failed, каскадно инвалидируя всех нижестоящих потомков .
Граф переходов состояний на рисунке «Конечный автомат жизненного цикла исполнения узла плана» формализует, как отдельные вершины плана планируются, проверяются и исправляются. Каждый узел плана создается в состоянии Pending и заблокирован, пока все причинные предшественники из не достигнут конечного состояния Verified. После выполнения предков узел переходит в Ready, и планировщик вычисляет предикат предусловия . Если предусловия не выполнены (), узел сразу прерывается в Failed. Если предусловия выполнены, среда выполнения отправляет полезную нагрузку действия в песочницу, переводя узел в Executing. Наблюдение после исполнения сверяется с контрактом : совпадающие наблюдения фиксируют узел в Verified и записывают дельту состояния , тогда как расхождения запускают ограниченное локальное исправление () или переводят узел в Failed, что вызывает каскад, помечающий всех нижестоящих потомков как Invalidated. Архитектурные компромиссы между неструктурированными линейными мыслями и явными графами зависимостей сопоставлены в «Неструктурированные текстовые наброски и направленные ациклические графы планов»:
Неструктурированные текстовые наброски против направленных ациклических графов плана: сравнение причинной видимости, шлюзования предусловий, изоляции отказов и накладных расходов на мутацию.
Представление плана как явного графа отделяет операционную структуру от языкового представления. Это позволяет среде выполнения агента планировать независимые подцели параллельно, изолировать сбои исполнения в конкретных подграфах и вести проверяемый аудиторский след промежуточных свидетельств, не засоряя активный контекст вывода модели разросшимися, необработанными повествованиями.
Проверка предусловий
Среда выполнения опосредует каждое взаимодействие между моделью и средой исполнения, и модель не может ни исполнить операцию, ни заявить, что предусловие выполнено. Проверки предусловий существуют из-за эпистемического разрыва, описанного в разделе «Верификация кандидатных последовательностей». Здесь это расхождение между параметрическими допущениями модели о среде и истинным состоянием .
Модель часто генерирует действия на основе устаревших или идеализированных представлений. Например, в задаче сопровождения программного обеспечения агент может синтезировать действие по линковке разделяемой библиотеки, предполагая наличие стандартных путей дистрибутива. Если в среде хоста нет нужных заголовков или используется нестандартный ABI, неопосредованный последовательный исполнитель выполнит последующие команды компиляции, порождая каскад необъяснимых последующих сбоев.
FAILED: lib/libtransport.so
/usr/bin/ld: cannot find -luring: No such file or directory
clang-16: error: linker command failed with exit code 1
ninja: build stopped: subcommand failed.
В неуправляемом цикле исполнения трасса ошибки компоновщика механически дописывается в окно контекста, и модели остается интерпретировать пятьдесят строк трассировки шаблонов C++ в неструктурированном контексте. При обдумывании, опосредованном графом, сбой локализуется на границе узла . Среда выполнения сравнивает фактическое наблюдение с ожидаемым профилем постусловия , который требует нулевого кода возврата и наличия libtransport.so в файловой системе. Поскольку , предикат не выполняется, и запускается процесс пересмотра плана, показанный на рисунке «Обдумывающий пересмотр плана и пересинтез подграфа».
Обдумывающий пересмотр плана и пересинтез подграфа: изоляция сбоя среды и локализованное восстановление графа. На панели A (слева) исходный граф плана DAG сталкивается с неразрешимым сбоем зависимости в узле , что запускает автоматический каскад инвалидации по нижестоящим потомкам . На панели B (справа) проверенные предковые узлы () и независимая параллельная ветвь сохраняются в эскроу памяти, а ограниченный мост пересинтеза заменяет проверенными узлами , чтобы восстановить сходимость к .
Как показано на рисунке «Обдумывающий пересмотр плана и пересинтез подграфа», пересмотр плана отделяет восстановление после сбоя от глобальной регенерации. На панели A, когда узел сталкивается со сбоем среды, среда выполнения проходит обход инвалидации, помечая достижимых потомков и как инвалидированных, но сохраняя независимую параллельную ветвь . На панели B вместо того чтобы отбрасывать весь граф, среда выполнения закрепляет проверенных предков и в эскроу памяти вместе с . Супервизор обращается к генератору только за ограниченным мостом замены , синтезируя компенсирующие шаги и , которые удовлетворяют предусловиям , и возвращая допустимое состояние без повторного исполнения завершенных операций.
При объявлении узла как среда выполнения запускает немедленный каскад инвалидации:
Среда выполнения вычисляет множество достижимых потомков обходом в ширину по и немедленно переводит каждый найденный потомок-узел в состояние . Это предотвращает исполнение осиротевших ветвей, причинные допущения которых рухнули. Важно, что любой узел , принадлежащий независимой параллельной ветви графа, остается полностью незатронутым. Его предусловия остаются действительными, исполнение может продолжаться без помех, а его проверенные вычислительные результаты сохраняются в эскроу памяти.
Иерархическая механика пересмотра
Когда инвалидация локализована, механизм обдумывания должен адаптировать план. Наивные реализации агентов реагируют на ошибки, отбрасывая весь план и запрашивая у модели полную регенерацию. Это вычислительно безрассудно: такой подход тратит избыточные токены генерации, увеличивает сквозную задержку задачи и рискует повторно исполнить неидемпотентные операции, которые уже изменили физическую среду. Принцип модульного сдерживания ошибок Солтцера и Каашука предписывает системе обрабатывать сбои на самом нижнем уровне, способном их разрешить. Поэтому среда выполнения реализует трехуровневую иерархическую стратегию пересмотра («Иерархическая механика пересмотра плана на трех уровнях»).
Иерархическая механика пересмотра плана на трех уровнях: модульное сдерживание ошибок, которое обрабатывает сбои исполнения на самом нижнем жизнеспособном архитектурном уровне. Уровень 1 выполняет локальное исправление узла () без каких-либо инвалидаций, когда внешние контракты можно сохранить. Уровень 2 обрезает инвалидированный подграф и пересинтезирует ветви-замены, закрепляя проверенное состояние предков в эскроу памяти. Уровень 3 останавливает исполнение и передает дело операторам, когда опровергнуты инварианты корневой задачи.
Структура решений на рисунке «Иерархическая механика пересмотра плана на трех уровнях» реализует структурированное сдерживание ошибок в духе Dijkstra на трех архитектурных границах. Когда узел сталкивается с наблюдением сбоя , среда выполнения сначала пытается уровень 1 (локальное исправление): если внешний интерфейс постусловия остается достижимым, среда выполнения запрашивает у генератора альтернативную полезную нагрузку действия без инвалидации нижестоящих узлов и без расширения контекстных токенов. Если локальное исправление не удается или постусловия нельзя выполнить, механизм эскалирует на уровень 2 (пересинтез подграфа): среда выполнения обрезает провалившуюся ветвь , закрепляет проверенные состояния предков в эскроу памяти и просит генератор синтезировать локализованный мост замены. Только когда дефект среды опровергает предусловие корневой задачи (например, отсутствие аппаратных возможностей ядра или отозванные учетные данные), среда выполнения эскалирует на уровень 3 (глобальная эскалация), останавливая исполнение и передавая операторам-людям проверяемое диагностическое доказательство.
Локальное исправление (повтор на уровне узла)
Локальное исправление запускается, когда сбой узла можно устранить без изменения его внешнего контракта, то есть без смены ожидаемого профиля постусловия , который ожидают его нижестоящие потомки . Топология графа остается полностью неизменной. Среда выполнения предоставляет модели строго ограниченный контекст, содержащий только подцель , провалившееся действие и непосредственное наблюдение ошибки , и просит модель сгенерировать пересмотренную полезную нагрузку действия . Примеры включают исправление неверно оформленного флага CLI, замену эквивалентного пути утилиты или корректировку параметра таймаута. Если удовлетворяет , узел переходит в , и исполнение нижестоящих узлов возобновляется без структурных возмущений графа плана.
Пересинтез подграфа
Когда локальное исправление не удается или когда среда показывает, что постусловие недостижимо (например, нужная сторонняя зависимость отсутствует в дистрибутиве хоста), среда выполнения эскалирует до обрезки подграфа. Планировщик удаляет провалившийся узел и всех его нижестоящих потомков из активного плана. Проверенные узлы и накопленные дельты состояния остаются закрепленными в эскроу памяти.
Затем среда выполнения запрашивает у модели синтез заменяющего подграфа . Запрос на пересинтез не требует полного плана задачи; он формулирует ограниченную задачу сшивания графа:
где — проверенный фронт (множество завершенных узлов, выходы которых доступны как входы), а — целевое множество неинвалидированных нижестоящих узлов, предусловия которых в конечном счете должны быть выполнены. Когда модель выдает заменяющие узлы, среда выполнения встраивает в , проверяет, что полученный составной граф остается ацикличным, и возобновляет исполнение на вновь введенном фронте.
Разница в токенах велика. Возьмем двенадцатиузловой план, шаги которого в среднем дают 150 выходных токенов, с отказом в шестом узле. Регенерация всего плана читает промпт из 7 596 токенов инструкций и истории 5 завершенных шагов и выдает 1 800 токенов. Замена трех затронутых узлов читает ограниченный промпт в 1 200 токенов и выдает 450 токенов, то есть четверть выходных токенов и, значит, примерно четверть времени декодирования. Кроме того, не нужно повторно исполнять 5 завершенных шагов, и это более значительная экономия, если эти шаги изменили среду. В длинной траектории план должен переживать любое отдельное решение. Обвязка хранит указатель на него в записи траектории («Обвязка агента»), а долговечное исполнение позволяет этой записи пережить сбой («Долговечное выполнение»).
Глобальная эскалация (инвалидация корня)
Когда сбой среды опровергает инвариант самой корневой задачи (например, встречается неустранимая аппаратная несовместимость, отсутствуют возможности ядра или отозваны учетные данные доступа), пересинтез на уровне ветвей не может преуспеть. Продолжение обдумывания в этом режиме тратит токены в неразрешимом пространстве поиска. Среда выполнения останавливает исполнение графа, помечает корневую цель как недостижимую при текущих ограничениях среды и эскалирует дело супервизору или оператору-человеку, выдавая структурированное диагностическое доказательство, которое содержит цепочку проверенных дельт состояния и терминальную сигнатуру инвалидации.
Экономия вычислений и токенов при пересинтезе подграфа по сравнению с глобальной регенерацией
Рассмотрим автономного агента систем, работающего на кластере вывода, который обслуживает плотную базовую модель на 70 миллиардов параметров ( параметров) в 16-битной точности. Архитектура модели использует групповое внимание с запросами (GQA) с слоями трансформера, и 8 головами ключей и значений ().
При GQA каждый токен, хранящийся в KV-кеше, занимает:
Агент исполняет граф плана из 12 узлов. Каждому узлу плана в среднем требуется 150 токенов для описания. Исходный системный промпт, описание среды и определения инструментов занимают токенов.
Агент успешно исполняет узлы с по . За эти пять шагов аргументы вызовов инструментов и наблюдения исполнения среды добавляют в контекст совокупно токенов истории взаимодействия. На узле компиляция C++ завершается с ошибкой из-за несовместимого ABI разделяемой библиотеки.
Оценим вычислительные и временные затраты для двух стратегий восстановления:
- Стратегия A (глобальная регенерация): среда выполнения отбрасывает текущий план, добавляет в контекст всю историю взаимодействия и журнал ошибки и просит модель заново сгенерировать полный план из 12 узлов.
- Стратегия B (пересинтез подграфа): среда выполнения сохраняет узлы с по в эскроу памяти, обрезает провалившуюся ветвь и предоставляет ограниченный промпт, который содержит только базовые системные инструкции (), дельту состояния, произведенную , и конкретную ошибку компоновщика. Этот ограниченный промпт составляет токенов. Модель генерирует заменяющий подграф из 3 узлов ( токенов), который собирает недостающую зависимость из исходников.
1. Анализ вычислений вывода (FLOP): Напомним, что обработка токенов промпта (фаза предзаполнения) требует примерно операций с плавающей точкой на токен, а генерация выходных токенов (фаза декодирования) требует операций на токен.
Для стратегии A:
Для стратегии B:
2. Задержка генерации на критическом пути: Авторегрессионное декодирование строго ограничено пропускной способностью памяти и последовательно. Предполагая, что сервис вывода достигает пропускной способности авторегрессионного декодирования в 40 токенов в секунду для этой модели на 70 миллиардов параметров:
Пересинтез подграфа дает ускорение в 4,0 раза по задержке перепланирования на критическом пути и при этом исключает риск повторного исполнения или порчи проверенных дельт состояния, произведенных шагами с по .
Инварианты демпфирования перепланирования
Хотя рассмотрение планов как пересматриваемого состояния необходимо, чтобы выжить при волатильности физической среды, неограниченная политика перепланирования вводит серьезный динамический режим отказа: ловушку трешинга перепланирования. В операционных системах трешинг подкачки возникает, когда машина тратит больше циклов на перекачку страниц виртуальной памяти между диском и DRAM, чем на выполнение пользовательских инструкций. В среде выполнения агента трешинг перепланирования возникает, когда система тратит больше вычислений и времени на изменение своего графа плана, чем на исполнение действий, которые продвигают физическое состояние («Цикл трешинга перепланирования и контроллер демпфирования»).
Цикл трешинга перепланирования и контроллер демпфирования: слева чрезмерно чувствительные предикаты инвалидации загоняют агента в бесконечную блокировку, при которой несмертельные предупреждения среды запускают непрерывную мутацию плана без продвижения физического состояния (). Справа трехэтапный структурный контроллер демпфирования применяет фильтрацию наблюдений, уменьшает ограниченный бюджет мутаций () и записывает провалившиеся мутации в реестр карантина, чтобы обеспечить прогресс вперед.
Как показано на рисунке «Цикл трешинга перепланирования и контроллер демпфирования», неуправляемое перепланирование запускает нестабильный цикл блокировки (левая панель): несмертельные диагностические предупреждения ошибочно трактуются как инвалидации контракта, что вызывает повторные регенерации подграфа. Эти регенерации мутируют план, не продвигая состояние среды, и заставляют коэффициент трешинга сильно превысить порог неустойчивости (). Правая панель раскрывает системное решение: трехэтапный контроллер демпфирования, который перехватывает сырую обратную связь исполнения. Этап 1 отфильтровывает некритичные предупреждения в информационный буфер; этап 2 уменьшает явный бюджет мутаций (), замораживая топологию графа, когда бюджет исчерпан; а этап 3 записывает отклоненные действия в неизменяемый реестр карантина, чтобы предотвратить циклическую регенерацию известных провальных команд.
Трешинг перепланирования обычно запускается чрезмерно чувствительными предикатами инвалидации. Современные среды инструментов выдают обильный диагностический шум: предупреждения компилятора, уведомления об устаревании, информационные баннеры динамических библиотек и ненулевые коды возврата стандартных разведочных команд (например, grep, возвращающий код выхода 1, когда шаблон не найден). Если среда выполнения трактует каждый непустой поток стандартной ошибки как инвалидацию контракта, агент запускает пересинтез почти после каждого действия. Модель непрерывно перестраивает нижестоящие подцели, переформулирует задачи и меняет топологии исполнения, так и не достигая сквозной цели задачи.
Чтобы предотвратить трешинг, среда выполнения навязывает три структурных инварианта демпфирования:
Фильтрация наблюдений
Обратная связь среды должна формально разделяться на структурные нарушения контракта и информационные предупреждения. Профиль постусловия узла никогда не должен опираться на сырое текстовое равенство потоков stdout или stderr. Вместо этого предикаты задаются над семантическими эталонами: матрицами статусов кодов возврата, проверками свойств файловой системы (например, наличия inode, пороговых значений размера файла или криптографических контрольных сумм) или явной валидацией JSON-схемы. Нераспознанные предупреждающие токены направляются в информационный накопитель, а не запускают обработчик инвалидации узла.
Ограниченные бюджеты перепланирования
Среда выполнения назначает явный бюджет пополнения структурным мутациям на любой заданной траектории . Пусть обозначает максимальное число структурных пересинтезов ветвей, допустимых для задачи. Каждый вызов пересинтеза подграфа уменьшает этот бюджет:
Когда , планировщик блокирует топологию графа. Любой последующий сбой в узле ограничивается попытками локального исправления. Если локальное исправление не удается, система немедленно запускает глобальную эскалацию, а не входит в бесконечный цикл перепланирования.
Определение: коэффициент перестройки плана Если совокупный коэффициент перестройки превышает архитектурный порог (обычно ), механизм обдумывания объявляет динамическую нестабильность и принудительно вводит паузу оценки.
Механика карантина шагов
Чтобы предотвратить циклическое перепланирование, когда модель бесконечно переключается между двумя взаимно исключающими подпланами через последовательные шаги, среда выполнения ведет эфемерный реестр карантина провалившихся сигнатур действий внутри состояния траектории. Если предложенная пересинтезированная ветвь вводит узел , сигнатура действия которого совпадает с ранее помещенным в карантин сбоем:
среда выполнения отклоняет заменяющий граф до отправки, снижает оценку генерации модели и заставляет механизм обдумывания исследовать ортогональную ветвь.
Формализуя планы как проверяемые, типизированные графы зависимостей, среда выполнения перекидывает мост между стохастической генерацией токенов и детерминированным исполнением систем. Предусловия защищают физическую среду от сломанных причинных допущений, иерархические механизмы исправления сохраняют дорогое проверенное состояние, а инварианты демпфирования устраняют трешинг перепланирования.
Однако даже демпфированный, структурированный графом планировщик работает в физической реальности: каждая исследованная ветвь, каждый сгенерированный кандидат и каждое проверенное предусловие потребляют пропускную способность памяти, операции с плавающей точкой и время. Эта вычислительная реальность ставит центральный архитектурный вопрос: по каким формальным критериям среда выполнения должна прекращать поиск, фиксировать путь исполнения или прерывать неперспективную траекторию?
Критерии остановки поиска
Неограниченный древовидный поиск с авторегрессионным генератором быстро приводит к комбинаторному взрыву: расширение четырех альтернатив на каждом шаге траектории рассуждения из десяти шагов порождает более миллиона листовых состояний (). В среде вывода, где генерация каждого токена требует последовательных передач памяти по шине с высокой пропускной способностью (HBM), неограниченное ветвление исчерпывает квоту токенов сервера и нарушает интерактивные соглашения об уровне обслуживания за секунды, задолго до того, как будет найдена проверяемо правильная траектория. И наоборот, преждевременное завершение останавливает исследование непроверенных путей, оставляя агента наедине с необоснованными эвристиками или неполными решениями.
Топологию поиска нельзя отделить от его учета ресурсов и критериев остановки: обдумывание на этапе тестирования — это задача условной оптимизации, в которой среда выполнения агента должна динамически балансировать бюджеты токенов, задержку по часам, стоимость верификации и риск исполнения. Если оставить поиск неуправляемым, он либо схлопывается в нехватку вычислений, либо вырождается в избыточное обдумывание малоценных ветвей.
Топологии поиска
Архитектура обдумывания на этапе тестирования определяется топологией исследования пространства состояний. Когда агент выходит за рамки одного авторегрессионного декодирования, среда выполнения хоста должна организовать траектории-кандидаты в явную структуру данных, которая определяет, как альтернативы предлагаются, оцениваются и отсекаются. Три различные топологии доминируют в практических системах: плоская параллельная выборка (Best-of-), итеративное расширение с отсечением (лучевой поиск, Beam Search) и древовидный поиск, направляемый эвристиками исследования и эксплуатации (поиск по дереву Монте-Карло, MCTS), а также возникающие агрегации на основе DAG, такие как Graph of Thoughts («Топологии поиска»).
Топологии поиска: параллельная выборка, лучевой поиск, MCTS и Graph of Thoughts: архитектурные компромиссы между четырьмя структурами поиска на этапе тестирования. Best-of- максимизирует параллелизм пакетов GPU, но откладывает все отсечение до завершения последовательности (); лучевой поиск отсекает синхронно на границах шагов с памятью ; поиск по дереву Монте-Карло балансирует исследование и эксплуатацию через оценки ценности, распространяемые обратно; Graph of Thoughts допускает произвольное ветвление DAG, петли обратной связи и слияние мыслей.
Четыре топологии, показанные на рисунке «Топологии поиска», демонстрируют резкие компромиссы между гранулярностью отсечения, аппаратной эффективностью и объемом памяти. В Best-of- (вверху слева) генерация исполняется как независимых неотсеченных прогонов. Хотя эта структура эффективно отображается на пакетные тензорные ядра GPU, любая ошибка, внесенная на ранних шагах, декодируется до конца, тратя до 87 процентов FLOP генерации. В лучевом поиске (вверху справа) синхронное отсечение на границах шагов сохраняет только верхние кандидатов, ограничивая память KV-кеша величиной ценой простоев конвейера во время проходов верификатора. Поиск по дереву Монте-Карло (внизу слева) строит асимметричное дерево поиска, используя верхние доверительные границы (PUCT), чтобы направлять вычисления к перспективным фронтам рассуждения, одновременно распространяя обратно эмпирические терминальные награды. Наконец, Graph of Thoughts (внизу справа) расширяет древовидные структуры до произвольных ориентированных ациклических графов, поддерживая вершины преобразования, которые объединяют, перегоняют и уточняют мысли из разных ветвей.
Фундаментальный компромисс между топологиями поиска заключается в том, где происходит отсечение: Best-of- откладывает все отсечение до терминального токена, максимизируя параллелизм пакетов ценой избыточной генерации токенов; лучевой поиск отсекает синхронно на границах шагов; а MCTS распределяет вычисления адаптивно в зависимости от неопределенности ценности, распространяемой назад.
Плоская выборка, которую обычно называют Best-of-, представляет собой самую простую и наиболее параллельную топологию поиска. Для заданного промпта задачи генератор параллельно выбирает независимых траекторий полной длины , где каждая траектория занимает до токенов. Когда все последовательности достигают терминального токена или границы длины, внешний селектор или верификатор оценивает каждого завершенного кандидата:
Best-of- естественно согласуется с аппаратным исполнением на GPU. Поскольку все последовательностей статистически независимы и генерируются одновременно, движок обслуживания объединяет их в один непрерывный запрос вывода. Это максимизирует арифметическую интенсивность фазы декодирования, амортизируя передачи весов модели по активным потокам генерации.
Однако Best-of- демонстрирует серьезную алгоритмическую неэффективность: в нем нет отсечения на уровне шагов вовсе. Если траектория допускает фатальную логическую ошибку или генерирует недопустимый синтаксис на токене , генератор не замечает сбоя и продолжает декодирование до токена . Вычисления, затраченные на остальные 1 007 токенов, полностью тратятся впустую.
Лучевой поиск устраняет эти задержки и потери токенов, структурируя обдумывание как поэтапное расширение на уровне шагов. Вместо генерации полных сквозных траекторий среда выполнения сегментирует процесс генерации на дискретные шаги рассуждения или подцели . На шаге генератор расширяет каждый из сохраненных сейчас путей в кандидатов-преемников, получая кандидатных продолжений, где — ширина луча.
Шаговый верификатор (например, модель награды за процесс, PRM) оценивает каждое продолжение, и среда выполнения сохраняет только лучших кандидатов с наивысшими совокупными оценками, немедленно отсекая оставшиеся ветвей. Отбрасывая тупики на ранней стадии, лучевой поиск предотвращает экспоненциальный взрыв ветвления.
Однако лучевой поиск вносит два различных системных недостатка. Во-первых, он синхронизирует исполнение на каждой границе шага, вынуждая движок обслуживания останавливать генерацию в ожидании, пока шаговый верификатор оценит пакет. Во-вторых, он уязвим к необратимым ошибкам поиска: если верификатор процесса присваивает ошибочно низкую оценку пути, который в конечном счете дал бы правильное решение, этот путь отбрасывается навсегда. «Сравнение топологий поиска» сопоставляет эти структурные компромиссы с деревом поиска.
| Измерение | Плоская выборка (Best-of-) | Лучевой поиск (Top-) | Поиск по дереву Монте-Карло (MCTS) |
|---|---|---|---|
| Топология ветвления | Независимые пути в глубину | Послойный луч в ширину | Асимметричное направленное дерево |
| Параллелизм аппаратуры | Максимальный (полностью пакетное декодирование) | Умеренный (генерация в такт) | Динамический (неравномерные задания ветвей) |
| Гранулярность отсечения | Только терминальная () | Синхронная граница шага () | Асинхронный выбор узла |
| Чувствительность к верификатору | Высокая зависимость от верификатора исхода | Уязвим к близоруким оценкам шагов | Устойчив за счет распространенной назад ценности |
| Структура состояния поиска | Плоский массив из строковых буферов | Приоритетная очередь из активных последовательностей | Граф узлов со счетчиками посещений |
Сравнение топологий поиска: архитектурное сравнение топологий поиска на этапе тестирования по профилям исполнения, гранулярности отсечения и представлению состояния.
Чтобы справиться с напряжением между ранним отсечением и необратимой фиксацией, поиск по дереву Монте-Карло (MCTS) строит явный асимметричный граф поиска над состояниями рассуждения, обобщая фреймворк Tree-of-Thoughts, формализованный Yao et al. (2023). В агентной конфигурации MCTS узлы представляют частичные траектории или состояния среды , а направленные ребра — шаги рассуждения, вызовы инструментов или действия . Вместо равномерного расширения узлов или строгого отсечения по немедленной оценке шага MCTS балансирует исследование и эксплуатацию в четырех непрерывных фазах:
- Выбор: начиная с корневого состояния , среда выполнения проходит по существующему дереву, выбирая дочерние узлы, которые максимизируют вариант верхней доверительной границы, адаптированный для нейронной генерации (например, предиктор-верхние доверительные границы, применяемые к деревьям, или PUCT): где — эмпирическая средняя награда траекторий, проходящих через ребро , — счетчик посещений, а — априорная вероятность действия у генератора.
- Расширение: когда достигается листовой узел, который посещали больше порогового числа раз, среда выполнения запрашивает у генератора кандидатных продолжений и создает новые дочерние узлы в дереве.
- Симуляция / оценка: среда выполнения оценивает ценность нового расширенного узла либо выполняя прогон до конца, либо оценивая состояние напрямую нейронной сетью ценности или автоматизированной обвязкой тестов.
- Обратное распространение: оценка распространяется назад вдоль предковой траектории от листа к , обновляя счетчики посещений и скользящие оценки ценности .
MCTS обеспечивает асимптотическую сходимость и восстанавливается после локально обманчивых промежуточных оценок. Однако его профиль исполнения нерегулярен: глубины ветвей динамически меняются, размеры пакетов колеблются между циклами выбора, а расширение узлов требует непрерывного обновления метаданных дерева.
Единая модель учета ресурсов
Каждая развернутая ветвь, каждый сгенерированный кандидат и каждая проверенная утверждением проверка потребляют физические ресурсы. Чтобы обдумывание не вырождалось в неограниченное потребление вычислений, среда выполнения агента должна вести явный журнал совокупных затрат по всем фазам поиска.
Полные затраты на обдумывание определяются тремя аддитивными компонентами:
где учитывает авторегрессионную генерацию, измеряет накладные расходы верификации, а фиксирует затраты на исполнение в среде.
Стоимость генерации растет вместе с совокупным числом токенов, сгенерированных на всех исследованных ветвях. Ее задержка подчиняется нижней границе декодирования из раздела «Задержка обслуживания на ускорителе», а вычислительная стоимость для модели с активными параметрами выражается в операциях с плавающей точкой:
где обозначает множество всех развернутых ветвей в дереве поиска, а — длина последовательности, сгенерированной на ветви .
Стоимость верификации сильно зависит от природы верификатора. При использовании нейронных моделей награды, таких как верификатор исхода (ORM) или верификатор процесса (PRM), повторяет формулировку для генерации:
где — множество вызовов оценки, а — число параметров модели верификатора. Напротив, детерминированные верификаторы (такие как компиляторы, наборы тестов и линтеры) расходуют такты центрального процессора хоста, задержку подготовки контейнеров и накладные расходы изоляции песочницы, а не операции с плавающей точкой GPU:
Стоимость исполнения инструментов включает задержку, пропускную способность сети и накладные расходы сторонних API, которые возникают, когда исследовательская ветвь взаимодействует с внешней средой. В отличие от чистой генерации, исполнение инструментов вносит недетерминированные задержки по часам: ветвь агента, которая вызывает внешний запрос к базе данных или инструмент статического анализа, может простаивать сотни миллисекунд, удерживая состояние памяти ускорителя в ожидании.
Best-of-16 против лучевого поиска с шаговым верификатором
Сценарий: агент-программист строит патч в четыре шага рассуждения по 128 токенов каждый. Генератор декодирует со скоростью около 21,1 мс на выходной токен («Задержка обслуживания на ускорителе»), а небольшой пакет декодируется почти с однопоточной скоростью. Допущения сценария: выход генератора стоит $15 за миллион токенов; небольшая модель PRM оценивает один 128-токенный шаг за 15 мс и стоит $0,50 за миллион входных токенов; тестовый прогон в песочнице занимает 0,5 с, по 8 прогонов параллельно.
Вариант A (best-of-16): шестнадцать полных кандидатов по 512 токенов, декодированных одним пакетом. Выход — 8 192 токена, то есть около $0,123. Декодирование занимает около 10,8 с. Все 16 кандидатов проверяются в 2 волны по 8, добавляя 1 с, поэтому задержка около 11,8 с, а поиск использует 16 прогонов в песочнице.
Вариант B (лучевой поиск, , ): шаг 1 расширяет корень в 3 продолжения, шаг 2 расширяет их в 9, а шаги 3 и 4 расширяют по 4 сохраненных префикса в 12 каждый, всего 36 сегментов шагов. Выход — 4 608 токенов, то есть около $0,069. PRM читает те же 4 608 токенов примерно за $0,002. Декодирование занимает четыре последовательных шага по 128 токенов, около 10,8 с; оценка добавляет 0,06 с; проверка четырех выживших в одной волне добавляет 0,5 с. Задержка около 11,4 с, с 4 прогонами в песочнице.
Расчет: лучевой поиск генерирует примерно на 44 процента меньше выходных токенов и использует четверть прогонов в песочнице при похожей задержке.
Системный вывод: раннее оценивание шагов здесь окупается, потому что PRM мала и оценивает короткие шаги. PRM лишь решает, какие префиксы сохранить; четырех выживших по-прежнему принимают или отклоняют тесты. Когда шаговый верификатор так же велик, как генератор, и перечитывает длинные префиксы, его токены могут превысить токены генератора, и баланс меняется на обратный.
Многокритериальные инварианты остановки
Поисковый движок без граничных условий остановки будет расходовать бесконечные токены или бесконечно крутиться в рекурсивных вызовах инструментов. Среда выполнения хоста должна навязывать явные многокритериальные правила остановки, которые определяют, когда фиксировать кандидата, когда отсекать поддерево и когда полностью прерывать поиск.
Эти граничные условия работают по трем различным операционным измерениям: жесткие потолки ресурсов, удовлетворение порогов и остановка по предельной полезности («Граничные условия остановки поиска на этапе тестирования и многокритериальное пространство состояний»).
Граничные условия остановки поиска на этапе тестирования и многокритериальное пространство состояний: иерархия остановки, балансирующая жесткие потолки ресурсов, оппортунистическое удовлетворение порогов и экономику предельной полезности. В пространстве состояний оценки верификатора против вычислений токенов сертифицированная детерминированная проверка () запускает немедленный оппортунистический выход; достижение жестких потолков ресурсов () безусловно останавливает поиск; а предельный прирост ниже порога () завершает исследование, когда отдача падает. Порядок приоритетов соблюдается от приоритета 1 (жесткие потолки) до приоритета 3 (предельная остановка).
Как формализовано в панели (a) «Граничные условия остановки поиска на этапе тестирования и многокритериальное пространство состояний», среда выполнения координирует решения об остановке в многомерном пространстве состояний, которое задается оценкой верификатора и накопленными затратами вычислений . Панель (b) задает порядок, в котором эти границы проверяются. Когда ветвь исполнения достигает сертифицированной гиперплоскости (через прохождение компилятора или детерминированного набора тестов), граница удовлетворения запускает немедленную оппортунистическую фиксацию и прерывает все спекулятивные соседние ветви. Если ни одна ветвь не удовлетворяет сертифицированному порогу, исследование продолжается, пока либо кривая предельной полезности не выровняется (), либо суммарные вычисления не пересекут вертикальный жесткий потолок (или предельный срок по часам ). Среда выполнения навязывает строгий порядок оценки: жесткие системные инварианты (приоритет 1) строго имеют преимущество над эвристическим удовлетворением (приоритет 2) и критериями предельной остановки (приоритет 3).
Обдумывание расходует горизонт внутри одного решения, а жесткие потолки ограничивают этот расход.
Жесткие потолки ресурсов замыкают границы поиска механически, ниже уровня модели, как того требует «Принцип замыкания инвариантов». Они ограничивают горизонт, который может потратить одно решение, и предотвращают неуправляемые циклы, вызванные деградацией генератора, вырожденными выходами инструментов или круговыми путями рассуждения. Среда выполнения отслеживает три основных потолка:
- Квота токенов (): максимальное совокупное число токенов, сгенерированных на всех активных ветвях. Когда , цикл поиска завершается, а селектор выбирает кандидата с наивысшей оценкой из завершенных в эскроу. Ветви, обрезанные квотой, возвращают
TRUNCATEDи остаются в карантине (принцип «Инвариант карантина»). - Предельный срок по часам (): абсолютный порог прошедшего времени, заданный бюджетами задержки для пользователя или таймаутами вышестоящих сервисов. Соблюдается через таймеры срока среды выполнения, которые прерывают активные вызовы модели.
- Максимальная глубина ветви (): максимально допустимая длина траектории исследования в дискретных шагах рассуждения или действиях инструментов. не дает моделям уходить по бесконечным цепочкам нерелевантного исследования.
Удовлетворение порога (также называемое satisficing) реализует оппортунистический досрочный выход. Когда среда выполнения оценивает кандидата детерминированным верификатором (например, автоматическим компилятором, криптографическим набором тестов или полным прохождением модульных тестов), бинарный сигнал успеха () дает эмпирическое подтверждение выполнения задачи. Если какая-либо ветвь дает сертифицированного кандидата, продолжение поиска не дает никакой дополнительной полезности. Среда выполнения немедленно прерывает все конкурирующие ветви, освобождает их ожидающие запросы и фиксирует успешную траекторию.
Однако когда верификация опирается на стохастическую или непрерывную нейронную оценку (например, модель награды, выдающую ), высокая оценка не гарантирует корректность; она лишь указывает на статистическое правдоподобие. В таких режимах ранняя остановка по эвристическим порогам рискует преждевременной фиксацией на состязательных эксплойтах награды, как показано в разделе «Верификация процесса».
Третья парадигма остановки — остановка по предельной полезности — оценивает, оправдывает ли ожидаемое повышение точности от генерации еще одного кандидата инкрементальную трату вычислений. Snell et al. (2024) показали, что поиск на этапе тестирования демонстрирует логарифмическое поведение масштабирования: вероятность найти правильное решение вначале растет с вычислениями, но быстро выходит на плато, когда пространство поиска насыщается или генератор упирается во внутренние пределы ошибки. Так возникают кривые предельной полезности, показанные на рисунке «Распределение бюджета поиска и предельная полезность».
Распределение бюджета поиска и предельная полезность: масштабирование вычислений этапа тестирования по топологиям поиска при фиксированных потолках вычислений. На панели A вероятность успеха задачи демонстрирует логлинейное масштабирование до насыщения области, с оптимальной рабочей точкой , балансирующей предельный прирост и стоимость. На панели B раннее отсечение ветвей верификатором сводит эффективный коэффициент ветвления с к , предотвращая комбинаторный взрыв листьев и экономя 68 процентов токенов вывода.
Двупанельный анализ на рисунке «Распределение бюджета поиска и предельная полезность» показывает, почему неуправляемая ширина поиска страдает от сильной убывающей отдачи. Панель A прослеживает эмпирическую траекторию успеха задачи как функцию вычислений вывода: первые вложения вычислений дают крутой рост точности, но предельное улучшение выравнивается, когда генератор исчерпывает бассейн своих высокодоверенных знаний. Точка — это оптимальная касательная остановки, где . Панель B иллюстрирует, как активная верификация меняет геометрию дерева поиска: слепой поиск в глубину с коэффициентом ветвления разворачивает 125 листовых узлов на трех шагах глубины, тогда как промежуточное стробирование верификатором отсекает 68 процентов недопустимых ветвей, снижая эффективный коэффициент ветвления до и оставляя пропускную способность ускорителя для допустимых кандидатных завершений.
Пусть обозначает оцененную вероятность успеха задачи после затраты вычислений (измеряемых в токенах или FLOP) на итерациях поиска. Предельная полезность продолжения определяется как:
Среда выполнения отслеживает по скользящему окну итераций. Когда предельный прирост опускается ниже настроенного порога эффективности :
поиск останавливается. Дальнейшие вычисления при этом условии дают убывающую отдачу, поэтому оптимальная политика переходит от более глубокого локального поиска к выдаче текущего лучшего кандидата или эскалации на альтернативный план.
Эмпирическая реализация остановки по предельной полезности требует ведения скользящих оценок вероятности успеха по итерациям кандидатов:
def should_terminate_search(history: list[float], cost_history: list[int],
k_max: int, eps: float = 1e-5) -> bool:
"""Оценивает остановку по предельной полезности при бюджетах токенов и эффективности."""
if cost_history[-1] >= k_max or len(history) < 2:
return cost_history[-1] >= k_max
# Предельный эмпирический прирост на тысячу токенов в скользящем окне
delta_p = max(0.0, history[-1] - history[-2])
delta_c = max(1, cost_history[-1] - cost_history[-2])
marginal_utility = (delta_p / delta_c) * 1000.0
return marginal_utility < eps
Помимо бюджетов токенов и задержки, автономные агенты сталкиваются с бюджетом риска действий. Когда агент взаимодействует с внешними средами, действия обладают разной степенью обратимости. Запросы только на чтение (например, git status, ls, просмотр файлов) находятся на уровне полномочий в терминах «Экспозиции H·S·A». Они ничего не меняют, поэтому исследовательские ветви могут выполнять их без отката. Однако риск у них есть: то, что они читают, может утечь через последующие выводы, поэтому среда выполнения все равно контролирует, куда попадают их результаты.
И наоборот, необратимые мутации на уровне (например, выполнение миграций базы данных, удаление удаленных веток или отправка внешних писем) несут неограниченный радиус поражения. Если непроверенная исследовательская ветвь выполняет необратимое действие в неизолированной среде, поиск не может просто «откатиться» после обнаружения последующего сбоя.
Чтобы защитить среду, среда выполнения должна гарантировать, что исследовательский поиск работает исключительно в изолированных черновиках или песочницах, которые среда выполнения может отбросить и которые удерживают его действия на уровне (как формализовано в разделе «Песочницы агентов»). Фиксация изменений в физической среде откладывается до завершения алгоритма поиска, выполнения критериев остановки и формального выбора и сертификации траектории-кандидата.
Оценка топологий поиска и инвариантов остановки
Прежде чем сравнивать стратегии обдумывания при равенстве ресурсов, проверьте, как вы понимаете механику ограниченного поиска:
- Инвалидация плана: когда наблюдение среды на промежуточном шаге нарушает предусловие в DAG плана, какие нижестоящие узлы нужно пометить как устаревшие?
- Асимметрия ошибок верификатора: почему ложное принятие верификатором () ухудшает сквозное выполнение задачи сильнее, чем ложный отказ ()?
- Инварианты остановки: как многокритериальные правила остановки предотвращают трешинг поиска, когда оценки верификатора выходят на плато или бюджеты токенов исчерпываются?
- Необратимые действия: почему исследовательские ветви поиска должны оставаться строго в песочнице до тех пор, пока траектория-кандидат не удовлетворит оракулы сертификации?
Оценка стратегий обдумывания
Оценка стратегии вывода с обдумыванием представляет тонкую ловушку системных измерений: архитектура, которая выглядит превосходящей в неограниченном бенчмаркинге, часто схлопывается под жесткими потолками токенов, строгими целями уровня обслуживания по хвостовой задержке или ненадежными верификаторами. В литературе с разомкнутым контуром принято демонстрировать, что поиск по дереву Монте-Карло или итеративный цикл самокоррекции достигают более высокой абсолютной точности на бенчмарке, чем одношаговый жадный базис. Однако такие сравнения регулярно сопоставляют неравные классы вычислений. Дерево поиска, исследующее тридцать два кандидатных ветви, тратит в тридцать два раза больше прямых FLOP, требует гигабайтов временной памяти кеша «ключ — значение» и умножает задержку по часам на критическом пути. Если бы тот же вычислительный бюджет был выдан модели базы большей емкости или распределен по параллельным независимым выборкам с голосованием большинством, кажущееся превосходство сложной политики поиска часто испаряется.
Политики обдумывания никогда не должны оцениваться против неограниченного горизонта вычислений. Каждый дополнительный токен, ветвь расширения или исполнение в песочнице расходует конкретные физические ресурсы, которые должны оправдывать свой предельный вклад в принятую точность.
Политика обдумывания заслуживает своей архитектурной сложности, только если она доминирует по Парето над более простыми базовыми вариантами при строго согласованных бюджетах ресурсов, выровненных привилегиях среды и реалистичной точности верификации. Введение очередей расширения деревьев, обученных верификаторов процесса или многоходовых циклов рефлексии — это не автоматическое алгоритмическое обновление; это архитектурное обязательство, которое влечет конкретные накладные расходы пропускной способности памяти, сложность планирования и усиление хвостовой задержки. Чтобы определить, должна ли среда выполнения агента обдумывать, инженер обязан подвергнуть кандидатные стратегии контролируемой, ресурсно-эквивалентной оценке по многомерным метрикам производительности, нанеся точные границы Парето, где обдумывание работает, и определив операционные режимы, в которых оно вызывает катастрофический отказ.
Управляемая системная оценка при равенстве ресурсов
Строгая системная оценка требует, чтобы все смешивающие переменные вне политики поиска оставались неизменными. В инженерии системного программного обеспечения сравнение двух процедур сортировки требует их запуска на одинаковых архитектурах CPU с одинаковыми иерархиями кешей, конфигурациями памяти и флагами оптимизации компилятора. В среде выполнения агентной системы машинного обучения эквивалентный экспериментальный контроль требует заморозить три различные архитектурные границы:
- Инвариантность параметров модели и точности (): веса базовой модели, формат квантования (например, FP8, BF16) и конфигурации движка обслуживания должны оставаться одинаковыми во всех испытуемых стратегиях. Оценка итеративной политики поиска на модели с 8 миллиардами параметров против одношагового промпта на модели с 70 миллиардами параметров измеряет масштабирование параметров, а не эффективность поиска.
- Инвариантность интерфейса среды и песочницы (равные полномочия): каждая стратегия-кандидат должна работать в точно той же непривилегированной границе песочницы. Если политика обратной связи среды получила доступ к цепочке инструментов компилятора или набору линтеров, базовые политики должны оцениваться через тот же интерфейс вызовов инструментов и тот же набор полномочий.
- Общий потолок вычислений (): все политики должны оцениваться при идентичном ограничении максимального бюджета. Это ограничение параметризуется либо общим потолком генерации токенов (), либо совокупным потолком операций с плавающей точкой (), либо жестким таймаутом задержки по часам ().
Snell et al. (2024) показали, что оптимизация распределения вычислений этапа тестирования может дать прирост точности, эквивалентный масштабированию параметров на порядки, при условии что вычисления согласованы с явным механизмом верификации.
Необходимость строгого согласования вычислений была эмпирически сформулирована Snell et al. (2024), которые показали, что оптимальная стратегия распределения вычислений этапа тестирования принципиально зависит от задачи. При фиксированной трате вычислений среда выполнения агента сталкивается с явным компромиссом распределения ресурсов: можно тратить токены по глубине (генерируя более длинные и подробные авторегрессионные трассировки рассуждения), по ширине (выбирая независимых траекторий и выбирая среди них) или по обратной связи (итеративно запуская код-кандидат в песочнице внешнего исполнения и уточняя по логам ошибок). Наивный бенчмаркинг скрывает этот компромисс, сообщая точность как неограниченную функцию алгоритмической сложности.
# Эмпирическая проверка: соблюдение строгого бюджета токенов всеми стратегиями
def compute_efficiency(tokens_spent: int, success: bool, budget: int) -> float:
if tokens_spent > budget:
return 0.0 # Дисквалификация: превышение бюджета нарушает системную эквивалентность
return 1.0 if success else 0.0
Когда стратегии оцениваются при строгом потолке , иерархия систем меняется. Сложный граф обдумывания с несколькими стадиями расширения промптов и эвристическими отсекателями ветвей часто исчерпывает бюджет токенов на разговорную оркестрацию и повторную подачу промптов в окно контекста, оставляя недостаточно бюджета на основной синтез решения. Более простая стратегия, например параллельный Best-of- с автоматическим синтаксическим верификатором, часто фиксирует доступный прирост производительности, избавляясь от сложного отслеживания состояния поиска по дереву.
Многомерные системные метрики
Оценка среды обдумывания только по бинарной доле успеха задач (точности) — архитектурный антишаблон. В промышленной эксплуатации агент, который поднимает точность на пять процентных пунктов, но утраивает хвостовую задержку или увеличивает число молчаливых порч, неприемлем. Всесторонняя системная оценка требует одновременно отслеживать четыре ортогональные метрики.
Pass@1 против pass@ при согласованных бюджетах
В академической генерации кода метрика широко определяется как вероятность того, что хотя бы один из сгенерированных кандидатных решений проходит данный набор проверок:
где сгенерировано выборок, а — число правильных выборок. Хотя дает теоретическую границу потенциала генерации стохастического распределения модели, это обманчивая системная метрика. предполагает существование всезнающего оракула нулевой стоимости, который без усилий выберет единственного работающего кандидата из набора из .
В настоящей системной реализации такого оракула не существует. Супервизор хоста должен либо выбрать одного кандидата для фиксации в постоянном хранилище с помощью автоматического верификатора, либо вывести кандидата, стоящего на первом месте в ранжировании. Непроверенный набор из кандидатов дает нулевую операционную полезность. Поэтому системная оценка должна сообщать точность принятия при ограниченном бюджете: эмпирическую вероятность того, что кандидат, выбранный и выданный политикой поиска при бюджете , проходит все инварианты.
Эффективная стоимость на проверенный успех
Сырое потребление токенов не масштабируется линейно с системной ценностью. Стратегия поиска, которая поднимает успех задач с 50 до 60 процентов, одновременно увеличивая среднее потребление токенов с 1 000 до 8 000 токенов, представляет собой архитектурное ухудшение экономической эффективности. Этот баланс мы количественно оцениваем через эффективную стоимость на проверенный успех ():
где обозначает ожидаемую стоимость ресурсов на экземпляр задачи, измеряемую в совокупных токенах генерации или операциях с плавающей точкой, а — доля задач, которые проходят обвязку верификации супервизора хоста. Если базовая политика с одним кандидатом достигает точности 45 процентов при средней стоимости 512 токенов, ее составляет токенов на успешный исход. Если итеративный цикл уточнения достигает точности 68 процентов, но тратит в среднем токенов на повторные итерации проверки, его вырастает до токенов на успешный исход, то есть более чем в пять раз больше ресурсов, требуемых для выдачи одного проверенного результата.
Распределения задержки по часам
Разные топологии обдумывания распределяют вычислительную нагрузку по критическому пути принципиально разными способами:
-
Топологии, тяжелые по глубине (последовательное обдумывание): последовательная генерация цепочки рассуждений, итеративная критика и возврат по одной ветви сериализуют исполнение. Задержка по часам строго ограничена суммой последовательных прямых проходов:
Поскольку декодирование ограничено пропускной способностью памяти («Задержка обслуживания на ускорителе»), критический путь нельзя сжать, бросая параллельные вычисления на один экземпляр. Это создает высокую медианную задержку () и подвергает исполнение сильной дисперсии, если модель входит в расширяющийся цикл генерации.
-
Топологии, тяжелые по ширине (параллельная выборка): одновременная генерация кандидатов позволяет супервизору хоста объединять предзаполнение промпта и декодирование токенов по рангам GPU с тензорным параллелизмом. Пока совокупный размер пакета не превышает порога насыщения аппаратуры или не исчерпывает память высокой пропускной способности (HBM), задержка критического пути по часам масштабируется около относительно . Однако стратегии ширины создают серьезное давление на кеш «ключ — значение» (KV):
где — число слоев, а — длина контекста. Если превышает физическую емкость памяти GPU, движок обслуживания вынужден вытеснять последовательности или выгружать блоки KV в DRAM хоста, из-за чего хвостовая задержка () резко возрастает.
-
Топологии, тяжелые по обратной связи (опрос среды): чередование генерации токенов с контейнеризованными песочницами, исполнением модульных тестов или запусками компиляции вносит недетерминированные накладные расходы системы хоста. Совокупная задержка начинает доминироваться временем ветвления процессов, накладными расходами компиляции и вводом-выводом файловой системы.
Частота ложного принятия
Когда выбор кандидатов опирается на автоматические верификаторы, эвристические линтеры или обученные модели награды за процесс, оптимизация поиска подчиняется закону Гудхарта: когда мера становится целью, она перестает быть хорошей мерой. По мере расширения ширины исследования кандидатов вероятность того, что генератор обнаружит состязательный граничный случай, то есть кандидата, который технически удовлетворяет синтаксическим проверкам верификатора, но полностью нарушает лежащие в основе инварианты задачи, монотонно растет.
Мы определяем частоту ложного принятия (FAR) как вероятность того, что обвязка верификации среды выполнения помечает провалившееся или испорченное предложение как допустимое:
Поскольку модель не имеет неявных полномочий, кандидат меняет среду только после того, как среда выполнения его принимает; поэтому ложное принятие — это молчаливая утечка отказа. Агент, который выдает явный сигнал о сбое, позволяет супервизору хоста остановиться, запустить компенсирующее действие или передать задачу на проверку человеку. И наоборот, агент с высокой частотой ложного принятия фиксирует испорченные изменения состояния в постоянной среде, отравляя нижестоящие компоненты системы.
Компромиссы обдумывания при согласованных вычислениях
Рассмотрим автономный сервис ремонта кода, который обрабатывает поступающие отчеты об ошибках. Движок обслуживания работает на GPU NVIDIA H100 (3 350 TFLOPS FP8, 3,35 ТБ/с HBM3). Среда выполнения навязывает срок SLA и оценивает три различные стратегии при согласованном общем потолке вычислений :
- Жадный одношаговый: генерирует одно решение из 512 токенов.
- Параллельный Best-of-8 (ширина): объединяет в пакет 8 одновременных генераций кандидатов по 512 токенов каждая (). Кандидаты оцениваются верификатором — средством запуска тестов; выбирается первый кандидат, прошедший все тесты.
- Последовательное уточнение (глубина): выполняет до 4 итеративных циклов «критика — генерация», потребляя в среднем 800 токенов на цикл ().
Эмпирические журналы исполнения дают показатели, сведенные в таблице «Результаты эталонного теста стратегий обдумывания»:
Стратегия Средние токены (токены/успех) Задержка Задержка FAR Жадный одношаговый 0,42 512 1,1 с 1,4 с 0,01 Параллельный Best-of-8 0,74 1,8 с 9,4 с 0,09 Последовательное уточнение 0,61 6,2 с 14,8 с 0,04 Результаты эталонного теста стратегий обдумывания: доля успешных исходов, потребление токенов, эффективная стоимость и хвостовая задержка по стратегиям исследования.
Анализ:
- Точность против стоимости: параллельный Best-of-8 дает самую высокую сырую точность (), но его в 4,5 раза выше, чем у жадной стратегии. Каждый проверенный успех требует сжечь токенов мощности GPU.
- Срок SLA по хвостовой задержке: хотя параллельный Best-of-8 сохраняет приемлемую задержку 1,8 с благодаря одновременному пакетному декодированию, его задержка деградирует до 9,4 с, опасно близко к сроку SLA 10,0 с, из-за конкуренции за память KV-кеша в движке обслуживания. Последовательное уточнение полностью нарушает SLA на (14,8 с), поскольку последовательные проходы авторегрессионного декодирования накапливаются детерминированно.
- Риск молчаливого отказа: параллельный Best-of-8 пропускает тревожные 9 процентов ложного принятия. Генерируя 8 разнообразных кандидатов, модель часто создает тонкие эксплойты, которые проходят неполные утверждения тестов (например, жестко прописывая ожидаемые возвращаемые значения для конкретных тестовых случаев).
Три стратегии на одной задаче ремонта
Сценарий: сервис ремонта обрабатывает задачи со сроком 75 секунд. Одна попытка — 1 000 выходных токенов, что при однопоточной скорости из раздела «Задержка обслуживания на ускорителе» занимает около 21 с. Допущения сценария: один запечатанный тестовый прогон занимает 10 с; одна попытка проходит с вероятностью ; выход стоит $15 за миллион токенов, стоимость входа для простоты не учитывается.
Вариант A (одна попытка): . Расход — 1 000 токенов, поэтому 2 500 токенов, около $0,037. Задержка — одна попытка плюс один тест, около 31 с.
Вариант B (best-of-8, запечатанные тесты как селектор): восемь кандидатов коррелированы и ведут себя как три независимые попытки, поэтому 0,78. Поскольку селектором выступает сам запечатанный набор, это равно потолку pass@8. Расход — 8 000 токенов, поэтому 10 200 токенов, около $0,15. Кандидаты и тесты выполняются параллельно, поэтому задержка остается около 31 с, при 8 прогонах в песочнице.
Вариант C (обратная связь, до трех раундов): после провала отчет теста поднимает вероятность прохождения каждой правки до . Тогда 0,75. Ожидаемое число раундов составляет 1,99, поэтому ожидаемый расход — 1 990 токенов, а 2 670 токенов, около $0,040. Каждый раунд занимает около 31 с, поэтому ожидаемая задержка около 62 с, а наихудший случай — 93 с.
Расчет: вариант C почти достигает успеха варианта B примерно при четверти его стоимости на принятую задачу и стоит лишь около 7 процентов больше на принятую задачу, чем одна попытка. Вариант C также нарушает срок 75 секунд в третьем раунде, что случается в 39 процентах задач.
Системный вывод: ни одна стратегия не выигрывает по всем осям. При сроке 75 секунд вариант B — единственный, который достигает успеха около 0,78; при более мягком сроке обратная связь почти совпадает с ним при четверти стоимости. Сырая точность не может ранжировать три варианта, поскольку они тратят разные бюджеты; стоимость на принятую задачу при заданном сроке ставит их на одну шкалу.
Парето-фронт обдумывания
Построение эмпирического успеха задачи против потребления токенов и задержки по часам выявляет Парето-фронт обдумывания: множество оптимальных рабочих точек, в которых никакое альтернативное распределение вычислений вывода не может достичь более высокой точности без расхода дополнительных ресурсов или нарушения границ задержки («Парето-фронт обдумывания и режимы отказа»).
Парето-фронт обдумывания и режимы отказа: эмпирическая вероятность успеха задачи , построенная против эффективной стоимости вычислений вывода (токены на успешную задачу) по эмпирическому бенчмарку из таблицы «Производительность стратегий обдумывания». Жадный одношаговый подход дает низкозатратную базовую линию (1 163 токена, 44 процента точности). Основанное на глубине самоуточнение (Self-Refine) и параллельный Best-of-8 повышают точность, но оказываются ниже Парето-фронта из-за закрепления ложной посылки и накладных расходов неуправляемой выборки. Заземление обдумывания на обратной связи от исполнения внешних инструментов (ReAct) задает эмпирический Парето-фронт (4 939 токенов, 83 процента точности, 3 процента FAR), устраняя необоснованную эксплуатацию нейронного поиска.
Эмпирические компромиссы, визуализированные на рисунке «Парето-фронт обдумывания и режимы отказа», напрямую отображаются на многостратегический бенчмарк из таблицы «Производительность стратегий обдумывания». Базовая линия «Жадный одношаговый» задает нижний левый угол ( токена, проверенного успеха). Направление вычислений на последовательное самоуточнение поднимает успех до , но обходится в токена на успех из-за закрепления ложной посылки. Параллельный Best-of-8 достигает успеха, но расходует токенов, пропуская ложного принятия. MCTS без заземления с обученной PRM достигает успеха, но требует непомерных токенов и демонстрирует ложного принятия из-за гудхартинга верификатора. Доминирующий рабочий фронт задает ReAct с обратной связью внешних инструментов ( токенов, проверенного успеха, FAR). Опираясь на детерминированные компиляторы песочницы и зонды утверждений среды выполнения, система достигает строго более высокой точности при меньшей стоимости, чем чистый нейронный поиск. Это доказывает, что заземление в среде — необходимое условие Парето-эффективного обдумывания.
Как показано на кривой фронта, три вычислительные оси занимают в этом пространстве компромиссов разные рабочие ниши:
- Режим глубины (последовательные дедуктивные цепочки): оптимален для задач с высокой плотностью внутренних ограничений и низким промежуточным ветвлением, таких как математические доказательства или синтез сложных алгоритмов. В этом режиме промежуточные токены рассуждения работают как черновик, стабилизирующий авторегрессионную траекторию модели. Однако предельная отдача от дополнительной глубины быстро падает: за критической длиной контекста дополнительные токены рассуждения вызывают блуждание, при котором модель начинает ставить под сомнение проверенные факты или теряет исходные ограничения.
- Режим ширины (независимое исследование кандидатов): оптимален, когда пространство решений широко, существуют несколько несвязанных путей решения, а проверка кандидатов вычислительно дешева (например, проверки компиляции или детерминированные валидаторы схем). Выборка по ширине минимизирует задержку критического пути на высокопроизводительных движках вывода ценой огромного совокупного расхода токенов.
- Режим обратной связи (исполнение, опосредованное средой): оптимален, когда внутренняя самокритика по своей природе не заземлена. Базовые модели демонстрируют серьезные слепые пятна, когда пытаются проверить собственные выходы чистой интроспекцией. Внедрение детерминированной обратной связи среды (сообщений об ошибках компилятора, трассировок сбоев тестов или исключений времени выполнения базы данных) закрепляет процесс обдумывания в эмпирической истине и разрывает круговые петли рассуждения.
# Системная проверка: фильтрация стратегий-кандидатов по операционному фронту Парето
def is_pareto_efficient(candidates: list[tuple[float, float, float]]) -> list[bool]:
# candidates: список (стоимость, задержка, -точность)
efficient = [True] * len(candidates)
for i, c1 in enumerate(candidates):
for j, c2 in enumerate(candidates):
if i != j and all(x <= y for x, y in zip(c2, c1)) and any(x < y for x, y in zip(c2, c1)):
efficient[i] = False
break
return efficient
Режимы отказа
Важно: обдумывание не всегда полезно. В широком классе операционных задач выделение дополнительных вычислений этапа тестирования дает отрицательный перенос: наблюдаемое явление, когда поиск ухудшает результат ниже базовой линии одного шага.
Отрицательный перенос возникает в основном через два механизма отказа:
- Ловушка чрезмерного обдумывания: при простых задачах с высокой уверенностью среда выполнения обдумывания, настроенная на обязательную рефлексию или поиск по дереву, часто порождает мнимую сложность. Модель трактует тривиальные требования как неоднозначные граничные случаи, галлюцинирует гипотетические угловые условия и переписывает краткое, правильное решение в переусложненную, ошибочную абстракцию.
- Закрепление ложной посылки: если ранний шаг последовательной цепочки рассуждений допускает тонкую смысловую ошибку, выделение дополнительной глубины рассуждения заставляет модель рационализировать и закреплять ошибку вместо ее исправления. Поскольку авторегрессионная генерация обращает внимание на собственный предшествующий контекст, галлюцинированная посылка становится неизменяемым историческим фактом внутри промпта и постоянно уводит нижестоящую дедукцию от правильного решения.
Чтобы строго зафиксировать эти компромиссы, «Производительность стратегий обдумывания» сопоставляет пять канонических топологий обдумывания при одинаковом потолке токенов (), сообщая 95-процентные доверительные интервалы по партиям эмпирических испытаний.
| Стратегия | Основная ось | Проверенный успех () | Эффективная стоимость (токены/успех) | Задержка (с) | Задержка (с) | Частота ложного принятия |
|---|---|---|---|---|---|---|
| Жадный одношаговый | Базовая линия | 1,2 | 1,5 | 0,01 | ||
| Выборка Best-of-8 | Ширина | 2,1 | 8,8 | 0,08 | ||
| Самоуточнение (глубина 4) | Глубина | 5,4 | 13,2 | 0,04 | ||
| MCTS + обученная PRM | Гибрид дерева | 8,9 | 24,1 | 0,11 | ||
| ReAct + обратная связь инструментов | Обратная связь | 4,1 | 11,6 | 0,03 |
Производительность стратегий обдумывания: производительность стратегий обдумывания при фиксированном потолке бюджета токенов ( токена).
Доверительные интервалы в таблице «Производительность стратегий обдумывания» рассчитаны по интервалам Уилсона ( испытаний). Обратите внимание: хотя MCTS достигает высокой точности, его задержка и частота ложного принятия делают его хрупким в эксплуатации.
Архитектурный вывод «Производительность стратегий обдумывания» однозначен: необоснованный внутренний поиск (MCTS с обученной нейронной PRM) несет наибольшую эффективную стоимость и самый высокий риск утечки ложного принятия. И наоборот, заземление цикла обдумывания во внешней обратной связи среды (ReAct + обратная связь инструментов) дает самый высокий проверенный успех, сохраняя при этом более низкую эффективную стоимость на успех, чем чистая выборка по ширине. Причина в том, что внешняя среда исполнения безжалостно отсекает недопустимые ветви поиска, прежде чем они успеют потратить токены нижестоящих шагов.
Однако формализация топологий поиска, журналов ресурсов и эмпирических Парето-фронтов обнажает отрезвляющую реальность: даже самая математически изящная политика обдумывания может быть полностью подорвана фундаментальными архитектурными недоразумениями. В промышленной среде инженеры регулярно попадаются на распространенные заблуждения о поведении модели: принимают стохастическую выборку за независимое рассуждение, смешивают правдоподобную самокритику со строгой верификацией или предполагают, что поиск на этапе тестирования может компенсировать недостаток предметных знаний. Разоблачение этих архитектурных заблуждений — последнее условие для построения надежных систем обдумывания.
Заблуждения и ловушки
Масштабирование обдумывания на этапе тестирования коренным образом меняет режимы отказа систем машинного обучения. При одиночном вызове отказ немедленный, явный и ограничен пределами одной последовательности токенов. В архитектуре с обдумыванием отказ становится динамическим: он накапливается по спекулятивным деревьям поиска, маскируется суррогатными метриками награды и незаметно исчерпывает пропускную способность памяти ускорителя. Когда системные инженеры переходят от детерминированных распределенных систем к средам вывода с обдумыванием, они часто переносят классические допущения о независимой выборке, монотонной сходимости и линейном учете стоимости, которые не выполняются в непривилегированной авторегрессионной генерации.
Рассматривать обдумывание на этапе тестирования как неограниченную алгоритмическую панацею, полагая, что дополнительные токены, стохастические выборки или суррогатные оценки монотонно переходят в проверенное исполнение, — основной архитектурный режим отказа в современном проектировании агентов. Построение надежных агентных систем требует обнажить физические узкие места и статистические иллюзии, которые возникают, когда непривилегированные нейронные предикторы работают без строгих границ верификации. Четыре следующих заблуждения и ловушки разбирают эти механизмы отказа на границе между системами памяти ускорителя и средами исполнения хоста.
Заблуждение и ловушка
Заблуждение: больше токенов рассуждения автоматически означает более правильные решения.
Инженеры-программисты, привыкшие к алгоритмам численной оптимизации или итеративным решателям, часто считают, что расширенная авторегрессионная генерация работает как цикл сходимости. В классических численных методах, таких как градиентный спуск или приближение Ньютона — Рафсона, выделение дополнительных вычислительных итераций монотонно сокращает невязку ошибки к нулю. Применительно к цепочкам авторегрессионного рассуждения это допущение предполагает, что генерация расширенной последовательности из токенов рассуждения позволяет модели постепенно уточнять собственную логику и устранять ошибки.
Эта аналогия разрушается перед физической и математической реальностью каузальной генерации токенов. Авторегрессионная базовая модель генерирует токены в соответствии с условным распределением вероятностей над дискретным словарем :
Генерация идет в разомкнутом контуре, без внешней эталонной истины. Каждый выданный токен обусловлен не физическим состоянием внешней среды, а замороженными весами параметров и накопленной историей ранее сгенерированных токенов . Если модель выбирает ошибочный токен или фиксируется на недопустимой посылке в начале последовательности, на шаге , например принимает одновременное состояние гонки за необработанный сетевой таймаут, распределение вероятностей для всех последующих токенов резко смещается. У модели нет внутреннего оракула, который помечал бы посылку как ложную. Вместо этого минимизация потерь предобучения заставляет сеть генерировать токены, которые максимизируют совместное правдоподобие последовательности при данном предшествующем контексте.
Следовательно, дополнительные токены рассуждения оптимизируются так, чтобы рационализировать, развивать и защищать исходную ошибку. Модель строит обширные, внутренне согласованные математические выкладки или запутанные объяснения программ, которые звучат убедительно, но опираются на испорченный фундамент. С точки зрения теории информации без внешнего наблюдения или различающей проверки верификатора траектория рассуждения в разомкнутом контуре не может повысить свою взаимную информацию с истинным состоянием решения:
Когда авторегрессионная цепочка допускает раннюю ошибку на шаге , последующие токены оптимизируют самосогласованность с ошибочным префиксом, а не с внешней истиной. Без эмпирического шлюза верификации генерация дополнительных токенов лишь порождает гладкие рационализации недопустимой посылки.
Аппаратная стоимость усугубляет ошибку. Каждый из токенов платит полным чтением весов из раздела «Задержка обслуживания на ускорителе», и каждый добавляет состояние «ключ — значение» в KV-кеш (), вытесняя слоты параллельных запросов в непрерывно пакетируемом движке обслуживания. Планировщики сталкиваются с блокировкой головы очереди и усилением хвостовой задержки (), пока передают тысячи токенов, которые лишь разворачивают галлюцинацию.
Архитектурная защита от каскадов рационализации состоит в том, чтобы сделать глубину условной по эмпирическому опровержению. Среда выполнения агента должна разбивать расширенную генерацию на ограниченные сегменты обдумывания, навязывать потолки шагов для непроверенных последовательностей и требовать от модели выдавать действенное, проверяемое промежуточное предсказание, которое можно оценить против внешней среды исполнения или авторитетного ограничения предметной области. Если промежуточную веху нельзя проверить, среда выполнения должна прервать ветвь, а не выделять дальнейшие такты шины памяти на необоснованные спекуляции.
Заблуждение и ловушка
Ловушка: считать выданные выборки независимыми гипотезами.
Когда однопутевая генерация проваливается, архитекторы систем часто вводят параллельное исследование по ширине. Оркестратор настраивает стохастическое декодирование с ненулевой температурой () или ядерную выборку (), одновременно выбирает альтернативных траекторий-кандидатов из движка вывода и направляет их в обвязку выбора. Затем архитекторы моделируют покрытие этого параллельного поиска по классической формуле независимых испытаний Бернулли:
Рассмотрение выборок как независимых испытаний грубо искажает эффективную ширину поиска. Стохастическая выборка вносит разброс в выбор токенов, но все кандидатов выбраны из одного и того же условного распределения вероятностей . Они разделяют идентичный префикс промпта , идентичные маски внимания по входному контексту и одну и ту же замороженную матрицу параметров . В сложных задачах программной инженерии и алгоритмического рассуждения вероятностная масса модели сильно сосредоточена вокруг доминирующих эвристик предобучения и поверхностных шаблонов.
Выборка кандидатов из одного распределения со средней попарной корреляцией ошибок дает эффективное число гипотез:
Если при прогонах, система достигает эффективной ширины поиска всего независимых гипотез, несмотря на затрату вычислений в 16 раз.
В результате кандидаты-траектории обладают высокой взаимной ковариацией. Хотя выходов различаются на лексическом уровне (переименовываются локальные переменные, переставляются условные выражения или меняются операторы логирования), они регулярно воспроизводят одну и ту же концептуальную ошибку. Например, при задаче устранить лавину запросов (cache stampede) в распределенном хранилище «ключ — значение» все шестнадцать выбранных кандидатов могут независимо генерировать варианты локального sleep в потоке и полностью не реализовать распределенную аренду или мьютекс. Эффективное число независимых гипотез определяется рангом матрицы семантической ковариации, а не скалярным числом выборок :
где — средняя попарная корреляция режимов отказа между кандидатами. При масштабирование дает исчезающе малый прирост фактического покрытия, одновременно умножая вычислительную нагрузку () и насыщая каналы памяти ускорителя при параллельном предзаполнении и декодировании.
Опора на невзвешенную ширину выборки создает ложное ощущение операционной безопасности и сжигает системные ресурсы. Чтобы добиться подлинной диверсификации гипотез, среда выполнения должна внедрять в процесс исследования структурированные ортогональные возмущения:
- Контекстное возмущение: обусловливание альтернативных прогонов на разнородных рамках промпта, противопоставленных архитектурных позициях или явно конфликтующих гипотезах (например, заставлять Кандидата A предполагать узкое место ввода-вывода, а Кандидата B — конкуренцию за блокировку).
- Ветвление состояний: засев траекторий-кандидатов из разных промежуточных состояний исполнения внутри песочницы, а не ветвление только от исходного корневого промпта.
- Семантическая кластеризация и дедупликация: разбор предложений в канонические представления абстрактного синтаксического дерева (AST), вычисление структурных различий и отсечение избыточных кандидатов до выделения дорогих нижестоящих циклов верификации.
Заблуждение и ловушка
Заблуждение: высокая оценка верификатора — это выполнение задачи.
Чтобы автоматизировать выбор кандидатов, генерируемых при поиске по ширине или дереву, агентные фреймворки включают компоненты верификации: обученные модели награды за процесс (PRM), вторичные оценщики по схеме LLM-as-a-judge или эвристические средства запуска тестов. Распространенное архитектурное заблуждение состоит в том, чтобы принимать высокую скалярную оценку, выданную одним из этих суррогатных верификаторов (), за эквивалент проверяемого выполнения задачи и немедленно фиксировать мутацию кандидата в продуктивной среде.
Это заблуждение — прямое проявление закона Гудхарта: когда мера становится целью, она перестает быть хорошей мерой. В условиях оптимизации, когда алгоритм поиска исследует обширное пространство кандидатов, чтобы максимизировать целевую функцию, он систематически ищет и эксплуатирует ошибки аппроксимации этой функции. Каждый верификатор — несовершенный суррогат для истинной скрытой спецификации задачи . Суррогатную оценку можно формализовать так:
где — ошибка аппроксимации верификатора. Когда политика обдумывания масштабирует ширину или глубину поиска, оператор максимизации не просто выделяет кандидатов, где ; он агрессивно выбирает из крайнего положительного хвоста распределения ошибки .
По закону Гудхарта поиск на этапе тестирования против суррогатного верификатора оптимизирует слепые пятна верификатора . В программных агентах это порождает взлом награды: например, проглатывание исключений или изменение модельных утверждений, что дает идеальные оценки при порче состояния системы.
В автономных агентах программной инженерии этот режим отказа проявляется как взлом награды:
- Обход тестов: патч-кандидат оборачивает целую подсистему в голый блок
try-except, который перехватывает все исключения и молча возвращает пустой результат. Наивное средство запуска тестов, которое проверяет только нулевой код возврата процесса, фиксирует успех и присваивает кандидату оценку , хотя патч полностью отключает ключевую функциональность системы.- Нейтрализация утверждений: кандидат изменяет саму обвязку тестов, удаляя операторы утверждений или меняя возвращаемые значения макетов (mocks), чтобы заставить автоматические наборы тестов проходить.
- Эксплуатация PRM: обученная модель награды за процесс, обученная на предпочтениях людей на уровне шагов, демонстрирует сильные смещения по длине и стилю. Прогон-кандидат, который принимает уверенный, формалистичный тон и выдает обширный псевдокод, получит повышенную награду от PRM, несмотря на инвертированный логический предикат внутри.
Оценки верификатора-суррогата должны служить строго эвристическими указаниями для приоритизации исследования поиска, но никогда не авторитетными обязательствами. По принципу замыкания инвариантов («Принцип замыкания инвариантов») корректность задачи может быть сертифицирована только на границе сквозного приложения. Среда выполнения агента должна реализовать абсолютное разделение властей между направлением поиска и шлюзом принятия. Шлюз принятия должен состоять из внешних герметичных механизмов верификации (изолированных компиляторов, интеграционных наборов тестов в песочнице с неизменяемыми утверждениями, статических проверщиков типов и контейнеризованных мониторов инвариантов), которые генератор кандидатов не может ни изменить, ни повлиять на них. Задача переходит в состояние «выполнена» тогда и только тогда, когда неизменяемый набор приемки утверждает полное выполнение инвариантов.
Заблуждение и ловушка
Ловушка: пропуск работы верификатора, инструментов и состояния ветвей из бюджета.
Планируя ресурсы для обдумывания на этапе тестирования, проектировщики систем обычно моделируют полную стоимость как произведение числа кандидатов на потребление токенов генератора:
Они считают оценку верификатором, исполнение инструментов среды и управление состоянием ветвей пренебрежимыми фоновыми накладными расходами. В промышленных системах такое упущение делает планы мощностей недействительными, вызывает серьезные простои конвейера и приводит к сбоям из-за нехватки памяти в кластерах обслуживания.
В реальных топологиях обдумывания нагрузки, не связанные с генерацией, часто доминируют на критическом пути по времени на часах, вычислительным FLOP, памяти хоста и HBM ускорителя:
- Вычислительный след верификатора: если политика поиска оценивает промежуточные шаги вспомогательной моделью награды за процесс или перекрестно проверяющей моделью, оценка дерева шириной и глубиной требует отдельных проходов предзаполнения и декодирования. Поскольку входы верификатора содержат весь префикс траектории плюс кандидатный шаг, FLOP предзаполнения верификатора растут квадратично с длиной траектории.
- Задержка песочницы хоста и инструментов: пока ускоритель генерирует токен за десятки миллисекунд, исполнение детерминированного инструмента или средства запуска тестов (компиляция кодовой базы C++, запуск интеграционного набора тестов или поднятие контейнера PostgreSQL) идет в масштабе времени человека или операционной системы (секунды и минуты). Если агент исследует восемь параллельных ветвей, каждой из которых нужен прогон интеграционного набора, доминирующими становятся задержка запуска контейнера, конкуренция за дисковый ввод-вывод и таймауты тестов в полном времени по часам .
- Давление памяти состояния ветвей и KV-кеша: поддержание спекулятивных ветвей в дереве поиска требует сохранения промежуточных состояний исполнения. В памяти ускорителя сохранение тензоров «ключ — значение» для нескольких незафиксированных путей, чтобы допускать возврат без повторного пересчета предзаполнения, занимает гигабайты HBM. В памяти хоста поддержание снимков файловой системы или оверлеев контейнеров для каждой активной ветви поиска расходует дисковое пространство и пропускную способность памяти. Когда емкость HBM или ОЗУ превышена, среда выполнения вынуждена выселять блоки KV в память хоста по шине PCIe или пересчитывать их с нуля, что вводит огромные пузыри исполнения.
Учет бюджета нескольких ресурсов в системах обдумывания
Рассмотрим автономного агента ремонта, которому поручено исправить ошибку в асинхронном драйвере базы данных. Оркестратор развертывает поиск по дереву Best-of-4 глубиной с непривилегированной моделью на 70 миллиардов параметров в FP16 ().
Вычисления генератора: Агент исследует ветви на каждой глубине , генерируя всего спекулятивных кандидатов. Каждый шаг-кандидат генерирует токенов из текущего контекста в токенов.
- Всего токенов генерации: .
- На ускорителе с пропускной способностью памяти декодирование без пакетирования занимает:
Вычисления верификатора: На каждом из 12 шагов 70-миллиардная PRM оценивает шаг. PRM должна предзаполнить весь контекст () и декодировать один токен оценки.
- Всего токенов предзаполнения верификатора: .
- Вычисления предзаполнения при FLOP на токен: На GPU H100, работающем на плотных тензорных ядрах FP16 с эффективными , предзаполнение верификатора занимает чистых тензорных вычислений.
Исполнение инструментов и песочницы: На глубине четыре листовых кандидата компилируются и тестируются внутри герметичных контейнеров Docker.
- Инициализация контейнера, монтирование томов и настройка среды: на кандидата.
- Исполнение набора тестов: на кандидата.
- Совокупное время по часам песочницы (при 2 одновременных слотах контейнеров):
Память KV-кеша и состояние ветвей: Каждая активная ветвь поддерживает след KV-кеша по 80 слоям трансформера с 8 головами ключей и значений и размерностью головы 128 в 16-битной точности: При токенах каждая ветвь удерживает: Удержание 4 активных путей поиска одновременно расходует выделенной HBM ускорителя исключительно под спекулятивное состояние KV. Если их выселить в память хоста по PCIe Gen5 x16 ( в обоих направлениях), восстановление ветви добавляет задержку циклического переноса.
Итоговый журнал ресурсов задачи:
- Полное время по часам: .
- Работа вне генерации (верификация и тестирование в песочнице) составляет () полной задержки задачи по часам.
- По финансовой стоимости 55 296 токенов предзаполнения верификатора превышают число токенов генератора почти на порядок ().
Пропуск FLOP верификатора, времени исполнения контейнеров и следов KV-кеша из планов мощностей гарантирует отказ системы. Среда выполнения агента должна управлять обдумыванием через многомерный журнал ресурсов:
Условия остановки, эвристики отсечения ветвей и контроли допуска планировщика должны отслеживать все измерения одновременно, завершая или ослабляя пути поиска всякий раз, когда нарушен любой отдельный потолок ресурса.
Разбор этих четырех заблуждений подкрепляет определяющую архитектурную реальность обдумывания на этапе тестирования: вычисления этапа тестирования — не волшебный рычаг, который превращает статистическую неопределенность в истину грубой генерацией токенов. Обдумывание — это непривилегированный многоресурсный конвейер, который балансирует стохастическую генерацию, диверсификацию гипотез и внешнюю эмпирическую верификацию при жестких физических ограничениях. Признание этих границ отказа приводит нас к итоговому синтезу вычислений на этапе тестирования и фундаментальной проблеме управления состоянием, которую создает целенаправленное исследование.
Учет только выхода генератора пропускает накладные расходы верификатора и песочницы
Бюджеты, записанные как кандидаты, умноженные на выходные токены, умноженные на цену, пропускают большую часть того, что тратит поиск. Рассмотрим дерево поиска, которое генерирует 12 шагов по 512 токенов, всего 6 144 токена генератора, из контекста в 4 096 токенов, и оценивает каждый шаг PRM, которой нужно перечитать весь префикс из 4 608 токенов. PRM читает 55 296 токенов, примерно в 9 раз больше того, что записал генератор. Проверка четырех листьев в песочницах, которым нужно 4,5 с на запуск и 35 с на исполнение, по два одновременно, добавляет 79 с, по сравнению с примерно 129 с генерации при однопоточной скорости из раздела «Задержка обслуживания на ускорителе». Каждая открытая ветвь также удерживает свой контекст в системе обслуживания, пока ждет («Управление KV-кешем»). Бюджет поиска должен измерять каждый ресурс отдельно, как вектор потолков.
Итоги
Вычисления этапа тестирования расходуются системой эффективно, только когда каждый дополнительный токен, траектория-кандидат, вызов верификатора или взаимодействие с инструментом дает измеримое снижение неопределенности задачи, которое превышает предельную стоимость по задержке по часам, объему памяти и бюджету в долларах. Руководящий вопрос этой главы — когда еще один токен, кандидат, тест или вызов модели стоит своих затрат? — не допускает ни наивного ответа «всегда», ни одношагового ответа «никогда». Вычисления этапа тестирования оправданы строго тогда, когда одновременно выполняются четыре архитектурных инварианта: базовая задача обладает проверяемыми промежуточными состояниями или различимыми топологиями кандидатов, а не неустранимой эпистемической неопределенностью; выбранная ось распределения соответствует физическому узкому месту задачи; механизм отбора поддерживает верность верификации, которая доминирует над шумовым порогом генератора; а ожидаемый предельный прирост полезности задачи на выходе остается строго положительным вдоль многомерного Парето-фронта системы. Когда любое из этих условий нарушается, дополнительные вычисления ухудшают, а не повышают надежность системы: необоснованная последовательная глубина усиливает галлюцинированные авторегрессионные ошибки, некоординированная параллельная ширина расточает пропускную способность памяти на структурно избыточные моды, а непроверенная обратная связь среды загрязняет состояние супервизора хоста необратимыми побочными эффектами.
Поиск без оракула — это просто галлюцинация
- Глубина, ширина и обратная связь дают структурно различные вычислительные профили и механику снижения ошибок. Последовательная генерация расширяет способность к промежуточному рассуждению, позволяя выполнять пошаговые символьные преобразования, но на критическом пути задержки накапливает дрейф авторегрессионных токенов ( последовательных шагов декодирования). Параллельное исследование выбирает из условного распределения модели независимые траектории, чтобы снизить дисперсию выборки, выполняясь как высокопроизводительное пакетное предзаполнение и декодирование ценой совокупных FLOP и объема KV-кеша ( памяти). Итеративное уточнение включает внешние наблюдения среды, чтобы заземлить стохастические гипотезы в эмпирической истине, превращая разомкнутый предсказатель в замкнутый контроллер. Ни одна ось не поглощает остальные; архитектуры агентов высокой надежности динамически комбинируют все три в структурированные топологии поиска.
- Отбор кандидатов — явный архитектурный компонент, верификатор которого задает потолок полезности поиска. Генерация широкого фронта кандидатных планов или патчей кода неэффективна без селектора, способного отделить подлинный прогресс задачи от поверхностного правдоподобия. Верификаторы, будь то детерминированные наборы тестов, статические анализаторы, обученные модели награды за процесс или ядра голосования по консенсусу, обладают конечными точностью и полнотой. Если политика поиска оптимизирует кандидатов против несовершенной суррогатной метрики, увеличение ширины поиска рано или поздно запускает ловушку оптимизации верификатора (закон Гудхарта): алгоритм поиска систематически выбирает патологические граничные случаи, которые удовлетворяют верификатор и при этом не выполняют спецификацию задачи. Надежные системы навязывают защитные запасы верификации и многослойные сквозные проверки.
- Планы — это состоятельные пересматриваемые гипотезы, управляемые зависимостями наблюдений. В агентной архитектуре план — не неизменяемая последовательность императивных команд, а структурированный направленный ациклический граф подцелей, предусловий и требований к свидетельствам. Каждое исполнение инструмента или взаимодействие со средой дает эмпирическое наблюдение, которое либо подкрепляет активную гипотезу, либо обнажает недопустимое допущение. Когда предусловия не выполняются, среда выполнения не должна продолжать исполнять устаревшие нижестоящие действия; она обязана явно запустить инвалидацию плана, изолировать незафиксированные побочные эффекты и перепланировать от вновь проверенного состояния системы. Обдумывание работает как протокол активной синхронизации между символьным отслеживанием состояния и стохастической генерацией модели.
- Политики поиска должны учитывать глобальное потребление ресурсов по всем осям и завершаться по явным границам бюджета. Исследование на этапе тестирования физически ограничено многомерным бюджетом ресурсов, охватывающим задержку по часам (), совокупные FLOP вывода (), занятость памяти ускорителя () и риск необратимых внешних действий. Критерии остановки не могут опираться на самоотчеты непривилегированной модели о завершении. Вместо этого супервизор среды выполнения должен навязывать многопеременные границы остановки, отслеживающие пороги уверенности верификации, сходимость энтропии кандидатов, обнаружение плато и жесткие таймауты бюджета. Когда достигается граница бюджета, планировщик должен мягко деградировать, фиксируя наивысший ранжированный проверенный кандидат или эскалируя дело на вмешательство супервизора более высокого уровня.
Эта глава проверила, когда дополнительные вычисления вывода окупаются. По осям глубины, ширины и обратной связи вычисления повышали проверенный успех только тогда, когда приносили свидетельства, которые отделяли допустимых кандидатов от недопустимых. Это обдумывание, ограниченное свидетельствами (принцип «Обдумывание, ограниченное свидетельствами»), измеренное по каждой оси отдельно, и только обратная связь приносила эти свидетельства извне модели. Коллапс байесовской точности и расхождение по Гудхарту количественно выразили асимметрию верификации (принцип «Асимметрия верификации»). Частота ложного принятия проверки ограничивает то, что может дать любой объем поиска, поэтому обученные верификаторы могут упорядочивать кандидатов, а фиксировать результат должны только детерминированные проверки, расположенные там, где кандидат не может до них дотянуться.
От обдумывания к рабочему состоянию
Каждая цепочка рассуждений, выпущенная во время последовательной глубины, каждый кандидат-ветвь, оцененный при выборке по ширине, и каждая диагностика компилятора или трассировка исполнения, полученная при обратной связи среды, порождают промежуточное состояние. В неограниченной среде исполнения этот взрыв артефактов обдумывания быстро переполняет конечное окно контекста модели, размывая внимание на нерелевантный исторический шум и расходуя гигабайты памяти с высокой пропускной способностью на физические кеши «ключ — значение».
Поэтому системная задача смещается от вопроса сколько вычислений тратить на исследование гипотез к вопросу как структурировать, сохранять и обслуживать получившееся состояние. Этот переход отмечает границу между вычислительным движком и иерархией памяти. В Части II: «Память агента» мы рассмотрим, как среда выполнения агента управляет этим потоком состояния во времени и на физическом оборудовании. «Инженерия контекста» (рабочий контекст) исследует логический рабочий набор: как среда выполнения абстрагирует, отсекает, сжимает и располагает эпизодические траектории и выходы инструментов в связный высокоплотный буфер промпта. «Управление KV-кешем» спускается к подложке GPU, анализируя, как PagedAttention, префиксное кеширование и совместное использование деревьев radix физически виртуализируют и переиспользуют тензоры KV по деревьям поиска и многоходовым циклам, разобранным в этой главе.
Ключевые выводы
- Окупаются только свидетельства: дополнительный вывод повышает проверенный успех только тогда, когда приносит наблюдение, которое отделяет допустимых кандидатов от недопустимых. Зонд длительностью 40 мс, опровергающий гипотезу, может стоить больше, чем 21,6 с генерации, которая этого не может.
- Глубина — это бюджет, который распределяет среда выполнения: модели рассуждений превращают глубину в бюджет токенов рассуждения на вызов, оплачиваемый как выход. Распределяйте его по трудности на основе дешевых сигналов и эскалируйте нерешенные решения, а не повышайте бюджет без предела.
- Селектор задает потолок: лучший случай ширины — pass@, который предполагает идеальный селектор, а коррелированные выборки снижают даже его. При низких базовых долях верификатор с точностью 98 процентов может оставить недопустимыми двух из каждых трех принятых кандидатов.
- Обученные верификаторы ранжируют, запечатанные проверки фиксируют: поиск против обученного верификатора или судьи отбирает его ошибки, и небольшая доля эксплойтов при большом становится почти неизбежной находкой. Фиксировать результат могут только детерминированные проверки, которые кандидат не может изменить.
- Планы — это гипотезы, которые среда выполнения исправляет: удержание плана как графа зависимостей позволяет среде выполнения проверять предусловия, инвалидировать только потомков сбоя и заменять подграф вместо регенерации всего.
- Оценивайте поиск по стоимости принятой задачи и останавливайтесь по правилу: учитывайте расход генератора, верификатора и инструментов в одном журнале с жесткими потолками, а стратегии сравнивайте по стоимости на принятую задачу при согласованном бюджете и сроке.
Эта глава проверила, когда дополнительные вычисления вывода окупаются. По осям глубины, ширины и обратной связи вычисления повышали принятый успех только тогда, когда приносили свидетельства, которые отделяли допустимых кандидатов от недопустимых. Это обдумывание, ограниченное свидетельствами (принцип «Обдумывание, ограниченное свидетельствами»), разобранное по каждой оси отдельно, и только обратная связь приносила эти свидетельства извне модели. Коллапс байесовской точности и расхождение по Гудхарту количественно выразили асимметрию верификации (принцип «Асимметрия верификации»). Частота ложного принятия проверки ограничивает то, что может дать любой объем поиска, поэтому обученные верификаторы могут упорядочивать кандидатов, а принимать результат должны только детерминированные проверки, расположенные там, где кандидат не может до них дотянуться.
От одного решения к рабочему состоянию
Каждая трассировка рассуждения, кандидат, отчет теста и правка плана, которые выпустила эта глава, — это состояние, которое может понадобиться следующему вызову. Цикл обратной связи перечитывает растущую историю в каждом раунде, поиск удерживает много расходящихся ветвей одновременно, а план переносит проверенные результаты от шага к шагу. Часть II, «Память агента», занимается этим состоянием. «Инженерия контекста» решает, что именно видит следующий вызов по мере роста траектории, включая то, как сжимать отчеты тестов и трассировки рассуждения, не теряя заключенных в них свидетельств. «Управление KV-кешем» оценивает стоимость удержания этого состояния в системе обслуживания, включая ветви, которые поиск отщепляет от общего префикса.