Улучшение производительности вывода LLM с помощью новых контейнеров Amazon SageMaker

Повышение производительности вывода LLM с использованием новых контейнеров Amazon SageMaker

Сегодня Amazon SageMaker запускает новую версию (0.25.0) контейнеров Deep Learning Containers (DLCs) для больших моделей инференса (LMI) и добавляет поддержку библиотеки NVIDIA’s TensorRT-LLM. С помощью этих обновлений вы легко получите доступ к передовым инструментам для оптимизации больших языковых моделей (LLMs) на SageMaker и достигнете преимуществ в плане цена-производительность – Amazon SageMaker LMI TensorRT-LLM DLC снижает задержку в среднем на 33% и увеличивает пропускную способность в среднем на 60% для моделей Llama2-70B, Falcon-40B и CodeLlama-34B по сравнению с предыдущей версией.

LLMs стали популярными во многих областях применения. Однако эти модели часто слишком большие, чтобы поместиться на одном ускорителе или графическом процессоре, что затрудняет достижение низкой задержки и масштабирования при выводе результатов. SageMaker предлагает LMI DLCs, чтобы помочь вам максимально использовать доступные ресурсы и повысить производительность. Новые LMI DLCs предлагают непрерывную поддержку пакетной обработки для запросов вывода, чтобы улучшить пропускную способность, эффективные коллективные операции вывода для снижения задержки, Paged Attention V2 (улучшающую производительность задач с длинными последовательностями) и последнюю версию библиотеки TensorRT-LLM от NVIDIA для максимизации производительности на графических процессорах. В LMI DLCs имеется удобный интерфейс, упрощающий компиляцию с использованием TensorRT-LLM, требуется только идентификатор модели и необязательные параметры модели; все сложности, связанные с созданием оптимизированной модели TensorRT-LLM и созданием репозитория моделей, управляются LMI DLC. Кроме того, вы можете использовать последние техники квантизации – GPTQ, AWQ и SmoothQuant, доступные в LMI DLCs. Используя LMI DLCs на SageMaker, вы сможете ускорить время получения результата для приложений, основанных на генеративном искусственном интеллекте, и оптимизировать LLMs для выбранного вами аппаратного обеспечения, достигнув лучших результатов в отношении цена-производительность.

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

Новые возможности с SageMaker LMI DLCs

В этом разделе мы рассмотрим три новые возможности с SageMaker LMI DLCs.

SageMaker LMI теперь поддерживает TensorRT-LLM

SageMaker теперь предлагает библиотеку NVIDIA’s TensorRT-LLM в рамках последнего выпуска LMI DLC (0.25.0), позволяя использовать передовые оптимизации, такие как SmoothQuant, FP8 и непрерывная пакетная обработка для LLMs при использовании графических процессоров NVIDIA. TensorRT-LLM открывает возможность для работы с приложениями с ультранизкой задержкой, что значительно повышает производительность. SDK TensorRT-LLM поддерживает развертывание от единичного GPU до конфигураций с несколькими GPU, и есть возможность получить дополнительный выигрыш в производительности с помощью методов параллелизма тензоров. Чтобы использовать библиотеку TensorRT-LLM, выберите TensorRT-LLM DLC из доступных LMI DLCs и установите параметр engine=MPI среди других настроек, включая option.model_id. Ниже приведена диаграмма, иллюстрирующая технологический стек TensorRT-LLM.

Эффективные коллективные операции вывода

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

Для экземпляров типа P4D SageMaker реализует новую коллективную операцию, которая ускоряет коммуникацию между графическими процессорами. В результате получается более низкая задержка и более высокая пропускная способность с последними версиями LMI DLCs по сравнению с предыдущими версиями. Кроме того, эта функция поддерживается автоматически с LMI DLCs, и вам не нужно настраивать что-либо для ее использования, поскольку она встроена в SageMaker LMI DLCs и доступна исключительно для Amazon SageMaker.

Поддержка квантования

LMI DLC-модули SageMaker теперь поддерживают последние техники квантования, включая предварительно квантованные модели с помощью GPTQ, квантование весов с активацией (AWQ) и квантование по мере необходимости, такое как SmoothQuant.

GPTQ позволяет LMI выполнять популярные модели INT3 и INT4 от Hugging Face. Он предлагает наименьшие возможные веса модели, которые могут поместиться на одном GPU/много-GPU. DLC-модули LMI также поддерживают вывод AWQ, который обеспечивает более быструю скорость вывода. Наконец, LMI DLC-модули теперь поддерживают SmoothQuant, которое позволяет квантовать INT8 для сокращения объема памяти и вычислительной стоимости моделей с минимальной потерей точности. В настоящее время мы позволяем вам выполнять преобразование для моделей SmoothQuant без дополнительных шагов. Для GPTQ и AWQ требуется квантование с использованием набора данных для использования с DLC-модулями LMI. Вы также можете выбрать популярные предварительно квантованные модели GPTQ и AWQ для использования с DLC-модулями LMI. Чтобы использовать SmoothQuant, установите option.quantize=smoothquan с engine=DeepSpeed в serving.properties. Образец ноутбука, использующий SmoothQuant для размещения GPT-Neox на ml.g5.12xlarge, находится на GithHub.

Использование LMI DLC-модулей SageMaker

