инструменты 1 мин

Почему две видеокарты для 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% загрузку на разделённой модели, это нормально — карты работают по очереди, а не вместе.

Ключевые выводы

  • Генерация одного токена в LLM требует прочитать из памяти все веса модели — узкое место не в вычислениях, а в пропускной способности памяти GPU
  • При стандартном послойном разделении модели между двумя GPU без NVLink карты работают по очереди (эстафета), а не параллельно — отсюда ~50% загрузки
  • Row-split режим позволяет обеим картам работать над одним слоем, но без NVLink эффективность зависит от PCIe и не всегда лучше
  • Google DiffusionGemma обходит ограничение памяти генерацией блоков токенов, но с явным компромиссом по качеству
  • RTX 5060 Ti с ~448 ГБ/с пропускной способностью ограничивает Qwen 27B Q6 примерно 20–25 токенами/с независимо от других настроек
локальный AIGPUinferenceRTX 5060 Tiоптимизация

Автор: Юлия Тарасова · Источник: reddit.com

Мнение редакции

**Почему это крутая история:** обычно народ винит драйверы, софт или «криво собрал». А тут человек докопался до сути и объяснил, что 50% загрузки — это не косяк, а честная цена за разделение модели между двумя картами без NVLink. Карты работают как эстафета, а не команда — и это фундаментальное ограничение архитектуры.

Что здесь важно: это реальный опыт с конкретным железом (RTX 5060 Ti), а не теоретизирование. И главное — понимание, что узкое место не в CUDA-ядрах, а в пропускной способности памяти. Каждый токен = 22 ГБ чтения, и ~448 ГБ/с — это потолок. Все кручения настроек бесполезны, когда упираешься в физику. Google с их DiffusionGemma это тоже признаёт, жертвуя качеством ради скорости. Компромиссы везде, бесплатного сыра нет.

Ещё по теме

Комментарии