AMD + 🤗 Ускорение больших языковых моделей из коробки с помощью графического процессора AMD

AMD + 🤗 Максимальное ускорение обработки больших языковых моделей с графическим процессором AMD

Ранее в этом году AMD и Hugging Face объявили о партнерстве для ускорения моделей искусственного интеллекта на мероприятии AMD AI Day. Мы усердно работаем над реализацией этой задачи и делаем все возможное, чтобы сообщество Hugging Face могло запускать самые новые модели искусственного интеллекта на оборудовании AMD с лучшей производительностью.

AMD обеспечивает мощность некоторых из самых мощных суперкомпьютеров в мире, включая самый быстрый в Европе LUMI, который работает на базе более 10 000 графических процессоров MI250X AMD. На этом мероприятии AMD представила свою последнюю серию акселераторов для серверов, AMD Instinct™ MI300, которая скоро станет доступна широкому кругу пользователей.

В этой статье мы расскажем о нашем прогрессе в обеспечении прекрасной поддержки графических процессоров AMD “из коробки” и расширении совместимости с последними графическими процессорами AMD Instinct для серверов.

Ускорение “из коробки”

Можете ли вы найти изменения в коде, специфичные для AMD? Не затрудняйте взор, их нет по сравнению с работой на графических процессорах NVIDIA 🤗.

from transformers import AutoTokenizer, AutoModelForCausalLMimport torchmodel_id = "01-ai/Yi-6B"tokenizer = AutoTokenizer.from_pretrained(model_id)with torch.device("cuda"):    model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=torch.float16)inp = tokenizer(["Сегодня я нахожусь в Париже и"], padding=True, return_tensors="pt").to("cuda")res = model.generate(**inp, max_new_tokens=30)print(tokenizer.batch_decode(res))

Одним из основных аспектов, над которым мы работаем, является возможность запуска моделей Hugging Face Transformers без изменения кода. Теперь мы поддерживаем все модели и задачи Transformers на графических процессорах AMD Instinct. И наше сотрудничество не ограничивается здесь: мы исследуем поддержку моделей diffusers “из коробки” и других библиотек, а также других графических процессоров AMD.

Достижение этой вехи было значительным усилием и сотрудничеством наших команд и компаний. Для поддержания поддержки и производительности для сообщества Hugging Face мы создали интегрированное тестирование библиотек с открытым исходным кодом Hugging Face на графических процессорах AMD Instinct в наших датацентрах, и смогли сократить углеродный след этих новых рабочих нагрузок, работая с Verne Global по развертыванию серверов AMD Instinct в Исландии.

Помимо нативной поддержки, еще одним важным аспектом нашего сотрудничества является предоставление интеграции с последними инновациями и функциями, доступными на графических процессорах AMD. Благодаря сотрудничеству команды Hugging Face, инженеров AMD и членов сообщества с открытым исходным кодом, мы с радостью анонсируем поддержку:

  • Flash Attention v2 от AMD Open Source в расширенной нативной интеграции в Transformers и Text Generation Inference.
  • Paged Attention от vLLM и различные объединенные ядра, доступные в Text Generation Inference для ROCm.
  • DeepSpeed для графических процессоров, работающих на ROCm с использованием Transformers, теперь официально проверен и поддерживается.
  • GPTQ, общая техника сжатия весов, используемая для уменьшения требований к памяти модели, поддерживается на ROCm-графических процессорах благодаря непосредственной интеграции с AutoGPTQ и Transformers.
  • Optimum-Benchmark, утилита для легкого тестирования производительности Transformers на графических процессорах AMD в нормальных и распределенных настройках с оптимизациями и схемами квантования.
  • Поддержка выполнения моделей ONNX на графических процессорах, работающих на ROCm, с использованием ONNX Runtime через ROCMExecutionProvider с использованием библиотеки Optimum.

Мы с большим восторгом предлагаем пользователям Hugging Face эти современные инструменты ускорения, которые стали доступными и легкими в использовании, а также обеспечиваем поддержку и производительность с прямой интеграцией в наш конвейер непрерывной интеграции и разработки для графических процессоров AMD Instinct.

Один графический процессор AMD Instinct MI250 с 128 ГБ памяти высокой пропускной способности имеет два отдельных устройства ROCm (GPU 0 и 1), каждое из них имеет 64 ГБ памяти высокой пропускной способности.

MI250 два устройства, как показывает `rocm-smi`

Это означает, что с помощью всего одной видеокарты MI250 у нас есть два устройства PyTorch, которые могут быть очень легко использованы с параллелизмом тензора и данных для достижения более высокой производительности и меньших задержек.

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

  • Задержка предварительной заполненности: время, которое требуется модели для вычисления представления введенных пользователем данных или подсказки (также называемое “Временем до первого токена”).
  • Задержка декодирования на каждый токен: время, которое требуется для генерации каждого нового токена в авторегрессивном режиме после этапа предварительного заполнения.
  • Пропускная способность декодирования: количество сгенерированных токенов в секунду во время этапа декодирования.