Вы можете развернуть свои LLM-модели на SageMaker с использованием новых LMI DLC-модулей 0.25.0 без изменений в вашем коде. DLC-модули LMI SageMaker используют сервис DJL для обслуживания модели для вывода. Для начала вам просто нужно создать файл конфигурации, который указывает настройки, такие как параллелизация модели и библиотеки оптимизации вывода, которые необходимо использовать. Для инструкций и учебных пособий по использованию LMI DLC-модулей SageMaker см. Параллелизм моделей и вывод больших моделей и наш список доступных LMI DLC-модулей SageMaker.

Контейнер DeepSpeed включает библиотеку, называемую LMI Distributed Inference Library (LMI-Dist). LMI-Dist – это библиотека вывода, используемая для выполнения вывода больших моделей с лучшей оптимизацией, используемой разными библиотеками с открытым исходным кодом, включая vLLM, Text-Generation-Inference (до версии 0.9.4), FasterTransformer и DeepSpeed. В эту библиотеку включены популярные технологии с открытым исходным кодом, такие как FlashAttention, PagedAttention, FusedKernel и эффективные ядра передачи данных на GPU для ускорения модели и сокращения потребления памяти.

TensorRT LLM – это библиотека с открытым исходным кодом, выпущенная NVIDIA в октябре 2023 года. Мы оптимизировали библиотеку TensorRT-LLM для ускорения вывода и создали инструментарий, упрощающий опыт пользователя с помощью поддержки конвертации модели по мере необходимости. Этот инструментарий позволяет пользователям предоставить идентификатор модели Hugging Face и развернуть модель от начала и до конца. Он также поддерживает непрерывное объединение с потоковым интерфейсом. Время компиляции моделей Llama-2 7B и 13B составляет примерно 1-2 минуты, а модели 70B – около 7 минут. Если вы хотите избежать этой накладной работы по компиляции при настройке конечной точки SageMaker и масштабировании экземпляров, рекомендуем использовать компиляцию заранее (AOT) с нашим учебником для подготовки модели. Мы также принимаем любую модель TensorRT LLM, созданную для сервера Triton, которую можно использовать с LMI DLC-модулями.

Результаты сравнения производительности

Мы сравнили производительность последней версии DLC-модулей SageMaker LMI (0.25.0) с предыдущей версией (0.23.0). Мы провели эксперименты на моделях Llama-2 70B, Falcon 40B и CodeLlama 34B, чтобы продемонстрировать увеличение производительности с помощью TensorRT-LLM и эффективных операций вывода (доступных в SageMaker).

Контейнеры SageMaker LMI поставляются с предустановленным скриптом обработчика для загрузки и хостинга моделей, предоставляя вариант с низким кодом. У вас также есть возможность использовать собственный скрипт, если вам нужно внести какие-либо изменения в шаги загрузки модели. Вы должны передать необходимые параметры в файл serving.properties. Этот файл содержит необходимые конфигурации для сервера модели Deep Java Library (DJL) для загрузки и хостинга модели. Следующий код представляет собой используемый для нашего развертывания и бенчмаркинга файл serving.properties:

engine=MPIoption.use_custom_all_reduce=true option.model_id={{s3url}}option.tensor_parallel_degree=8option.output_formatter=jsonoption.max_rolling_batch_size=64option.model_loading_timeout=3600

Параметр engine используется для определения среды выполнения для сервера моделей DJL. Мы можем указать идентификатор модели Hugging Face или положение модели в Amazon Simple Storage Service (Amazon S3), используя параметр model_id. Параметр задачи используется для определения задачи обработки естественного языка (NLP). Параметр tensor_parallel_degree задает количество устройств, на которые распределяются тензорно-параллельные модули. Параметр use_custom_all_reduce устанавливается в true для экземпляров GPU с включенной NVLink для ускорения вывода модели. Вы можете установить это для P4D, P4de, P5 и других GPU с подключенной NVLink. Параметр output_formatter задает формат вывода. Параметр max_rolling_batch_size задает ограничение для максимального количества одновременных запросов. Параметр model_loading_timeout задает значение времени ожидания для загрузки и загрузки модели для обслуживания вывода. Для получения более подробной информации о параметрах конфигурации см. Конфигурации и настройки.

Llama-2 70B

Ниже приведены результаты сравнения производительности Llama-2 70B. Задержка сокращается на 28%, а пропускная способность увеличивается на 44% при параллельной работе 16, с использованием новых LMI TensorRT LLM DLC.

Falcon 40B

Ниже приведены результаты сравнения производительности Falcon 40B. Задержка сокращается на 36%, а пропускная способность увеличивается на 59% при параллельной работе 16, с использованием новых LMI TensorRT LLM DLC.

CodeLlama 34B

Ниже приведены результаты сравнения производительности CodeLlama 34B. Задержка сокращается на 36%, а пропускная способность увеличивается на 77% при параллельной работе 16, с использованием новых LMI TensorRT LLM DLC.

В последнем релизе SageMaker предоставляет два контейнера: 0.25.0-deepspeed и 0.25.0-tensorrtllm. Контейнер DeepSpeed содержит библиотеку LMI Distributed Inference. Контейнер TensorRT-LLM включает в себя библиотеку TensorRT-LLM от NVIDIA для ускорения LLM инференса.

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

Чтобы начать, ознакомьтесь с примерами ноутбуков:

Заключение

В этой статье мы показали, как вы можете использовать DLC SageMaker LMI для оптимизации LLMs для вашего бизнес-кейса и достижения преимуществ по цена-производительность. Чтобы узнать больше о возможностях DLC LMI, ознакомьтесь с модельным параллелизмом и инференсом больших моделей. Мы с нетерпением ждем, чтобы увидеть, как вы используете эти новые возможности от Amazon SageMaker.