Модель генеративного ШІ LLaMA 3 була випущена компанією Meta кілька днів тому, і вона вже демонструє вражаючі можливості.
Дізнайтеся, як встановити та розгорнути 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 графічних процесорів. Модель 70B була навчена приблизно на 15 трильйонах токенів даних, і вона так і не досягла точки насичення або межі своїх можливостей. Після цього в Meta вирішили зосередитися на навчанні інших моделей. Компанія також повідомила, що наразі працює над версією Llama 3 з параметрами 400B, яка, на думку експертів, таких як Джим Фан (Jim Fan) з 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 від Google та Mistral 7B Instruct, а модель 70B є конкурентоспроможною проти Gemini Pro 1.5 та Claude 3 Sonnet.
Мета повідомляє, що модель Llama 3 було вдосконалено за рахунок здатності розуміти кодування, подібно до Llama 2, і вперше її було навчено як на зображеннях, так і на тексті. Однак її поточні результати обмежуються текстом.
Контрольні показники LLaMA 3
Оскільки багато організацій використовують AWS для своїх виробничих навантажень, давайте подивимося, як розгорнути LLaMA 3 на AWS EC2.
Існує багато перешкод, коли справа доходить до реалізації LLM, таких як споживання VRAM (пам'яті графічного процесора), швидкість виведення, пропускна здатність і використання дискового простору. У цьому сценарії ми повинні переконатися, що ми виділили екземпляр GPU на AWS EC2 з достатнім об'ємом VRAM для підтримки виконання наших моделей.
LLaMA 3 8B вимагає близько 16 ГБ дискового простору і 20 ГБ VRAM (пам'яті графічного процесора) у FP16. Звичайно, ви можете розгорнути LLaMA 3 на центральному процесорі, але затримка буде занадто високою для реального виробничого використання. Що стосується LLaMA 3 70B, то їй потрібно близько 140 ГБ дискового простору і 160 ГБ VRAM у FP16.
Отримати 20 ГБ VRAM для LLaMA 3 8B досить легко. Я рекомендую вам встановити графічний процесор NVIDIA A10: цей графічний процесор поставляється з 24 ГБ VRAM і є швидким графічним процесором на базі платформи Ampere. На AWS EC2 вам слід вибрати екземпляр G5, щоб встановити графічний процесор A10. G5.xlarge буде достатньо.
Розгортання моделі LLaMA 3 70B набагато складніше. Жоден графічний процесор не має достатньої кількості VRAM для цієї моделі, тому вам потрібно буде створити екземпляр з декількома графічними процесорами. Якщо ви надасте екземпляр 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. Не забудьте також виділити достатньо місця на диску.
vLLM - це бібліотека, призначена для швидкого та легкого виведення та розгортання LLM. Її ефективність пояснюється різноманітними складними методами, серед яких посторінкова увага для оптимального керування пам'яттю ключів та значень, обробка вхідних запитів у реальному часі в пакетах та персоналізовані ядра CUDA.
Крім того, vLLM забезпечує високий ступінь адаптивності завдяки використанню розподілених обчислень (з тензорним паралелізмом), потокового передавання в реальному часі та сумісності з відеокартами NVIDIA та AMD.
Зокрема, vLLM значно допоможе у розгортанні LLaMA 3, дозволяючи нам використовувати екземпляри AWS EC2, оснащені декількома компактними графічними процесорами NVIDIA A10. Це перевага над використанням одного великого графічного процесора, такого як NVIDIA A100 або H100. Крім того, vLLM значно підвищить ефективність нашої моделі завдяки безперервному пакетному виведенню.
Налаштування vLLM досить просте. Давайте створимо SSH-з'єднання з нашим нещодавно створеним екземпляром AWS і встановимо vLLM за допомогою pip:
pip install vllm
Оскільки ми плануємо виконувати розподілене виведення за допомогою vLLM на 8 x A10 графічних процесорах, встановлення 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?"))
Ви можете запустити вищенаведений скрипт. Якщо ви запускаєте цей скрипт вперше, вам потрібно буде почекати, поки модель завантажиться і завантажиться на графічний процесор, після чого ви отримаєте щось на зразок цього:
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?"
}'
Тепер у вас є готовий до роботи сервер виводу, який може обробляти багато паралельних запитів завдяки безперервній пакетній обробці. Однак у певний момент, якщо кількість запитів буде занадто великою, графічний процесор буде перевантажений. У такому випадку вам потрібно буде реплікувати модель на декількох графічних процесорах і збалансувати навантаження на запити (але це виходить за рамки цієї статті).
Як бачите, розгортання LLaMA 3 у виробництво не вимагає складного коду завдяки таким серверам виведення, як vLLM.
Однак, забезпечення належного обладнання є складним завданням. По-перше, тому що ці графічні процесори дуже дорогі, а також через поточний глобальний дефіцит графічних процесорів. Якщо ви вперше намагаєтеся створити GPU-сервер в AWS, можливо, у вас немає дозволу на створення GPU-сервера. У такому випадку вам потрібно буде звернутися до служби підтримки і пояснити свій сценарій використання. У цій статті ми використовували AWS EC2, але, звичайно, доступні й інші постачальники (Azure, GCP, OVH, Scaleway...).
Якщо ви не зацікавлені у розгортанні LLaMA 3 самостійно, ми пропонуємо скористатися нашим хмарним API NLP. Цей варіант може бути більш ефективним і потенційно набагато економічно вигіднішим, ніж управління власною інфраструктурою LLaMA 3. Спробуйте LLaMA 3 в NLP Cloud прямо зараз!
Якщо у вас виникли запитання щодо LLaMA 3 та впровадження ШІ загалом, будь ласка, не соромтеся звертатися до нас, ми завжди раді допомогти!
Julien
Технічний директор NLP Cloud