На небесах сейчас только и разговоров о новой модели ОпенАИ - Астра… — whargarbl — TG.ME

На небесах сейчас только и разговоров о новой модели ОпенАИ - Астра, рекурентных блоках - универсальный трансформер и вот это вот всё

Я делаю примерно то же самое, но для другого - компактная диффузионаая модель

Прямо сейчас стремительно идет яростная дистиляция из флюкс Клейн на скромной RTX-5090

Худеем вместе!

https://huggingface.co/recoilme/sdxsv3

Самое интересное тут что если просто "залупить" модель- выходит полная чухня. В процессе обучения каждый блок "привыкает" работать с определенным уровнем шума на входе - и если подать выход с 16 блока на вход 0-го - он будет просто в ахере. Более того, не все блоки одинаково устойчивы к лупу. Крайние блоки - крайне нервно реагируют даже на собственный выход - "что это за слоп ты мне подал на вход?"

В репе код обучения адаптера для ТЕ и собственно код дистиляции, а сама идея за кадром - она примерно такая:

SDXSv3: как выжать глубину из повтора слоёв


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

Архитектура в базе

SDXSv3 построена по схеме single-stream DiT. Здесь нет отдельного кросс-эттеншна: текстовые эмбеддинги из Qwen конкатенируются с визуальными латентами VAE в единую последовательность, после чего весь массив обрабатывается общими блоками внимания.

* Трансформер: скрытая размерность 2560, 20 голов (по 128 на голову). Честное полное внимание — никаких компромиссов вроде GQA, число KV-голов тоже равно 20.
* Текстовый энкодер: Qwen3.5-2B (скрытый размер 2048). Модель забирает срез из трех слоев — 2-го, 12-го и 22-го.
* Визуальная часть: патч 2, 32-канальный VAE с энкодером f8 и декодером f16.

Трюк с петлей: 28 слоев из 16 блоков

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

В итоге модель делает 28 сквозных проходов, физически храня в памяти лишь 16 уникальных блоков:
* Вес: 1,65 млрд параметров (~3,3 ГБ в формате bf16).
* Вычислительная плотность: на инференсе работает как полноценный 28-слойный трансформер (~92 GFLOPs на токен).

Как заставить слой работать дважды

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

1. `loop_emb` — обучаемый вектор номера оборота, подмешиваемый к общим условиям.
2. Индивидуальная нормализация перед каждым витком.

Из-за этого архитектурного решения готовую предобученную середину сюда не перенести. Слой, привыкший работать на 5-м шаге, сломается, если внезапно станет 17-м. Модель обязана с нуля учиться адаптировать свое поведение под номер витка.

Зачем это нужно

Идейно это близко к концепции *Universal Transformer*, но цель здесь сугубо прикладная: не моделировать бесконечные рассуждения, а задешево нарастить эффективную глубину вычислений в жестком лимите памяти.

Двенадцать блоков, пройденных дважды, по выразительности уступают 24 уникальным. Однако входные и выходные слои отвечают за слишком деликатную адаптацию признаков, поэтому их оставили уникальными, а вот устойчивая середина отлично переносит повторный цикл без потери сигнала.
🍌3🐳1🗿1
September 3, 2026 198 4 4