OpenVLHarness: обвязка важнее бюджета рассуждений

OpenVLHarness: обвязка важнее бюджета рассуждений

Модель GPT-6 Luna, которой разрешили думать на максимуме усилий, потратила в 2,7 раза больше токенов и прибавила к среднему результату по 22 бенчмаркам 0,7 балла. Через месяц те же вопросы она решает на 8,5 балла лучше, если рядом поставить не более длинную цепочку размышлений, а набор инструментов и нормальную память.

Это главный вывод статьи OpenVLHarness от исследователей UCLA и Apple (arXiv 2610.26860). Работа полезна не красивыми цифрами, а тем, что наконец раскладывает по полочкам, из чего складывается прирост у визуальных агентов.

Что такое OpenVLHarness

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

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

Почему «думать дольше» перестало работать

Авторы сначала проверили очевидную гипотезу. Если модель ошибается, может, ей просто не хватает бюджета рассуждений? Прогнали 22 бенчмарка на пяти уровнях усилий, от low до max, по 26 229 вопросов на каждом уровне, всего больше полумиллиона прогонов.

Кривая выполаживается. Переход с xhigh на max умножает расход модельных токенов в 2,7 раза, а средний балл двигает на 0,7. На домене визуального поиска и глубокого исследования вся лестница от medium до max даёт 2,6 балла при росте цены с 0,58 до 3,17 доллара за тысячу вопросов. Дальше платить не за что: модель упирается не в длину цепочки, а в отсутствие фактов.

Отсюда центральный тезис: следующий шаг в визуальном reasoning идёт не через интеллект модели, а через доступ к доказательствам и через умение эти доказательства удержать.

Слой возможностей: девять инструментов и рендеринг доказательств

Capability layer решает две задачи сразу. Первая: спрятать разнородные бэкенды за одинаковым интерфейсом. Visual Grounding может работать на SAM 3 или на Grounding DINO, OCR на PaddleOCR-VL или DeepSeek-OCR, оценка глубины на Depth Anything 3 или VGGT, а модель вызывает одну и ту же функцию с одними и теми же аргументами. Выбор бэкенда остаётся за инженером и зависит от точности, цены и задержки.

Вторая задача интереснее. Сырой вывод инструмента почти никогда не годится как наблюдение. RLE-маска описывает регион абсолютно точно, но если сериализовать её в контекст, модель не увидит, что именно было выделено, потому что это не текст и не картинка. Плотный массив чисел глубины съест тысячи токенов и не даст ничего читаемого.

Поэтому у каждой возможности есть постпроцессор, который превращает результат в наблюдение: картинка с пронумерованными регионами, короткое текстовое описание, компактные координаты на сетке 0-1000, ссылка на артефакт. В наборе пять перцептивных инструментов (Zoom-in, Visual Grounding, OCR, Depth Estimation, Camera Trajectory), три для поиска информации (Text Search, Image Search, Webpage Visit) и Python-агент для вычислений.

Один пример из статьи хорошо показывает, зачем нужен рендеринг. Инструмент Camera Trajectory не отдаёт матрицы поз. Он пишет человекочитаемо: «salient direction: backward (-5.43)» плюс скаляры, углы и явное соглашение о координатах. Модель получает то, о чём можно рассуждать, вместо того чтобы разбирать систему координат по числам.

Постоянная мультимодальная память

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

Реестр артефактов на каждый запрос держит три категории. Картинки (входные, сгенерированные инструментами, скачанные из поиска) живут под именами вида input_image_3 и tool_generated_image_6, дубликаты переиспользуют существующую запись. Структурированные данные (боксы, скоры, маски, массивы глубины, матрицы камер, результаты OCR) лежат вне транскрипта как типизированные переменные с описанием полей и форм массивов. Веб-ссылки получают короткие токены webpage_url_1, чтобы модель не переписывала URL по памяти.

После каждого хода среда публикует Environment Update со списком доступных имён, не повторяя сами полезные нагрузки. Модель видит, что у неё есть, и ссылается на нужное в следующем вызове. Python-агент читает эти переменные как обычные объекты и может считать по ним: сложить расстояния из двух измерений глубины, сравнить боксы, посчитать метрику.

