Qwen3.8-Flash-Next - открытая 125B-модель на архитектуре, которая станет основой Qwen4. По опубликованным Qwen результатам она конкурирует с закрытыми frontier-моделями в задачах программирования, работы с агентами и computer use.

Мы запустили полный checkpoint Qwen/Qwen3.8-Flash-Next на одной RTX 4090. Пиковое потребление VRAM составило 5,95 ГБ, без 4-битной квантизации и дистилляции. Использовался полный checkpoint в bf16, который генерировал обычные токены.

По сравнению с Opus 4.6 Max, согласно собственным данным Qwen:

Бенчмарк
Бенчмарк

Стримим слои и не загружаем таблицу на 102 ГБ

Qwen3.8-Flash-Next построена на 125B Mixture-of-Experts backbone, при этом на каждый токен активно около 6B параметров. Кроме него есть 51B n-gram embedding, native vision, thinking по умолчанию и контекстное окно на 262K токенов.

Главная проблема при локальном запуске - размер checkpoint. Дамп на Hugging Face занимает около 360 ГБ в bfloat16. Один MoE-слой занимает несколько гигабайт, а n-gram embedding примерно 102 ГБ. Обычная загрузка через Hugging Face в таком случае требует совсем другого объёма памяти.

Здесь используется layer-wise inference. Transformer выполняет слои последовательно, поэтому держать всю модель в памяти одновременно не обязательно. Можно загрузить один слой с диска, выполнить вычисления, освободить память и перейти к следующему. Для некоторых больших MoE-моделей этого недостаточно. Например, у Kimi K3 один слой в развёрнутом виде занимает около 56 ГБ. Он сам не помещается на GPU, поэтому приходится стримить отдельные experts.

У Flash-Next структура другая. В модели 48 гибридных слоёв: Gated DeltaNet, Qwen Sparse Attention и MoE. Целый MoE-слой занимает несколько гигабайт в bf16 и помещается в память. Поэтому здесь снова достаточно стриминга на уровне слоёв.

Отдельная проблема - n-gram embedding. Это lookup table на 51B параметров, которая подключается в одном из decoder layers и занимает около 102 ГБ в bf16. Hugging Face при обычной загрузке конкатенирует эту таблицу. Поместить её целиком в VRAM не получится. На машине с 64 ГБ RAM полностью развернуть её в оперативной памяти тоже нельзя.

AirLLM извлекает таблицу из родительского слоя и использует memory mapping на стороне host. Modeling code уже умеет выбирать нужные строки на устройстве, где находится таблица. Поэтому все 102 ГБ не копируются в VRAM и не выделяются как обычная anonymous RAM.

В результате машины с 64 ГБ оперативной памяти достаточно.

Получается примерно такая схема:

  • полный checkpoint в bf16 около 360 ГБ;

  • в GPU одновременно находятся vision tower, текущий decoder layer и activations;

  • n-gram table размером около 102 ГБ остаётся на диске, отображается в память и обрабатывается на CPU;

  • измеренный пиковый расход VRAM 5,95 ГБ.

То есть модель можно запустить не только на 24-гигабайтной RTX 4090. По объёму VRAM она помещается и на GPU с 8 ГБ памяти.

Настройка

Flash-Next - native vision-language model. Vision tower находится в model.visual, 48-слойный гибридный decoder в model.language_model, а n-gram table вложена в один из слоёв.

В Hugging Face модель зарегистрирована как Qwen4ExpForConditionalGeneration. Архитектура находится непосредственно в transformers, поэтому подключать и фиксировать отдельный remote code не требуется. AirLLM определяет этот класс, создаёт пустую модель на meta device, стримит decoder, оставляет vision tower в памяти и подключает n-gram table через mmap.

Замеры выше относятся к text-only generate(). С vision есть отдельный нюанс: если передать первые pixel_values без соответствующей подготовки, они попадут в meta tensor и выполнение завершится ошибкой. Для обычного запуска знать внутреннюю структуру модели не обязательно. Интерфейс остается простым:

