Susiduriate su sunkumais dirbtinio intelekto arba viso paketo kūrimo srityje? Mūsų ekspertai padės jums: teiksime pritaikytus patarimus, techninę integraciją ir dar daugiau. Kreipkitės į [email protected].

Kaip įdiegti ir įdiegti "LLaMA 3" į gamybą?

Prieš kelias dienas "Meta" išleido generatyvinį dirbtinio intelekto modelį "LLaMA 3", kuris jau dabar demonstruoja įspūdingas galimybes.

Šiame žingsnis po žingsnio vadove sužinosite, kaip įdiegti ir diegti "LLaMA 3" gamyboje. Aprašome viską, ką reikia žinoti, kad diegimas vyktų sklandžiai, - nuo aparatinės įrangos reikalavimų iki diegimo ir mastelio keitimo.

LLaMA 3

Įvadas į LLaMA 3

"Meta" pristatė pradines atvirojo kodo AI modelio "Llama 3" versijas, kurias galima naudoti teksto kūrimui, programavimui ar pokalbių robotams. Be to, "Meta" paskelbė apie savo planus įtraukti "LLaMA 3" į savo pagrindines socialinės žiniasklaidos programas. Šiuo žingsniu siekiama konkuruoti su kitais dirbtinio intelekto asistentais, tokiais kaip "OpenAI" "ChatGPT", "Microsoft" "Copilot" ir "Google" "Gemini".

Kaip ir "Llama 2", "Llama 3" išsiskiria kaip laisvai prieinamas didelės kalbos modelis su atviromis svarstyklėmis, kurį siūlo pirmaujanti dirbtinio intelekto bendrovė (nors įprastine prasme jis nelaikomas "atviruoju kodu").

Šiuo metu "Llama 3" galima nemokamai atsisiųsti iš "Meta" svetainės ir pasirinkti du skirtingus parametrų dydžius: 8 milijardų (8B) ir 70 milijardų (70B). Vartotojai gali užsiregistruoti, kad gautų prieigą prie šių versijų. Llama 3 siūlomi du variantai: iš anksto apmokytas, kuris yra bazinis kito simbolio prognozavimo modelis, ir pritaikytas pagal instrukcijas, kuris yra tiksliai pritaikytas laikytis naudotojo komandų. Abiejų versijų konteksto riba yra 8 192 ženklai.

Interviu su Dwarkeshu Patelu "Meta" generalinis direktorius Markas Zuckerbergas paminėjo, kad du pagal užsakymą sukurtus modelius jie apmoko naudodami 24 000 procesorių klasterį. 70B modelis buvo apmokytas naudojant maždaug 15 trilijonų žetonų duomenų, ir jis niekada nepasiekė prisotinimo taško ar savo galimybių ribos. Vėliau "Meta" nusprendė sutelkti dėmesį į kitų modelių mokymą. Bendrovė taip pat atskleidė, kad šiuo metu dirba su 400B parametrų "Llama 3" versija, kuri, tokių ekspertų kaip "Nvidia" atstovas Jimas Fanas (Jim Fan) nuomone, galėtų pasiekti panašių rezultatų kaip "GPT-4 Turbo", "Claude 3 Opus" ir "Gemini Ultra" tokiuose lyginamuosiuose testuose kaip MMLU, GPQA, "HumanEval" ir MATH.

Pasak "Meta", "Llama 3" buvo vertinama naudojant įvairius kriterijus, įskaitant MMLU (bakalauro lygio žinios), GSM-8K (pradinių klasių matematika), "HumanEval" (kodavimas), GPQA (aukštųjų mokyklų lygio klausimai) ir MATH (matematikos žodiniai uždaviniai). Šie lyginamieji testai rodo, kad 8B modelis lenkia tokius atvirų svorių modelius kaip "Google" Gemma 7B ir Mistral 7B Instruct, o 70B modelis konkuruoja su Gemini Pro 1.5 ir Claude 3 Sonnet.

