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

Как установить и внедрить LLaMA 3 в производство?

Генеративная модель искусственного интеллекта LLaMA 3 была выпущена компанией Meta пару дней назад, и она уже демонстрирует впечатляющие возможности.

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

LLaMA 3

Введение в LLaMA 3

Компания Meta представила первые версии своей модели ИИ с открытым исходным кодом Llama 3, которую можно использовать для создания текстов, программирования или чат-ботов. Кроме того, Meta объявила о своих планах по внедрению LLaMA 3 в свои основные приложения для социальных сетей. Этот шаг призван составить конкуренцию другим ИИ-помощникам, таким как ChatGPT от OpenAI, Copilot от Microsoft и Gemini от Google.

Как и Llama 2, Llama 3 выделяется как свободно доступная большая языковая модель с открытым весом, предлагаемая ведущей компанией в области искусственного интеллекта (хотя она и не является "открытым исходным кодом" в общепринятом смысле).

В настоящее время Llama 3 можно бесплатно загрузить с сайта Meta в двух вариантах: 8 миллиардов (8B) и 70 миллиардов (70B). Пользователи могут зарегистрироваться, чтобы получить доступ к этим версиям. Llama 3 предлагается в двух вариантах: предварительно обученная, которая представляет собой базовую модель для предсказания следующей лексемы, и настраиваемая по инструкции, которая настраивается в соответствии с командами пользователя. Обе версии имеют контекстное ограничение в 8 192 лексемы.

В интервью с Дваркешем Пателем Марк Цукерберг, генеральный директор Meta, упомянул, что они обучили две модели, созданные на заказ, используя кластер из 24 000 GPU. Модель 70B была обучена примерно на 15 триллионах токенов, и она так и не достигла точки насыщения или предела своих возможностей. После этого Meta решила сосредоточиться на обучении других моделей. Компания также сообщила, что в настоящее время работает над версией Llama 3 с параметрами 400B, которая, по мнению экспертов, таких как Джим Фан из Nvidia, может показать результаты, аналогичные GPT-4 Turbo, Claude 3 Opus и Gemini Ultra в таких бенчмарках, как MMLU, GPQA, HumanEval и MATH.

Согласно Meta, Llama 3 была оценена с помощью различных бенчмарков, включая MMLU (знания на уровне бакалавра), GSM-8K (математика в начальной школе), HumanEval (кодирование), GPQA (вопросы на уровне выпускника) и MATH (математические текстовые задачи). Эти бенчмарки демонстрируют, что модель 8B превосходит такие модели с открытым весом, как Gemma 7B и Mistral 7B Instruct от Google, а модель 70B конкурентоспособна по сравнению с Gemini Pro 1.5 и Claude 3 Sonnet.

Компания Meta сообщает, что модель Llama 3 была усовершенствована и получила возможность понимать кодировку, как и Llama 2, и впервые она была обучена как на изображениях, так и на тексте. Однако в настоящее время она выдает только текст.

Бенчмарки LLaMA 3 Бенчмарки LLaMA 3

Требования к оборудованию LLaMA 3 и выбор подходящих экземпляров на AWS EC2

Поскольку многие организации используют AWS для своих производственных рабочих нагрузок, давайте посмотрим, как развернуть LLaMA 3 на AWS EC2.

При реализации LLM существует множество препятствий, таких как потребление VRAM (памяти GPU), скорость вывода, пропускная способность и использование дискового пространства. В данном сценарии мы должны обеспечить выделение экземпляра GPU на AWS EC2 с достаточным объемом VRAM для поддержки выполнения наших моделей.

LLaMA 3 8B требует около 16 ГБ дискового пространства и 20 ГБ VRAM (памяти GPU) в FP16. Конечно, можно развернуть LLaMA 3 на CPU, но задержки будут слишком велики для реального производственного применения. Что касается LLaMA 3 70B, то для него требуется около 140 ГБ дискового пространства и 160 ГБ VRAM в FP16.

Получить 20 ГБ VRAM для LLaMA 3 8B довольно просто. Я рекомендую вам предоставить графический процессор NVIDIA A10: этот GPU поставляется с 24 ГБ VRAM и является быстрым GPU на базе платформы Ampere. В AWS EC2 вам следует выбрать экземпляр G5, чтобы установить графический процессор A10. Достаточно будет экземпляра g5.xlarge.