Используя optimum-benchmark и запуская бенчмарки для вывода на MI250 и A100 с оптимизациями и без них, мы получаем следующие результаты:

Бенчмарки вывода с использованием библиотек Transformers и PEFT. FA2 означает "Flash Attention 2", TP - "Tensor Parallelism", DDP - "Distributed Data Parallel".

На графиках выше мы можем видеть, насколько производительна MI250, особенно для производственных задач, где запросы обрабатываются пакетами большого размера, что позволяет обрабатывать более чем в 2,33 раза больше токенов (пропускная способность декодирования) и занимает вдвое меньше времени до первого токена (задержка предварительной заполненности) по сравнению с картой A100.

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

Бенчмарк обучения с использованием библиотеки Transformers при максимальном размере пакета (степени двойки), который может поместиться на определенной карте

Решения для производства

Еще одна важная задача нашего сотрудничества – создание поддержки для производственных решений Hugging Face, начиная с вывода текста (Text Generation Inference, TGI). TGI предоставляет комплексное решение для развертывания больших языковых моделей для вывода в масштабе.

Изначально TGI в основном была ориентирована на графические процессоры Nvidia, используя большую часть последних оптимизаций, выполненных для архитектуры Ampere, таких как Flash Attention v1 и v2, весовую квантизацию GPTQ и страницную аттенцию.

Сегодня мы с радостью объявляем о начальной поддержке видеокарт AMD Instinct MI210 и MI250 в TGI, используя все отличные работы с открытым исходным кодом, описанные выше, интегрированные в полное комплексное решение, готовое к развертыванию.

По производительности мы потратили много времени на проведение бенчмарков вывода текста на видеокартах AMD Instinct, чтобы проверить и выяснить, в каких областях нам следует фокусироваться на оптимизации. Таким образом, с поддержкой инженеров AMD GPUs, нам удалось достичь сопоставимой производительности по сравнению с тем, что уже предлагалось с помощью TGI.

В этом контексте и при долгосрочных отношениях между AMD и Hugging Face мы интегрировали и тестировали инструмент AMD GeMM Tuner, позволяющий настраивать ядра GeMM (умножение матриц), которые мы используем в TGI, чтобы найти наилучшую конфигурацию для повышения производительности. Инструмент AMD GeMM Tuner ожидается выхода в составе PyTorch в следующем релизе для того, чтобы каждый мог воспользоваться им.

С учётом всего вышеизложенного, мы с гордостью представляем первые показатели производительности, демонстрирующие последние технологии AMD, которые делают Text Generation Inference на графических процессорах AMD лидером эффективных решений для вывода семейства моделей Llama.

Результаты задержки TGI для модели Llama 34B, сравнение одного графического процессора AMD Instinct MI250 против A100-SXM4-80GB. Как было объяснено выше, один MI250 соответствует двум устройствам PyTorch.
Результаты задержки TGI для модели Llama 70B, сравнение двух графических процессоров AMD Instinct MI250 против двух устройств A100-SXM4-80GB (с использованием параллелизма тензоров)

Отсутствие столбцов для A100 связано с ошибками нехватки памяти, так как модель Llama 70B занимает 138 ГБ в формате float16, и для промежуточных активаций, KV кэш-буфера (более 5 ГБ для длины последовательности 2048, размера пакета 8), контекста CUDA и других операций требуется достаточно свободной памяти. Графический процессор Instinct MI250 имеет 128 ГБ глобальной памяти, в то время как устройство A100 – 80 ГБ, что объясняет возможность выполнения более крупных нагрузок (длинные последовательности, большие пакеты) на MI250.

Text Generation Inference готов для развёртывания на графических процессорах AMD Instinct в производственной среде с использованием образа Docker ghcr.io/huggingface/text-generation-inference:1.2-rocm. Обязательно ознакомьтесь с документацией о поддержке и её ограничениях.

Что дальше?

Мы надеемся, что этот блог-пост также вас воодушевил, как и нас в Hugging Face, в связи с этим партнёрством с AMD. Конечно, это только начало нашего пути, и мы с нетерпением ждём возможности реализовать ещё больше применений на различных графических процессорах AMD.

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

Конечно, мы также будем работать над оптимизацией производительности для линейки MI300, чтобы обеспечить, что и открытая версия, и решения предоставляют самые последние инновации на высочайшем уровне стабильности, которого мы всегда добиваемся в Hugging Face.

Также мы активно будем заниматься развитием технологии AMD Ryzen AI, которая занимает своё место в последнем поколении процессоров для ноутбуков AMD, позволяющей выполнять искусственный интеллект непосредственно на устройстве. В условиях, когда помощники при написании кода, инструменты генерации изображений и личные помощники становятся всё более широко доступными, важно предлагать решения, которые соответствуют потребностям в сохранении конфиденциальности, чтобы получить максимальную выгоду от этих мощных инструментов. В этом контексте, уже сейчас на Hugging Face Hub доступны модели, совместимые с Ryzen AI, и мы активно работаем с AMD, чтобы предоставить ещё больше таких моделей в ближайшие месяцы.