"Meta" praneša, kad "Llama 3" modelis buvo patobulintas ir, kaip ir "Llama 2", geba suprasti kodus, be to, pirmą kartą jis buvo apmokytas naudoti ir vaizdus, ir tekstą. Tačiau šiuo metu jo išvestis apsiriboja tik tekstu.

LLaMA 3 lyginamieji testai LLaMA 3 lyginamieji testai

"LLaMA 3" aparatinės įrangos reikalavimai ir tinkamų "AWS EC2" instancijų pasirinkimas

Kadangi daugelis organizacijų naudoja AWS savo gamybiniams darbo krūviams, pažiūrėkime, kaip įdiegti "LLaMA 3" AWS EC2.

Įgyvendinant LLM susiduriama su įvairiomis kliūtimis, pavyzdžiui, VRAM (GPU atminties) suvartojimu, išvadų darymo greičiu, pralaidumu ir disko vietos panaudojimu. Šiame scenarijuje turime užtikrinti, kad AWS EC2 sistemoje būtų paskirta GPU instancija su pakankama VRAM talpa, kad būtų galima palaikyti mūsų modelių vykdymą.

"LLaMA 3 8B" reikia maždaug 16 GB vietos diske ir 20 GB VRAM (GPU atminties) FP16. Žinoma, LLaMA 3 galėtumėte įdiegti centriniame kompiuteryje, tačiau vėlavimas būtų per didelis realiam gamybiniam naudojimui. LLaMA 3 70B reikalauja apie 140 GB disko vietos ir 160 GB VRAM atminties FP16.

Gauti 20 GB VRAM atminties "LLaMA 3 8B" gana paprasta. Rekomenduoju pasirūpinti NVIDIA A10 GPU: šis GPU turi 24 GB VRAM ir yra greitas "Ampere" platformos pagrindu sukurtas GPU. AWS EC2 sistemoje, norėdami aprūpinti A10 GPU, turėtumėte pasirinkti G5 instanciją. Pakanka g5.xlarge.

Tačiau LLaMA 3 70B modelio diegimas yra daug sudėtingesnis. Nė vienas GPU neturi pakankamai VRAM šiam modeliui, todėl turėsite sukurti kelių GPU egzempliorių. Jei AWS sistemoje parūpinsite g5.48xlarge egzempliorių, gausite 192 GB VRAM (8 x A10 GPU), kurių pakaks LLaMA 3 70B.

Esant tokiai konfigūracijai, galima tikėtis tokio uždelsimo (atsako laiko): LLaMA 3 8B atveju per 1 sekundę sugeneruojama 50 ženklų, o LLaMA 3 70B atveju per 5 sekundes sugeneruojama 50 ženklų.

Siekdami sumažinti šių modelių veikimo sąnaudas ir padidinti delsą, galite ištirti kvantavimo būdus, tačiau žinokite, kad toks optimizavimas gali pakenkti jūsų modelio tikslumui. Kvantavimas nepatenka į šio straipsnio apimtį.

Norėdami sukurti tokius egzempliorius, prisijunkite prie "AWS EC2" konsolės ir paleiskite naują egzempliorių: pasirinkite "NVIDIA deep learning AMI" g5.xlarge arba g5.48xlarge egzempliorių. Taip pat nepamirškite numatyti pakankamai vietos diske.

Gilaus mokymosi AMI G5 egzemplioriuje

Gamybos išvados su vLLM

vLLM - tai biblioteka, skirta greitai ir lengvai LLM išvadoms daryti ir diegti. Jos efektyvumą lemia įvairūs sudėtingi metodai, įskaitant puslapinį dėmesį, skirtą optimaliam dėmesio rakto ir reikšmių atminties valdymui, realiuoju laiku gaunamų užklausų apdorojimą partijomis ir pritaikytus CUDA branduolius.

