Hacking Diffusion into Qwen3 for the Arc Challenge
Краткий обзор
Повторяя подход победителей ARC-2024, я заметил: чем меньше модель уверена в пикселе, тем выше шанс ошибки. Авторегрессия заставляет «писать» решение слева-направо, как печатать на машинке без возврата.
Я переделал Qwen3-8B в диффузионный режим: сначала заполняем «лёгкие» токены, потом сложные. На 10 шагах модель быстрее и точнее по пикселям, но решает не больше задач. На 30 шагах точность совпадает с базовой, а время выше — из-за отсутствия кеширования.
Как работает генерация
- Кодируем вход как обычный LLM.
- Случайно маскируем 80 % выходных токенов.
- На каждом шаге модель предсказывает маскированные токены; выбираем наиболее вероятные и «размаскиваем».
- Повторяем, пока не останется масков.
Почему +1 % к пикселям ≠ +1 % к задачам
ARC требует абсолютного совпадения всей сетки. Даже 1 ошибка = 0 баллов. Диффузия чаще «почти» правильна, но «почти» не считается.
Технические детали
- Архитектура: обычный декодер → полносвязный «энкодер» без кэша.
- Обучение: 1 эпоха, lr 5e-5, batch 64, маскирование 80 %, аугментации поворот/отражение.
- Данные: 400 задач ARC + 800 синтетических, длина фиксирована 4096 токенов.
Результаты на eval-2025
Метод | Время | Точн. токенов | Решено задач |
---|---|---|---|
Авторегрессия | 1× | 94 % | 21 % |
Диффузия 10 шагов | 0.6× | 95 % | 19 % |
Диффузия 30 шагов | 1.3× | 94 % | 21 % |
Следующие шаги
- Вернуть кеш входных токенов, ограничив пересчёт скрытых состояний.
- Увеличить шаги до 50–100 при сохранении скорости.
- Попробовать «гибрид»: диффузия для грубой раскладки, авторегрессия для деталей.
Комментарии (15)
- @radarsat1 предложил добавить в генерацию LLM «токен backspace» для отмены уже выданных токенов, но @imtringued и @_diyar отметили, что при обычной однонаправленной архитектуре это сводится к возврату к прежнему состоянию и не решает проблему.
- @dev_hugepages указал на исследование (2306.05426), где такой механизм уже реализован в рамках IL-обучения.
- @mNovak отметил, что диффузионная модель решает головоломки итеративно, но «раскрывает» слишком мало токенов за ход, тратя лишние раунды.
- @namibj подчеркнул необходимость механизма «retraction», чтобы избежать застревания на ошибочных решениях.
- @twotwotwo заметил парадокс: люди чаще редактируют код, а LLM генерируют его целиком, что делает правку затратной.