Grūtības ar mākslīgā intelekta vai pilnas paketes izstrādi? Mūsu eksperti ir gatavi jums palīdzēt: individuāli pielāgoti padomi, tehniskā integrācija un daudz kas cits. Sazinieties ar [email protected].

LLaMA 3.1 405B instalēšana un izvietošana ražošanā uz GCP Compute Engine

LLaMA 3.1 405b ir Meta AI izstrādāts liels valodas modelis, kas ir viens no lielākajiem atklāti pieejamajiem mākslīgā intelekta modeļiem parametru lieluma ziņā - 405 miljardi parametru. Tas ir daļa no Llama 3.1 saimes, kurā ietilpst dažāda lieluma modeļi (8B, 70B un 405B parametri).

405B versija īpaši izceļas ar savu mērogu, kas dažādos salīdzinošajos testos tiecas sasniegt vai pat pārsniegt dažu labāko slēgtā koda modeļu, piemēram, GPT-4, veiktspēju, norādot uz tās modernākajām iespējām valodas izpratnes, ģenerēšanas un citu uzdevumu veikšanā. Llama 3.1 modeļi ir izstrādāti ar uzlabotu daudzvalodu atbalstu, spēj saprast un ģenerēt tekstu vairākās valodās, kas paplašina to pielietojamību dažādos reģionos un lietotāju bāzēs.

Šajā rakstā mēs parādīsim, kā instalēt un izvietot LLaMA 3.1 405B ražošanā Google mākoņplatformā (GCP) Compute Engine. Vispirms mēs runājam par aparatūras prasībām, pēc tam par instanču nodrošināšanu GCP, kā arī par izvietošanu un kvantizāciju ar vLLM.

LLaMA 3.1 405B

LLaMA 3.1 405B: aparatūras prasības

Llama 3.1 405B darbināšanai nepieciešamās aparatūras prasības ir diezgan plašas, ņemot vērā tās lielumu un sarežģītību. Kā parasti, ieviešot LLM, vissarežģītākā daļa ir GPU. Lai izvērstu šo modeli, jums būs nepieciešams daudz VRAM (t. i., GPU atmiņas):

Ņemot vērā šīs vajadzības, parasti jāizskata šādas konfigurācijas:

Kā parasti, ir jābūt uzmanīgam ar kvantizāciju un jāpārliecinās, ka modeļa kvalitāte pārāk daudz necieš. Mūsu testā fp8 kvantizācija, šķiet, nekaitē modeļa kvalitātei, tāpēc mēs to izmantosim šajā rakstā.

LLaMA 3.1 405B gadījuma nodrošināšana GCP Compute Engine

Google mākoņplatforma (GCP) ir interesants pakalpojumu sniedzējs mākslīgā intelekta slodžu izvietošanai un mērogošanai. Tie ir salīdzinoši lēti un piedāvā labu GPU (NVIDIA H100 80GB, NVIDIA A100 80GB, NVIDIA V100, NVIDIA L4, NVIDIA T4...).

Tie ir arī diezgan elastīgi instanču izvēles ziņā. Piemēram, jūs varat nodrošināt gadījumus ar vienu vai vairākiem H100 GPU: Varat izvēlēties 1H100, 2xH100, 4xH100 vai 8xH100.

Ja jūsu konts ir jauns, jums var nebūt atļauts nodrošināt GPU gadījumus, un tādā gadījumā jums būs nepieciešams sazināties ar atbalsta dienestu, lai pieprasītu kvotas palielināšanu.

Vispirms GCP izveidojiet jaunu projektu. Pēc tam savam projektam iespējojiet Compute Engine API. To var izdarīt, dodoties uz API bibliotēku GCP konsolē un meklējot "Compute Engine". Noklikšķiniet uz tās un pēc tam noklikšķiniet uz "Enable", lai aktivizētu API.

Kad būsiet iespējojis API, varēsiet izveidot jaunu gadījumu. To var izdarīt, dodoties uz GCP konsoles sadaļu "VM instances" un noklikšķinot uz "Create instance".

Pēc tam jums tiks piedāvāts izvēlēties mašīnas veidu. LLaMA 3.1 405B fp8 režīmā vēlaties izvēlēties a3-highgpu-1g mašīnu ar 8xH100 GPU.

LLaMA 3.1 GCP gadījums 405B LLaMA 3.1 GCP gadījums 405B

Pēc tam varēsiet iestatīt daudzas VM detaļas, piemēram, tīklu, glabāšanas u. c. iestatījumus. Šajā rakstā mēs neapskatīsim visus šos iestatījumus, bet pievērsīsimies attēla tipam un krātuvei.

Lai lejupielādētu LLaMA 3.1 405B modeļa svarus fp8 formātā, jums būs nepieciešams vismaz 500 GB vietas uz diska. Mēs arī iesakām izmantot Linux Deep Learning attēlu ar jau instalētu CUDA 12, jo tas var ietaupīt darbu vēlāk. To varat panākt sadaļā "OS un glabāšana":

LLaMA 3.1 405B GCP attēls un diska vieta LLaMA 3.1 405B LLaMA 3.1 405B GCP attēls un diska vieta LLaMA 3.1 405B

vLLM instalēšana

