Перейти к содержанию
Публикация AiManual

Правка весов вручную: как Claude точечно меняет поведение Gemma 4 12B без обучения

Пользователь повторил подход MIT CSAIL и через Claude Opus 5.5 переписал 8 MLP-нейронов Gemma 4 12B: 92 тыс. из 11,9 млрд параметров, дифф около 100 КБ, без гра

Коротко

Что будет в материале

  1. 01

    Что такое ручная правка весов и откуда взялся подход MIT CSAIL

  2. 02

    Задача автора: условное время в переводе на итальянский

  3. 03

    Диагностика: что показал линейный зонд в средних слоях Gemma 4 12B

  4. 04

    Как Claude переписал 8 MLP-нейронов в условный переключатель

3 ноября 2026 года в сообществе LocalLLaMA появился отчёт, автор которого повторил подход MIT CSAIL к ручному редактированию весов и применил его к своей задаче, переводу на итальянский. С помощью Claude Opus 5.5 и Python-ядра над весами Gemma 4 12B он переписал 8 MLP-нейронов: около 92 тыс. из 11,9 млрд параметров, дифф примерно 100 КБ, без градиентов и без обучения. Получился условный переключатель, который меняет выбор времени только там, где этого требует смысл предложения.

Цифры на незнакомых предложениях: доля старых форм упала до 5% и 16% в двух тестах против 26% и 32% у базовой Gemma 4 12B. Побочный ущерб: 2 сломанных контроля и 182 сохранённых несвязанных перевода из 200. Системный промпт с тем же предпочтением дал 4% и 2%, но сломал 49 контролей и сохранил 82 перевода из 200.

Оговорки автор даёт сразу: одна конструкция, одна модель, два успешных прогона из трёх. Ниже механика правки, сравнительная таблица по всем вариантам и границы применимости.

Что такое ручная правка весов и откуда взялся подход MIT CSAIL

Weight-space programming, программирование в пространстве весов, это прямое редактирование параметров модели без градиентов и без шагов обучения. Отправной точкой стала демонстрация MIT CSAIL: GPT-6 Astra изменил несколько нейронов Qwen3.5-0.8B, после чего модель перестала зацикливаться на математических задачах, а её оценки выросли. Обучения при этом не было (отчёт автора с описанием исходной демонстрации).

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

Автор воспроизвёл схему на своей задаче: Python-ядро над весами Gemma 4 12B, 50 forward passes для проверки идей на тренировочных предложениях, без градиентов. Инструмент, который вёл работу, это Claude Opus 5.5. Держите в голове: перед нами один пользовательский кейс с опубликованным репозиторием, а не рецензируемое исследование.

Чем это отличается от файнтюна и промптинга

Три пути меняют поведение модели по-разному, и путать их не стоит.

  • Промпт меняет вход, веса остаются прежними. Дёшево, быстро, обратимо. Слабое место: правило живёт в тексте и применяется повсеместно, включая места, где смысл требует другого времени. Отсюда 49 сломанных контролей.
  • LoRA добавляет обучаемые адаптеры и требует данных и шагов обучения. Поведение меняется шире, чем хотелось бы, и эффект размазывается по несвязанным предложениям.
  • Ручная правка весов меняет сами параметры, точечно, без градиентов. Цена: нужно понимать внутренности модели, уметь читать активации и держать под рукой инструменты вроде линейных зондов.

Заменой файнтюну метод не служит. У него другая ниша: минимальный дифф и предсказуемое сохранение всего, что не относится к задаче. Что именно заявлено в исходной работе MIT и почему её называют ранней заявкой на новую парадигму, мы разбирали в отдельном материале про программирование в пространстве весов.

Задача автора: условное время в переводе на итальянский

Английское «He had been hiding in the attic for months when the soldiers found him» описывает ситуацию, которая на момент события ещё длилась. Gemma переводит его как «Si era nascosto in soffitta per mesi...», а автор предпочитает «Si nascondeva in soffitta da mesi...»: он всё ещё прятался, когда пришли солдаты.

Основная сложность в условности. Контрпример: «he had lived in Paris for ten years, but by 1990 he had moved back». Период уже завершён, и исходное время обязано сохраниться. Правило «всегда использовать форму X» здесь ломает смысл, поэтому задача сформулирована как «менять время только там, где значение требует». Именно это делает её хорошим тестом для точечной правки: безусловный сдвиг неизбежно испортил бы контрольные случаи.

Для проверки идей хватило 50 forward passes на тренировочных предложениях. Ни градиентов, ни шагов обучения, ни собранного датасета для файнтюна не потребовалось.

Диагностика: что показал линейный зонд в средних слоях Gemma 4 12B

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

Результат проверки: в средних слоях Gemma 4 12B зонд почти идеально разделяет длящийся и завершённый контекст. Признак в модели есть. Но при выборе глагола модель это различие не использует.

