Skip to content

TSCT — полная спецификация (для внешнего анализа)

Дата: 2026-10-03. Ветка: main f480095. Назначение: сверх-технология эксперта/FFN — ёмкость без вычислений. Этот документ — полная спецификация для аналитика: что устроено как, какие константы, что измерено, где открытые проблемы и оси оптимизации.

DormouseModel = Embedding(256) → LoopBlock × max_iter → RMSNorm → lm_head
LoopBlock (на итерацию, веса общие):
controller: sigmoid-гейты (w_attn, w_mem, w_ffn) + softmax-бленд экспертов
→ KDA (gated-delta attention, единственный attention-ARM)
→ Engram (FNV-hashed n-gram таблицы, ORDERS=[2,3,4])
→ n_experts × TSCT-экспертов (FFN-рука) ← ЗДЕСЬ
→ ReZero residual (или Gated Residual)
→ out_proj, усреднение по итерациям

TSCT — это FFN-рука: каждый эксперт заменяет плотный Linear(d, 4d) на спектрально-факторизованный. При n_experts > 1 плотного FFN нет — только эксперты.

2. Математика одного эксперта

Section titled “2. Математика одного эксперта”
W ∈ R^{d×f} (d = d_model = 768, f = 4d = 3072 в пресете small)
W ≈ U · diag(s) · Vᵀ
U ∈ R^{d×r}, V ∈ R^{f×r}, s ∈ R^r, r = 64 (ранг)
Эксперт = gate_up (d→2f, спектральный) → SiLU (нелинейность МЕЖДУ факторами) → down (f→d, спектральный).
Параметры: gate_up r·(d+2f) = 442k + down r·(f+d) = 247k = **689k на эксперта**.
Dense FFN (d→2f→d) = 7.08M. Сжатие **10.3×** (в спеке 247k была только down — уточнено внешним агентом).

Forward: y = x · U · diag(s) · Vᵀ — два матмула вместо одного, но ранг 64 вместо полной матрицы. Параметры эксперта: r·(d + f + 1) вместо d·f — при r=64, d=768, f=3072: 247k против 2.36M — 9.5× меньше параметров на эксперта.

3. Спектральная факторизация и ретракция (burn-spectral)

Section titled “3. Спектральная факторизация и ретракция (burn-spectral)”
  • Факторы инициализируются и поддерживаются ортогональными (UᵀU = I, VᵀV = I).
  • Поддержание — полярная ретракция (Newton–Schulz, burn-spectral): U ← polar(U) каждые retract_every шагов, retract_iters = 3 NS-итерации.
  • Коэффициенты NS: фиксированный тройной (1.875, −1.25, 0.375) — PolarExpress, бит-точный, без golden-константы.
  • Мастера факторов — fp32; квант применяется только к эффективному весу в forward.
  • Ретракция — фиксированная стоимость, НЕ амортизируется по batch: измерено 52–61 ms/step (22% шага при b8), 8× данные → 1.2× время ретракции.

4. max_ortho latch (защита от деградации ортогональности)

Section titled “4. max_ortho latch (защита от деградации ортогональности)”
  • Метрика: per-entry ‖UᵀU − I‖_F / r, считается каждые 500 шагов.
  • Порог: 1e-3 per-entry. Свежая инициализация ~1.4e-4; NS-3 сходится к ~6e-5.
  • Выше порога: все факторы эксперта необратимо переключаются в fp32 (one-way), проверки прекращаются, latch персистится в чекпоинт.
  • Зачем: квант факторов (fp8/fp4) ломает орто → без latch молча деградирует качество.

5. MoE-роутер (поверх экспертов)

Section titled “5. MoE-роутер (поверх экспертов)”
  • Логиты роутера: обучаемая голова, expert_logits [b·t, n_experts].
  • Вероятности: softmax p_i* БЕЗ ренормализации (Switch §2.1) — владельческое решение: ренорм ≡ 1.0 убивал градиент роутера. Гейт починен в fidelity-fix.
  • Load-balancing: lb_aux (auxiliary loss против коллапса роутера).
  • Бленд: softmax-взвешенная сумма выходов экспертов в контроллере.
  • Ёмкость: n_experts — лестница 2/4/8/16 (configs готовятся в bf-giant).

6. Квантование весов (лестница)

Section titled “6. Квантование весов (лестница)”
  • --quant fp32|bf16|fp16|fp8|fp4 — формат эффективного веса в forward.
  • Мастера всегда fp32; чекпоинты format-agnostic.
  • Лестница битности (открытый вопрос, каждая ступень = A/B 2k×3): fp8 (работает) → fp4 → int4 → ternary (BitNet b1.58, 1.58-bit).
  • Гейт ступени: max_ortho latch + BPB. Ступень мёртва, если latch горит постоянно.
  • LinearLike пэддит out_features до кратных 4 (векторизация матмула), срезает обратно.

7. BitNet a4.8 (активационное квантование, ортогонально весам)

