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].

"LLaMA 3", "Mistral" ir "Mixtral" diegimas "AWS EC2" naudojant vLLM

2023 m. išleista daug pažangių atvirojo kodo LLM, tačiau šių dirbtinio intelekto modelių diegimas gamyboje vis dar yra techninis iššūkis. Šiame straipsnyje parodysime, kaip AWS EC2 sistemoje įdiegti keletą geriausių LLM: LLaMA 3 70B, Mistral 7B ir Mixtral 8x7B. Naudosime pažangų išvedimo variklį, palaikantį paketinį išvedimą, kad maksimaliai padidintume pralaidumą: vLLM.

vLLM

LLaMA 3, "Mistral" ir "Mixtral

Bendrovė "Meta" sukūrė ir pristatė didelių kalbos modelių (LLM) seriją "LLaMA 3", kurią sudaro įvairūs generatyviniai teksto modeliai, kurie buvo iš anksto apmokyti ir sureguliuoti. Šie modeliai yra įvairaus dydžio, o jų parametrai svyruoja nuo 7 iki 70 mlrd.

"Mistral AI", startuolis, kurį įkūrė asmenys, turintys patirties "Google" bendrovėse "DeepMind" ir "Meta", įžengė į LLM pasaulį su "Mistral 7B", o vėliau - su "Mistral 8x7B".

"Mistral 7B" ypač įspūdingas dėl savo našumo. Įvairiuose bandymuose jis pralenkė Llama2-13B ir netgi viršijo Llama1-34B pagal daugelį rodiklių. Tai rodo, kad "Mistral 7B" suteikia panašias arba geresnes galimybes, o skaičiavimo sąnaudos yra gerokai mažesnės. Atliekant kodavimo užduotis "Mistral 7B" konkuruoja su "CodeLlama 7B", o jos kompaktiškas 13,4 GB dydis leidžia ją paleisti standartiniuose kompiuteriuose.

"Mixtral 8x7B" yra lengvai pritaikomas ir greitas modelis, tinkantis įvairioms reikmėms. Jis veikia šešis kartus didesniu greičiu ir pagal visus bandymų rodiklius atitinka arba viršija "LLaMA 3 70B" našumą. Šis modelis palaiko kelias kalbas ir turi įgimtas kodavimo galimybes. Jis gali valdyti iki 32 tūkst. simbolių ilgio sekas.

Visi šie modeliai yra atvirojo kodo, todėl galite juos įdiegti savo serveryje, jei pavyks gauti prieigą prie tinkamos aparatinės įrangos. Pažiūrėkime, kaip juos įdiegti AWS EC2 naudojant vLLM.

Partijų išvadų darymas ir kelių GPU naudojimas su vLLM

vLLM yra greita ir patogi biblioteka, pritaikyta veiksmingai LLM išvadai ir diegimui. vLLM našumą lemia keletas pažangių metodų, pavyzdžiui, paged attention, skirtų efektyviam dėmesio rakto ir vertės atminties valdymui, paketinis gaunamų užklausų apdorojimas realiuoju laiku ir pritaikyti CUDA branduoliai.

Be to, "vLLM" pasižymi dideliu lankstumu dėl paskirstytosios išvados (naudojant tenzorių lygiagretumą), išvesties srautinio perdavimo ir pritaikymo NVIDIA ir AMD GPU architektūroms.

Visų pirma vLLM bus labai naudinga diegiant "LLaMA 3", "Mistral" ir "Mixtral", nes ji leis mūsų modelius diegti "AWS EC2" egzemplioriuose, kuriuose įmontuoti keli mažesni GPU (pvz., "NVIDIA A10"), o ne vienas didelis GPU (pvz., "NVIDIA A100" arba "H100"). Be to, vLLM leis mums gerokai padidinti modelio pralaidumą dėl paketinio išvedimo.

Tinkamos aparatinės įrangos parūpinimas "AWS EC2

LLM diegimas yra iššūkis dėl daugelio priežasčių: VRAM (GPU atminties) naudojimas, išvadų darymo greitis, pralaidumas, disko vietos naudojimas... Šiuo atveju turime įsitikinti, kad AWS EC2 sistemoje suteiksime GPU egzempliorių, kuris turės pakankamai VRAM, kad galėtų paleisti mūsų modelius.

G5 egzemplioriai yra geras pasirinkimas, nes jie suteikia prieigą prie modernių NVIDIA A10 GPU ir gali padidinti VRAM iki 192 GB (žr. g5.48xlarge egzempliorių), tačiau išlieka gana ekonomiški.

"Mistral 7B" yra lengviausiai įdiegiamas modelis, nes jam reikia maždaug 14 GB VRAM. Toliau eina "Mistral 8x7B" su 110 GB ir "LLaMA 3 70B" su 140 GB. Čia atsižvelgiame tik į fp16, o ne į fp32, ir netaikome jokio kvantavimo.

