Железо и оптимизация: dual-GPU, vGPU и другие схемы многокартовых сетапов

Автор Master_Yoda, Май 14, 2025, 12:47

« назад - далее »
Железо и оптимизация: dual-GPU, vGPU и другие схемы многокартовых сетапов для Stable Diffusion



1. Почему возникла тема «нескольких видеокарт»

  • Рост аппетитов моделей. 
    Переход на SDXL, Cascade и SVD-видео поднял планку VRAM до 12 ГБ и выше. Пользовательский вопрос «...у меня есть второй разъём для видяхи, если куплю туда новую, даст ли это преимущество в Automatic?» запустил длинную цепочку сообщений.

  • Желание параллельной работы. 
    В домашней связке «комп-под-столом + две учётки по SSH» автор выяснил: «...работаем с SDXL, которая кушает 12 ГБ, но параллельно генерить не получается – кто-то один отваливается».

  • Расчёт на «дешёвое ускорение». 
    Вопрос о том, можно ли «соединить» две карты в одну мощность, прозвучал несколько раз («майнеры же как-то соединяют, их память не складывается, но становится больше...»).


2. Ключевые архитектуры, которые обсуждают участники

  • Одна GPU + несколько UI 
    • Две консольные сессии по SSH на одну карту: жена в Automatic1111, автор в ComfyUI. 
    • Боль: общий VRAM-пул, взаимные OOM-краши.

  • Docker/LXD-контейнеры 
    • Конфигурация devices: и NVIDIA_VISIBLE_DEVICES жёстко закрепляет контейнер за конкретной картой. 
    • Сценарий «по одной карте на контейнер → по одному пользователю».

  • Dual-GPU без NVLink 
    • Разделение задач: «...можно одну полностью отдать под нейросеть, а на остальной оставить систему». 
    • Переключение через --cuda-device ID или CUDA_VISIBLE_DEVICES.

  • NVLink-связка (3090/4090) 
    • Теоретическая «склейка» VRAM, но чат мгновенно отвечает: «на двух сразу? ...никак». 
    • Отсутствие готовых скриптов инференса превращает идею в «оверкill для энтузиастов».

  • vGPU и облако 
    • Ссылка на драйвер 531 с режимом «shared GPU host memory» как способ медленно докидать данные в RAM. 
    • Популярный совет: арендовать облачную 4090, стримить через Moonlight, если VRAM-порог дома не преодолим.


3. Аргументы сторон — «две карты» vs «одна мощная»

  • Горизонтальное масштабирование (несколько карт)
    • Параллельность рабочих мест: «Купить вторую 4060 Ti и сделать два Докера...». 
    • Гибкая роль карт: старая под систему, новая под SD. 
    • Финансовый порог ниже: наращиваешь постепенно. 
    • Слабые места: VRAM не складывается; сложнее питание и охлаждение.

  • Вертикальный масштаб (одна ×24 ГБ+)
    • Безусловная совместимость: «Требуется как минимум 30 ГБ видеопамяти». 
    • Проще конфиг: нет контейнеров и переменных. 
    • Минусы: высокая цена; больше тепла/ватт; дефицит 4090.


4. Проблемы, всплывающие у обеих конфигураций

  • Блокировка VRAM первым процессом: второе приложение падает в OOM. 
  • UI-селекторы карты глючат: «...селектор видеокарты не везде отрабатывает». 
  • NVLink ≠ магия: без спецкода SD видит карты отдельно. 
  • Контейнер-overhead: потеря 2–3 % FPS. 
  • Зависимость от драйверов: несоответствие Torch↔CUDA даёт ошибки xformers.



5. Дополнительные переменные, которые влияют на выбор

  • Driver 531 и «Shared GPU host memory» — спасает от OOM, но «сильно медленнее». 
  • PCIe x8 Gen 3 второго слота — теряет до 10 % при потоковом видео. 
  • Torch vs xformers — «xformers лучше работает с памятью, когда Torch вылетает». 
  • Системная RAM — 32 ГБ ОЗУ становится узким местом при втором UI.


6. Частые сценарии и советы сообщества

  • «Две учётки, одна карта» 
    Совет: использовать Docker/LXD для изоляции, но генерировать поочерёдно — «кто-то один отваливается и всё».

  • «Добавить вторую дешёвую карту» 
    → выставить CUDA_VISIBLE_DEVICES или --cuda-device; оставить старую GPU для GUI.

  • «Хочу объединить память» 
    Ответ: без NVLink и DDP никак; NVLink поддерживается только 3090/4090 и бесполезен для инференса.

  • «Нужно видео-диффузия (SVD)» 
    Общий вывод: «минимум 30 ГБ VRAM»; «3090 тянет, 16 ГБ уже тяжело».


7. Коллективный итог-консенсус

Цитировать«Не объединишь две карты для одной картинки. Либо две независимые сессии, либо 4090/облако».

«Docker или LXD + две карты — норм, если нужно чтобы жена в Automatic, ты в Comfy».

«Модели будут толще; удобней сразу брать ≥24 ГБ, чем танцевать с NVLink».



8. Профессиональный комментарий

  • Граф памяти Stable Diffusion. 
    Каждая модель занимает весь UNet на одной GPU-адресации. Без NVLink PyTorch продублирует веса на каждый девайс, поэтому «склеивание» бессмысленно.

  • Dual-GPU = горизонтальное масштабирование. 
    Лучший кейс — параллельно: генерация (GPU 0) + LoRA-обучение или Upscale (GPU 1). Инференс «на одну картинку» не ускорится.

  • vGPU 
    Полезен только провайдерам. NVIDIA делит, а не объединяет карту.

  • Контейнеры как «сменные модули». 
    Docker/LXD позволяют держать разные ветки Torch или UI без конфликтов. Требуется прописать device_ids.

  • Практический минимакс 2025 г.
    • Работа одного художника → одна карта 24 ГБ. 
    • Домашняя мастерская на двоих → две × 12–16 ГБ, Docker-разнос. 
    • Редкие тяжёлые сцены → аренда облака A100 80 ГБ.


Итог

Вопрос «сколько карт лучше» решается логикой бутылочного горлышка: 
  • VRAM определяет, запустится ли модель. 
  • SM-ядра и частоты влияют на скорость итерации, если памяти хватает. 
  • Dual-GPU даёт параллельность, но не ускоряет один кадр. 
  • NVLink возможен, но дорого и сложно. 
  • vGPU делит, а не складывает ресурс.

Рекомендации: 
  • Купите максимум VRAM в одной карте. 
  • Добавляйте вторую карту только ради параллельной очереди. 
  • Для уникально тяжёлых задач используйте облако.
  •