BorisovAI
Все публикации
Новая функцияllm-analisisClaude Code

[Request interrupted by user for tool use]

[Request interrupted by user for tool use]

Когда модель учится менять себя: как мы ловили ошибки в самоадаптирующейся архитектуре

Проект llm-analysis — это попытка научить нейросеть не просто решать задачу классификации текста SST-2, но ещё и самостоятельно управлять своей архитектурой. Звучит как фантастика? На деле это долгая война с энтропией и случайными числами.

С чего всё началось

После успешной Phase 6 у нас было две конфигурации с результатом около 70%: Q1 выдавала 70.15%, Q2 с MoE-архитектурой добралась до 70.73%. Казалось бы, пик достигнут. Но видение проекта было амбициознее: что если модель сама будет решать, когда ей нужен новый эксперт (grow) или когда текущие избыточны (prune)?

Phase 7a завершилась успешно, и мы двигались в Phase 7b — «Control Head Design». Идея была классическая: добавить отдельную голову управления, которая будет предсказывать, нужно ли модифицировать архитектуру. Но тут начались приключения.

Первый камень преткновения: синтетические метки

Реализовали Phase 7b.1 с энтропийным подходом. Суть была в том, чтобы использовать routing_entropy — энтропию маршрутизации экспертов — как сигнал для управления. Сказано — сделано. Запустили обучение…

И получили 58.30% точность вместо 69.80% на базовой модели. Полный NO-GO.

Ошибка была коварная: мы использовали синтетические случайные метки (30% растёт, 20% обрезается) для обучения control head, но эти метки никак не коррелировали с реальным улучшением архитектуры. Модель начала выдавать сигналы, которые не имели смысла — вроде «расти, когда ты и так хорошо работаешь» или «удаляй экспертов, когда они нужны».

Поворот: энтропия как источник истины

Переделали подход в Phase 7b.2. Вместо синтетических меток решили использовать саму routing_entropy как дифференцируемый сигнал. Ведь энтропия маршрутизации — это реальное поведение модели, а не придуманные числа. Создали три новых файла: полный план стратегии, expert_manager.py для безопасного добавления/удаления экспертов с сохранением состояния.

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

Но потом обнаружилась реальная проблема

Загрузили checkpoint Phase 7a (лучший результат — 70.73%), запустили обучение с control head… и модель стартовала с точностью 8.95% вместо ожидаемых 70%. Это была красная лампочка.

Начали копать. Оказалось, что при загрузке checkpoint’а из словаря нужно использовать ключ 'model_state_dict', а не просто 'model'. Классическая ошибка, когда сохранять учился вместе с оптимизатором, а загружать забыл про детали структуры.

Чинили. Потом ещё раз запустили. И тут выяснилось: одновременное обучение модели и control head вызывает градиентную катастрофу. Точность падает, entropy-сигналы становятся шумом.

Решение пришло с неожиданной стороны

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

Phase 7b.3 — «Direct Approach» — это была попытка упростить: забыли про control head, забыли про self-modification, сосредоточились на том, что работает. Оказалось, что 12 экспертов, найденные в Phase 7a, — это уже оптимум. Вместо того чтобы учить модель себя переделывать, лучше просто хорошо обучить её с фиксированной архитектурой.

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

Чему мы научились

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

Второй урок: не каждая красивая идея — это хорошая идея в ML. Иногда простота и фиксированная архитектура работают лучше, чем амбициозная самоадаптация.

Третий урок: checkpoint’ы — это хитрые штуки. Всегда проверяй структуру словаря, всегда логируй, откуда ты загружаешь, во что загружаешь.

Остаток команды перешёл на Phase 8, но теперь с более скромными амбициями и более реалистичными ожиданиями. И хотя идея о self-modifying нейросетях не сработала в этот раз, мы узнали много нового о том, как на самом деле работает градиентный спуск в сложных архитектурах.


😄 Тренировать control head — всё равно что заставлять модель смотреть в волшебный кристалл и предсказывать, когда ей растить или резать экспертов, не имея никакого способа узнать, были ли её предсказания правильны.

Метаданные

Session ID:
grouped_llm-analisis_20260213_0913
Branch:
HEAD
Dev Joke
Мигрировать с Traefik — всё равно что менять колёса на ходу. На самолёте.

Часть потока:

Разработка: llm-analisis

Оцените материал

0/1000