Реальный кейс: две RTX 5060 Ti и 50% загрузки - в чем подвох?
Вы запускаете Qwen 3.6 27B в квантовании Q6 на двух RTX 5060 Ti по 16 ГБ каждая. Модель занимает ~22 ГБ видеопамяти, сплитинг настроен, обе карты работают. Открываете мониторинг и видите: утилизация GPU держится на уровне 50%. Никаких ошибок, температура в норме, но производительность вдвое ниже ожидаемой. Скорость генерации - 25-30 токенов в секунду вместо гипотетических 50+. В чём причина?
Причина в фундаментальном ограничении архитектуры инференса LLM - memory-bound характере операции. Генерация каждого токена требует чтения всей модели из памяти GPU. Для Qwen 3.6 27B это 22 ГБ данных, которые нужно пропустить через шину памяти. Пропускная способность RTX 5060 Ti составляет ~448 ГБ/с. Делим 22 ГБ на 448 ГБ/с - получаем ~0,049 секунды на токен, или около 20 токенов/с в идеальных условиях. Реальные 25-30 токенов/с уже близки к теоретическому пределу. Вычислительные ядра в это время простаивают - им просто нечего обрабатывать, данные не успевают поступать.
Это не ошибка конфигурации. Это физика. Две карты не удваивают пропускную способность памяти - каждая читает свою часть модели независимо. Суммарная скорость чтения остаётся ограниченной пропускной способностью одной карты для её фрагмента модели. Утилизация 50% - норма для memory-bound нагрузки на двух GPU без увеличения aggregate bandwidth.
Memory-bound архитектура LLM: почему скорость упирается в память, а не в вычисления
Memory-bound операция - это вычисление, где скорость ограничена пропускной способностью подсистемы памяти, а не производительностью арифметических блоков. В случае авторегрессионной генерации LLM каждый новый токен требует полного прохода весов модели через вычислительные ядра. Веса хранятся в VRAM. Процессор ждёт, пока данные загрузятся из памяти в кэш и регистры. Это ожидание и создаёт узкое место.
Инференс LLM кардинально отличается от обучения. При обучении обрабатываются целые батчи данных, градиенты накапливаются, вычисления доминируют - это compute-bound сценарий. При генерации токенов батч часто равен единице (один запрос), а матрица весов модели остаётся неизменной и должна быть считана целиком. Вычислительные ядра GPU, способные на терафлопсы операций, загружены лишь настолько, насколько быстро память подаёт им данные.
Расчёт для нашего кейса: модель 22 ГБ, пропускная способность 448 ГБ/с. Теоретический предел - 22 / 448 = 0,0491 секунды на токен, или 20,4 токен/с. Практическая скорость 25-30 токенов/с достигается за счёт эффективного кэширования и того, что не все веса читаются с одинаковой интенсивностью. Но порядок цифр жёстко задан физикой памяти. Сравните с RTX 4090, где пропускная способность памяти достигает ~1 ТБ/с - та же модель теоретически может выдать около 45 токенов/с на одной карте. Разница именно в bandwidth, а не в количестве CUDA-ядер.
Пропускная способность RTX 5060 Ti: 448 ГБ/с как главный ограничитель
RTX 5060 Ti оснащается 16 ГБ памяти GDDR7 с 128-битной шиной. Пропускная способность 448 ГБ/с - результат комбинации тактовой частоты памяти и ширины шины. Узкая шина (128 бит против 384 бит у RTX 4090) - архитектурное решение, снижающее себестоимость карты. Для игр и большинства compute-задач этого достаточно. Для инференса больших LLM - это фундаментальный ограничитель.
При сплитинге модели на две карты каждая получает примерно половину слоёв - около 11 ГБ данных. Пропускная способность каждой карты остаётся 448 ГБ/с. Вторая карта не помогает первой читать её данные быстрее. Суммарная скорость генерации определяется временем чтения самого «толстого» фрагмента плюс накладные расходы на передачу активаций между GPU. Утилизация каждой карты - около 50%, потому что половину времени она либо простаивает (при последовательном сплитинге), либо ждёт синхронизации (при параллельном).
Сплитинг модели на две GPU: relay race против row-split - почему утилизация не растет
Два основных подхода к распределению модели между GPU - pipeline parallelism (послойный сплитинг, «relay race») и tensor parallelism (row-split, тензорный параллелизм). Оба решают проблему нехватки памяти, но не проблему пропускной способности.
Pipeline parallelism размещает первые N слоёв на GPU 0, остальные - на GPU 1. GPU 0 обрабатывает свои слои, передаёт активации на GPU 1 и простаивает, пока GPU 1 завершает обработку. Это эстафета: пока бежит один, второй отдыхает. Утилизация каждого GPU в идеале - 50%, на практике ниже из-за задержек передачи данных. Практическая конфигурация vLLM для двух RTX 5060 Ti показывает, что даже с оптимизациями KV-кэша и спекулятивным декодированием утилизация остаётся в районе 50%.
Tensor parallelism (row-split) разрезает отдельные слои по строкам матриц весов. Обе карты работают одновременно над одним слоем, но требуют синхронизации после каждой операции. All-reduce активаций между GPU создаёт дополнительный трафик. На RTX 5060 Ti без NVLink эта синхронизация идёт через PCIe, добавляя задержки. Суммарная пропускная способность памяти не увеличивается - каждая карта читает свою половину весов со скоростью 448 ГБ/с, но теперь добавляются накладные расходы на обмен данными. Утилизация может быть чуть выше 50% за счёт параллельной работы, но скорость генерации в токенах/с остаётся в тех же пределах.
Роль NVLink и PCIe: почему быстрая связь между картами не спасает
NVLink - высокоскоростной интерконнект между GPU, обеспечивающий прямую передачу данных без прохождения через CPU и PCIe. У RTX 5060 Ti NVLink отсутствует. Передача активаций идёт через шину PCIe, пропускная способность которой (даже в версии 4.0 x16 - ~32 ГБ/с) на порядок ниже, чем у локальной памяти GPU. Это создаёт дополнительное узкое место.
Но даже с NVLink проблема memory-bound не решается. NVLink ускоряет обмен активациями между картами, снижая накладные расходы тензорного параллелизма. Однако он не увеличивает пропускную способность локальной памяти каждой карты. Модель всё ещё нужно прочитать из VRAM. NVLink помогает приблизить утилизацию к теоретическим 50% на карту, убирая простои на передачу данных, но не превращает 50% в 100%. Для compute-bound задач (обучение, большие батчи) NVLink может дать почти линейный прирост. Для инференса одиночных запросов - эффект минимален.
Альтернативные подходы: Google DiffusionGemma и генерация блоками токенов
Google DiffusionGemma предлагает принципиально иной подход к генерации текста. Вместо авторегрессионной выдачи по одному токену модель генерирует блоки по 256 токенов за один проход. Это меняет экономику memory-bound: стоимость чтения модели из памяти амортизируется на 256 токенов, а не на один. Утилизация GPU резко возрастает, скорость в токенах/с - на порядки выше.
Плата за скорость - качество. Диффузионные модели генерации текста склонны к артефактам: повторам, нарушениям связности, менее точному следованию инструкциям. Для задач, где критична скорость и допустимы небольшие огрехи (черновики, потоковая обработка, генерация вариантов для последующего отбора), DiffusionGemma - рабочий инструмент. Для точных ответов, кода, логических рассуждений авторегрессионные модели пока сохраняют преимущество. Компромисс между скоростью и качеством остаётся открытым, но направление активно развивается.
Практические выводы: как получить максимум от RTX 5060 Ti для инференса LLM
Две RTX 5060 Ti для больших LLM всегда будут ограничены пропускной способностью памяти. Утилизация ~50% - не баг, а следствие физики memory-bound. Принять это - первый шаг к осмысленной оптимизации.
Практические рекомендации:
- Квантуйте агрессивнее. Q4 вместо Q6 уменьшает размер модели с 22 ГБ до ~15-16 ГБ, что может позволить уместить модель в одну карту и избежать сплитинга вообще. Скорость возрастёт за счёт исключения межкарточных передач.
- Выбирайте модели под размер одной карты. Модели до 14-16 ГБ в квантовании Q4_K_M работают на одной RTX 5060 Ti без сплитинга, с утилизацией, близкой к 100% по памяти (но не по вычислениям - memory-bound никуда не делся).
- Рассмотрите GPU с большей пропускной способностью памяти. RTX 4090 с ~1 ТБ/с даёт двукратный прирост скорости на тех же моделях. Б/у рынок RTX 3090 с ~936 ГБ/с - бюджетная альтернатива. Тестирование инференса на Ryzen AI Max+ 395 показывает, что даже интегрированные решения с высокой пропускной способностью памяти могут конкурировать с дискретными GPU.
- Используйте спекулятивное декодирование. MTP (Multi-Token Prediction) в Qwen 3.6 генерирует несколько токенов-кандидатов за проход, амортизируя чтение модели. Конфигурация vLLM с NVFP4 KV-Cache и MTP даёт прирост скорости без дополнительного железа.
- Для compute-bound задач две карты работают отлично. Обучение, файнтюнинг, батчевая обработка эмбеддингов - здесь две RTX 5060 Ti дают почти двукратный прирост. Memory-bound - специфика именно авторегрессионного инференса одиночных запросов.
Memory-bound архитектура LLM - фундаментальное ограничение, с которым сталкиваются все владельцы среднебюджетных GPU. Стриминг-инференс для MoE-моделей и выбор оптимального бэкенда помогают выжать максимум из доступного железа, но не обходят законы физики. Понимание природы ограничения экономит часы на бесплодные попытки «разогнать» утилизацию и позволяет принять взвешенное решение: оптимизировать софт, сменить железо или адаптировать задачи под доступные ресурсы.