Imate težave z umetno inteligenco ali razvojem celotnega paketa? Naši strokovnjaki so vam na voljo za pomoč: prilagojeni nasveti, tehnična integracija in še več. Obrnite se na [email protected].

Kako namestiti in uvesti LLaMA 3 v produkcijo?

Podjetje Meta je pred nekaj dnevi izdalo model generativne umetne inteligence LLaMA 3, ki že kaže impresivne zmogljivosti.

V tem vodniku po korakih se naučite, kako namestiti in uvesti LLaMA 3 v produkcijo. Od zahtev za strojno opremo do uvajanja in razširjanja - opisano je vse, kar morate vedeti za nemoteno uvajanje.

LLaMA 3

Uvod v LLaMA 3

Meta je predstavila začetne različice svojega odprtokodnega modela umetne inteligence Llama 3, ki ga je mogoče uporabiti za ustvarjanje besedil, programiranje ali klepetalne robote. Poleg tega je Meta napovedala, da namerava LLaMA 3 vključiti v svoje primarne aplikacije za družbene medije. S to potezo želi konkurirati drugim pomočnikom z umetno inteligenco, kot so ChatGPT podjetja OpenAI, Microsoftov Copilot in Googlov Gemini.

Podobno kot Llama 2 tudi Llama 3 izstopa kot prosto dostopen velik jezikovni model z odprtimi utežmi, ki ga ponuja vodilno podjetje za umetno inteligenco (čeprav ne velja za "odprto kodo" v običajnem smislu).

Trenutno lahko program Llama 3 brezplačno prenesete z Metinega spletnega mesta v dveh različnih velikostih parametrov: 8 milijard (8B) in 70 milijard (70B). Za dostop do teh različic se lahko uporabniki prijavijo. Llama 3 je na voljo v dveh različicah: predpripravljen, ki je osnovni model za napovedovanje naslednjega žetona, in prilagojen navodilom, ki je natančno prilagojen za upoštevanje uporabniških ukazov. Obe različici imata omejitev konteksta na 8 192 žetonov.

Mark Zuckerberg, izvršni direktor podjetja Meta, je v intervjuju z Dwarkeshom Patelom omenil, da so dva po meri izdelana modela usposobili s pomočjo gruče 24.000 procesorjev. Model 70B je bil usposobljen s približno 15 bilijoni žetonov podatkov in nikoli ni dosegel točke nasičenosti ali meje svojih zmogljivosti. Nato se je Meta odločila, da se bo osredotočila na usposabljanje drugih modelov. Podjetje je tudi razkrilo, da trenutno delajo na različici Llama 3 s 400B parametri, za katero strokovnjaki, kot je Jim Fan iz podjetja Nvidia, menijo, da bi se lahko pri primerjalnih testih, kot so MMLU, GPQA, HumanEval in MATH, izkazala podobno kot GPT-4 Turbo, Claude 3 Opus in Gemini Ultra.

Po podatkih podjetja Meta je bil Llama 3 ocenjen z različnimi merili, vključno z MMLU (znanje na dodiplomski ravni), GSM-8K (matematika v osnovni šoli), HumanEval (kodiranje), GPQA (vprašanja na podiplomski ravni) in MATH (matematične besedilne naloge). Ta primerjalna merila kažejo, da model 8B prekaša modele z odprtimi utežmi, kot sta Googlova modela Gemma 7B in Mistral 7B Instruct, model 70B pa je konkurenčen modeloma Gemini Pro 1.5 in Claude 3 Sonnet.

Meta poroča, da je bil model Llama 3 izboljšan z zmožnostjo razumevanja kodiranja, podobno kot model Llama 2, in da je bil prvič usposobljen z uporabo slik in besedila. Vendar je njegov trenutni rezultat omejen na besedilo.

Primerjalna merila LLaMA 3 Primerjalna merila LLaMA 3

Zahteve za strojno opremo LLaMA 3 in izbira pravih instanc na AWS EC2

Ker veliko organizacij uporablja AWS za svoje produkcijske delovne obremenitve, si oglejmo, kako namestiti LLaMA 3 v AWS EC2.

Pri izvajanju mehanizmov LLM obstaja več ovir, kot so poraba pomnilnika VRAM (GPU), hitrost sklepanja, prepustnost in izkoriščenost prostora na disku. V tem scenariju moramo zagotoviti, da bomo na AWS EC2 dodelili instanco GPU z zadostno zmogljivostjo VRAM, ki bo podpirala izvajanje naših modelov.

LLaMA 3 8B potrebuje približno 16 GB prostora na disku in 20 GB VRAM-a (pomnilnika grafičnega procesorja) v FP16. LLaMA 3 bi seveda lahko namestili na procesorju, vendar bi bila zakasnitev prevelika za uporabo v realni produkciji. LLaMA 3 70B potrebuje približno 140 GB prostora na disku in 160 GB VRAM-a v FP16.

20 GB pomnilnika VRAM za LLaMA 3 8B je precej enostavno dobiti. Priporočam, da si zagotovite grafični procesor NVIDIA A10: ta grafični procesor ima 24 GB pomnilnika VRAM in je hiter grafični procesor, ki temelji na platformi Ampere. V sistemu AWS EC2 morate izbrati instanco G5, da lahko zagotovite grafični procesor A10. Dovolj bo že instanc g5.xlarge.

Uporaba modela LLaMA 3 70B je veliko bolj zahtevna. Noben grafični procesor nima dovolj VRAM-a za ta model, zato boste morali zagotoviti primerek z več grafičnimi procesorji. Če na AWS zagotovite instanco g5.48xlarge, boste dobili 192 GB VRAM (8 x grafični procesorji A10), kar bo zadostovalo za LLaMA 3 70B.

