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

DeepSeek V4.1 Flash 1017 прочитала веса нейросетей: что показал предварительный тест Weight-Space Programming

DeepSeek V4.1 Flash 1017 получила веса четырёх RL-сетей по 51 тыс. параметров и верно определила три задачи из четырёх. Разбираем механику теста, причину ошибки

Коротко

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

  1. 01

    Что произошло: суть эксперимента за минуту

  2. 02

    Как LLM вообще «читает» веса нейросети

  3. 03

    Разбор ошибки: почему BallBeam приняли за CartPole

  4. 04

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

Что произошло: суть эксперимента за минуту

Автор эксперимента, вдохновлённый идеей Weight-Space Programming, проверил, сможет ли DeepSeek V4.1 Flash 1017 понять задачу небольшой нейросети, читая только её веса. На вход ушли четыре анонимизированных RL-чекпоинта: по 51 тыс. параметров каждый, одинаковая архитектура, все веса отрендерены в текст. Метаданных не было. Исходного кода сети тоже. Сеть не запускалась.

Модель получила схему архитектуры и четыре варианта задач-кандидатов, между которыми нужно было распределить чекпоинты. Итог: CartPole, Flappy и Catch сопоставлены верно, BallBeam принята за CartPole. Автор сам называет результат очень предварительным: один прогон на чекпоинт.

Код, чекпоинты и логи прогонов открыты в репозитории galatolofederico/wsp, а исходное описание теста с результатами доступно в посте автора. Постановку можно проверить, не полагаясь на пересказ.

Результат в одну строку: 3 из 4

ЗадачаОтвет моделиЧто модель увидела в весах
CartPoleвернобалансировка на основе угла
Flappyверноотносительная позиция птицы и зазора
Catchвернопозиция платформы и мяча
BallBeamошибка: названа CartPoleпохожая балансировка, та же раскладка наблюдений

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

Единственная ошибка оказалась систематической. Разбор ниже.

Как LLM вообще «читает» веса нейросети

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

Что именно подавалось модели на вход

  • Веса в текстовом виде: полный дамп параметров, разложенный по слоям.
  • Схема архитектуры: какие слои есть, какой у них размер, сколько входов и выходов.
  • Четыре варианта задач-кандидатов.

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

Формат «веса как текст» существует не только ради эксперимента. Тот же приём лежит в основе подходов, где LLM читают и правят параметры напрямую, без градиентов: разбор weight-space programming показывает, как это выглядит на практике и чего там пока не хватает.

Почему это сложнее, чем кажется

Все четыре чекпоинта имеют одинаковую архитектуру и одинаковый размер. По форме сети задачи не различить: слои те же, размерности те же. Разница только в значениях. Модель должна была найти в числах статистику, которая коррелирует с динамикой среды.

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

Масштаб важен не меньше. 51 тыс. параметров, это крошечная сеть, её дамп влезает в контекст как текст. Для модели на миллионы параметров такой объём уже проблематичен, для миллиардов невозможен. Прямой перенос метода на продакшн-модели не работает.

Разбор ошибки: почему BallBeam приняли за CartPole

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

Модель клюнула на структурное сходство и выбрала более известный вариант из списка. CartPole, классика Gym, встречается в тысячах примеров кода и статей. BallBeam в обучающих материалах попадается реже. Когда числовые признаки не дают однозначного ответа, модель достраивает его по частоте встречаемости названия. Типичная ошибка правдоподобной догадки.

Вывод из эпизода важнее, чем счёт 3 из 4. Интерпретация весов уверенно работает на уровне «здесь что-то про балансировку», а близкие задачи различает хуже. Для аудита чужого чекпоинта этого может хватить, чтобы понять класс задачи, и не хватить, чтобы определить конкретную среду.

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

