Aveți probleme cu inteligența artificială sau cu dezvoltarea full-stack? Experții noștri sunt aici pentru a vă ghida: consiliere personalizată, integrare tehnică și multe altele. Contactați-ne la [email protected].

Cum să instalați și să implementați LLaMA 3 în producție?

Modelul generativ de inteligență artificială LLaMA 3 a fost lansat de Meta în urmă cu câteva zile, iar acesta prezintă deja capacități impresionante.

Aflați cum să instalați și să implementați LLaMA 3 în producție cu ajutorul acestui ghid pas cu pas. De la cerințele hardware la implementare și scalare, acoperim tot ce trebuie să știți pentru o implementare fără probleme.

LLaMA 3

Introducere în LLaMA 3

Meta a introdus versiunile inițiale ale modelului de inteligență artificială open-source Llama 3, care poate fi utilizat pentru crearea de texte, programare sau chatbots. Mai mult, Meta și-a anunțat planurile de a încorpora LLaMA 3 în principalele sale aplicații de socializare. Această mișcare are ca scop să concureze cu alți asistenți AI, cum ar fi ChatGPT de la OpenAI, Copilot de la Microsoft și Gemini de la Google.

La fel ca Llama 2, Llama 3 se remarcă ca un model lingvistic mare, accesibil în mod gratuit, cu greutăți deschise, oferit de o companie lider în domeniul inteligenței artificiale (deși nu se califică drept "open source" în sensul convențional).

În prezent, Llama 3 poate fi descărcat gratuit de pe site-ul Meta în două dimensiuni diferite de parametri: 8 miliarde (8B) și 70 miliarde (70B). Utilizatorii se pot înregistra pentru a avea acces la aceste versiuni. Llama 3 este oferit în două variante: pre-antrenat, care este un model de bază pentru predicția următorului token, și ajustat la instrucțiuni, care este ajustat fin pentru a adera la comenzile utilizatorului. Ambele versiuni au o limită de context de 8.192 de token-uri.

Într-un interviu acordat lui Dwarkesh Patel, Mark Zuckerberg, directorul executiv al Meta, a menționat că au antrenat două modele personalizate folosind un cluster de 24.000 de GPU. Modelul 70B a fost antrenat cu aproximativ 15 trilioane de jetoane de date și nu a atins niciodată un punct de saturație sau o limită a capacităților sale. Ulterior, Meta a decis să se concentreze pe antrenarea altor modele. Compania a dezvăluit, de asemenea, că lucrează în prezent la o versiune cu parametrii de 400B a Llama 3, despre care experți precum Jim Fan de la Nvidia consideră că ar putea avea performanțe similare cu GPT-4 Turbo, Claude 3 Opus și Gemini Ultra la criterii de referință precum MMLU, GPQA, HumanEval și MATH.

Potrivit Meta, Llama 3 a fost evaluat folosind diferite criterii de referință, inclusiv MMLU (cunoștințe la nivel de licență), GSM-8K (matematică la nivel de școală primară), HumanEval (codificare), GPQA (întrebări la nivel de absolvire) și MATH (probleme de matematică). Aceste criterii de referință demonstrează că modelul 8B depășește modelele cu ponderi deschise, cum ar fi Gemma 7B și Mistral 7B Instruct de la Google, iar modelul 70B este competitiv față de Gemini Pro 1.5 și Claude 3 Sonnet.

Meta raportează că modelul Llama 3 a fost îmbunătățit cu abilitatea de a înțelege codificarea, similar cu Llama 2, și, pentru prima dată, a fost antrenat folosind atât imagini, cât și text. Cu toate acestea, rezultatul său actual este limitat la text.

LLaMA 3 Benchmarks LLaMA 3 Benchmarks

LLaMA 3 Cerințe hardware și selectarea instanțelor potrivite pe AWS EC2

Deoarece multe organizații folosesc AWS pentru sarcinile de lucru de producție, să vedem cum să implementăm LLaMA 3 pe AWS EC2.

Există mai multe obstacole atunci când vine vorba de implementarea LLM-urilor, cum ar fi consumul de VRAM (memorie GPU), viteza de inferență, debitul și utilizarea spațiului pe disc. În acest scenariu, trebuie să ne asigurăm că alocăm o instanță GPU pe AWS EC2 cu o capacitate VRAM suficientă pentru a susține execuția modelelor noastre.

LLaMA 3 8B necesită aproximativ 16 GB de spațiu pe disc și 20 GB de VRAM (memorie GPU) în FP16. Desigur, ați putea implementa LLaMA 3 pe un procesor, dar latența ar fi prea mare pentru un caz real de utilizare în producție. În ceea ce privește LLaMA 3 70B, acesta necesită aproximativ 140 GB de spațiu pe disc și 160 GB de VRAM în FP16.

Este destul de ușor să faci rost de 20GB de VRAM pentru LLaMA 3 8B. Vă recomand să procurați un GPU NVIDIA A10: acest GPU vine cu 24GB de VRAM și este un GPU rapid bazat pe platforma Ampere. Pe AWS EC2, ar trebui să selectați o instanță G5 pentru a furniza un GPU A10. O instanță g5.xlarge va fi suficientă.

