Затрудняетесь с ИИ или разработкой полного стека? Наши эксперты готовы помочь вам: индивидуальные консультации, техническая интеграция и многое другое. Обращайтесь по адресу [email protected].

Механизмы вывода GenAI: TensorRT-LLM vs vLLM vs Hugging Face TGI vs LMDeploy

Развитие генеративного искусственного интеллекта (GenAI) привело к трансформации различных отраслей, от обработки естественного языка до создания креативного контента. Однако эффективное развертывание этих мощных моделей в масштабе остается сложной задачей.

TensorRT-LLM, vLLM, Hugging Face TGI и LMDeploy

Системы обработки выводов играют важную роль в оптимизации производительности, снижении задержек и максимальном использовании ресурсов. В этой статье мы рассмотрим четыре ведущих решения: TensorRT-LLM, vLLM, Hugging Face TGI и LMDeploy.

Каждый из них обладает уникальными преимуществами, будь то аппаратное ускорение точности NVIDIA, инновационное управление памятью vLLM, готовая к производству экосистема TGI или сосредоточенность на скорости и простоте LMDeploy. Присоединяйтесь к нам, мы сравним эти движки, чтобы помочь вам найти идеальный вариант для ваших рабочих нагрузок GenAI.

TensorRT-LLM: мощная установка NVIDIA для оптимизированных выводов

TensorRT-LLM - это решение NVIDIA для быстрой и плавной работы больших языковых моделей. Построенная на базе фреймворка TensorRT, она призвана выжать каждую каплю производительности из графических процессоров NVIDIA. Для этого используются такие трюки, как слияние слоев, настройка точности (FP16, INT8, FP8...) и оптимизация ядра, которая сокращает время вычислений, не снижая точности модели.

TensorRT-LLM

Дело не только в скорости. TensorRT-LLM эффективно обрабатывает большие модели, разумно управляя памятью, чтобы не допустить сбоя в середине выполнения. Он также поддерживает динамическое пакетирование, позволяя вам обрабатывать несколько запросов одновременно без потери памяти. Если вы уже используете оборудование NVIDIA, это несомненный выбор, поскольку он тесно связан с их экосистемой, такой как CUDA и cuDNN, и даже интегрируется с Triton Inference Server и NVIDIA Dynamo от NVIDIA.

Тем не менее, он подходит не всем. Настройка может быть сложной, если вы не умеете работать с инструментами NVIDIA, и она менее гибкая, если вы работаете на оборудовании не NVIDIA. Тем не менее, в плане мощности и оптимизации на графических процессорах NVIDIA ему нет равных.

vLLM: высокопроизводительный вывод с PagedAttention

vLLM отлично справляется с быстрой обработкой большого количества заданий на вывод. Это проект с открытым исходным кодом, который отлично работает, когда вам нужна высокая пропускная способность без замедления. Секретный соус - PagedAttention, трюк, который управляет памятью гораздо лучше, чем большинство других. Вместо того чтобы загружать все сразу и съедать оперативную память, он разделяет кэш ключевых значений на фрагменты, захватывая только то, что необходимо. Меньше потерь, больше скорости.

vLLM

Он также очень гибкий. Он работает с такими популярными моделями, как LLaMA или Mistral, прямо из коробки и поддерживает множество аппаратных средств, включая графические процессоры NVIDIA или AMD. Кроме того, вы получаете динамическое пакетирование для эффективной группировки запросов, обеспечивая бесперебойную работу конвейера. Настройка довольно проста, если вы знакомы с Python и PyTorch.

Основным ограничением vLLM является его относительная незрелость на рынке, что означает, что он еще не может предложить полный набор функций, доступных в более известных решениях. Однако для организаций, которые ищут эффективное решение, обеспечивающее высокопроизводительные выводы, vLLM является отличным выбором.

Обнимающиеся лица TGI: Готовое к производству решение для генерации текста

Hugging Face TGI (Text Generation Inference) создан для тех, кто хочет получить готовые модели без головной боли. Это инструмент, созданный командой Hugging Face, поэтому он отлично сочетается с их массивной библиотекой предварительно обученных моделей - BERT, GPT и другими. Он предназначен для реального использования, например, для питания чат-ботов или приложений, где генерация текста должна работать быстро и без сбоев.

Обнимающиеся лица TGI

