Починил NVFP4 на Blackwell — не хватало CUDA 12.9

Утром я писал, что NVFP4 на Blackwell работает только для одной модели, а Gemma-26B и Qwen3.6-27B падают. К вечеру разобрался, в чём дело.

Обход с переключением attention-бэкенда завёл плотную Qwen3.6-27B чуть дальше, но сервер снова упал — новой ошибкой: No supported CUDA architectures found for major versions [12]. Причина была не в FlashInfer, а в JIT-компиляции FP8-ядра для SM120: она требует CUDA ≥12.9, а на боксе стоял 12.8.

Поставил 12.9 рядом, старый не трогал. Qwen завёлся.

Проверил на том же окружении Gemma-26B — завелась тоже, без утреннего хака с tie_word_embeddings:false, с целыми привязанными эмбеддингами. Похоже, утренняя гипотеза про баг tie_weights в vLLM была лишней: несовместимость CUDA сама по себе валила загрузку весов, и переэкспорт чекпоинта не понадобился.

Дальше замерил память. Утренние ~14 ГБ для Gemma и ~15 ГБ для Qwen были голой арифметикой — параметры × 4 бита. Реальный замер при загрузке:

→ Gemma-4-26B-A4B-NVFP4 — 18,16 ГБ → Qwen3.6-27B-NVFP4 — 20,0 ГБ

NVFP4-чекпоинт несёт блочные коэффициенты масштабирования и неквантованные слои внимания и эмбеддингов — это и добавляет 4–5 ГБ сверху формулы. В 16 ГБ не влезает ни одна из моделей — там по-прежнему только Gemma-12B-fp8. В 24 ГБ помещаются обе, но впритык: у Gemma остаётся ~5,8 ГБ под KV-кеш, у Qwen — около 4 ГБ.

За ночь дособрал полный бенчмарк (ruAIME + ruMMLU) на обеих:

МодельКвантruAIMEruMMLU
Gemma-4-26B-A4BNVFP40,73330,8280
Qwen3.6-27BNVFP40,73330,8162
Qwen3.6-27Bbf160,8330,8156
Gemma-4-12Bfp80,7000,8103

Gemma-26B-A4B в NVFP4 обошла и 12B, и собственный bf16-флагман по знанию. Прирост логичен: весит она больше — 18 ГБ против 16 у 12B, — и это честная цена, не бесплатный прирост. Разница с утренней QAT-GGUF версией той же модели (0,567 / 0,7006) огромная, +0,13–0,17, но там сравниваются не уровни точности, а два разных метода квантования — квант был слабым, не модель.

С плотной Qwen3.6-27B картина ровнее — как и должна выглядеть настоящая цена квантизации на одной и той же модели: знание на месте (0,8162 против 0,8156 — шум), математика просела на десять пунктов (0,7333 против 0,833).

Обход воспроизводим: два флага окружения плюс один пакет тулкита, поставленный один раз на бокс. Таблица обновлена: bench.csylabs.com/ru.

Читать по теме