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.1 405B diegimas ir diegimas gamybai GCP Compute Engine

LLaMA 3.1 405b yra didelis kalbos modelis, kurį sukūrė "Meta AI" ir kuris yra vienas didžiausių atvirai prieinamų dirbtinio intelekto modelių pagal parametrų dydį - 405 mlrd. parametrų. Jis priklauso "Llama 3.1" šeimai, kurią sudaro skirtingo dydžio modeliai (8B, 70B ir 405B parametrų).

405B versija ypač išsiskiria savo mastu, nes įvairiose lyginamosiose analizėse siekia prilygti arba net pranokti kai kurių geriausių uždarojo kodo modelių, pavyzdžiui, GPT-4, našumą, o tai rodo, kad ji pasižymi moderniausiomis kalbos supratimo, generavimo ir kitų užduočių galimybėmis. Llama 3.1 modeliai sukurti su patobulintu daugiakalbiškumo palaikymu, gebantys suprasti ir generuoti tekstą keliomis kalbomis, o tai išplečia jų pritaikymo galimybes įvairiuose regionuose ir naudotojų bazėse.

Šiame straipsnyje parodysime, kaip įdiegti ir diegti LLaMA 3.1 405B "Google Cloud Platform" (GCP) skaičiavimo variklyje. Pirmiausia kalbame apie aparatinės įrangos reikalavimus, tada apie egzempliorių aprūpinimą GCP, diegimą ir kvantavimą naudojant vLLM.

LLaMA 3.1 405B

LLaMA 3.1 405B: reikalavimai aparatinei įrangai

Dėl "Llama 3.1 405B" dydžio ir sudėtingumo reikalavimai aparatinei įrangai yra gana dideli. Kaip įprasta diegiant LLM, sudėtingiausia dalis yra GPU. Šiam modeliui diegti reikės daug VRAM (t. y. GPU atminties):

Atsižvelgdami į šiuos poreikius, paprastai naudojate tokias konfigūracijas:

Kaip įprasta, reikia atsargiai vertinti kvantavimą ir užtikrinti, kad modelio kokybė per daug nenukentėtų. Mūsų bandyme fp8 kvantavimas, atrodo, nepakenkė modelio kokybei, todėl jį naudosime šiame straipsnyje.

LLaMA 3.1 405B egzemplioriaus nustatymas GCP Compute Engine

"Google Cloud Platform" (GCP) yra įdomus tiekėjas, galintis diegti ir didinti dirbtinio intelekto darbo krūvius. Jie yra palyginti pigūs ir turi gerą GPU pasiūlą (NVIDIA H100 80GB, NVIDIA A100 80GB, NVIDIA V100, NVIDIA L4, NVIDIA T4...).

Jie taip pat yra gana lankstūs, kalbant apie egzempliorių pasirinkimą. Pavyzdžiui, galite aprūpinti egzempliorius vienu ar keliais H100 GPU: Galite rinktis: 1xH100, 2xH100, 4xH100 arba 8xH100.

Tačiau jei jūsų paskyra yra nauja, jums gali būti neleidžiama teikti GPU egzempliorių, todėl tokiu atveju turėsite kreiptis į palaikymo tarnybą ir paprašyti padidinti kvotą.

Pirmiausia norėsite sukurti naują projektą GCP sistemoje. Tada norėsite įjungti "Compute Engine API" savo projektui. Tai galite padaryti eidami į API biblioteką GCP konsolėje ir ieškodami "Compute Engine". Spustelėkite ją ir tada spustelėkite "Enable" (įjungti), kad aktyvuotumėte API.

Įjungę API galėsite sukurti naują egzempliorių. Tai galite padaryti eidami į GCP konsolės skyrių "VM instances" ir spustelėdami "Create instance".

Tada jūsų bus paprašyta pasirinkti mašinos tipą. LLaMA 3.1 405B fp8 režimu norėsite pasirinkti a3-highgpu-1g mašiną su 8xH100 GPU.

LLaMA 3.1 GCP atmaina 405B LLaMA 3.1 GCP atmaina 405B