Be to, "vLLM" užtikrina didelį pritaikomumą, nes naudoja paskirstytus skaičiavimus (naudojant tensorinį lygiagretumą), srautinį duomenų perdavimą realiuoju laiku ir suderinamumą su NVIDIA ir AMD vaizdo plokštėmis.

Konkrečiai vLLM labai padės diegti "LLaMA 3", nes leis mums naudoti "AWS EC2" egzempliorius su keliais kompaktiškais NVIDIA A10 GPU. Tai yra pranašiau nei naudoti vieną didelį GPU, pavyzdžiui, NVIDIA A100 arba H100. Be to, vLLM gerokai padidins mūsų modelio efektyvumą dėl nuolatinio paketinio išvedimo.

Nustatyti vLLM gana paprasta. Sukurkime SSH ryšį su neseniai sukurta AWS instancija ir naudodami pip įdiekime vLLM:

pip install vllm

Kadangi planuojame atlikti paskirstytąją išvadą naudodami vLLM 8 x A10 GPU, taip pat reikia įdiegti "Ray":

pip install ray

Jei diegdami susidursite su suderinamumo problemomis, gali būti paprasčiau kompiliuoti vLLM iš šaltinio arba naudoti jų "Docker" atvaizdą: pažvelkite į vLLM diegimo instrukcijas.

Paleiskite išvadų serverį

Dabar sukurkime "Python" išvados scenarijų:

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

Galite paleisti pirmiau pateiktą scenarijų. Jei šį scenarijų paleidžiate pirmą kartą, turėsite palaukti, kol modelis bus atsisiųstas ir įkeltas į grafinį procesorių, tada gausite kažką panašaus:

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

Tai suprasti gana paprasta. Tiesiog reikia pritaikyti tensor_parallel_size (tensor_parallel_size) pagal turimų GPU skaičių.

Dabar norime inicijuoti tinkamą išvadų serverį, galintį valdyti daugybę užklausų ir vienu metu atlikti išvadas. Norėdami pradėti, paleiskite serverį:

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

Modelio įkėlimas į GPU turėtų užtrukti iki 1 minutės. Tada galite paleisti antrą terminalą ir pradėti teikti užklausas:

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

Dabar turite tinkamą gamybai paruoštą išvadų serverį, kuris gali apdoroti daugybę lygiagrečių užklausų dėl nuolatinio paketavimo. Tačiau tam tikru momentu, jei užklausų skaičius bus per didelis, GPU bus perkrautas. Tokiu atveju turėsite modelį atkartoti keliuose GPU egzemplioriuose ir subalansuoti užklausų apkrovą (tačiau tai nepatenka į šio straipsnio apimtį).

Išvada

Kaip matote, LLaMA 3 diegimas į gamybą nereikalauja sudėtingo kodo, nes naudojami tokie išvedimo serveriai kaip vLLM.

Tačiau sudėtinga parūpinti tinkamą aparatinę įrangą. Pirmiausia dėl to, kad šie GPU yra labai brangūs, taip pat dėl dabartinio pasaulinio GPU trūkumo. Jei pirmą kartą bandote aprūpinti AWS GPU serverį, galbūt neturite leidimo kurti GPU serverį. Tokiu atveju turėsite kreiptis į palaikymo tarnybą ir paaiškinti savo naudojimo atvejį. Šiame straipsnyje naudojome "AWS EC2", tačiau, žinoma, galima naudoti ir kitų tiekėjų serverius ("Azure", GCP, OVH, "Scaleway"...).

Jei nenorite patys diegti "LLaMA 3", siūlome naudotis mūsų NLP debesies API. Ši galimybė gali būti efektyvesnė ir potencialiai daug ekonomiškesnė nei savarankiškai valdyti "LLaMA 3" infrastruktūrą. Išbandykite "LLaMA 3" NLP debesyje dabar!

Jei turite klausimų apie "LLaMA 3" ir dirbtinio intelekto diegimą apskritai, nedvejodami kreipkitės į mus, visada malonu padėti!

Julien
"NLP Cloud" techninis direktorius