V takšni konfiguraciji lahko pričakujete naslednje zakasnitve (odzivni časi): Za LLaMA 3 8B je 50 žetonov ustvarjenih v 1 sekundi, za LLaMA 3 70B pa je 50 žetonov ustvarjenih v 5 sekundah.

Da bi zmanjšali stroške delovanja teh modelov in povečali zakasnitev, lahko preučite tehnike kvantizacije, vendar se morate zavedati, da lahko takšne optimizacije škodijo natančnosti vašega modela. Kvantizacija ni predmet tega članka.

Če želite zagotoviti takšne instance, se prijavite v konzolo AWS EC2 in zaženite novo instanco: izberite AMI za globoko učenje NVIDIA v instanci g5.xlarge ali g5.48xlarge. Ne pozabite zagotoviti tudi dovolj prostora na disku.

Globoko učenje AMI na instanci G5 na AWS

Sklepanje o proizvodnji z vLLM

vLLM je knjižnica, zasnovana za hitro in enostavno sklepanje in uporabo LLM. Njena učinkovitost se pripisuje različnim prefinjenim metodam, vključno s stransko pozornostjo za optimalno upravljanje ključa pozornosti in pomnilnika vrednosti, obdelavo vhodnih poizvedb v serijah v realnem času in prilagojenimi jedri CUDA.

Poleg tega vLLM zagotavlja visoko stopnjo prilagodljivosti, saj uporablja porazdeljeno računanje (z uporabo tenzorskega paralelizma), pretakanje v realnem času in združljivost z grafičnimi karticami NVIDIA in AMD.

Zlasti vLLM bo v veliko pomoč pri uvajanju LLaMA 3, saj nam bo omogočil uporabo instanc AWS EC2, opremljenih z več kompaktnimi grafičnimi procesorji NVIDIA A10. To je prednost pred uporabo enega samega velikega grafičnega procesorja, kot sta NVIDIA A100 ali H100. Poleg tega bo vLLM znatno povečal učinkovitost našega modela z neprekinjenim paketnim sklepanjem.

Nastavitev vLLM je precej preprosta. Vzpostavimo povezavo SSH z našim nedavno ustvarjenim primerkom AWS in namestimo vLLM s pipom:

pip install vllm

Ker nameravamo izvajati porazdeljeno sklepanje z vLLM na 8 x grafičnih procesorjih A10, je potrebna tudi namestitev programa Ray:

pip install ray

Če pri namestitvi naletite na težave z združljivostjo, bo morda enostavneje, če vLLM sestavite iz izvorne kode ali uporabite njihovo sliko Docker: si oglejte navodila za namestitev vLLM.

Zagon strežnika za sklepanje

Zdaj ustvarimo skripto za sklepanje v Pythonu:

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?"))

Zgornjo skripto lahko zaženete. Če to skripto zaženete prvič, boste morali počakati, da se model prenese in naloži v grafični procesor, nato pa se bo prikazalo nekaj takega:

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

Razumeti je zelo preprosto. Velikost tensor_parallel_size morate prilagoditi številu grafičnih procesorjev, ki jih imate.

Zdaj želimo vzpostaviti ustrezen strežnik za sklepanje, ki bo lahko upravljal številne zahteve in izvajal sočasno sklepanje. Za začetek zaženite strežnik:

Za LLaMA 3 8B:

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

Za LLaMA 3 70B:

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

Nalaganje modela v grafični procesor naj bi trajalo do ene minute. Nato lahko zaženete drugi terminal in začnete oddajati zahtevke:

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

Zdaj imate ustrezen inferenčni strežnik, pripravljen za produkcijo, ki lahko zaradi neprekinjenega paketnega izbiranja obdeluje veliko vzporednih zahtevkov. Če bo število zahtevkov preveliko, bo grafični procesor na neki točki preobremenjen. V tem primeru boste morali model razmnožiti na več instanc GPU in uravnotežiti obremenitev zahtevkov (vendar to ne sodi v okvir tega članka).

Zaključek

Kot lahko vidite, uvajanje LLaMA 3 v produkcijo ne zahteva zapletene kode zaradi inferenčnih strežnikov, kot je vLLM.

Zagotavljanje prave strojne opreme je zahtevno. Najprej zato, ker so ti grafični procesorji zelo dragi, pa tudi zaradi trenutnega globalnega pomanjkanja grafičnih procesorjev. Če prvič poskušate zagotoviti strežnik z grafičnim procesorjem v AWS, morda nimate dovoljenja za ustvarjanje strežnika z grafičnim procesorjem. V tem primeru se boste morali obrniti na podporo in pojasniti svoj primer uporabe. V tem članku smo uporabili AWS EC2, seveda pa so na voljo tudi drugi ponudniki (Azure, GCP, OVH, Scaleway ...).

Če LLaMA 3 ne želite namestiti sami, vam svetujemo, da uporabite naš API NLP Cloud. Ta možnost je lahko učinkovitejša in potencialno veliko bolj stroškovno ugodna kot upravljanje lastne infrastrukture LLaMA 3. Preizkusite LLaMA 3 v oblaku NLP zdaj!

Če imate vprašanja o LLaMA 3 in uvajanju umetne inteligence na splošno, nas brez oklevanja vprašajte, vedno vam z veseljem pomagamo!

Julien
Tehnični direktor v podjetju NLP Cloud