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

Namestitev LLaMA 3, Mistral in Mixtral na AWS EC2 z vLLM

Leta 2023 so bili objavljeni številni napredni odprtokodni modeli LLM, vendar je uvajanje teh modelov umetne inteligence v proizvodnjo še vedno tehnični izziv. V tem članku bomo pokazali, kako namestiti nekaj najboljših LLM na AWS EC2: LLaMA 3 70B, Mistral 7B in Mixtral 8x7B. Uporabili bomo napreden inferenčni motor, ki podpira paketno inferenco, da bi čim bolj povečali prepustnost: vLLM.

vLLM

LLaMA 3, Mistral in Mixtral

Meta je ustvarila in predstavila serijo velikih jezikovnih modelov (LLM) LLaMA 3, ki vključuje različne generativne besedilne modele, ki so bili predhodno usposobljeni in natančno nastavljeni. Ti modeli se razlikujejo po velikosti, parametri pa se gibljejo med 7 in 70 milijardami.

Podjetje Mistral AI, ki so ga soustanovili posamezniki z izkušnjami iz Googlovih podjetij DeepMind in Meta, se je s programom Mistral 7B in nato Mixtral 8x7B pomembno vključilo v svet programov LLM.

Mistral 7B je še posebej impresiven zaradi svoje zmogljivosti. V različnih testih je bil boljši od modela Llama2-13B in v številnih kazalnikih celo boljši od modela Llama1-34B. To kaže, da Mistral 7B zagotavlja podobne ali boljše zmogljivosti z bistveno manjšimi računskimi stroški. Pri nalogah kodiranja je Mistral 7B konkurenčen programu CodeLlama 7B, njegova kompaktna velikost 13,4 GB pa mu omogoča delovanje na standardnih računalnikih.

Mixtral 8x7B je prilagodljiv in hiter model, primeren za različne aplikacije. Deluje s šestkrat večjo hitrostjo in v vseh testnih metrikah dosega ali presega zmogljivost modela LLaMA 3 70B. Ta model podpira več jezikov in ima prirojene možnosti kodiranja. Obvladuje zaporedja, dolga do 32 tisoč znakov.

Vsi ti modeli so odprtokodni in jih lahko namestite v svoj strežnik, če vam uspe pridobiti dostop do ustrezne strojne opreme. Oglejmo si, kako jih namestiti na AWS EC2 z vLLM.

Paketno sklepanje in več grafičnih procesorjev z vLLM

vLLM je hitra in uporabniku prijazna knjižnica, prilagojena za učinkovito sklepanje in uporabo LLM. Učinkovitost vLLM izhaja iz več naprednih tehnik, kot so paged attention za učinkovito upravljanje ključa pozornosti in vrednosti pomnilnika, paketna obdelava vhodnih poizvedb v realnem času in prilagojena jedra CUDA.

Poleg tega vLLM ponuja dobro prilagodljivost s porazdeljenim sklepanjem (prek tenzorskega paralelizma), izhodnim pretakanjem in prilagoditvijo za arhitekture grafičnih procesorjev NVIDIA in AMD.

VLLM bo zlasti zelo koristen pri uvajanju LLaMA 3, Mistral in Mixtral, saj nam bo omogočil uvajanje naših modelov na instanci AWS EC2, ki vsebuje več manjših grafičnih procesorjev (kot je NVIDIA A10), namesto enega samega velikega grafičnega procesorja (kot je NVIDIA A100 ali H100). Poleg tega nam bo vLLM omogočil znatno povečanje prepustnosti našega modela zaradi paketnega sklepanja.

Zagotavljanje prave strojne opreme v sistemu AWS EC2

Uvajanje programov LLM je izziv iz več razlogov: Poraba VRAM (pomnilnika grafičnega procesorja), hitrost sklepanja, prepustnost, poraba prostora na disku... Pri tem moramo zagotoviti, da bomo zagotovili instanco grafičnega procesorja na AWS EC2, ki ima dovolj VRAM-a za izvajanje naših modelov.

Primerki G5 so dobra izbira, saj omogočajo dostop do sodobnih grafičnih procesorjev NVIDIA A10 in se lahko povečajo do 192 GB VRAM (glej primerek g5.48xlarge), hkrati pa so cenovno precej učinkoviti.

Mistral 7B je model, ki ga je najlažje namestiti, saj potrebuje približno 14 GB VRAM. Sledita Mistrral 8x7B s 110 GB in LLaMA 3 70B s 140 GB. Pri tem upoštevamo samo fp16, ne fp32, in ne uporabljamo nobene vrste kvantizacije.

Posledično lahko Mistral 7B deluje na instanci g5.xlarge, vendar Mixtral 8x7B in LLaMA 3 70B zahtevata instanco g5.48xlarge, zato bomo v tem priročniku zagotovili instanco g5.48xlarge.

Č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.48xlarge. Potrebujete vsaj 300 GB prostora na disku.

Globoko učenje AMI na instanci G5 na AWS

Namestitev vLLM za porazdeljeno sklepanje

Namestitev vLLM je precej preprosta. Odprite povezavo SSH z novo ustvarjenim primerkom AWS in s pipom namestite vLLM:

pip install vllm

Ker bomo vLLM uporabljali za porazdeljeno sklepanje na 8 x grafičnih procesorjih A10, moramo namestiti tudi Ray:

pip install ray

V primeru težav z združljivostjo med postopkom namestitve bo morda lažje, če vLLM sestavite iz izvorne kode ali uporabite njihovo sliko Docker: za več podrobnosti glejte dokumentacijo za namestitev.

Ustvarite skript za sklepanje

Zdaj lahko ustvarite prvo skripto za sklepanje. Ustvarite datoteko Python, ki vsebuje naslednje:

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

Sedaj zaženite svojo skripto s programom Python, ki vrne nekaj takega:

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.

Kot lahko vidite, je to zelo enostavno. Velikost tensor_parallel_size morate prilagoditi glede na število osnovnih grafičnih procesorjev, ki jih imate.

Zgornji scenarij je bil enkraten. Zdaj želimo zagnati ustrezen inferenčni strežnik, ki lahko obdeluje več zahtevkov in izvaja paketno inferenco sproti. Najprej zaženite strežnik:

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

Ko je model pravilno naložen v pomnilnik VRAM, lahko po določenem času odprete drugo okno lupine in izpolnite nekaj zahtev:

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

To bo vrnilo enak rezultat kot prej, vendar lahko tokrat opravite več zahtevkov hkrati.

Zaključek

Uporaba naprednega inferenčnega strežnika, kot je vLLM, je koristna, če želite čim bolj izkoristiti svoj grafični procesor in svoj model preprosto vzporedno namestiti na več grafičnih procesorjev.

Kot lahko vidite, je s to tehniko precej enostavno namestiti najnaprednejše odprtokodne modele umetne inteligence, kot so LLaMA 3, Mistral in Mixtral, v svoj strežnik.

V tem učbeniku smo uporabili AWS EC2, seveda pa bi lahko uporabili tudi druge ponudnike. Glavni izziv bodo stroški grafičnih procesorjev in njihova razpoložljivost.

Če takšnih LLM ne želite uvajati sami, vam priporočamo, da namesto tega uporabite naš API NLP Cloud. Tako boste prihranili veliko časa in bo morda celo cenejše kot uvajanje lastnih LLM-jev. Če tega še niste storili, poskusite!

Vincent
Zagovornik razvijalcev v NLP Cloud