Tada galėsite nustatyti daugybę virtualiosios mašinos detalių, pvz., tinklo, saugyklos ir kt. Šiame straipsnyje neapžvelgsime visų šių nustatymų, bet daugiausia dėmesio skirsime atvaizdo tipui ir saugyklai.

Norėdami atsisiųsti LLaMA 3.1 405B modelio svorius fp8 formatu, turėsite turėti bent 500 GB vietos diske. Taip pat rekomenduojame naudoti "Linux Deep Learning" atvaizdą su jau įdiegta CUDA 12, nes tai gali sutaupyti šiek tiek darbo vėliau. Tai galite pasiekti skyriuje "Operacinė sistema ir saugykla":

LLaMA 3.1 GCP atvaizdas ir disko vieta 405B LLaMA 3.1 GCP atvaizdas ir disko vieta 405B

"vLLM" diegimas

"vLLM", kuris reiškia virtualų didelį kalbos modelį, yra didelė pažanga dirbtinio intelekto srityje, ypač kalbant apie tai, kaip dideli kalbos modeliai (LLM) yra aptarnaujami ir naudojami išvadoms daryti.

"vLLM" sukurta didelio našumo ir mažo vėlavimo išvadoms daryti, todėl idealiai tinka programoms, kuriose labai svarbu greitai ir efektyviai apdoroti kalbą. Tai pasiekiama taikant naujoviškus metodus, pavyzdžiui, "PagedAttention", kuris optimizuoja atminties naudojimą, efektyviau valdydamas dėmesio rakto ir vertės atmintį, todėl pasiekiamas iki 24 kartų didesnis našumas, palyginti su tradiciniais metodais, pavyzdžiui, "HuggingFace Transformers".

"vLLM" efektyvumo pagrindas - atminties valdymas. Naudodama PagedAttention, vLLM suskirsto rakto ir vertės (KV) spartinančiąją atmintinę į blokus, o tai leidžia geriau išnaudoti atmintį ir sumažinti fragmentaciją, kuri yra dažna GPU atminties naudojimo kliūtis LLM. Šis metodas ne tik pagreitina duomenų apdorojimą, bet ir leidžia vienu metu apdoroti daugiau užklausų be didelio našumo sumažėjimo.

Kaip išvadų darymo ir aptarnavimo variklis, vLLM daugiausia dėmesio skiria ne tik LLM vykdymui, bet ir maksimaliam išteklių panaudojimui. Jame taikomi tokie metodai kaip nuolatinis gaunamų užklausų paketavimas, kuris užtikrina, kad GPU būtų visiškai išnaudojamas, taip sumažinant neveikimo laiką ir padidinant bendrą efektyvumą.

vLLM palaiko įvairius kvantavimo metodus (pavyzdžiui, GPTQ, AWQ, INT4, INT8, FP8), kurie sumažina modelio svorių tikslumą, taip sumažindami atminties naudojimą ir galimai pagreitindami išvadas.

Įdiegti "vLLM" gana paprasta. Prisijunkite prie savo GCP virtualios mašinos egzemplioriaus ir įdiekite vLLM naudodami pip:

pip install vllm

Paskirstytąją išvadą atliksime naudodami 8 x H100 GPU, todėl turime įdiegti ir "Ray":

pip install ray

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

LLaMA išvadų serveris 3.1 405B

Pradėkime nuo pagrindinio "Python" pavyzdžio, kad išbandytume savo modelį:

from vllm import LLM

# Load LLaMA 3.1 405B on 8 GPUs
llm = LLM("neuralmagic/Meta-Llama-3.1-405B-Instruct-FP8-dynamic", tensor_parallel_size=8)

print(llm.generate("What is the difference between fp8 quantization and int8 quantization?"))

Galite paleisti "Python" scenarijų. Jei jį paleidžiate pirmą kartą, turėsite palaukti, kol modelis bus atsisiųstas ir įkeltas į GPU, tada gausite tokį atsakymą:

FP8 (Floating-Point 8) and INT8 (Integer 8) are both quantization techniques used to reduce the precision of numerical values in deep learning models, but they differ in their representation and behavior.

**INT8 Quantization**