vLLM, kas apzīmē virtuālo lielo valodas modeli, ir nozīmīgs sasniegums mākslīgā intelekta jomā, jo īpaši attiecībā uz to, kā lieli valodas modeļi (LLM) tiek apkalpoti un izmantoti secinājumu izdarīšanai.

vLLM ir izstrādāts augstas veiktspējas un zemas latentuma pakāpes secinājumiem, tāpēc tas ir ideāli piemērots lietojumprogrammām, kurās ir svarīga ātra un efektīva valodas apstrāde. Tas tiek panākts, izmantojot inovatīvas metodes, piemēram, PagedAttention, kas optimizē atmiņas izmantošanu, efektīvāk pārvaldot uzmanības atslēgas un vērtību atmiņu, ļaujot līdz pat 24 reizes palielināt caurlaides spēju salīdzinājumā ar tradicionālajām metodēm, piemēram, HuggingFace Transformers.

vLLM efektivitātes pamatā ir atmiņas pārvaldība. Izmantojot PagedAttention, vLLM sadala atslēgas-vērtības (KV) kešatmiņu blokos, kas ļauj labāk izmantot atmiņu un samazina fragmentāciju, kas ir biežākais GPU atmiņas izmantošanas šķērslis LLM. Šī pieeja ne tikai paātrina apstrādi, bet arī ļauj apstrādāt vairāk pieprasījumu vienlaicīgi bez ievērojama veiktspējas krituma.

Kā secinājumu izdarīšanas un apkalpošanas dzinējs vLLM koncentrējas ne tikai uz LLM darbību, bet arī uz to, lai to darītu tā, lai maksimāli izmantotu resursus. Tajā tiek izmantotas tādas metodes kā nepārtraukta ienākošo pieprasījumu grupēšana, kas nodrošina, ka GPU tiek pilnībā izmantots, tādējādi samazinot dīkstāves laiku un palielinot kopējo efektivitāti.

vLLM atbalsta dažādas kvantizācijas metodes (piemēram, GPTQ, AWQ, INT4, INT8, FP8), kas samazina modeļa svaru precizitāti, tādējādi samazinot atmiņas izmantošanu un, iespējams, paātrinot secinājumu izdarīšanu.

VLLM instalēšana ir samērā vienkārša. Savienosimies ar mūsu GCP VM gadījumu un instalēsim vLLM, izmantojot pip:

pip install vllm

Mēs gatavojamies veikt sadalīto secinājumu 8 x H100 GPU, tāpēc mums ir nepieciešams instalēt arī Ray:

pip install ray

Ja, instalējot vLLM, rodas savietojamības problēmas, iespējams, būs vienkāršāk kompilēt vLLM no pirmkoda vai izmantot to Docker attēlu: apskatiet vLLM uzstādīšanas instrukcijas.

LLaMA 3.1 405B secinājumu serveris 3.1 405B

Le'ts sākt ar Python pamatpiemēru, lai pārbaudītu mūsu modeli:

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

Varat palaist Python skriptu. Ja to palaižat pirmo reizi, jums būs jāgaida, kamēr modelis tiks lejupielādēts un ielādēts GPU, un tad saņemsiet šādu atbildi:

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 modelis jau ir kvantizēts fp8 programmā vLLM, ko veica Neural Magic, tāpēc kvantizācija nav jāveic vēlreiz. Mēs vienkārši ielādējam kvantizēto modeli no HuggingFace Hub.

Tensor_parallel_size parametrs tiek iestatīts atbilstoši mūsu datorā esošo GPU skaitam.

Šis vienkāršais Python skripts tomēr nav atbilstošs ražošanas serveris. Tagad mēs iedarbināsim secinājumu serveri, lai paralēli apstrādātu daudzus pieprasījumus un palielinātu caurlaides spēju:

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

Kad modelis ir ielādēts, varat palaist otru termināli un veikt dažus pieprasījumus:

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

Secinājums

LLaMA 3.1 405B ir progresīvs ģeneratīvais mākslīgā intelekta modelis, taču tā ieviešana ražošanā nav vienkārša.

Lielākais izaicinājums ir atrast piemērotu aparatūru. GPU ir ļoti dārgi, un to trūkst visā pasaulē. Taču, tiklīdz izdodas nodrošināt pareizos GPU, modeļa izvietošana ar tādu inferences serveri kā vLLM ir diezgan vienkārša.

Šādiem lieliem modeļiem, iespējams, vēlēsieties izmantot kvantizāciju, lai samazinātu VRAM izmantošanu un uzlabotu latentumu, kā to darījām mēs. Taču esiet uzmanīgi: kvantizācija ne vienmēr ir zelta vidusceļš, jo tā var samazināt modeļa precizitāti.

Ja nevarat vai nevēlaties pats izvietot LLaMA 3.1 405B, varat to viegli izmantot NLP Cloud un izmantot šo lielisko modeli ražošanā. Izmēģiniet LLaMA 3.1 405B uz NLP Cloud jau tagad!

Ja jums ir jautājumi par LLaMA 3.1 405B un AI kopumā, lūdzu, nevilcinieties mums jautāt, vienmēr ir prieks sniegt konsultācijas!

Julien
NLP Cloud tehniskais direktors