Разница между текстовой и мультимодальной памятью измерена отдельно. Промежуточный вариант, где сгенерированные картинки заменены описанием до 160 токенов, даёт 44,93 и 49,12 балла на моделях 8B и 32B. Полная версия с адресуемыми изображениями поднимает это до 47,14 и 52,51. Чистый прирост от того, что картинку можно назвать и передать, составляет 2,2 и 3,4 балла.

Результаты на 22 бенчмарках

Тестировали восемь бэкбонов, от Qwen3-VL-8B до GPT-6 Astra, на четырёх доменах: grounded perception (счёт объектов и open-vocabulary grounding), визуальный поиск и глубокое исследование, общий VQA с галлюцинациями, пространственный reasoning.

Qwen3-VL-8B: 34,24 против 45,41 у обвязки. Qwen3-VL-32B: 38,30 против 50,92. На GPT-6 Luna базовый уровень 45,76, а Codex в роли обвязки проваливается до 43,78, то есть ниже модели без инструментов вообще, тогда как OpenVLHarness даёт 56,52. На GPT-6 Astra 60,27 превращаются в 70,17, и там прирост есть на всех 22 бенчмарках без исключения. По GPT-5 в приложении видно 44,4 → 55,7, по GPT-6 Sol 52,7 → 64,3, по Kimi K3 56,4 → 66,1.

Самые драматичные скачки там, где модель объективно не могла справиться сама. FSCD-147, подсчёт и детекция по нескольким примерам: 1,79 → 23,52 у восьмимиллиардной модели. FSCD-LVIS: 1,47 → 27,37. MMSearch: 14,04 → 51,46. Это не «модель стала умнее», это «модель наконец увидела объекты».

Отдельно стоит результат на Qwen2.5-VL-7B: 33,45 в среднем без обновления весов, против 28,02 у PixelReasoner, 25,29 у AdaReasoner и 25,02 у DeepEyesV2. Все три конкурента дообучались. Обвязка выигрывает у обучения на этом классе задач.

Про цену. На максимуме усилий базовая GPT-6 Luna стоит 3,17 доллара за тысячу вопросов и набирает 48,0. OpenVLHarness на среднем усилии стоит 0,92 и набирает 56,5. Восемь с половиной баллов за 29% цены. Тезис «дайте модели больше токенов» здесь просто не работает.

Что именно даёт прирост

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

На 8B и 32B базовые 37,06 и 41,29. Добавили сырые инструменты: 40,84 и 45,61. Добавили capability layer с рендерингом: 44,23 и 48,80. Добавили текстовую память: 44,93 и 49,12. Включили мультимодальную память: 47,14 и 52,51.

Две детали в этой лестнице важнее итоговых чисел. Первая: сырые инструменты без рендеринга ломают общий VQA. На 8B было 57,97, стало 52,41, то есть минус 5,5 балла. Слой обработки выводов возвращает 56,05 и только потом добавляет сверху. Инструмент, который отдаёт модели мусор в контекст, хуже отсутствия инструмента.

Вторая: grounded perception выигрывает от инструментов сразу и много (27,48 → 41,70), а визуальный поиск почти не двигается (18,40 → 21,44), пока не появляется память. Поиск по своей природе многошаговый: нашёл, открыл, вернулся, сверил. Без адресуемых ссылок и изображений эти шаги рассыпаются.

Где обвязка ломается

Авторы не стали прятать регрессии. FREAK-VQA на 8B падает с 44,68 до 37,05, ERQA с 44,00 до 43,00, V* остаётся на месте. На слабых бэкбонах инструменты иногда мешают: модель тратит вызовы и путается в показаниях.

Есть и симметричная картина по вопросам. На 24 410 вопросах Qwen3-VL-8B обвязка исправила 4 649 ответов и испортила 1 967. На GPT-6 Astra 2 336 против 700. Стоимость одного чистого исправления: 11,7 вызова у Luna, 28,1 у Qwen3-VL-32B. То есть инструменты это не бесплатная магия, а обмен вызовов на точность, и на некоторых моделях обмен невыгодный.

Контрольный замер выглядит убедительно. На вопросах, где агент не сделал ни одного вызова, разница с базовой моделью должна быть нулевой, и она колеблется от минус 0,2 до минус 1,8 балла. Значит наблюдаемый прирост даёт именно использование инструментов, а не более длинный системный промпт.

