SDXSv3: глубина через повтор слоёв
Заметка на русском про устройство трансформера SDXSv3. Фокус — рекуррентность, то есть переиспользование одних и тех же слоёв.
О модели
SDXSv3 — single-stream DiT. Эмбеддинги Qwen склеиваются с латентами VAE в одну последовательность, дальше всё идёт через общие блоки. Кросс-аттеншена нет.
Параметры:
- скрытая размерность 2560, 20 голов по 128
- полное внимание (
kvheads = 20, без GQA) - текст: Qwen3.5-2B, скрытая 2048, берутся три слоя
[2,12,22] - патч 2, VAE с 32 каналами, энкодер f8, декодер f16
Глубина через повтор
Два входных блока, двенадцать блоков середины, два выходных. Середина применяется дважды с общими весами.
- 28 проходов через 16 уникальных блоков
- параметры 1,65 млрд (3,3 ГБ bf16)
- по работе — как 28-слойный трансформер, около 92 гигафлопс на токен
Чтобы блок знал номер оборота, на каждом проходе к вектору условий добавляется обучаемое loop_emb, плюс своя нормализация перед блоком. Без этого второй проход неотличим от первого, и петля вырождается в одну и ту же функцию.
Следствие: готовые веса сюда не подойдут. Блок, обученный быть первым проходом, на втором деградирует, пока не научится различать витки, поэтому общая середина тренируется с нуля.
По сути это Universal Transformer, но петля здесь нужна не ради рекуррентной обработки, а чтобы поднять число проходов, не наращивая параметры.
Двенадцать блоков дважды — не то же самое, что 24 разных. Но если впихивать больше вычислений в тот же размер, повтор дешевле всего. Плата — не каждый слой выдержит применение дважды и не размоет накопленное, поэтому повторяют середину, а не края.
Model tree for recoilme/sdxs-dit-ru
Base model
black-forest-labs/FLUX.2-klein-4B