AutoModel.from_pretrained("Qwen/Qwen3.8-Flash-Next")

Остальную работу AirLLM выполняет сам.

Запуск

AirLLM самостоятельно определяет архитектуру Flash-Next. При первом запуске он разбивает checkpoint по слоям, после чего стримит decoder layers, подключает n-gram table через mmap и оставляет vision tower resident.

pip install -U "airllm>=3.3.0"
pip install git+https://github.com/huggingface/transformers.git
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]))

Для Flash-Next есть отдельное требование - нужна версия transformers, в которой qwen4_exp уже находится in-tree. На момент описываемого запуска это GitHub main. При этом зависимость transformers внутри самого AirLLM остается зафиксированной на более консервативной версии, поэтому актуальную версию нужно установить поверх неё из Github.

Также стоит заранее освободить несколько сотен гигабайт на диске. Во время первого запуска одновременно хранятся исходный checkpoint и его разбиение по слоям.

После завершения split исходные файлы можно удалить с помощью:

delete_original=True

Результаты

Тест проводился на одной RTX 4090 с 24 ГБ VRAM. Использовался полный checkpoint в bf16 и greedy decoding, без квантизации.

Пиковая виртуальная память
Пиковая виртуальная память

Пиковое потребление GPU-памяти составило 5,95 ГБ. Размер самой видеокарты здесь не так важен, в отличие от того, что runtime footprint модели укладывается примерно в 6 ГБ.

Flash-Next рассчитана на типичные задачи универсальной модели: coding agents, computer use, работу с документами и скриншотами. Native vision позволяет напрямую передавать визуальные данные. Такой режим запуска также подходит для предварительной оценки модели перед переносом на более мощный GPU и для экспериментов со стеком, который предваряет Qwen4. Основное ограничение смещается с VRAM на storage и RAM. Для запуска нужен SSD с достаточным свободным местом и машина примерно с 64 ГБ оперативной памяти.

H100 для самого inference в таком режиме не требуется.

Что изменилось для локального запуска больших моделей

Последние несколько лет качество open-weight моделей росло быстрее, чем доступность железа для их локального запуска. Крупные модели можно было скачать, но для inference всt равно требовалось серверное GPU-железо или облако.

Kimi K3 показала, что большие MoE-модели можно запускать иначе, если стримить experts. Для Qwen3.8-27B аналогичный подход сделал интереснее локальный запуск более традиционной модели.

В случае Flash-Next получается следующий набор характеристик: 125B MoE, 51B n-gram table, native vision и длинный контекст. При этом полный checkpoint можно запускать без квантизации примерно с 5,95 ГБ VRAM. Это не означает, что вся модель помещается в 6 ГБ. Большая часть данных остаётся на SSD и подгружается по мере необходимости. Для n-gram table используется mmap, а decoder layers стримятся последовательно.

Требования к GPU действительно становятся заметно ниже. Для такого запуска достаточно видеокарты с 8 ГБ VRAM, 64 ГБ RAM и диска с несколькими сотнями гигабайт свободного места.

При этом веса остаются локальными: модель можно запускать offline, использовать для обработки скриншотов, исследовать внутреннее устройство Qwen4-preview и экспериментировать с fine-tuning без зависимости от закрытого API.

AirLLM распространяется как open source под лицензией MIT:

Версия 3.3.0 устанавливается командой:

pip install -U airllm

Поддержка новых моделей добавляется в проект по мере необходимости. Запрос на поддержку конкретной архитектуры можно оставить через issue в репозитории.

Чтобы не тратить время на ежедневный мониторинг десятков AI-релизов, я делаю это за вас: тестирую новые модели и обновления и публикую в ДругОпенсурса только то, что действительно стоит внимания. Там же короткие выводы из тестов и мои наблюдения о том, что реально полезно в работе.

Комментарии (12)