INT8 quantization represents numbers as 8-bit integers, which can take on values between -128 and 127 (or 0 and 255 for unsigned integers). This means that the precision of the numbers is limited to 8 bits, and any values outside this range are clipped or saturated.

INT8 quantization is a simple and widely used technique, especially for integer-based architectures like ARM and x86. Most deep learning frameworks, including TensorFlow and PyTorch, support INT8 quantization.

**FP8 Quantization**

FP8 quantization, on the other hand, represents numbers as 8-bit floating-point numbers, with 1 sign bit, 2 exponent bits, and 5 mantissa bits. This allows for a much larger dynamic range than INT8, with values that can be as small as 2^-14 or as large as 2^15.

FP8 quantization is a more recent development, and its main advantage is that it can provide better accuracy than INT8 quantization, especially for models that require a large dynamic range, such as those with batch normalization or depthwise separable convolutions. FP8 is also more suitable for models that are sensitive to quantization noise, like those with recurrent neural networks (RNNs) or long short-term memory (LSTM) networks.

**Key differences**

Here are the key differences between FP8 and INT8 quantization:

1. **Dynamic range**: FP8 has a much larger dynamic range than INT8, which means it can represent a wider range of values.
2. **Precision**: FP8 has a lower precision than INT8, with 5 mantissa bits compared to 8 bits for INT8.
3. **Behavior**: FP8 is more suitable for models that require a large dynamic range, while INT8 is better suited for models with smaller weights and activations.
4. **Hardware support**: INT8 is widely supported by most hardware platforms, while FP8 is still an emerging standard, with limited hardware support.

In summary, FP8 quantization offers better accuracy and a larger dynamic range than INT8 quantization, but it requires more sophisticated hardware support and may not be suitable for all models or applications. 

LLaMA 3.1 405B modelį "Neural Magic" jau kvantavo fp8 programoje, skirtoje vLLM, todėl kvantavimo iš naujo atlikti nereikia. Tiesiog įkeliame kvantuotą modelį iš HuggingFace centro.

Parametras tensor_parallel_size nustatomas atsižvelgiant į mūsų kompiuteryje esančių GPU skaičių.

Tačiau šis paprastas "Python" scenarijus nėra tinkamas gamybos serveris. Dabar paleisime išvadų serverį, kad lygiagrečiai būtų galima naudoti daug užklausų ir maksimaliai padidinti pralaidumą:

python -m vllm.entrypoints.openai.api_server \
--model neuralmagic/Meta-Llama-3.1-405B-Instruct-FP8-dynamic \
--tensor-parallel-size 8

Įkėlę modelį, galite paleisti antrą terminalą ir pateikti keletą užklausų:

curl http://localhost:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
    "model": "neuralmagic/Meta-Llama-3.1-405B-Instruct-FP8-dynamic",
    "prompt": "Who are you?"
}'

I'm an artificial intelligence model known as Llama. Llama stands for "Large Language Model Meta AI."

Išvada

LLaMA 3.1 405B yra pažangiausias generatyvinis dirbtinio intelekto modelis, tačiau jį įdiegti į gamybą nėra lengva.

Didžiausias iššūkis - rasti tinkamą techninę įrangą. GPU yra labai brangūs ir jų trūksta visame pasaulyje. Tačiau kai pavyksta parūpinti tinkamus GPU, įdiegti modelį su išvadų serveriu, pavyzdžiui, vLLM, gana paprasta.

Naudodami tokius didelius modelius, galbūt norėsite panaudoti kvantavimą, kad sumažintumėte VRAM naudojimą ir pagerintumėte vėlavimą, kaip tai padarėme mes. Tačiau būkite atsargūs: kvantavimas ne visada yra "sidabrinė kulka", nes jis gali sumažinti modelio tikslumą.

Jei negalite arba nenorite patys diegti LLaMA 3.1 405B, galite lengvai jį naudoti NLP debesyje ir naudoti šį puikų modelį gamyboje. Išbandykite LLaMA 3.1 405B NLP debesyje dabar!

Jei turite klausimų apie LLaMA 3.1 405B ir dirbtinį intelektą apskritai, nedvejodami kreipkitės į mus, visada malonu patarti!

Julien
"NLP Cloud" techninis direktorius