Разрыв между «модель знает» и «модель применяет» и стал отправной точкой для правки. Информацию не нужно добавлять, её нужно связать с решением. Аналогия простая: датчик в системе уже стоит и работает, а провод от него к исполнительному механизму отсутствует.

Как Claude переписал 8 MLP-нейронов в условный переключатель

Claude Opus 5.5 работал через Python-ядро над весами Gemma 4 12B, без градиентов. Он переписал 8 MLP-нейронов в небольшой переключатель, который срабатывает только в нужном контексте и смещает глагол к предпочитаемой форме. Объём изменений: 92 тыс. из 11,9 млрд параметров, дифф около 100 КБ. Файл весов почти не меняется, что удобно для хранения, сравнения версий и отката.

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

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

Почему условный переключатель, а не безусловный сдвиг

Безусловный сдвиг в сторону нужного времени сломал бы ровно те случаи, где исходная форма обязана сохраниться, например «by 1990 he had moved back». Условное срабатывание отделяет аккуратную правку от грубой абляции: переключатель активируется по смыслу, а не по факту наличия глагола.

Отсюда и результат: 182 сохранённых несвязанных перевода из 200 при 2 сломанных контролях. Переключатель молчит там, где контекст не тот.

Результаты: ручная правка против промпта, абляции и LoRA

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

ВариантСтарые формы, тест 1Старые формы, тест 2Сломанные контролиСохранено из 200 несвязанных
Gemma 4 12B без правок26%32%-200
Ручная правка (Claude)5%16%2182
Системный промпт с предпочтением4%2%4982
Абляция по разности средних49%75%5343
LoRA на тех же данных12%23%0120

Системный промпт точнее всех попадает в целевой признак, 4% и 2%, и платит за это разрушением контроля: 49 сломанных случаев, 82 сохранённых перевода из 200. Правило из промпта применяется повсеместно, включая места, где смысл требует другого времени.

Классическая абляция по разности средних оказалась самым грубым вариантом: 49% и 75% старых форм, 53 сломанных контроля, 43 сохранённых перевода. Она сдвигает направление в пространстве активаций без привязки к контексту.

LoRA на тех же данных дала 12% и 23%, ноль сломанных контролей и 120 из 200 сохранённых. По замечанию автора, LoRA меняет меньше предложений, но затрагивает заметно больше посторонних, зато лучше работает внутри абзацев.

Ручная правка Claude: 5% и 16%, два сломанных контроля, 182 из 200. В этом кейсе она дала лучший баланс между целевым эффектом и сохранением несвязанного поведения. Универсального превосходства из этого не следует: конструкция одна, модель одна, тестов два (сводная таблица и код в отчёте автора).

Что означают сломанные контроли и сохранённые переводы

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

200 несвязанных переводов проверяют другое: не деградировала ли модель на посторонних предложениях. Обе метрики нужны вместе. Низкая доля старых форм сама по себе не значит ничего, если модель попутно испортила всё остальное: именно так вышло у системного промпта и у абляции.

Ограничения метода и честная оценка применимости

Автор оговаривает границы прямо: одна конструкция (выбор итальянского времени) и одна модель (Gemma 4 12B). Два прогона из трёх успешны, третий упал из-за обвязки. Репозиторий с правками, кодом, логами агента и всеми базовыми вариантами опубликован (исходный отчёт), но рецензии не было.

По качеству правка тоже не бесплатна: 2 контроля сломаны, 18 из 200 несвязанных переводов не сохранились. Это заметно лучше промпта и абляции, но хуже, чем «ничего не испортить».

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

Ручная правка оправдана, когда задача узкая и условная, промпт ломает контроля, LoRA слишком широко затрагивает постороннее, а специалист готов разбираться с внутренностями модели и линейными зондами.

Кому и когда стоит пробовать weight-space programming

  • Задача узкая и условная: правило формулируется как «менять только когда...», а не «всегда».
  • Есть способ проверить, что признак уже представлен в модели: зонд на активациях средних слоёв даёт высокое разделение классов.
  • Промпт ломает контроля, а LoRA затрагивает слишком много несвязанного поведения.
  • Есть навыки работы с весами, Python-ядром и инструментами интерпретируемости, а также время на несколько прогонов.

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

Что это говорит об интерпретируемости LLM и куда двигаться дальше

Результат с зондом даёт аргумент в пользу локализуемости поведения: признак уже присутствует в средних слоях, и его удалось связать с решением, изменив восемь нейронов. Для интерпретируемости это удобная демонстрация разницы между представлением информации и её использованием при генерации.

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

Что стоит проверить дальше: другие условные конструкции (не только время глагола), другие модели и размеры, другие языки, повтор третьего прогона с исправленной обвязкой. Отдельный вопрос, держится ли правка при квантизации и при смене чекпоинта.

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

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