Моделът 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 параметри, която според експерти като Джим Фан от 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 на Google Instruct, а моделът 70B е конкурентен на Gemini Pro 1.5 и Claude 3 Sonnet.
Meta съобщава, че моделът Llama 3 е подобрен с възможност за разбиране на кодове, подобно на Llama 2, и за първи път е обучен с помощта на изображения и текст. Въпреки това, сегашният му резултат е ограничен до текст.
LLaMA 3 бенчмаркове
Тъй като много организации използват AWS за своите производствени натоварвания, нека видим как да разгърнем LLaMA 3 в AWS EC2.
При прилагането на LLM съществуват множество пречки, като например потреблението на VRAM (паметта на графичния процесор), скоростта на изводите, пропускателната способност и използването на дисковото пространство. В този сценарий трябва да се уверим, че сме заделили GPU инстанция в AWS EC2 с достатъчен капацитет на VRAM, за да поддържаме изпълнението на нашите модели.
LLaMA 3 8B изисква около 16 GB дисково пространство и 20 GB VRAM (памет на графичния процесор) в FP16. Разбира се, бихте могли да внедрите LLaMA 3 на централен процесор, но латентността би била твърде висока за реална производствена употреба. Що се отнася до LLaMA 3 70B, той изисква около 140 GB дисково пространство и 160 GB VRAM в FP16.
Да се сдобиете с 20 GB VRAM за LLaMA 3 8B е доста лесно. Препоръчвам ви да си осигурите графичен процесор NVIDIA A10: този графичен процесор е снабден с 24 GB VRAM и е бърз графичен процесор, базиран на платформата Ampere. В AWS EC2 трябва да изберете инстанция G5, за да осигурите графичен процесор A10. Достатъчен е g5.xlarge.
Внедряването на модела LLaMA 3 70B обаче е много по-голямо предизвикателство. Нито един графичен процесор не разполага с достатъчно VRAM за този модел, така че ще трябва да осигурите инстанция с няколко графични процесора. Ако осигурите инстанция g5.48xlarge в AWS, ще получите 192 GB VRAM (8 x графични процесори A10), което ще е достатъчно за 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
Зареждането на модела в графичния процесор трябва да отнеме до 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 инстанции и да балансирате натоварването на заявките (но това е извън обхвата на тази статия).
Както можете да видите, внедряването на LLaMA 3 в производството не изисква сложен код благодарение на сървърите за изводи като vLLM.
Осигуряването на подходящия хардуер обаче е предизвикателство. Първо, защото тези графични процесори са много скъпи, но също така и поради настоящия недостиг на графични процесори в световен мащаб. Ако за първи път се опитвате да осигурите 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