Однако развертывание модели LLaMA 3 70B гораздо сложнее. Ни один GPU не имеет достаточного объема VRAM для этой модели, поэтому вам потребуется создать экземпляр с несколькими GPU. Если вы создадите экземпляр g5.48xlarge на AWS, вы получите 192 ГБ VRAM (8 x A10 GPU), чего будет достаточно для LLaMA 3 70B.

При такой конфигурации можно ожидать следующих задержек (времени отклика): 50 маркеров генерируются за 1 секунду для LLaMA 3 8B, и 50 маркеров генерируются за 5 секунд для LLaMA 3 70B.

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

Чтобы создать такие экземпляры, войдите в консоль AWS EC2 и запустите новый экземпляр: выберите NVIDIA deep learning AMI на экземпляре g5.xlarge или g5.48xlarge. Не забудьте также выделить достаточное количество дискового пространства.

Deep Learning AMI на экземпляре G5 на AWS

Производственный вывод с помощью vLLM

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

Кроме того, vLLM обеспечивает высокую степень адаптивности за счет использования распределенных вычислений (с тензорным параллелизмом), потоковой передачи данных в реальном времени и совместимости с видеокартами NVIDIA и AMD.

В частности, vLLM значительно поможет в развертывании LLaMA 3, позволив нам использовать экземпляры AWS EC2, оснащенные несколькими компактными графическими процессорами NVIDIA A10. Это выгоднее, чем использование одного большого GPU, такого как NVIDIA A100 или H100. Кроме того, vLLM значительно повысит эффективность нашей модели за счет непрерывного пакетного вычисления.

Настройка vLLM довольно проста. Давайте установим SSH-соединение с нашим недавно созданным экземпляром AWS и установим vLLM с помощью pip:

pip install vllm

Поскольку мы планируем проводить распределенные вычисления с помощью vLLM на 8 x A10 GPU, потребуется установка Ray:

pip install ray

Если у вас возникнут проблемы с совместимостью при установке, возможно, вам будет проще скомпилировать vLLM из исходников или использовать их Docker-образ: ознакомьтесь с инструкциями по установке vLLM.

Запустите сервер выводов

Теперь давайте создадим наш скрипт вывода на Python:

from vllm import LLM

# Use LLaMA 3 8B on 1 GPU
llm = LLM("meta-llama/Meta-Llama-3-8B-Instruct")

# Use LLaMA 3 70B on 8 GPUs
# llm = LLM("meta-llama/Meta-Llama-3-70B-Instruct", tensor_parallel_size=8)

print(llm.generate("What are the most popular quantization techniques for LLMs?"))

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

The most popular quantization techniques for Large Language Models (LLMs) are:
1. Integer Quantization
2. Floating-Point Quantization
3. Mixed-Precision Training
4. Knowledge Distillation

Понять это довольно просто. Вам просто нужно настроить tensor_parallel_size в зависимости от количества графических процессоров, которыми вы располагаете.

Теперь мы хотим запустить соответствующий сервер выводов, способный управлять многочисленными запросами и выполнять одновременные выводы. Для начала запустите сервер:

Для LLaMA 3 8B:

python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Meta-Llama-3-8B-Instruct

Для LLaMA 3 70B:

python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Meta-Llama-3-70B-Instruct
--tensor-parallel-size 8

Загрузка модели на GPU должна занять до 1 минуты. Затем вы можете запустить второй терминал и начать делать запросы:

curl http://localhost:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
    "model": "meta-llama/Meta-Llama-3-8B-Instruct",
    "prompt": "What are the most popular quantization techniques for LLMs?"
}'

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

Заключение

Как видите, развертывание LLaMA 3 в производстве не требует сложного кода благодаря серверам выводов, таким как vLLM.

Обеспечение нужного оборудования - сложная задача. Прежде всего потому, что эти GPU очень дороги, а также в связи с текущим глобальным дефицитом GPU. Если вы впервые пытаетесь создать GPU-сервер в AWS, у вас может не быть разрешения на создание GPU-сервера. В этом случае вам необходимо связаться со службой поддержки и объяснить свой случай использования. В этой статье мы использовали AWS EC2, но, разумеется, доступны и другие поставщики (Azure, GCP, OVH, Scaleway...).

Если вы не заинтересованы в самостоятельном развертывании LLaMA 3, мы предлагаем воспользоваться нашим NLP Cloud API. Этот вариант может быть более эффективным и потенциально гораздо более экономичным, чем управление собственной инфраструктурой LLaMA 3. Попробуйте LLaMA 3 на NLP Cloud прямо сейчас!

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

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