Искусственный интеллект
TensorRT-LLM: полное руководство по оптимизации вывода больших языковых моделей для максимальной производительности

Поскольку спрос на большие языковые модели (LLM) продолжает расти, обеспечение быстрого, эффективного и масштабируемого вывода становится как никогда важным. NVIDIA ТензорРТ-ЛЛМ TensorRT-LLM предлагает впечатляющий набор улучшений производительности, таких как квантование, слияние ядер, пакетирование в процессе выполнения и поддержка нескольких GPU. Эти усовершенствования позволяют достигать скорости вывода до 8 раз выше, чем традиционные методы на базе CPU, преобразуя способ развертывания LLM в производстве.
Это всеобъемлющее руководство рассмотрит все аспекты TensorRT-LLM, от его архитектуры и ключевых функций до практических примеров развертывания моделей. Независимо от того, являетесь ли вы инженером ИИ, разработчиком ПО или исследователем, это руководство даст вам знания по использованию TensorRT-LLM для оптимизации вывода LLM на графических процессорах NVIDIA.
Ускорение вывода LLM с помощью TensorRT-LLM
TensorRT-LLM обеспечивает кардинальное улучшение производительности вывода LLM. Согласно тестам NVIDIA, приложения на базе TensorRT показывают до 8x быстрее скорость вывода по сравнению с платформами только на CPU. Это важное достижение в приложениях реального времени, таких как чат-боты, системы рекомендаций и автономные системы, требующие быстрых ответов.
Как это работает
TensorRT-LLM ускоряет вывод за счет оптимизации нейронных сетей во время развертывания с использованием таких методов, как:
- квантование: Снижает точность весов и активаций, уменьшая размер модели и повышая скорость вывода.
- Слияние слоев и тензоров: Объединяет такие операции, как функции активации и умножение матриц, в одну операцию.
- Настройка ядра: выбирает оптимальные ядра CUDA для вычислений на GPU, сокращая время выполнения.
Эти оптимизации гарантируют эффективную работу ваших моделей LLM на широком спектре платформ развертывания — от гипермасштабных центров обработки данных до встраиваемых систем.
Оптимизация производительности вывода с помощью TensorRT
TensorRT, созданный на основе параллельной модели программирования CUDA от NVIDIA, обеспечивает узкоспециализированную оптимизацию для вывода на графических процессорах NVIDIA. Оптимизируя такие процессы, как квантование, настройка ядра и слияние тензорных операций, TensorRT гарантирует, что LLM могут работать с минимальной задержкой.
Некоторые из наиболее эффективных методов включают в себя:
- квантование: Это снижает численную точность параметров модели, сохраняя при этом высокую точность, что эффективно ускоряет вывод.
- Тензорное слияние: Объединяя несколько операций в единое ядро CUDA, TensorRT минимизирует накладные расходы памяти и увеличивает пропускную способность.
- Автонастройка ядра: TensorRT автоматически выбирает лучшее ядро для каждой операции, оптимизируя вывод для данного графического процессора.
Эти методы позволяют TensorRT-LLM оптимизировать производительность вывода для задач глубокого обучения, таких как обработка естественного языка, рекомендательные системы и видеоаналитика в реальном времени.
Ускорение рабочих нагрузок ИИ с помощью TensorRT
TensorRT ускоряет выполнение задач глубокого обучения за счет внедрения точных оптимизаций, таких как INT8 и FP16. Эти форматы с пониженной точностью позволяют значительно ускорить вывод, сохраняя точность. Это особенно ценно в приложениях реального времени, где низкая задержка является критическим требованием.
INT8 и FP16 Оптимизации особенно эффективны в:
- Потоковое видео: Задачи обработки видео на основе искусственного интеллекта, такие как обнаружение объектов, выигрывают от этих оптимизаций за счет сокращения времени, необходимого для обработки кадров.
- Системы рекомендаций: Ускоряя вывод для моделей, обрабатывающих большие объемы пользовательских данных, TensorRT обеспечивает масштабируемую персонализацию в реальном времени.
- Обработка естественного языка (НЛП): TensorRT повышает скорость выполнения задач обработки естественного языка, таких как генерация текста, перевод и реферирование, что делает их пригодными для приложений реального времени.
Развертывание, запуск и масштабирование с NVIDIA Triton
После оптимизации модели с помощью TensorRT-LLM вы можете легко развернуть, запустить и масштабировать ее с помощью Сервер вывода NVIDIA Triton. Triton — это программное обеспечение с открытым исходным кодом, которое поддерживает динамическое пакетирование, ансамбли моделей и высокую пропускную способность. Оно предоставляет гибкую среду для управления моделями ИИ в масштабе.
Некоторые из ключевых функций включают в себя:
- Параллельное выполнение модели: одновременный запуск нескольких моделей с максимальным использованием графического процессора.
- Динамическое пакетирование: Объединяет несколько запросов на вывод в один пакет, сокращая задержку и увеличивая пропускную способность.
- Потоковые аудио/видео входы: Поддерживает входные потоки в приложениях реального времени, таких как аналитика видео в реальном времени или службы преобразования речи в текст.
Это делает Triton ценным инструментом для развертывания оптимизированных моделей TensorRT-LLM в производственных средах, обеспечивая высокую масштабируемость и эффективность.
Основные возможности TensorRT-LLM для вывода LLM
API Python с открытым исходным кодом
TensorRT-LLM обеспечивает высокомодульную и API Python с открытым исходным кодом, упрощая процесс определения, оптимизации и выполнения LLM. API позволяет разработчикам создавать собственные LLM или изменять готовые в соответствии со своими потребностями, не требуя глубоких знаний CUDA или фреймворков глубокого обучения.
Группировка в полете и пейджинговое внимание
Одной из выдающихся особенностей TensorRT-LLM является Группировка в полете, который оптимизирует генерацию текста путем одновременной обработки нескольких запросов. Эта функция минимизирует время ожидания и улучшает использование GPU за счет динамического пакетирования последовательностей.
Помимо вышесказанного, Внимание, страница гарантирует, что использование памяти остается низким даже при обработке длинных последовательностей ввода. Вместо выделения непрерывной памяти для всех токенов, страничное внимание разбивает память на «страницы», которые могут повторно использоваться динамически, предотвращая фрагментацию памяти и повышая эффективность.
Многопроцессорный и многоузловой вывод
Для более крупных моделей или более сложных рабочих нагрузок TensorRT-LLM поддерживает мульти-GPU и многоузловой выводЭта возможность позволяет распределять вычисления модели по нескольким графическим процессорам или узлам, повышая пропускную способность и сокращая общее время вывода.
Поддержка FP8
С появлением FP8 (8-битная плавающая точка), TensorRT-LLM использует графические процессоры NVIDIA H100 для преобразования весов модели в этот формат для оптимизированного вывода. FP8 обеспечивает снижение потребления памяти и ускорение вычислений, что особенно полезно при крупномасштабных развертываниях.
Архитектура и компоненты TensorRT-LLM
Понимание архитектуры TensorRT-LLM поможет вам лучше использовать его возможности для вывода LLM. Давайте разберем ключевые компоненты:
Определение модели
TensorRT-LLM позволяет вам определять LLM с помощью простого API Python. API создает представление графа модели, что упрощает управление сложными слоями, задействованными в архитектурах LLM, таких как GPT или BERT.
Крепления для веса
Перед компиляцией модели веса (или параметры) должны быть привязаны к сети. Этот шаг гарантирует, что веса встроены в движок TensorRT, что позволяет быстро и эффективно делать выводы. TensorRT-LLM также позволяет обновлять веса после компиляции, что добавляет гибкости для моделей, которым требуются частые обновления.
Сопоставление и слияние образцов
Операция «Слияние» — еще одна мощная функция TensorRT-LLM. Объединяя несколько операций (например, умножение матриц с функциями активации) в одно ядро CUDA, TensorRT минимизирует накладные расходы, связанные с многократными запусками ядра. Это сокращает передачу памяти и ускоряет вывод.
Плагины
Чтобы расширить возможности TensorRT, разработчики могут написать плагины— пользовательские ядра, которые выполняют определенные задачи, такие как оптимизация многоголовых блоков внимания. Например, Вспышка внимания плагин значительно улучшает производительность слоев внимания LLM.
Тесты: прирост производительности TensorRT-LLM
TensorRT-LLM демонстрирует значительный прирост производительности для вывода LLM на различных GPU. Вот сравнение скорости вывода (измеряется в токенах в секунду) с использованием TensorRT-LLM на различных GPU NVIDIA:
| Модель | Точность | Длина ввода/вывода | H100 (80 ГБ) | A100 (80 ГБ) | L40S FP8 |
|---|---|---|---|---|---|
| ГПТЖ 6Б | FP8 | 128/128 | 34,955 | 11,206 | 6,998 |
| ГПТЖ 6Б | FP8 | 2048/128 | 2,800 | 1,354 | 747 |
| LLaMA v2 7B | FP8 | 128/128 | 16,985 | 10,725 | 6,121 |
| LLaMA v3 8B | FP8 | 128/128 | 16,708 | 12,085 | 8,273 |
Эти тесты показывают, что TensorRT-LLM обеспечивает существенное улучшение производительности, особенно для более длинных последовательностей.
Практикум: Установка и сборка TensorRT-LLM
Шаг 1: Создание контейнерной среды
Для удобства использования TensorRT-LLM предоставляет образы Docker для создания контролируемой среды для построения и запуска моделей.
docker build --pull \
--target devel \
--file docker/Dockerfile.multi \
--tag tensorrt_llm/devel:latest .