Totuși, implementarea modelului LLaMA 3 70B este mult mai dificilă. Niciun GPU nu are suficientă VRAM pentru acest model, așa că va trebui să furnizați o instanță multi-GPU. Dacă furnizați o instanță g5.48xlarge pe AWS, veți obține 192 GB de VRAM (8 x GPU A10), care va fi suficient pentru LLaMA 3 70B.

Într-o astfel de configurație, vă puteți aștepta la următoarele latențe (timpi de răspuns): 50 de jetoane generate în 1 secundă pentru LLaMA 3 8B și 50 de jetoane generate în 5 secunde pentru LLaMA 3 70B.

Pentru a scădea costul de operare al acestor modele și a crește latența, puteți studia tehnicile de cuantificare, dar trebuie să fiți conștienți de faptul că astfel de optimizări pot afecta acuratețea modelului dumneavoastră. Cuantizarea iese din sfera de aplicare a acestui articol.

Pentru a furniza astfel de instanțe, conectați-vă la consola AWS EC2 și lansați o nouă instanță: selectați AMI NVIDIA deep learning, pe o instanță g5.xlarge sau g5.48xlarge. Nu uitați să provizionați și suficient spațiu pe disc.

Deep Learning AMI pe instanța G5 pe AWS

Inferența de producție cu vLLM

vLLM este o bibliotecă concepută pentru inferența și implementarea rapidă și ușoară a LLM. Eficiența sa este atribuită diferitelor metode sofisticate, inclusiv atenția paginată pentru gestionarea optimă a cheii de atenție și a memoriei de valori, procesarea în timp real a interogărilor primite în loturi și nucleele CUDA personalizate.

În plus, vLLM oferă un grad ridicat de adaptabilitate prin utilizarea calculului distribuit (folosind paralelismul tensorial), streaming în timp real și compatibilitate atât cu plăcile grafice NVIDIA, cât și cu cele AMD.

Mai exact, vLLM va fi de mare ajutor în implementarea LLaMA 3, permițându-ne să utilizăm instanțe AWS EC2 echipate cu mai multe GPU compacte NVIDIA A10. Acest lucru este mai avantajos decât utilizarea unui singur GPU mare, cum ar fi NVIDIA A100 sau H100. În plus, vLLM va spori semnificativ eficiența modelului nostru prin inferența continuă pe loturi.

Configurarea vLLM este destul de simplă. Să stabilim o conexiune SSH la instanța noastră AWS recent creată și să instalăm vLLM cu ajutorul pip:

pip install vllm

Deoarece intenționăm să efectuăm inferențe distribuite folosind vLLM pe 8 GPU A10, este necesară și instalarea lui Ray:

pip install ray

În cazul în care întâmpinați probleme de compatibilitate în timpul instalării, ar putea fi mai simplu pentru dumneavoastră să compilați vLLM din sursă sau să utilizați imaginea Docker a acestora: consultați instrucțiunile de instalare a vLLM.

Lansarea serverului de inferență

Acum să creăm scriptul nostru de inferență 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?"))

Puteți rula scriptul de mai sus. Dacă este prima dată când executați acest script, va trebui să așteptați ca modelul să fie descărcat și încărcat pe GPU, apoi veți primi ceva de genul acesta:

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

Este destul de simplu de înțeles. Trebuie doar să ajustați tensor_parallel_size în funcție de numărul de GPU-uri pe care le dețineți.

În prezent, dorim să inițiem un server de inferențe adecvat, capabil să gestioneze numeroase cereri și să execute inferențe simultane. Pentru a începe, porniți serverul:

Pentru LLaMA 3 8B:

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

Pentru LLaMA 3 70B:

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

Ar trebui să dureze până la 1 minut pentru ca modelul să se încarce pe GPU. Apoi puteți porni un al doilea terminal și puteți începe să faceți câteva cereri:

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?"
}'

Aveți acum un server de inferență pregătit pentru producție, care poate gestiona mai multe cereri paralele, grație unei grupări continue. La un moment dat, dacă numărul de cereri este prea mare, GPU-ul va fi totuși supraîncărcat. În acest caz, va trebui să replicați modelul pe mai multe instanțe GPU și să echilibrați solicitările (dar acest lucru nu face parte din domeniul de aplicare al acestui articol).

Concluzie

După cum puteți vedea, implementarea LLaMA 3 în producție nu necesită un cod complex datorită serverelor de inferență precum vLLM.

Totuși, aprovizionarea cu hardware-ul potrivit este o provocare. În primul rând pentru că aceste GPU sunt foarte costisitoare, dar și din cauza penuriei actuale de GPU la nivel mondial. Dacă este prima dată când încercați să provizionați un server GPU la AWS, este posibil să nu aveți permisiunea de a crea un server GPU. În acest caz, va trebui să contactați serviciul de asistență și să explicați cazul de utilizare. În acest articol am folosit AWS EC2, dar sunt disponibili, desigur, și alți furnizori (Azure, GCP, OVH, Scaleway...).

Dacă nu sunteți interesat să implementați LLaMA 3 de unul singur, vă sugerăm să folosiți API-ul NLP Cloud. Această opțiune poate fi mai eficientă și potențial mult mai rentabilă decât gestionarea propriei infrastructuri LLaMA 3. Încercați LLaMA 3 pe NLP Cloud acum!

Dacă aveți întrebări despre LLaMA 3 și despre implementarea AI în general, vă rugăm să nu ezitați să ne întrebați, este întotdeauna o plăcere să vă ajutăm!

Julien
CTO la NLP Cloud