Это не шутка: RTX 5080 и RTX 4060 в одном ПК для LLM
Итак, у вас есть RTX 5080 (24 ГБ GDDR7, PCIe 5.0, мощный зверь) и пылящаяся после апгрейда RTX 4060 (12 ГБ GDDR6, PCIe 4.0, скромный середняк). В голову приходит крамольная мысль: а почему бы не заставить их работать вместе, чтобы запускать даже 70B-модели локально? Звучит безумно, но я проделал это — и делюсь результатами.
Внимание: RTX 4060 не поддерживает NVLink, а RTX 5080 его физически не имеет (Nvidia отказалась от NVLink в потребительской 50-й серии). Всё взаимодействие — только через PCIe, и скорость обмена данными будет узким местом. Этот гайд — для экспериментаторов, а не для production-серверов.
Почему это вообще может работать? Теория гетерогенного инференса
Большинство фреймворков (llama.cpp, vLLM, ExLlama) умеют распределять слои модели между разными GPU. При этом неважно, одинаковые ли карты — важна общая сумма VRAM и готовность драйвера поделиться памятью через CUDA Peer-to-Peer (P2P). P2P работает, только если обе карты находятся под управлением одного драйвера и подключены к одному CPU. В нашем случае 5080 и 4060 видят друг друга, но 4060 — прошлое поколение, и P2P может не включиться автоматически.
Решение — принудительно разрешить P2P через переменную окружения: CUDA_ENABLE_P2P=1 и в некоторых случаях нужно пропатчить драйвер. Но для llama.cpp есть другой путь — tensor split, который не требует P2P: модель разбивается по слоям, а данные перегоняются через системную память (с латентностью, конечно).
Железная конфигурация: слота, блок питания и материнка
Ставим RTX 5080 в верхний слот x16 (лучше всего напрямую к CPU). RTX 4060 — в нижний слот, который работает в режиме x8 (или x4, если материнка старая). Важно: на современных Z-чипсетах (Z990, X870E) второй слот часто подключается через чипсет, а не напрямую к CPU. Это добавляет задержки, но для инференса терпимо. Я использовал ASRock X870E Taichi — у неё второй слот x8 от CPU, если первый пуст, но с двумя картами он автоматически переключается в x8.
| Параметр | RTX 5080 | RTX 4060 |
|---|---|---|
| VRAM | 24 ГБ GDDR7 | 12 ГБ GDDR6 |
| Пропускная способность | ~960 ГБ/с | ~272 ГБ/с |
| TDP | 350 Вт | 115 Вт |
| PCIe версия/линк | 5.0 x16 | 4.0 x8 (режим x4, если второй слот) |
Блок питания — минимум 850 Вт (500+150=650 с запасом), лучше 1000+ для стабильности. И да: не ставьте карты вплотную — между ними нужен зазор хотя бы в один слот, иначе RTX 4060 будет жариться от выхлопа старшей сестры. Мы уже обсуждали проблемы температур в multi-GPU конфигурациях, они актуальны и для этой пары.
Настройка llama.cpp для двух разных карт
Берём llama.cpp последней версии (на момент 26.06.2026 — это ветка b3850+). Команда запуска выглядит так:
./llama-cli -m /models/qwen2.5-70b-q4_k_m.gguf \
--tensor-split 24,12 \
--main-gpu 0 \
--no-mmap \
-ngl 99
Параметр --tensor-split 24,12 указывает, сколько VRAM выделить на каждую карту (соответственно порядку обнаружения: device 0 — RTX 5080, device 1 — RTX 4060). --main-gpu 0 — карта, на которой выполняется основная логика (embeddings, KV-cache, итоговый слой). -ngl 99 — загрузить все слои на GPU.
Совет: если P2P не работает (проверьте через nvidia-smi topo -m), добавьте флаг --no-mmap, чтобы избежать прямого отображения памяти — модель будет копироваться через RAM. Это медленнее, но стабильно.
Тесты производительности: Qwen 2.5 32B и 70B
Я прогнал две модели — Qwen2.5-32B (Q4_K_M, ~18 ГБ) и Qwen2.5-70B (Q4_K_M, ~40 ГБ). Конфигурация: контекст 8192, промпт из 512 токенов, генерация 512 токенов. Замерял скорость (токен/с) и latency первого токена (TTFT).
| Модель | Режим | Скорость (ток/с) | TTFT (мс) |
|---|---|---|---|
| 32B Q4_K_M | Только RTX 5080 | 58.3 | 180 |
| 32B Q4_K_M | 5080 + 4060 (tensor-split 24,12) | 52.1 | 220 |
| 70B Q4_K_M | Только 5080 (offload в RAM) | 6.2 | 2100 |
| 70B Q4_K_M | 5080 + 4060 (24+12=36ГБ, остальное offload) | 18.4 | 750 |
Результат: для 32B модель комбинация почти не уступает одиночной 5080 (потеря ~11% — из-за того, что часть весов лежит на более медленной 4060, и при передаче через PCIe 4.0 x4 возникают задержки). А вот для 70B выигрыш драматический — скорость в 3 раза выше, чем при offload в RAM. RTX 4060 добавляет 12 ГБ, которых как раз не хватало, чтобы уместить почти всю модель на GPU, и лишь хвосты (около 4 ГБ) уходят в CPU.
Грабли, на которые я наступил
Вот список того, что может сломать вам вечер:
- Несовместимость драйверов. RTX 4060 требует драйвер 545+, а RTX 5080 — 570+. На момент написания обе поддерживаются одной веткой 570.xx, но если ставить старый драйвер, карта 5000-й серии может не определиться. Используйте последний Game Ready.
- CUDA Peer-to-Peer глючит. На некоторых материнках (особенно с чипсетным мостом) P2P между разнородными картами не включается. Решение —
--tensor-splitс offload через системную память. Работает, но латентность выше. - Температурный дисбаланс. RTX 5080 греется до 75°C под нагрузкой, RTX 4060 рядом — до 82°C (ей достаётся горячий воздух). Спасает только продувка: поставьте нижний вентилятор на вдув. Подробнее про охлаждение мульти-GPU систем — в статье 7 видеокарт на AM5.
- Не забудьте переключить второй слот в режим x8. В BIOS многих материнок по умолчанию второй слот работает как x4, если первый пуст. С двумя картами его можно форсировать на x8, иначе пропускная способность упадёт до 8 ГБ/с, что убьёт производительность.
Альтернативы: не делайте так, если...
Если у вас есть возможность — купите вторую такую же 5080 или хотя бы одну карту с большим объёмом памяти, как RTX Pro 4500 (24 ГБ). Две одинаковые карты работают гораздо эффективнее из-за лучшего P2P и отсутствия асимметрии. Тем не менее, гетерогенная сборка имеет право на жизнь, если:
- У вас уже есть обе карты;
- Вы хотите поэтапно апгрейдиться (сначала купили 5080, потом добавили старую 4060);
- Вам критически важна сумма VRAM (36 ГБ против 24 ГБ у одной 5080).
Для запуска моделей до 32B — одиночная 5080 справляется отлично. А вот 70B и выше — связка даёт прирост в 3 раза по сравнению с offload. Это вам не dual 5060 Ti vs single 5070 Ti, где разница меньше, но результат всё равно убедительный.
Неочевидный совет напоследок
Распределяйте слои вручную: самую тяжёлую математику (self-attention, FFN) отдавайте RTX 5080, а на 4060 кладите только головы внимания малых размеров и layernorm. В llama.cpp это делается через --tensor-split не по объёму памяти, а по числу слоёв (ключ -ngl 24,12). Так 4060 не станет узким горлом для 5080. И помните: через год, возможно, появятся фреймворки, которые сами адаптивно балансируют нагрузку между разными GPU — как это уже делает Microsoft DeepSpeed Autotune, но пока приходится крутить ручки. Скрещивайте карты с умом!