Проблема: три модели, одна проблема
Представьте: ваш homelab работает на полную. В одном углу - Mistral-7B, отвечает на вопросы по коду. В другом - Llama-3.1-70B, генерирует тексты. В третьем - специализированная модель для анализа данных. Три отдельных инференс-сервера, три раза потребление памяти, три раза проблемы с обновлениями. И все это греет комнату лучше любого обогревателя.
Я столкнулся с этим именно. Три модели, три разных фреймворка, три точки отказа. И главное - неэффективное использование ресурсов. Когда одна модель простаивает, ее GPU нельзя просто взять и отдать другой. В 2026 году это уже не просто расточительство, это технический долг, который кричит каждую ночь.
Почему MoE? Или "один за всех"
MoE (Mixture of Experts) - это не просто модное слово. Это архитектура, где модель состоит из "экспертов", и для каждого токена активируется только часть из них. На практике это значит, что большая модель может быть эффективной в вычислениях, если правильно настроена.
Вместо трех отдельных моделей, одна MoE-модель может выполнять все задачи, потому что ее эксперты специализируются на разных доменах. И да, это работает. Не идеально, но для homelab - это прорыв.
Кстати, если вы хотите углубиться в обслуживание множества MoE-моделей, у меня есть статья про Multi-LoRA serving в vLLM 0.15.0.
Выбор модели: Qwen3.5-122B
Почему именно она? На март 2026 года Qwen3.5-122B - одна из самых сбалансированных MoE-моделей с открытыми весами. 122 миллиарда параметров, но за счет MoE-архитектуры активируется только около 24B на токен. Это делает ее быстрее, чем плотные модели аналогичного размера.
Качество? На уровне Llama-3.1-70B, а в некоторых задачах лучше. И она многоязычная, что для меня важно.
Альтернативы? Есть, но Qwen3.5-122B хорошо документирована, и сообщество активно работает над ее оптимизацией.
Квантование: зачем и какое?
122B параметров в FP16 - это около 244 GB памяти. Даже с 2x RTX 4090 по 24GB каждая, этого недостаточно. Поэтому квантование - необходимость.
Я тестировал разные квантования в llama.cpp: Q4_K_M, Q5_K_M, и новый IQ3. IQ3 - это 3-битное квантование с улучшенной точностью. На бумаге звучит хорошо, но на практике?
| Квантование | Размер модели | Качество (по оценке) | Скорость (tok/s) |
|---|---|---|---|
| Q4_K_M | ~61 GB | Хорошо | 12.5 |
| Q5_K_M | ~71 GB | Очень хорошо | 10.8 |
| IQ3 | ~46 GB | Отлично | 14.2 |
IQ3 выигрывает по размеру и скорости, с минимальной потерей качества. Для homelab это идеально: модель помещается в память двух GPU, и скорость генерации приемлема.
Как квантовать? С помощью llama.cpp:
./llama-quantize /path/to/qwen3.5-122b-f16.gguf /path/to/qwen3.5-122b-IQ3.gguf IQ3
Но предупреждение: квантование такой большой модели займет время и много оперативной памяти. Убедитесь, что у вас есть хотя бы 128 GB RAM.
Бенчмарки: скорость и память
Мой homelab: AMD Ryzen 9 7950X, 128 GB DDR5, 2x RTX 4090 24GB, NVLink. Система на Ubuntu 24.04 LTS, драйвера NVIDIA 550.x, CUDA 12.6.
Для инференса использовал vLLM 0.15.0 (последняя на март 2026) с поддержкой MoE. Настройки: tensor parallelism=2, gpu_memory_utilization=0.9.
Сравнение с предыдущей установкой (три отдельные модели):
- Общее потребление памяти GPU: было 3x 16GB = 48GB, стало 2x 20GB = 40GB (с квантованием IQ3).
- Скорость генерации: средняя по трем задачам - было 9 tok/s, стало 14 tok/s на Qwen3.5-122B-IQ3.
- Загрузка CPU: упала, потому что меньше процессов.
Но не все так гладко. При использовании vLLM с MoE есть нюансы. Например, если вы используете NVLink, убедитесь, что он включен и работает. Иначе меж-GPU коммуникация будет через PCIe, и скорость упадет.
Для масштабных MoE-моделей, как Qwen3.5-397B, нужно больше GPU. У меня есть статья про оптимизацию serving massive MoE моделей, где разбираются такие случаи.
Пошаговый план замены
1 Оценка ресурсов
Перед скачиванием 100+ GB модели, проверьте, что у вас есть место на диске и память. Для Qwen3.5-122B в FP16 нужно 244 GB, для квантованной IQ3 - 46 GB. Но в процессе квантования потребуется еще больше временного места.
2 Скачивание и квантование
Скачайте модель в формате GGUF или исходные веса. Я использовал Hugging Face, но скорость может быть низкой. Рекомендую использовать aria2 или wget с резюме.
# Пример скачивания с Hugging Face
git lfs install
git clone https://huggingface.co/Qwen/Qwen3.5-122B
Затем конвертируйте в GGUF с помощью llama.cpp и квантуйте в IQ3, как показано выше.
3 Настройка vLLM для MoE
Установите vLLM последней версии. На март 2026 это 0.15.0, но проверьте актуальность.
pip install vllm==0.15.0
Запустите сервер с MoE-моделью:
python -m vllm.entrypoints.openai.api_server \
--model /path/to/qwen3.5-122b-IQ3.gguf \
--tensor-parallel-size 2 \
--gpu-memory-utilization 0.9 \
--served-model-name qwen3.5-122b
Если у вас несколько GPU, tensor-parallel-size должно быть равно числу GPU. Для MoE моделей в vLLM есть специальные настройки, например, --moe-backend. По умолчанию используется auto, но если возникают проблемы, попробуйте указать явно.
Внимание: в vLLM 0.15.0 для MoE моделей на архитектуре Blackwell (RTX 5090/Pro 6000) могут потребоваться дополнительные флаги. Подробнее в статье про фикс сломанных ядер через --moe-backend marlin.
4 Тестирование и мониторинг
После запуска проверьте, что сервер отвечает. Используйте curl или клиент OpenAI. Затем запустите бенчмарки: измерьте скорость генерации, потребление памяти, загрузку GPU.
Я использовал свой скрипт на Python, но можно использовать встроенные бенчмарки vLLM или инструменты like lm-evaluation-harness.
Нюансы, которые сломают вам день
1. GLM Flash Attention: Qwen3.5 использует GLM-архитектуру, и в vLLM может быть проблема с flash attention. Если вы видите ошибки, связанные с attention, отключите flash attention: --disable-flash-attn.
2. Память GPU: Несмотря на квантование, модель может не помещаться, если вы выделите слишком много памяти для других процессов. Используйте --gpu-memory-utilization для контроля.
3. Скорость PCIe: Если у вас несколько GPU без NVLink, убедитесь, что они подключены к слотам PCIe x16. Иначе меж-GPU обмен данными станет узким местом.
4. Температура: Большие модели нагружают GPU. Убедитесь в адекватном охлаждении, иначе троттлинг снизит скорость.
5. Качество квантования: IQ3 хорош, но для критических задач проверьте качество на вашем датасете. Иногда Q5_K_M может быть надежнее.
Если вы запускаете на CPU, то это отдельная история. У меня есть статья про CPU-only MoE, но для 122B модели на CPU скорость будет очень низкой.
Что в итоге?
Замена трех LLM на одну MoE 122B с квантованием IQ3 дала:
- Экономию памяти GPU: с 48GB до 40GB.
- Увеличение скорости генерации: с 9 до 14 tok/s в среднем.
- Упрощение инфраструктуры: один сервер вместо трех.
- Снижение энергопотребления: примерно на 30% (по замерам из розетки).
Но есть и компромиссы: модель больше и сложнее, требует тщательной настройки. И если один GPU выйдет из строя, вся система падает. В предыдущей установке можно было переключиться на другие модели.
Стоит ли переходить? Если у вас homelab с несколькими GPU и вы готовы потратить время на настройку - да. Если вы предпочитаете простоту и отказоустойчивость, возможно, нет.
На 2026 год тренд идет к более эффективным MoE-моделям. Скоро появятся модели с динамическим выбором экспертов, что еще больше улучшит ситуацию. А пока Qwen3.5-122B - отличный выбор для homelab.
И последнее: не забывайте мониторить стоимость токена. Для homelab это может быть не критично, но если вы планируете масштабироваться, посмотрите статью про реальную стоимость токена в vLLM на 2026 год.