Список слабых мест у эксперимента длинный, и автор его не скрывает.

  • Один прогон на чекпоинт. Повторяемость не проверена.
  • Четыре испытания. Этого мало, чтобы говорить о надёжности метода.
  • Все чекпоинты одной архитектуры и по 51 тыс. параметров. Общность вывода ограничена этим классом сетей.
  • Модель ошиблась с функцией активации: предположила ReLU там, где сеть использует tanh.
  • Максимальный уровень рассуждений и около 1,58 млн токенов суммарно на четыре небольших чекпоинта.

Итог: это proof-of-concept, а не бенчмарк. Утверждение «LLM умеет читать веса» пока не подтверждено. Подтверждено другое: в одном прогоне модель справилась с тремя случаями из четырёх и один раз ошиблась предсказуемым образом.

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

Цена в токенах: 1,58 млн на четыре чекпоинта

Прогоны шли через API с максимальным уровнем рассуждений. Суммарный расход, около 1,58 млн токенов по данным отчёта о прогонах. На один чекпоинт приходится примерно 395 тыс. токенов, и речь о сети на 51 тыс. параметров. Цены в долларах автор не приводит, и подставлять их из головы бессмысленно: тариф зависит от провайдера и текущих условий.

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

Что такое Weight-Space Programming и зачем это нужно

Weight-Space Programming, это работа с нейросетью через её веса как через основной носитель информации. Читать, анализировать, при необходимости менять параметры, не имея исходного кода и метаданных. Идея опирается на гипотезу, что обученные веса содержат читаемую структуру, а не только шум.

Сценарии, где такой подход пригодился бы:

  • Аудит чужих RL-чекпоинтов, когда неизвестно, чему модель обучена.
  • Восстановление назначения модели по файлу весов без документации.
  • Проверка происхождения весов: похож ли чекпоинт на переобученный форк известной модели.
  • Разбор унаследованных артефактов, которые годами лежат в репозитории без описания.

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

Практическая ценность для разработчика: что делать с этим сейчас

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

Кому актуально: ML-инженерам, которые работают с RL-чекпоинтами и хотят быстро понять, какая политика лежит в архиве; исследователям интерпретируемости; тем, кто разбирает чужие модели без документации.

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

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

Где подход пока не работает

  • Большие сети. Дамп весов на миллиарды параметров в контекст не поместить.
  • Близкие по структуре задачи. BallBeam и CartPole модель различить не смогла.
  • Повторяемость. Повторов нет, стабильность результата неизвестна.
  • Точность чтения. Ошибка ReLU вместо tanh показывает, что чтение приблизительное.

Выводы делать рано. Пока это один прогон с одной ошибкой, а не метод.

Как воспроизвести тест самостоятельно

Всё нужное лежит в репозитории galatolofederico/wsp: код, чекпоинты и логи прогонов. Постановка воспроизводима без догадок о том, как автор рендерил веса в текст.

Общий порядок такой. Взять чекпоинты из репозитория, отрендерить веса в текстовый вид скриптами оттуда же, собрать промпт из схемы архитектуры и четырёх вариантов задач, отправить в DeepSeek V4.1 Flash 1017 с максимальным уровнем рассуждений. Дальше сравнить ответы с логами.

Что стоит изменить при повторе, чтобы получить более осмысленный результат:

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

Логи пригодятся как база для сравнения: авторское описание прогонов содержит формулировки и артефакты, по которым удобно сверять собственные результаты.

Что дальше: как будет проверяться надёжность

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

  • Повторы отделяют закономерность от случайности. Если модель стабильно называет CartPole и Flappy и стабильно путает BallBeam, это воспроизводимая картина, а не везение.
  • Независимо обученные чекпоинты проверяют устойчивость к вариациям обучения: другие сиды, другая инициализация, другая длительность тренировки при той же задаче.
  • Код сети без подсказок усложняет задачу честнее. В исходниках обычно видны размеры входов, названия переменных и структура наблюдений, по которым задачу легко угадать.

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

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

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