Мои заметки о технологиях и жизни

Нейрохирургия на дому: как заставить большую LLM чинить маленькие модели и не отстрелить себе ногу

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

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

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

В чем суть фокуса и почему никто не поумнел в 6 раз

В исследовании смешали в одну кучу два совершенно разных подхода.

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

Но как только исследователи перешли к реальной языковой модели Qwen на 800 миллионов параметров, вся магия прямого чтения испарилась. Очевидно, что почти миллиард весов в контекстное окно не запихнешь. Поэтому большой модели просто дали старый добрый Python-интерпретатор, тестовые датасеты по математике и разрешили сделать 50 попыток, чтобы нащупать проблему.

Что сделала модель-оптимизатор? Она не читала матрицу как Нео в Матрице. Она вела себя как толковый ML-инженер на стероидах: написала на питоне диагностические скрипты, прогнала тесты, сняла активации со слоев, увидела, что маленькая модель тупо зацикливается при длинных рассуждениях, локализовала сбойный участок и аккуратно подкрутила 0,016% весов.

Результат на математическом тесте вырос с 8% до 48%. Отсюда и крики про «поумнела в шесть раз». Хотя на самом деле модель не выучила высшую математику за секунду. На тестах, где нужны реальные знания, результаты вообще не сдвинулись с места. Агент просто вылечил баг бесконечного повторения токенов, который мешал модели выдать ответ, который она и так знала. Это не добавление интеллекта, это точечный хотфикс.

Отличная идея, которая быстро упирается в физику

И вот тут меня зацепило. Окей, это не телепатия, это автоматизированная хирургия весов через код. Но ведь сама идея делегировать топовой модели оптимизацию наших локальных небольших сеток — огонь! Берем условный опенсорсный квантованный Qwen, даем умному агенту удобную песочницу (харнес), и пусть он сам в цикле выдвигает гипотезы, правит слои, тестирует и разгоняет модель под наши задачи.

Звучит как бесплатный обед. Но если начать прикидывать реализацию, мы тут же врезаемся в суровую реальность.

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

Во-вторых, бутылочным горлышком мгновенно становится не генерация идей, а их проверка. Агент накидает пятьдесят вариантов патчей за минуту и пару долларов. Но чтобы проверить каждый патч на рабочей модели в 14 или 32 миллиарда параметров, нужно прогнать репрезентативный бенчмарк. Один прогон — полчаса. Пятьдесят попыток — двое суток непрерывного гудения видеокарт.

А если схитрить и сократить тест до двадцати примеров, чтобы крутилось быстро, мы получим классический взлом метрики. Умная модель-оптимизатор за 50 ходов просто подгонит веса под эти двадцать ответов. На графиках будет красивая победа, а в продакшене модель разучится связывать два слова или начнет галлюцинировать в соседних задачах, которые мы в короткий тест не включили.

Где эта схема реально выстрелит: кейс с OCR и компьютерным зрением

Значит ли это, что подход мертв? Вообще нет. Просто его нужно применять там, где у нас есть быстрый, бесплатный и стопроцентно точный способ проверки результата, а сама целевая модель достаточно компактная.

Идеальный кандидат здесь — небольшие визуально-языковые модели (VLM) для распознавания документов и таблиц, вроде открытого стека PaddleOCR-VL. Часто бывает, что выходит новая версия весов такой модели, и в ней что-то отваливается: то она начинает зацикливаться на длинных таблицах, то теряет строчки, то ломает структуру JSON на выходе.

Почему для агентской хирургии это идеальный полигон:

  1. Сами модели маленькие и быстрые, прогон тестов занимает секунды, а не часы.
  2. Основные болячки там живут в небольшом слое-проекторе, который связывает картинку и текст — именно его проще всего чинить точечными правками весов и настройкой внимания.
  3. Самое главное — мы можем сами генерировать бесконечный проверочный материал с заранее известным идеальным ответом. Берем чистый текст или таблицу, рендерим в картинку, программно мнем ее, добавляем шум, сдвигаем, прогоняем через модель и за миллисекунду сверяем посимвольно результат с исходником. Никаких субъективных оценок, чистая математика.

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

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

Что в сухом остатке

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

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