Qwen3.6-35B-A3B-heretic
QSA indexers: разреженное внимание для длинного контекста
tvall43 опубликовал обученные QSA (Qwen Sparse Attention) indexers для llmfan46/Qwen3.6-35B-A3B-uncensored-heretic. Backbone, vision tower и projector заморожены — обучаются только сжатые MQA-индексаторы на десяти full-attention слоях (3, 7, …, 39).
⚙ Ключевые особенности
- 🔥 Обучение идёт против распределения dense-attention того же forward pass; основные веса не меняются.
- ⚙ Параметры: block size 4, budget 2048 tokens, 4 indexer heads, head dim 128, partial RoPE dim 64.
- 🖥 Сначала 300 text-шагов на fineweb-edu sample-10BT, затем 300 шагов с 50% synthetic image + text.
- 🌐 Рекомендуемый чекпоинт mm_64k — мультимодальное продолжение text_64k для запросов любой длины.
- 📊 На 131072 контексте с K=8192 grafted-модель даёт PPL 5.2117 против 5.1919 у dense (+0.45%).
💻 Пример
import torch
from qsa.hf_qsa import install
from qsa.train_indexer import load_causal_model
model = load_causal_model("llmfan46/Qwen3.6-35B-A3B-uncensored-heretic", dtype=torch.bfloat16, device_map="cuda")
install(model, block_size=4, budget=2048, indexer_heads=4, indexer_head_dim=128, rope_dim=64)
state = torch.load("mm_64k/qsa_indexers.pt", map_location="cpu")
for layer in range(40):
if layer in state: model.model.language_model.layers[layer].self_attn._qsa_indexer.load_state_dict(state[layer])
Подробнее
Stage 1: loss 0.4124, captured teacher mass 0.9491, dense PPL 6.9547 vs sparse 6.9632 (+0.1225%).Stage 2: loss 0.3820, captured mass 0.9464.
mm_64k при K=2048: capture text→image 0.7909, image→text 0.6613; text→text 0.8812.
Ограничение: часть heads получает градиенты ~1e-6…1e-8, кластер «мёртвых» heads (~30% в референсе) — свойство дизайна.
Для запуска нужен qsa и GPU; VRAM в карточке не указан.








Комментарии