Тестирование Qwen3.5-397B-A17B на 2x3090Ti: настройки llama-bench, ngl layers, cpu-moe | AiManual
AiManual Logo Ai / Manual.
17 Фев 2026 Гайд

Qwen3.5-397B-A17B на домашнем железе: когда 2 видеокарты — это почти достаточно

Практический гайд по запуску модели Qwen3.5-397B-A17B на домашнем железе с EPYC 7402p и 2x3090Ti. Реальные результаты, настройки llama.cpp и оптимизация под огр

397 миллиардов параметров против 24 гигабайт VRAM: кто кого?

Помните тот момент, когда запустить 13B-модель на одной видеокарте казалось прорывом? Сегодня это детский лепет. Qwen3.5-397B-A17B — это не просто большая модель. Это чудовище с 397 миллиардами параметров, которое по заявлениям Alibaba Cloud обгоняет GPT-4-1106 в большинстве бенчмарков. И я решил запустить его на домашнем железе. Просто чтобы посмотреть, что произойдет.

Важное уточнение на февраль 2026: Qwen3.5-397B-A17B — это самая новая версия в линейке гигантских моделей от Alibaba. A17B в названии означает улучшенную архитектуру с лучшей поддержкой смешанного экспертного подхода (MoE). Если вы видите старые статьи про Qwen3.5-397B без этого суффикса — они уже неактуальны.

Железо: где искать компромиссы

Мой стенд выглядит так, будто я готовлюсь к майнингу в 2021:

  • Процессор: AMD EPYC 7402p (24 ядра, 48 потоков)
  • Оперативная память: 256 GB DDR4-3200
  • Видеокарты: 2x NVIDIA GeForce RTX 3090 Ti (по 24 GB GDDR6X каждая)
  • Хранение: 2x NVMe SSD 2TB в RAID0

Кажется, что 48 гигабайт VRAM — это много. До тех пор, пока не пытаешься загрузить туда 397 миллиардов параметров. Даже в 4-битном квантовании модель занимает около 200 GB. Математика простая: либо мы используем CPU для части вычислений, либо забываем про эту затею.

💡
Если вы только начинаете с локальных LLM, рекомендую начать с более скромных моделей. В статье "Ваша видеокарта — не бездонная бочка" я подробно разбираю, как выбирать модели под свое железо.

Подготовка: не пытайтесь повторить это на Windows

Первое правило запуска гигантских моделей: используйте Linux. Второе правило: используйте Linux. Windows с ее управлением памятью просто не справится. Я использовал Ubuntu 24.04 LTS с ядром 6.8.

1 Скачиваем модель и llama.cpp

На февраль 2026 актуальная версия llama.cpp — 4.2.1 с полной поддержкой Qwen3.5. Более старые версии могут не работать с A17B архитектурой.

# Клонируем репозиторий с поддержкой CUDA
git clone --recursive https://github.com/ggerganov/llama.cpp
cd llama.cpp
make clean && LLAMA_CUDA=1 make -j$(nproc)

Модель скачиваем в GGUF формате. На февраль 2026 самые оптимальные варианты:

  • Qwen3.5-397B-A17B-Q4_K_M.gguf — баланс между качеством и размером (около 200 GB)
  • Qwen3.5-397B-A17B-Q3_K_M.gguf — для тех, у кого совсем мало памяти (около 150 GB)

Важно: не путайте Qwen3.5-397B-A17B с обычным Qwen3.5-397B. Архитектура A17B использует улучшенный MoE (Mixture of Experts), который требует специальной поддержки в llama.cpp версии 4.1+. Старые версии просто упадут с ошибкой.

2 Настраиваем распределение слоев

Вот где начинается магия. Параметр -ngl (number of GPU layers) определяет, сколько слоев модели будут загружены в VRAM. Остальные уйдут в оперативную память и будут вычисляться на CPU.

Сначала проверяем, сколько слоев в модели:

./llama-cli -m Qwen3.5-397B-A17B-Q4_K_M.gguf --no-mmap --no-mlock -p "test" -n 1 | grep "layers"

В моем случае модель имеет 160 слоев. Теперь экспериментируем:

# Вариант 1: Максимально на GPU
./llama-cli -m Qwen3.5-397B-A17B-Q4_K_M.gguf -ngl 160 -t 48 -c 4096 --temp 0.7 --repeat-penalty 1.1 -p "Расскажи о квантовых вычислениях"

