125B-модель Qwen3.8-Flash-Next запускается на одной RTX 4090 с пиковым потреблением всего 5,95 ГБ VRAM — без 4-битной квантизации и дистилляции. Для этого используется AirLLM, который не пытается загрузить весь checkpoint в видеопамять.
По данным разработчиков AirLLM, тест проводился с полным checkpoint в BF16 и greedy decoding.
Как 125B помещается в 6 ГБ
Главный трюк — не пытаться держать всю модель в памяти одновременно.
Qwen3.8-Flash-Next использует MoE-архитектуру и большой n-gram/PLE-компонент. Полный checkpoint занимает около 360 ГБ, а одна только n-gram-таблица — порядка 102 ГБ в BF16.
AirLLM разбивает модель на слои и загружает их последовательно: нужный слой попадает на GPU, выполняет вычисления, после чего память освобождается для следующего.
С n-gram-таблицей используется другой подход — memory mapping (mmap). Она остаётся на диске и отображается в память хоста по мере необходимости, вместо того чтобы целиком копироваться в RAM или VRAM. По данным AirLLM, для такого запуска достаточно машины с 64 ГБ оперативной памяти.
В итоге получается следующая схема:
checkpoint — около 360 ГБ на диске;
n-gram table — около 102 ГБ, обрабатывается через mmap;
decoder layers — последовательно стримятся на GPU;
пиковое потребление VRAM — 5,95 ГБ.
То есть 24 ГБ VRAM для самой загрузки модели не обязательны. Теоретически достаточно GPU с 8 ГБ памяти, хотя итоговый запас зависит от конкретной конфигурации и режима работы.
Что потребуется для запуска
AirLLM уже добавил поддержку Qwen3.8-Flash-Next. В документации Transformers архитектура Qwen4-Exp описана через GatedResidual, Qwen Sparse Attention и Per-Layer Embedding (PLE); для мультимодальной версии используется Qwen4ExpForConditionalGeneration.
На момент теста требовалась версия Transformers из GitHub, где qwen4_exp уже находится непосредственно в кодовой базе:
Затем модель загружается обычным вызовом AirLLM:
from airllm import AutoModel
model = AutoModel.from_pretrained(
"Qwen/Qwen3.8-Flash-Next",
delete_original=True
)
input_text = ["What is the capital of France? Answer in one word."]
input_tokens = model.tokenizer(
input_text,
return_tensors="pt",
return_attention_mask=False,
truncation=True,
max_length=128,
padding=False
)
generation_output = model.generate(
input_tokens["input_ids"].cuda(),
max_new_tokens=8,
use_cache=True,
return_dict_in_generate=True
)
print(model.tokenizer.decode(generation_output.sequences[0]))
Параметр delete_original=True позволяет удалить исходные файлы checkpoint после разбиения модели и освободить место на диске.
Где здесь ограничение
Низкое потребление VRAM не означает, что 125B-модель физически стала «моделью на 6 ГБ».
Основная нагрузка переносится на SSD и RAM. Нужен быстрый накопитель с несколькими сотнями гигабайт свободного места и примерно 64 ГБ оперативной памяти. При первом запуске некоторое время одновременно хранятся исходный checkpoint и его разбитая версия.
Зато GPU перестаёт быть главным ограничением. AirLLM показывает, что большие open-weight модели можно запускать локально даже на относительно скромных видеокартах, если правильно организовать загрузку весов.
Исходный код AirLLM открыт под лицензией MIT, а поддержка Qwen3.8-Flash-Next появилась в версии 3.3.0. Проект доступен в репозитории AirLLM на GitHub.
Главный вывод: для локального запуска Qwen3.8-Flash-Next теперь важнее иметь достаточно быстрый SSD и 64 ГБ RAM, чем дорогую видеокарту с огромным объёмом VRAM.