TGI справляется с тяжелой работой благодаря таким функциям, как непрерывное пакетирование, которое позволяет системе быть занятой, подменяя новые запросы по мере завершения старых. Он поддерживает GPU-ускорение и может масштабироваться, если у вас есть оборудование. Кроме того, в нем есть встроенные средства безопасности, например фильтрация плохих результатов, что очень удобно для производства. Вы можете развернуть его с помощью Docker в несколько шагов, поэтому его относительно легко настроить.

Загвоздка? Он привязан к экосистеме Hugging Face, поэтому, если вы еще не в этом мире, он может показаться ограниченным. Тем не менее, для варианта "подключи и работай", готового к использованию, TGI - отличный выбор.

LMDeploy: Эффективное развертывание с высокой скоростью декодирования

LMDeploy - это набор инструментов от команд MMRazor и MMDeploy, созданный для сжатия, развертывания и запуска больших языковых моделей без лишних хлопот. Что отличает его от других? Отличная скорость декодирования - до 1,8 раз больше запросов в секунду, чем у vLLM на графическом процессоре A100. Это достигается благодаря таким трюкам, как постоянное пакетирование, блокированное KV-кэширование и умные ядра CUDA, которые заставляют GPU работать.

LMDeploy

У него два движка: TurboMind для максимальной производительности и PyTorch для более простой работы. TurboMind - главная звезда здесь: он делает 4-битные выводы в 2,4 раза быстрее, чем FP16, и легко справляется с такими большими моделями, как Llama-2 70B. Вы также можете квантовать веса и KV-кэши для экономии памяти без ущерба для точности. Развертывание также не составляет труда - одна команда устанавливает сервер на нескольких машинах, если вам это необходимо. Кроме того, он запоминает историю чата при многораундовых переговорах, чтобы не тратить время на повтор старой работы.

Недостатки? TurboMind привередлив - он пока не может работать с моделями внимания со скользящим окном, такими как Mistral. И если вы не используете графические процессоры NVIDIA, вы будете вынуждены использовать более медленный движок PyTorch. Тем не менее, для скорости и простоты на подходящем оборудовании LMDeploy - отличный выбор.

Сравнение производительности: Задержка, пропускная способность и масштабируемость

Давайте разберемся, как эти движки соотносятся между собой по задержке (скорость обработки одного запроса), пропускной способности (количество запросов, которые они могут принять) и масштабируемости (насколько хорошо они справляются с большими нагрузками или большим количеством оборудования).

TensorRT-LLM имеет лучшие показатели по задержкам, если у вас есть графические процессоры NVIDIA. Он хорошо оптимизирован для оборудования NVIDIA, поэтому одиночные запросы выполняются быстро: менее 50 мс для большинства моделей на A100. Пропускная способность также превосходна, особенно при динамическом пакетировании. Бенчмарки от BentoML показывают, что этот движок достигает 700 токенов в секунду при 100 одновременных пользователях для Llama 3 70B Q4 на A100 80GB GPU. TensorRT-LLM демонстрирует высокие результаты в сценариях с длинными входными данными и высокой частотой запросов, обеспечивая хорошую пропускную способность. Масштабируемость на нескольких GPU поддерживается из коробки с отличной производительностью.

vLLM также обладает хорошей пропускной способностью, особенно в нагрузках, связанных с декодированием, с высокой пропускной способностью и низкой задержкой после недавних обновлений. Бенчмарки от BentoML показывают, что этот движок достигает 600-650 токенов в секунду при 100 одновременных пользователях для Llama 3 70B Q4 на A100 80GB GPU. Латентность хорошая, но не такая хорошая, как у TensorRT-LLM: около 60-80 мс для одиночных запусков. Он хорошо масштабируется между GPU, даже смешивая бренды, но он менее отточен для огромных наборов.

Hugging Face TGI работает так же, как и vLLM, обеспечивая баланс между производительностью и простотой использования. Задержка приличная: 50-70 мс на хорошем GPU. Бенчмарки от BentoML показывают, что этот движок достигает 600-650 токенов в секунду при 100 одновременных пользователях для Llama 3 70B Q4 на A100 80GB GPU. Он создан для масштабирования в производстве, поэтому легко справляется с увеличением числа пользователей или машин, особенно при использовании Docker.

LMDeploy выигрывает по скорости декодирования. Он превосходит по скорости генерации токенов, особенно для небольших моделей, и имеет низкое время до первого токена (TTFT) для квантованных больших моделей. Латентность низкая: 40-60 мс. А пропускная способность превосходна. Бенчмарки BentoML показывают, что этот движок достигает 700 токенов в секунду при 100 одновременных пользователях для Llama 3 70B Q4 на A100 80GB GPU. Масштабирование легко осуществляется с помощью серверной установки, но для достижения наилучших результатов он опирается на графические процессоры NVIDIA; режим PyTorch отстает.