Todėl "Mistral 7B" gali veikti g5.xlarge instancijoje, tačiau "Mistral 8x7B" ir LLaMA 3 70B reikalauja g5.48xlarge instancijos, todėl šioje pamokoje mes pasirūpinsime g5.48xlarge instancija.

Norėdami suteikti tokius egzempliorius, prisijunkite prie "AWS EC2" konsolės ir paleiskite naują egzempliorių: pasirinkite "NVIDIA deep learning AMI" g5.48xlarge egzempliorių. Jums reikės bent 300 GB vietos diske.

Gilaus mokymosi AMI G5 egzemplioriuje

Įdiekite "vLLM" paskirstytosioms išvadoms

"vLLM" diegimas yra gana paprastas. Atverkime SSH ryšį su naujai sukurta AWS instancija ir įdiekime vLLM naudodami pip:

pip install vllm

Kadangi naudosime vLLM paskirstytai išvadai 8 x A10 GPU, turime įdiegti ir "Ray":

pip install ray

Jei diegimo proceso metu kyla suderinamumo problemų, gali būti paprasčiau sukurti vLLM iš pirminio šaltinio arba naudoti jų "Docker" atvaizdą: daugiau informacijos rasite diegimo dokumentuose.

Sukurti išvadų scenarijų

Dabar galite sukurti pirmąjį išvados scenarijų. Sukurkite "Python" failą, kuriame būtų:

from vllm import LLM

# Replace the model name with the one you want to use:
# Mixtral simple: mistralai/Mixtral-8x7B-v0.1
# Mixtral instruct: mistralai/Mixtral-8x7B-Instruct-v0.1
# Mistral 7B simple: mistralai/Mistral-7B-v0.1
# Mistral 7B instruct: mistralai/Mistral-7B-Instruct-v0.1
# LLaMA 3 70B: meta-llama/Llama-2-70b-hf
llm = LLM("mistralai/Mixtral-8x7B-Instruct-v0.1", tensor_parallel_size=8)

print(llm.generate("What is batch inference?"))

Dabar paleiskite savo scenarijų su "Python", kuris grąžina kažką panašaus į šį:

Batch inference is the process of applying machine learning models to a batch of data inputs all at once, rather than processing each input individually in real-time. In batch inference, a large set of inputs is collected and then processed together as a group, or "batch," by the machine learning model.

Batch inference is often used in scenarios where real-time predictions are not required, and where there is a large volume of data that needs to be processed. It can be more efficient and cost-effective than real-time inference, as it allows for the efficient use of computing resources and can reduce the latency associated with processing individual inputs.

Batch inference is commonly used in applications such as image recognition, natural language processing, and predictive analytics. For example, a company might use batch inference to analyze customer data and generate insights about purchasing patterns, or to analyze sensor data from industrial equipment to identify potential maintenance issues.

In summary, batch inference is the process of applying machine learning models to a batch of data inputs all at once, as an alternative to real-time inference. It is commonly used in scenarios where real-time predictions are not required and where there is a large volume of data that needs to be processed efficiently.

Kaip matote, tai yra visai paprasta. Turite pritaikyti tensor_parallel_size priklausomai nuo turimų pagrindinių GPU skaičiaus.

Tai buvo vienkartinis scenarijus. Dabar norime paleisti tinkamą išvedimo serverį, kuris galėtų apdoroti kelias užklausas ir atlikti paketinį išvedimą. Pirmiausia paleiskite serverį:

python -m vllm.entrypoints.openai.api_server \
--model mistralai/Mixtral-8x7B-Instruct-v0.1
--tensor-parallel-size 8

Po kurio laiko, kai modelis bus teisingai įkeltas į VRAM, galite atidaryti antrąjį apvalkalo langą ir pateikti keletą užklausų:

curl http://localhost:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
    "model": "mistralai/Mixtral-8x7B-Instruct-v0.1",
    "prompt": "What is batch inference?"
}'

Bus gautas toks pat rezultatas kaip ir anksčiau, tačiau šį kartą vienu metu galėsite atlikti kelias užklausas.

Išvada

Jei norite maksimaliai išnaudoti savo GPU ir lengvai lygiagrečiai įdiegti modelį keliuose GPU, naudinga naudoti tokį pažangų inferencijos serverį kaip vLLM.

Kaip matote, naudojant šį metodą gana lengva įdiegti pažangiausius atvirojo kodo dirbtinio intelekto modelius, tokius kaip LLaMA 3, "Mistral" ir "Mixtral", savo serveryje.

Šioje pamokoje naudojome "AWS EC2", bet, žinoma, galėjome naudoti ir kitų tiekėjų paslaugas. Pagrindinis iššūkis bus GPU kaina ir jų prieinamumas.

Jei nenorite patys diegti tokių LLM, rekomenduojame naudotis mūsų NLP Cloud API. Taip sutaupysite daug laiko ir gali būti net pigiau nei diegti savo LLM. Jei to dar nepadarėte, nedvejodami pabandykite!

Vincent
NLP Cloud programuotojo advokatas