Section titled “7. BitNet a4.8 (активационное квантование, ортогонально весам)”
  • act_quant.rs: квант активаций (веса в графе fp32), STE, f32-граф.
  • Сетки: E2M1 (fp4: 0, .5, 1, 1.5, 2, 3, 4, 6 — 8 магнитуд, 16 кодов), int4 (симметричный, 7 уровней), int8 (127). Дефект «0.75 вместо сетки» исправлен 2026-09-28.
  • Путь внимания: max(bits, 8) — 4-битного внимания не бывает.
  • Группа: --act-group N (per-token при 0).

8. Измеренные числа (provenance в benches/history.tsv)

Section titled “8. Измеренные числа (provenance в benches/history.tsv)”
величина число где
шаг 9.2M (byteflow, канон) 49 ms/step, 3.46 BPB @2k bfconfirm 2026-10-03
шаг 9.2M (dormouse b8, ночь) ~245 ms/step night_20261003.log
запусков/шаг 21 427 (KDA 65.5%, JEPA 22.3%, TSCT 15%) launch-atlas
ретракция 52–61 ms/step, не амортизируется §3.1
max_ortho свежая / NS-3 пол / порог 1.4e-4 / 6e-5 / 1e-3 §4
чинчилла 9.2M ~736 MB байтов = 180k шагов §2.6

9. Конфиг-поверхность (флаги)

Section titled “9. Конфиг-поверхность (флаги)”

--quant, --act-quant 4|8|fp4, --act-group, --retract-every, --retract-iters, --factors-fallback, --moe (n_experts через пресет/--set), --bf16, пресеты configs/*.toml (small, base, byteflow, byteflow_9m).

10. Открытые проблемы (оси для аналитика)

Section titled “10. Открытые проблемы (оси для аналитика)”
  1. Ретракция не амортизируется — фиксированная стоимость на каждый шаг. Ось: реже (каденс 5/10 — в пределах спреда контроля @2k, но не подтверждено 3k), дешевле (NS-2 вместо NS-3?), батчее.
  2. max_ortho latch на масштабе — при 50M–1B факторов больше, квант грубее; риск, что latch горит постоянно = молчаливый fp32. Ось: адаптивный порог, per-expert latch, квант-компенсация в ретракции.
  3. Лестница кванта — где кончается компенсация STE (fp8→fp4→int4→ternary)?
  4. Супер-спарсность (идея владельца): активные параметры = крошечная доля. Оси: (a) top-k по весам внутри эксперта (структурированная спарсность), (b) гейтирование ранга (s→0 для мёртвых сингулярных направлений), (c) MoE-ёмкость 8B/1B-active — уже даёт «8B при вычислениях 1B», (d) комбинация: супер-спарсный эксперт + MoE + квант.
  5. MoE-роутер учится специализироваться? — utilization-энтропия (moe-dev).
  6. TSCT на 1B — стоимость ретракции и память факторов на масштабе.

11. Что НЕ трогать (дисциплина)

Section titled “11. Что НЕ трогать (дисциплина)”
  • NaN-файрвол безусловен; resume-дисциплина (ADR-0005/0021); LOUD/COUNTED (ADR-0019); каждый механизм бьёт своё удаление на held-out BPB (§1.2, 3 сида, спред контроля).
  • Все числа — с provenance (config, дата, коммит, окно eval’а).

12. АУДИТ 2026-10-03 (аналитик + проверка кода): top-k НЕ диспетчит

Section titled “12. АУДИТ 2026-10-03 (аналитик + проверка кода): top-k НЕ диспетчит”

Подтверждено по коду (loop_block.rs:982-997): for e in 0..n_experts — ВСЕ эксперты вычисляются каждый шаг; moe_topk > 0 лишь обнуляет веса невыбранных в blend. FLOPs полные: «ёмкость без вычислений» сейчас не работает. Приоритет №1 — настоящий top-k dispatch (gather токенов → эксперт → scatter), FLOPs = k/E от полных.

Исследования от аналитика (2026-10-03)

Section titled “Исследования от аналитика (2026-10-03)”
работа идея для TSCT
MoRE 2609.36301 low-rank router + fused top-k; 1.83–4.54× prefill; НО training +15–42% (Adam по полному пулу)
FlexMoE 2606.27866 структурный prune групп каналов; 99.8% качества при 50% удаления; нужен kernel co-design
Intra-expert sparsity 2605.08575 пропуск нейронов по активации внутри эксперта; 95% при 85% sparsity; только inference
REAP 2510.13999 prune экспертов по gate×вклад, не по частоте
TileQ 2605.09281 общие low-rank факторы между экспертами + low-bit + 2D tiling — пул меньше по памяти

План аналитика (приоритет)

Section titled “План аналитика (приоритет)”
  1. top-k dispatch (k=1/2) + замер реальных expert GEMM/токен — ПРИОРИТЕТ №1
  2. структурный prune каналов/рангов (FlexMoE-стиль, физически в kernel)
  3. общая база факторов (TileQ) — память обучения: fp32-мастера + Adam не режутся routing’ом
  4. REAP-prune слабых экспертов
  5. activation sparsity — отдельно, inference
  6. ретракция — отдельным пакетом (каденс/NS-итеры); общие факторы могут дать ОДНУ ретракцию на базу