Почему две видеокарты для LLM загружены только наполовину — и это не поломка
Пользователь разобрался, почему его две GeForce RTX 5060 Ti никогда не грузятся выше 50% при запуске LLM. Причина — в архитектуре послойного разделения модели: карты работают по очереди, а не параллельно. Каждый сгенерированный токен требует прочитать из памяти все 22 ГБ весов модели, и узким местом становится пропускная способность памяти, а не вычисления.
Для энтузиастов локального AI это объясняет типичное «узкое место» в dual-GPU конфигурациях без NVLink и помогает правильно оценивать ожидания от железа без дорогих профессиональных карт.
Почему dual-GPU setup для LLM грузится только наполовину
Пользователь Reddit поделился наблюдением: его две GeForce RTX 5060 Ti (по 16 ГБ) при запуске Qwen 3.6 27B (квантованная до Q6, ~22 ГБ) никогда не загружались выше 50%. Долгое время он искал ошибку в конфигурации, пока не разобрался в причинах.
Узкое место — память, а не вычисления
Генерация одного токена требует прочитать из памяти все веса модели. Для 22 ГБ модели это 22 ГБ чтения на каждый токен. RTX 5060 Ti имеет пропускную способность памяти ~448 ГБ/с, что ограничивает скорость генерации примерно 20–25 токенами в секунду — независимо от настроек.
Почему GPU загружены наполовину
Поскольку модель не помещается на одну карту (16 ГБ), она распределяется послойно между двумя. Стандартный метод разделения: первая карта обрабатывает свою часть слоёв, передаёт результат второй — и просто ждёт. Вторая карта обрабатывает свою часть и возвращает управление. Получается эстафета, а не параллельная работа. Усреднённая загрузка — около 50%, и это не баг, а архитектурное ограничение.
Альтернатива: row-split режим
Существует режим row-split, где обе карты обрабатывают один слой одновременно, но требуется постоянный обмен данными между GPU. Без NVLink (которого нет у RTX 5060 Ti) эффективность зависит от скорости PCIe-шины. Автор планирует протестировать, но универсального ответа для его конфигурации в сети нет.
Примеры обхода проблемы
Google DiffusionGemma генерирует блок из 256 токенов за раз вместо последовательной генерации — именно чтобы обойти упор в пропускную способность памяти. Но в release notes Google прямо признаёт снижение качества как компромисс.
Вывод: если ваша dual-GPU система показывает 50% загрузку на разделённой модели, это нормально — карты работают по очереди, а не вместе.
Автор: Юлия Тарасова · Источник: reddit.com
Почему это крутая история: обычно народ винит драйверы, софт или «криво собрал». А тут человек докопался до сути и объяснил, что 50% загрузки — это не косяк, а честная цена за разделение модели между двумя картами без NVLink. Карты работают как эстафета, а не команда — и это фундаментальное ограничение архитектуры.
Что здесь важно: это реальный опыт с конкретным железом (RTX 5060 Ti), а не теоретизирование. И главное — понимание, что узкое место не в CUDA-ядрах, а в пропускной способности памяти. Каждый токен = 22 ГБ чтения, и ~448 ГБ/с — это потолок. Все кручения настроек бесполезны, когда упираешься в физику. Google с их DiffusionGemma это тоже признаёт, жертвуя качеством ради скорости. Компромиссы везде, бесплатного сыра нет.
Комментарии