Конфигурация тестового стенда: железо, софт и методика
Тестовый стенд собран из трёх GPU: одна GTX 1080 Ti (11 ГБ VRAM) и две P102-100 (по 10 ГБ каждая). Суммарный объём видеопамяти - 31 ГБ. Все карты ограничены по энергопотреблению до 150 Вт через программный лимит мощности. Операционная система - Kubuntu 26.04, фреймворк для инференса - llama.cpp с бэкендом Vulkan. Выбор Vulkan продиктован отсутствием актуальной поддержки CUDA на картах поколения Pascal в свежих драйверах: Vulkan даёт стабильную работу на старом железе без патчей и хаков.
Методика замера едина для всех моделей. Перед каждым тестом GPU прогреваются в течение 5 минут под нагрузкой. Для каждой модели выполняется три прогона, результаты усредняются. Используются две метрики: tg128 - скорость генерации 128 токенов (имитация быстрого ответа в чате), pp512 - скорость обработки промпта длиной 512 токенов (prefill, критичен для длинных контекстов). Квантование для всех моделей - Q4_K_M, размер контекста - 4096 токенов.
Почему GTX 1080 Ti и P102-100: экономика сборки в 2026 году
На вторичном рынке GTX 1080 Ti стоит около 12 000 рублей, P102-100 - 4 000–5 000 рублей за штуку. Суммарная стоимость трёх карт - порядка 22 000 рублей. Для сравнения: одна RTX 4060 Ti 16GB обойдётся в 45 000–50 000 рублей и даст только 16 ГБ VRAM. Цена гигабайта видеопамяти в этой сборке - 710 рублей, против 2 800 рублей у RTX 4060 Ti. Разница вчетверо.
Ограничения очевидны. P102-100 - майнинговая карта без видеовыходов, с урезанной до 320 ГБ/с шиной памяти (против 484 ГБ/с у GTX 1080 Ti). Поддержка FP8 отсутствует, тензорные ядра неполноценны. Сборка требует райзеров и внешнего охлаждения. Компромисс цена/производительность оправдан, если цель - запуск моделей на 20–30 миллиардов параметров с приемлемой скоростью, а не тренировка.
Настройка llama.cpp с Vulkan для мульти-GPU: конфиг и подводные камни
Рабочая команда запуска выглядит так:
./llama-cli -m model.q4_k_m.gguf -ngl 99 -t 8 -c 4096 --numa -sm none
Флаг -ngl 99 загружает все слои на GPU. Без него llama.cpp оставляет часть слоёв на CPU, что обрушивает скорость на операциях, чувствительных к пропускной способности памяти. Параметр -sm none отключает split-mode - принудительное распределение слоёв по картам. С Vulkan бэкендом автоматическое распределение работает адекватнее: слои равномерно раскидываются по доступным устройствам, приоритет отдаётся карте с наибольшим объёмом свободной VRAM.
Лимит мощности 150 Вт решается через nvidia-smi -pl 150 для каждой карты. Без этого P102-100 пытаются выйти на штатные 250 Вт, перегреваются и троттлят. Дополнительный undervolting через кривую частот в nvidia-settings снижает энергопотребление ещё на 10–15% без заметной потери производительности. Главный подводный камень - разная производительность карт. GTX 1080 Ti обрабатывает свои слои быстрее, чем P102-100, и возникает простой: быстрая карта ждёт медленные. Решение - ручное назначение слоёв через переменную CUDA_VISIBLE_DEVICES с указанием пропорций, но с Vulkan этот механизм нестабилен. На практике проще смириться с простоем, чем ловить краши.
Результаты тестов: таблица метрик tg128 и pp512 для 12 моделей
| Модель | Архитектура | Размер (GB) | tg128 (tok/s) | pp512 (tok/s) | VRAM (GB) | Примечания |
|---|---|---|---|---|---|---|
| llama-2-7B | Плотная | 3.9 | 38 | 210 | 5.1 | Полностью на GPU |
| Qwen3.6-1.5B | Плотная | 1.2 | 62 | 340 | 2.4 | Полностью на GPU |
| Gemma-4-2B | Плотная | 1.6 | 55 | 290 | 2.9 | Полностью на GPU |
| Qwen3.6-A3B | MoE | 3.1 | 45 | 120 | 8.7 | 3B активных, все эксперты на GPU |
| Gemma-4-A4B | MoE | 3.8 | 41 | 105 | 10.2 | 4B активных, все эксперты на GPU |
| llama-3-8B | Плотная | 4.9 | 29 | 165 | 6.4 | Полностью на GPU |
| Qwen3.6-14B | Плотная | 8.9 | 18 | 88 | 10.8 | Полностью на GPU |
| Gemma-4-12B | Плотная | 7.6 | 21 | 95 | 9.4 | Полностью на GPU |
| Qwen3.6-27B | Плотная | 16.8 | 8 | 42 | 19.1 | Частичный offload (4 слоя на CPU) |
| Qwen3.6-35B | Плотная | 21.4 | 3.2 | 18 | 28.7 | Offload 12 слоёв, скорость упирается в RAM |
| Gemma-4-31B | Плотная | 19.1 | 2.8 | 15 | 29.4 | Offload 15 слоёв, едва пригодна для чата |
| Qwen3.6-27B-MTP | MoE | 10.4 | 33 | 68 | 16.2 | MTP включён, n-max=3 |
Лидеры по скорости генерации - Qwen3.6-1.5B (62 tok/s) и Gemma-4-2B (55 tok/s). Среди моделей с практической ценностью выделяется Qwen3.6-A3B: 45 tok/s на генерации при 8.7 ГБ VRAM. Аутсайдеры - плотные гиганты Qwen3.6-35B и Gemma-4-31B: offloading на CPU роняет скорость до 2.8–3.2 tok/s, что делает их непригодными для интерактивной работы.
Анализ: плотные модели против MoE в условиях дефицита VRAM
MoE-архитектура работает по принципу «активируем только нужное». Модель содержит N экспертов, но на каждый токен вызываются только K из них (обычно 2–4). Qwen3.6-A3B имеет 16 экспертов общим объёмом около 20 миллиардов параметров, но в любой момент времени активны лишь 3 миллиарда. Это радикально снижает требования к пропускной способности памяти: данные перегоняются между VRAM и вычислительными ядрами только для активных экспертов. Плотная модель того же размера гоняет все параметры на каждом токене.
На трёх картах с узкой шиной (особенно P102-100 с 320 ГБ/с) разница становится критической. Плотная Qwen3.6-14B (8.9 ГБ) помещается полностью, но даёт лишь 18 tok/s - шина не успевает подавать данные. MoE-модель Qwen3.6-A3B при схожем размере на диске (3.1 ГБ в Q4_K_M) выдаёт 45 tok/s. Причина: активные 3B параметров создают втрое меньшую нагрузку на память, чем 14B плотной модели.
Qwen3.6-A3B: 45 токенов/с на генерации - рекорд для бюджетной сборки
Qwen3.6-A3B показала 45 tok/s на tg128 и 120 tok/s на pp512. Это лучший результат среди моделей, способных поддерживать связный диалог. Модель полностью помещается в VRAM (8.7 ГБ из 31 доступных), эксперты равномерно распределены по трём картам. Узким местом становится не память, а вычислительная производительность: GTX 1080 Ti выдаёт около 11 TFLOPS FP32, P102-100 - примерно столько же. Суммарно система имеет порядка 33 TFLOPS, и MoE-архитектура утилизирует их эффективнее плотной.
Модель подходит для задач, где скорость ответа важнее глубины рассуждений: чат-боты, быстрая суммаризация, генерация описаний. На длинных контекстах (4096 токенов) скорость падает до 38 tok/s - эксперты начинают конкурировать за кэш KV, который тоже лежит в VRAM.
Когда плотная модель всё же нужна: качество ответов llama-2-7B против MoE
llama-2-7B даёт 38 tok/s - на 15% медленнее Qwen3.6-A3B. При этом на фактологических вопросах (даты, исторические события, определения) llama-2-7B ошибается реже. MoE-модели склонны к галлюцинациям при запросе точных данных: механизм выбора экспертов иногда направляет токен к специалисту не того домена. Плотная модель обучалась как единое целое и равномернее покрывает фактологию.
Для кодинга картина иная: Gemma-4-A4B (41 tok/s) обходит llama-2-7B по качеству генерации кода благодаря специализированным экспертам, обученным на репозиториях. Компромисс скорость/качество сводится к простому правилу: фактология и логика - плотная модель, генерация и креатив - MoE. Подробный разбор этого компромисса есть в статье Gemma-4-26B-a4B против Qwen3.6-MoE: прямое сравнение инференса и reasoning.
Практические рекомендации: как собрать свою мульти-GPU систему для инференса
Сборка начинается с выбора карт. Ключевой параметр - объём VRAM, а не вычислительная мощность. Две P102-100 по 10 ГБ дают 20 ГБ за 10 000 рублей - это база. Третья карта нужна с видеовыходом для вывода изображения, и GTX 1080 Ti на 11 ГБ закрывает эту потребность. Альтернатива - три P104-100 по 8 ГБ, но 24 ГБ суммарно не хватит для моделей класса 20B+.
Блок питания - от 1000 Вт с запасом по линии 12V. Три карты по 150 Вт потребляют 450 Вт только на GPU, плюс CPU и периферия - ещё 150–200 Вт. Райзеры обязательны: P102-100 не имеют видеовыходов и греются до 80°C под нагрузкой, им нужен прямой обдув. Корпус - открытый стенд или майнинговая ферма, закрытый корпус без продува гарантирует троттлинг через 10 минут.
Установка Kubuntu 26.04 стандартна. Драйверы NVIDIA - версия 560 или новее из репозитория graphics-drivers/ppa. Vulkan-бэкенд требует пакет vulkan-tools и библиотеку libvulkan1. Компиляция llama.cpp:
git clone https://github.com/ggerganov/llama.cpp cd llama.cpp mkdir build && cd build cmake .. -DGGML_VULKAN=ON make -j$(nproc)
Типичная ошибка - забыть про --numa на многоядерных CPU. Без него планировщик ОС гоняет потоки между ядрами, и prefill проседает на 20–30%. Вторая ошибка - использование -sm tensor с Vulkan: этот режим нестабилен на старых картах и вызывает крах при первом же запросе.
Оптимальный выбор моделей под разные сценарии: чат, кодинг, анализ текста
| Сценарий | Рекомендованная модель | tg128 (tok/s) | Причина выбора |
|---|---|---|---|
| Чат-бот, быстрые ответы | Qwen3.6-A3B | 45 | Максимальная скорость, приемлемое качество диалога |
| Генерация кода | Gemma-4-A4B | 41 | Лучшее качество кода среди MoE, эксперты под языки |
| Фактология, точные ответы | llama-2-7B | 38 | Меньше галлюцинаций на фактах |
| Анализ длинных текстов | Qwen3.6-14B | 18 | Плотная модель, полный контекст в VRAM |
| Эксперименты с MTP | Qwen3.6-27B-MTP | 33 | Multi-Token Prediction даёт прирост на 20-30% |
Модели с offloading (Qwen3.6-35B, Gemma-4-31B) рекомендовать для интерактивной работы нельзя. Их удел - пакетная обработка: суммаризация документов, классификация, извлечение сущностей. Запустил задачу, отошёл на 10 минут, вернулся к результату. Для тех, кто хочет глубже разобраться в MoE-моделях малого размера, есть материал о MoE-моделях с ~2B активных параметров - там разбираются альтернативы для ещё более слабого железа.
Ограничения тестирования и планы на будущее
Все тесты проведены в Q4_K_M-квантовании. Переход на Q5_K_M снизит скорость на 10–15%, но повысит качество ответов. Размер контекста зафиксирован на 4096 токенов - при расширении до 8192 токенов кэш KV съест дополнительно 2–4 ГБ VRAM, и часть моделей перестанет помещаться полностью. Batch size не варьировался, тесты однопоточные - параллельные запросы не измерялись.
За рамками остались fine-tuning и тренировка: карты Pascal не поддерживают bfloat16 и FP8, дообучение на них нецелесообразно. Не тестировались бэкенды ROCm (карты AMD) и OpenCL - только Vulkan. Интерес для будущих тестов представляют новые версии llama.cpp с улучшенной поддержкой мульти-GPU и модели с MTP, которые показали прирост на Qwen3.6-27B-MTP. Отдельная тема - запуск на старых серверных картах вроде AMD MI50, опыт с которыми описан в статье про инференс GLM-5.2 на 16 AMD MI50.
Результаты этого теста воспроизводимы на аналогичной конфигурации, но не универсальны. Другие версии драйверов, llama.cpp или квантования могут дать отличающиеся цифры. Относительные пропорции между моделями сохранятся: MoE всегда будет быстрее плотной при дефиците VRAM, а offloading всегда будет убивать интерактивность.