# Вариант 2: Компромиссный
./llama-cli -m Qwen3.5-397B-A17B-Q4_K_M.gguf -ngl 80 -t 96 -c 4096 --temp 0.7 --repeat-penalty 1.1

# Вариант 3: Минимум на GPU (для тестирования)
./llama-cli -m Qwen3.5-397B-A17B-Q4_K_M.gguf -ngl 40 -t 144 -c 2048

Результаты: медленно, но работает

Запускаю llama-bench для объективных измерений:

./llama-bench -m Qwen3.5-397B-A17B-Q4_K_M.gguf -ngl 80 -t 96 -c 512
Конфигурация Слоев на GPU Токенов/сек Использование VRAM Загрузка CPU
Максимальная 160 (все) 0.8-1.2 47.8/48 GB 15-20%
Оптимальная 80 0.6-0.9 38.2/48 GB 60-80%
Минимальная 40 0.3-0.5 24.1/48 GB 90-100%

Да, вы не ослышались. 0.8-1.2 токена в секунду. Это не опечатка. Для сравнения: Qwen3-235B на том же железе выдает 4-5 токенов в секунду.

cpu-moe: секретное оружие для гигантских моделей

С февраля 2025 в llama.cpp появился флаг --cpu-moe, который меняет правила игры для MoE-моделей. Вместо того чтобы загружать всех экспертов в память, система динамически подгружает только нужных экспертов для каждого токена.

./llama-cli -m Qwen3.5-397B-A17B-Q4_K_M.gguf -ngl 60 --cpu-moe -t 96 -c 4096

Что это дает на практике:

  • Потребление VRAM снижается на 30-40%
  • Скорость падает всего на 10-15% (благодаря кэшированию экспертов)
  • Можно увеличить контекстное окно с 4K до 8K токенов

Внимание: --cpu-moe работает только с моделями, использующими архитектуру Mixture of Experts. Для обычных плотных моделей этот флаг не даст эффекта. Также требуется llama.cpp версии 4.1+.

Практическое применение: когда это вообще нужно?

Справедливый вопрос: зачем терпеть 1 токен в секунду? Ответ: для специфических задач, где качество ответа критически важно.

Я протестировал модель на:

  1. Написании сложного технического кода с редкими библиотеками
  2. Анализе научных статей с последующим генерированием выводов
  3. Многоэтапном логическом reasoning (цепочки рассуждений)

Результат: Qwen3.5-397B-A17B справляется с задачами, которые не по зубам даже 70B-моделям. Разница в качестве заметна сразу. Это как сравнивать школьный калькулятор и Mathematica.

💡
Если вам интересны альтернативные подходы к запуску больших моделей, посмотрите статью "397 миллиардов параметров на вашем ПК", где я сравниваю разные методы квантования и оптимизации.

Ошибки, которые гарантированно сломают ваш запуск

За неделю экспериментов я наступил на все возможные грабли:

1. Недостаточный swap

Linux убивает процесс, когда заканчивается память. Решение:

# Создаем swap файл 128GB
sudo fallocate -l 128G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

2. Неправильные флаги mmap

Для моделей больше 100GB обязательно использовать:

--no-mmap --no-mlock

Иначе система будет пытаться загрузить всю модель в RAM, что приведет к падению.

3. Забытый флаг --tensor-split

Для двух видеокарт нужно явно указать распределение:

--tensor-split 24,24

Первое число — память первой карты, второе — второй. Можно настроить баланс, например 30,18 если одна карта быстрее.

Стоит ли игра свеч?

Честно? Для 99% пользователей — нет. Qwen3.5-72B даст 90% качества при в 20 раз большей скорости. Но...

Есть магический момент, когда ты задаешь вопрос, на который не ответила ни одна модель поменьше, а эта — отвечает. И отвечает так, что понимаешь: вот оно, настоящее ИИ. Не чат-бот, а система, способная на сложные абстракции.

Мой вердикт: запускать Qwen3.5-397B-A17B на домашнем железе в 2026 году — это как гонять на Ferrari по пробкам. Непрактично, дорого, медленно. Но черт возьми, как же это круто.

Если решитесь повторить — начинайте с Qwen3.5 в llama.cpp, где разобраны основы работы с этими моделями. А когда освоитесь — возвращайтесь к гиганту. Он подождет. Как и его ответы.