Итог: TensorRT-LLM и LMDeploy лидируют по сырой скорости. Выбор зависит от аппаратного обеспечения и количества обрабатываемых запросов.

Возможности квантования

Квантование снижает точность модели, чтобы уменьшить расход памяти и ускорить вывод, что важно для сред с ограниченными ресурсами. Вот как работает каждый из движков:

TensorRT-LLM поддерживает FP8, FP4, INT4 с активационно-ориентированной квантованием веса (AWQ) и INT8 с SmoothQuant, предлагая широкие возможности для оптимизации производительности NVIDIA GPU.

vLLM обеспечивает гибкость при работе с GPTQ, AWQ, INT4, INT8 и FP8, адаптируясь к различным аппаратным средствам и требованиям к точности.

В Hugging Face TGI интегрирована система bitsandbytes для 8- и 4-битного квантования и GPT-Q для квантования только по весу, что подходит для развертывания на производстве.

LMDeploy предлагает 4-битный AWQ, 8-битное квантование и онлайн-квантование кэша INT8/INT4 KV, что повышает эффективность работы с большими моделями на ограниченном оборудовании.

Совместимость оборудования

Аппаратная поддержка определяет место установки этих двигателей, что влияет на масштабируемость и производительность:

TensorRT-LLM эксклюзивно для NVIDIA CUDA, используя ускорители GPU для высокой производительности.

vLLM поддерживает NVIDIA CUDA, AMD ROCm, AWS Neuron и CPU, обеспечивая широкую совместимость с различными системами.

Hugging Face TGI работает с NVIDIA CUDA, AMD ROCm, Intel Gaudi и AWS Inferentia, обеспечивая гибкость для различных аппаратных сред.

LMDeploy оптимизирован для NVIDIA CUDA, обеспечивая высочайшую производительность на графических процессорах NVIDIA, но с ограниченной поддержкой других платформ.

Простота использования

Процесс настройки и интеграции может повлиять на сроки разработки. Вот как обстоят дела с каждым из движков:

TensorRT-LLM требует преобразования контрольных точек, создания движка TensorRT и настройки параметров, что делает его сложным и трудоемким для инженеров.

vLLM удобен в использовании благодаря исчерпывающей документации, простой установке и бесшовной интеграции с библиотекой Python.

Hugging Face TGI пользуется преимуществами экосистемы Hugging Face, предлагая предварительно созданные образы Docker и подробную документацию для быстрого развертывания.

LMDeploy отличается простой настройкой с помощью одной команды для запуска сервера и Python API для настройки, сочетая простоту и гибкость.

Заключение

Выбор подходящего движка зависит от вашего сценария использования, оборудования и навыков.

TensorRT-LLM - это ваш лучший механизм вывода, если вы запускаете большие модели на NVIDIA GPU и нуждаетесь в каждой унции скорости (подумайте о приложениях с низкой задержкой, таких как чат-боты реального времени или AI-помощники, где ответы должны генерироваться за миллисекунды). Это идеальный вариант для компаний, которые уже глубоко погрузились в мир NVIDIA, но он может оказаться излишним, если вы ищете простоту.

vLLM - это отличный компромисс между скоростью и простотой. Он отлично подходит для стартапов и исследователей, которым нужно что-то гибкое и быстрое в настройке.

Hugging Face TGI эквивалентен vLLM по скорости и простоте. Его легко развернуть, он плавно масштабируется и связан с модельным хабом Hugging Face, поэтому он идеально подходит для команд, которым нужно решение без лишних хлопот.

LMDeploy сияет производительностью, как и TensorRT-LLM. Он подходит для пользователей с графическими процессорами NVIDIA, которым нужна простая настройка и высокая производительность, но он менее удобен, если ваши модели плохо работают с TurboMind.

Если вы не можете или не хотите самостоятельно развернуть собственную модель GenAI, вы можете воспользоваться NLP Cloud и использовать быстрые генеративные модели ИИ в масштабе производства. Попробуйте быстрый вывод на NLP Cloud прямо сейчас!

Если у вас есть вопросы о механизмах вывода в целом, пожалуйста, не стесняйтесь спрашивать нас, мы всегда рады помочь!

Julien
Технический директор NLP Cloud