Разбор провалов сделан на 9 893 неудачных траекториях Qwen3-VL-8B, которые критиковала Kimi K3. На сотне размеченных вручную примеров метки критика совпали с человеческими в 92% случаев. Дальше распределение причин по доменам расходится, и это самое полезное место статьи.

В grounded perception 75% провалов это неправильный вывод инструмента: в сценах плотнее 25 объектов детектор пропускает или склеивает экземпляры. В визуальном поиске 49% провалов это пропущенный вызов, модель просто не пошла искать. В пространственном reasoning и общем VQA смешаны пропущенные вызовы и ошибки рассуждения. А доля случаев, где корректный вывод инструмента остался невостребованным, всего 3-8%. Слой рендеринга свою работу делает: беда не в том, что модель не понимает доказательство, а в том, что она его не запрашивает или запрашивает плохим инструментом.

Специализация без обучения весов

Из анализа провалов авторы сделали два рабочих процесса. Harness search правит системный промпт, описания инструментов и шаблоны рендеринга, отбирая варианты повторной оценкой. Tool generation пишет новые задачи-специфичные инструменты из существующих возможностей.

Выбор между ними предсказуем, если посмотреть на профиль ошибок датасета. Там, где доминируют правки текста (ERQA 71%, RealWorldQA 56%), harness search даёт +4,1 и +3,7 балла, а генерация инструментов почти ничего (+0,2 и +0,1). Там, где нужны новые инструменты (SparBench 75%, FREAK-VQA 62%), картина обратная: +8,2 и +4,5 от генерации и минус 0,5 с минус 1,0 от правки промптов.

Практический смысл простой. Прежде чем писать «сделай модель умнее», посмотрите на свои падения и определите, чего в них не хватает: формулировки, инструмента или памяти. Ответ почти всегда разный для разных датасетов, и универсальной настройки тут нет.

Что это значит на практике

Первое. Если ваш визуальный агент ошибается на мелких объектах, плотных сценах и длинном хвосте сущностей, добавление reasoning-бюджета не поможет. Поможет зум, детектор и поиск, подключённые как инструменты.

Второе. Формат вывода инструмента важнее самого инструмента. RLE-маска в контексте бесполезна, та же маска как картинка с номерами регионов плюс боксы в переменных работает. Разница в абляции измеряется баллами, а не процентами.

Третье. Память нужна не для «контекста подлиннее», а для адресуемости. Агент должен уметь сослаться на конкретное изображение или массив, иначе многошаговые сценарии разваливаются на первом же возврате к предыдущему результату.

Четвёртое. Код в роли обвязки не универсален. Codex на GPT-6 Luna показал 43,78, хуже, чем модель без инструментов. Умение писать код не заменяет задачный интерфейс и рендеринг доказательств.

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

Нужно ли дообучать модель, чтобы получить этот прирост? Нет. Все результаты получены на замороженных весах: меняются только обвязка, инструменты и память. Более того, на Qwen2.5-VL-7B версия без обучения обошла три дообученных подхода (PixelReasoner, AdaReasoner, DeepEyesV2) с результатом 33,45 против 28,02 у лучшего из них.

Почему на некоторых бенчмарках стало хуже? Инструменты добавляют шаги, а слабая модель на этих шагах ошибается. На Qwen3-VL-8B FREAK-VQA упал с 44,68 до 37,05, потому что модель делала лишние вызовы и теряла исходную постановку вопроса. На GPT-6 Astra регрессий нет ни на одном из 22 бенчмарков.

Можно ли заменить мультимодальную память текстовыми описаниями картинок? Можно, но потеряете часть прироста. Вариант с описаниями до 160 токенов даёт 44,93 и 49,12 балла, полная версия с адресуемыми изображениями 47,14 и 52,51. Разница в 2,2 и 3,4 балла возникает ровно там, где нужно передать картинку в следующий инструмент.

Итог

OpenVLHarness показывает, что для визуальных агентов обвязка важнее бюджета рассуждений. Два механизма, интерфейс с рендерингом доказательств и адресуемая мультимодальная память, дают от 9,7 до 12,6 балла на 22 бенчмарках, не трогая веса модели, и обходятся дешевле, чем попытка выжать те же баллы длинным reasoning.

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

← Все записи