Рассмотрим преимущества и недостатки оптимизатора TensorRT-LLM, который повышает производительность больших языковых моделей на этапе вывода. Расскажем об ограничениях и нюансах при выборе подходящей рабочей станции или GPU-сервера. Также наглядно продемонстрируем возможности современных видеокарт.
Что такое TensorRT-LLM
В эпоху стремительного развития искусственного интеллекта и машинного обучения большие языковые модели (далее — LLM) становятся неотъемлемой частью многих приложений. ИИ-помощники встроены даже в пакет Office и приложение Paint, а у современных ноутбуков появилась отдельная ИИ-кнопка. Однако внедрение и использование нейросетей требует вычислительной мощности, которая на порядок превосходит возможности процессоров. Здесь на помощь приходят видеокарты и TensorRT.
TensorRT — это библиотека, комплект разработки и программный стек, который позволяет оптимизировать ИИ-операции силами GPU. TensorRT-LLM — ответвление TensorRT для работы с языками, речью, обращениями и ответами. TensorRT-LLM не умеет генерировать картинки, музыку, или видео. Но позволяет оптимизировать работу с языковыми ИИ для поиска информации, общения текстом или голосом. В частности — повысить скорость вывода на конечном устройстве пользователя, который также называют инференсом (inference).
Справедливо заметить, что использовать языковую модель на GPU можно и без TensorRT-LLM. Технически правильно называть эту библиотеку не фундаментом, а оптимизацией, которая позволяет ускорить работу в несколько раз. TensorRT-LLM — лучшее решение для видеокарт NVIDIA, поскольку создано инженерами этой компании. К сожалению, карты AMD и Intel не поддерживаются.
NVIDIA описывает инструмент так:
«При больших объёмах пакетов TensorRT-LLM значительно улучшает работу сложных языковых моделей. Например, помощников по написанию текстов и программированию, которые выдают сразу несколько уникальных результатов в автоматическом режиме. В итоге повышается производительность и качество, а пользователи получают возможность выбирать лучшие результаты».
По-простому говоря, TensorRT-LLM — это своего рода «прокладка», которая оптимизирует работу видеокарты для ИИ-задач, связанных с обработкой и генерацией текста.
Преимущества
Масштабируемость. Так называемый «тензорный параллелизм» позволяет распределять нагрузку между несколькими устройствами почти без потерь. Две видеокарты — ускорение в два раза (на самом деле на 97–99%). Это работает не только в рамках одной системы, но и в масштабе нескольких GPU-серверов.
Производительность. TensorRT-LLM в несколько раз ускоряет работу с языковыми моделями. К примеру, заявлено ускорение в 4,6 раза в модели Llama 3, вдвое — в GPT-J 6B.
Эффективность. TensorRT-LLM оптимизирует работу и нагрузку, позволяя снизить затраты на электричество, количество оборудования и персонала.
Квантизация. Ускорение в ущерб точности, и наоборот.
Простота. Возможность работы с LMM без глубоких технических знаний. Но это по-прежнему непросто.
Точность. Генерация с расширенным поиском (RAG). ИИ может обманывать, если приходится отвечать на вопрос за рамками данных, которые использовали для обучения модели. C TensorRT-LLM проблема частично решена наличием поиска.
Пакетирование на лету. Продвинутый планировщик позволяет не дожидаться выполнения большой задачи, отдав приоритет маленькой.
Открытый исходный код. Безопасность данных пользователя. «Закладок» гарантированно нет.
Прочие ухищрения, направленные на скорость и точность инференса.
Недостатки
Только NVIDIA. Поскольку это технология NVIDIA, она работает только с «зелёными» видеокартами и ускорителями. Начиная с RTX 2000.
Не любит Windows. В среде Windows с TensorRT-LLM будет работать только одна видеокарта. Для масштабирования хотя бы до двух GPU придётся переходить на Linux. Таким образом, игровые ПК подходят для ограниченного круга задач. В идеале нужен GPU-сервер с 2–4 видеокартами. В нашем ассортименте есть специализированные решения.
Аналоги
TensorRT-LLM — не единственная подобная «прокладка» между языковой моделью и видеокартой. Существует несколько аналогов. Например, LMDeploy, vLLM, TGI и MLC-LLM. Забавно, что несмотря на «родное» оборудование, TensorRT-LLM не всегда показывает лучшие результаты. Зато обладает сторонними преимуществами.
Проведём сравнение в Llama 3 по двум ключевым параметрам: время до первого токена (TTFT) и скорость генерации токенов (токенов в секунду).
Результаты:
LMDeploy — лучшая скорость генерации токенов во всех режимах, самый низкий TTFT;
vLLM — посредственная генерация во всех режимах. TTFT схож, но при нагрузке в 10 пользователей заметно отставание;
TGI — посредственная генерация во всех режимах. Худшие показатели TTFT. К удивлению, при нагрузке в 100 пользователей работает даже лучше, чем TensorRT-LLM;
TensorRT-LLM — в основном результаты близки к LMDeploy, но при высокой загрузке заметно отставание;
MLC-LLM — слабая генерация при малой нагрузке, но хорошая при средней и высокой. По показателю TTFT где-то между LMDeploy и TensorRT-LLM.
У нас 2 победителя — LMDeploy и TensorRT-LLM. Нюанс в том, что обе модели работают в экосистеме CUDA, и обе совместимы только с NVIDIA. За TensorRT-LLM остаётся преимущество в универсальности, простоте использования и быстром развитии. Также LMDeploy в принципе не поддерживает часть языковых моделей. Например, Mistral и Qwen 1.5.
В итоге можно сказать, что в Llama 3 подход NVIDIA предпочтительнее для систем со средней и небольшой нагрузкой, а LMDeploy — для высоконагруженных систем.
Немного теории
СUDA-ядра
Обычно количество CUDA-ядер и их частота работы являются ключевыми характеристиками видеокарты. В случае карт NVIDIA и связанных с ИИ нагрузок это не так. CUDA ядра здесь практически не работают.
Tensor-ядра
Для выполнения любых ИИ-операций, в том числе работы технологии масштабирования DLSS, видеокарты NVIDIA используют специализированные Tensor-ядра. На это даже намекает название библиотеки — TensorRT-LMM. Поэтому может сложиться впечатление, что сравнение количества и поколения тензорных ядер — первичная метрика для оценки итоговой производительности… казалось бы. Далее мы наглядно покажем, что это не совсем так.
Скорость видеопамяти
Рабочая нагрузка LLM — это больше, чем просто вычислительная мощность. Огромное влияние оказывает подсистема памяти. Общая пропускная способность памяти (ПСП) — вторая ключевая характеристика после Tensor-ядер. Здесь работает следующее правило: чем больше ПСП, тем выше производительность. Напоминаем, что битность шины памяти — только половина успеха. Не меньшее влияние на ПСП оказывает частота работы памяти.
Количество видеопамяти
Объём видеопамяти не оказывает влияния на скорость работы, но только до определённой поры. При увеличении размера вводных данных (считай с ростом сложности задачи) рано или поздно видеопамяти не хватит. Существует заблуждение, что если памяти не хватает, то работать вообще не будет (известная ошибка VIDEO_MEMORY_MANAGEMENT_INTERNAL). Так было до января 2023 года, пока NVIDIA не выпустила драйвер 535.98. После этого подсистема памяти начала работать иначе.
При недостатке видеопамяти система начинает использовать оперативную память в качестве графической. Поскольку ПСП оперативной памяти в разы меньше, чем у графической (1000 ГБ/с у RTX 4090 против 100 ГБ/с у системной DDR5-6400), плюс использование «оперативки» влечёт накладные расходы и лишние задержки, скорость инференса падает радикально. Далее наглядно продемонстрируем этот эффект.
Недавно представленные RTX Pro Blackwell получили 96 ГБ видеопамяти
Важное замечание: в системах с двумя и более GPU память не суммируется. В память каждой карты помещается копия данных.
Подготовка к тестированию
Из-за совместимости TensorRT-LLM только с видеокартами NVIDIA у нас просто нет возможности сопоставить результаты с решениями AMD и Intel в равных условиях. Поэтому придётся ограничиться «зелёными» картами серии GeForce RTX 4000 и RTX 5000.
Заметим, что решения NVIDIA на голову превосходят конкурентов — преимущественно из-за образцовой программной оптимизации и развитой экосистемы. Иными словами, хочешь работать с ИИ — покупай NVIDIA.
В нашем ассортименте есть AI-серверы на профессиональных видеокартах RTX 6000 Ada, которые могут похвастать внушительным объёмом видеопамяти. К слову, про общие отличия и разницу быстродействия игровых GeForce RTX и профессиональных RTX (ранее известных как Quadro) мы рассказывали в отдельной статье. Конкретно в этом тестировании будут только игровые модели. Причина — игровые решения уже перебрались на новую архитектуру Blackwell, а профессиональные только недавно анонсировали. Blackwell не обеспечивает качественный прирост игровой производительности, зато на голову выше в ИИ-нагрузках.
Забегая вперёд, если вы рассматриваете покупку профессиональной карты, имейте ввиду, что по скорости она проиграет игровому «собрату» в связанных с ИИ нагрузках в противостоянии 1 на 1. Однако, двойной набор видеопамяти открывает новые горизонты.
- Процессор — AMD Ryzen Threadripper PRO 7985WX;
- Процессорный кулер — кастомный контур СЖО на основе компонентов Alphacool;
- Материнская плата — ASUS Pro WS WRX90E-SAGE SE;
- Оперативная память — DDR5-6400 ECC Reg, 8х16 ГБ (128 ГБ суммарно);
- Видеокарта — разные видеокарты NVIDIA;
- Накопитель — Samsung 980 Pro 2 ТБ.
- Операционная система — Linux.
Сравнительно с прошлым тестированием конфигурация тестового стенда немного изменилась. Теперь вместо памяти DDR5-5600 используем DDR5-6400. Хотя это усложнит сравнение результатов, всё-таки в 2025 году золотым стандартом являются 6400 МГц. Впрочем, это внесёт незначительную погрешность.
Второй момент — Linux. Напомним, что в среде Windows с TensorRT-LLM может работать только одна видеокарта… во всяком случае официально. Обычно для серьёзных задач используют Linux. Кроме того, Linux сам по себе быстрее. Сравнительно с тестами «на винде» будет прирост на пару процентов.
Третий — по науке для каждой комбинации модели LMM и видеокарты нужно генерировать новый движок. Оказалось, что это совсем не обязательно в рамках видеокарт одного поколения/архитектуры. Поэтому для экономии времени мы сгенерировали только два движка — для RTX 4000 и RTX 5000. Провели дополнительное сравнение, и выяснили, что «чистый» движок действительно влияет на скорость. Однако, речь о непоказательных 1–2%, которые легко можно списать на погрешность измерений.
Итог: где-то прибыло, где-то убыло. Эти нюансы компенсируют друг друга. Не удивляйтесь, если ваши собственные тесты будут несколько отличаться. Эти результаты не эталонные, но показательные для сравнения разных видеокарт и выявления узких мест.
Характеристики видеокарт:
Наш пакет TensorRT-LLM настроен на использование модели Llama-3-8B с квантованием в 4-битный формат AWQ. Хотя TensorRT-LLM поддерживает множество моделей и методов квантования, мы решили придерживаться именно этой модели, поскольку она относительно лёгкая. Это позволяет тестировать видеокарты, не слишком беспокоясь об ограничениях видеопамяти.
Переменные:
Тесты
С простой моделью производительность в целом соответствует ожиданиям, основанным на количестве тензорных ядер. Однако это — наглядный показатель, что «решают» не только Tensor-ядра.
Самый яркий пример — RTX 4070 и RTX 4070 Ti. У старшей модели тензорных ядер больше на 30%, но полностью идентичная подсистема памяти. Это привело к тому, что по генерации токенов разница чуть ли не в пределах погрешности измерений — менее 2%.
Если использовать ту же длину входных и выходных данных (100), но увеличить размер пакета (до 8), результаты совсем другие. Пропускная способность памяти теперь решает меньше. Сильнее проявляется зависимость скорости генерации токенов от количества Tensor-ядер.
Переходим к серьёзным нагрузкам. 2048 длины входных и 512 выходных данных — это максимум, рекомендованный NVIDIA для этой модели. При единичном размере пакета результат снова тесно связан с ПСП. Но это выражено не так сильно, как в случае «100 на 100». Больший контекст требует больше вычислений, и Tensor-ядра выходят на передний план. Несмотря на это, очевидно, что пропускная способность памяти по-прежнему играет важную роль в этом тесте.
С увеличением батча до 8 проявляются требования к количеству видеопамяти. В предыдущем тесте загружались примерно 7 ГБ видеопамяти, в этом — под 16 ГБ. Разница между картами с 12 и 16 ГБ памяти кардинальная:
- 24 ГБ — тест завершился за 35 секунд;
- 16 ГБ — примерно 50 секунд;
- 12 ГБ — 260 секунд;
- 8 ГБ — 960 секунд.
Перед нами снова демонстрация того, о чём говорили в теоретическом разделе. При недостатке видеопамяти системе приходиться обращаться к оперативной памяти. Она в разы медленнее. И чем больший дефицит видеопамяти, тем хуже результат.
Нужно ли говорить, что с последующим увеличением батча требования к количеству видеопамяти растут по экспоненте.
Технический итог
Для работы с TensorRT-LLM основное внимание нужно обращать на количество и поколение тензорных ядер, а также на пропускную способность памяти видеокарты. Без быстрой памяти время, которое ядра тратят на ожидание подачи данных из памяти, расходуется попусту — прямая потеря общей производительности.
Количество видеопамяти начинает играть роль при многопользовательском доступе и сложных/длинных запросах. Иными словами — для высоконагруженных систем. И хотя это честные выводы из тестов, реальность не всегда совпадает с «конями в вакууме».
Практический итог
С практической точки зрения работа с TensorRT-LLM с видеокартами среднего класса — затея почти бессмысленная. Карты с 12 и менее гигабайтами видеопамяти стоит рассматривать лишь как ознакомительный вариант. Если в планах активное использование сервиса и не примитивные запросы, когда ИИ просто выполняет роль поисковика на максималках, понадобится максимально мощная видеокарта с большим набором видеопамяти. Здесь правило «больше — лучше», работает безотказно.
По этой причине в нашем ассортименте ИИ-серверов просто нет решений на средних и младших картах — это нерационально. К примеру, одна RTX 4090 обеспечивает производительность пары RTX 4070 Ti, а одна карта в эксплуатации и настройке всегда проще. RTX 5080 (с натяжкой), RTX 4090, RTX 5090 и профессиональные RTX 6000 Ada — вот правильный выбор.
В завершение ещё раз напомним, что TensorRT-LLM в Windows может задействовать только одну видеокарту. Лучше сразу знакомьтесь c Linux и смотрите в сторону GPU-серверов в Rack-формате. Иначе масштабировать систему в будущем будет крайне проблематично.