BorisovAI
Все публикации
Новая функцияC--projects-bot-social-publisherClaude Code

Когда батч-норм ломает миксчур экспертов на CIFAR-100

Когда батч-норм ломает миксчур экспертов на CIFAR-100

Три недели охоты за призраком. Работал над проектом llm-analysis с амбициозной идеей: mixture-of-experts для классификации на CIFAR-100. Теория обещала +40 процентных пункта над baseline. На практике упёрся в две стены сразу.

Первая стена: BatchNorm молчаливый убийца

Всё началось на фазе 12b с горячей замены экспертов (hot-plug test). Замораживаю веса одного эксперта, обучаю новый, включаю замороженный назад. И вот беда — точность первого эксперта падает на 2.48 процентных пункта. Часы в отладчике, проверка логик, перепроверка кода…

Потом осенило: requires_grad=False не спасает. BatchNorm слои обновляют running statistics даже с заморозкой весов. Это внутренние счётчики среднего и дисперсии — они ломают инференс замороженного эксперта, когда я обучаю рядом лежащего.

Решение глупо-простое: добавил model.stem.eval() после model.train(). Явно перевести backbone в режим инференса. Дрейф упал с 2.48pp до нуля. Полдня на баг, который решился одной строкой. Классика.

Вторая стена: роутер, который не хочет учиться

Фаза 13a должна была быть волшебной. Oracle (идеальный роутер) показывал потолок в 80.78%. А мой nn.Linear(128, 4) застрял на 72.93% — зазор в семь с половиной пункта. Запустил три стратегии подряд:

  1. Глубокий роутер + отдельное обучение: 73.32% — тоже не помогает
  2. Совместное обучение роутера и экспертов: 73.74% — хуже
  3. Ещё глубже архитектура: routing accuracy 62.5% и не растёт

Вот в чём подвох: на CIFAR-100 эксперты видят одинаковые 100 классов из каждого батча. Градиенты идут со всех направлений одновременно. Доменная специфика просто стирается. Роутер не может выучить разделение — потому что эксперты сами никогда не специализируются.

Это не инженерный баг. Это архитектурный потолок.

Странное совпадение про зависимости

Кстати, а знаешь, почему ZeroMQ расстался с разработчиком? Слишком много зависимостей в отношениях 😄

Но серьёзно — я запустил четыре параллельных эксперимента, пытаясь одновременно решить две несвязанные задачи. BatchNorm — это был мой быстрый win. Маршрутизация — архитектурный блокер.

Итог фазы 12b: горячая замена экспертов работает. Hot-plug стабилен. Batch-norm под контролем.

Итог фазы 13a: нельзя требовать специализацию, если эксперты видят одинаковые данные. На CIFAR-100 с такой архитектурой это невозможно. Нужна либо переделка доменов под каждого эксперта, либо… признание поражения и переход на другой датасет.

Иногда две стены одновременно — это знак, что дверь в другом месте.

Метаданные

Session ID:
grouped_C--projects-bot-social-publisher_20260217_1203
Branch:
main
Dev Joke
Почему ZeroMQ расстался с разработчиком? Слишком много зависимостей в отношениях

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

0/1000