Máte problémy s AI alebo vývojom celého balíka? Naši odborníci sú tu, aby vám poradili: poradenstvo na mieru, technická integrácia a ďalšie služby. Obráťte sa na [email protected].

Inštalácia a nasadenie LLaMA 3.1 405B do produkcie na GCP Compute Engine

LLaMA 3.1 405b je veľký jazykový model vyvinutý spoločnosťou Meta AI, ktorý predstavuje jeden z najväčších otvorene dostupných modelov umelej inteligencie z hľadiska veľkosti parametrov so 405 miliardami parametrov. Je súčasťou rodiny Llama 3.1, ktorá zahŕňa modely rôznych veľkostí (8B, 70B a 405B parametrov).

Verzia 405B je obzvlášť pozoruhodná svojím rozsahom, ktorý sa snaží vyrovnať alebo dokonca prekonať výkon niektorých špičkových modelov s uzavretým zdrojovým kódom, ako je GPT-4, v rôznych benchmarkoch, čo poukazuje na jeho najmodernejšie schopnosti v oblasti porozumenia jazyka, generovania a ďalších úloh. Modely Llama 3.1 sú navrhnuté s rozšírenou viacjazyčnou podporou, dokážu porozumieť a generovať text vo viacerých jazykoch, čo rozširuje ich použiteľnosť v rôznych regiónoch a na rôznych úrovniach používateľov.

V tomto článku si ukážeme, ako nainštalovať a nasadiť LLaMA 3.1 405B do produkčnej prevádzky na platforme Google Cloud Platform (GCP) Compute Engine. Najprv hovoríme o hardvérových požiadavkách, potom o poskytovaní inštancií na GCP a o nasadení a kvantifikácii pomocou vLLM.

LLaMA 3.1 405B

LLaMA 3.1 405B: požiadavky na hardvér

Hardvérové požiadavky na spustenie programu Llama 3.1 405B sú vzhľadom na jeho veľkosť a zložitosť pomerne rozsiahle. Ako zvyčajne pri nasadzovaní LLM, najzložitejšou časťou je GPU. Na nasadenie tohto modelu budete potrebovať veľa VRAM (t. j. pamäte GPU):

Vzhľadom na tieto potreby by ste sa zvyčajne mali pozrieť na nastavenia, ako sú:

Ako zvyčajne, musíte si dať pozor na kvantizáciu a uistiť sa, že kvalita modelu príliš neutrpí. V našom teste sa zdá, že kvantizácia fp8 nepoškodí kvalitu modelu, preto ju budeme používať aj v tomto článku.

Poskytovanie inštancie pre LLaMA 3.1 405B na GCP Compute Engine

Platforma Google Cloud Platform (GCP) je zaujímavým poskytovateľom na nasadenie a škálovanie pracovnej záťaže umelej inteligencie. Sú relatívne lacné a majú dobrú ponuku GPU (NVIDIA H100 80GB, NVIDIA A100 80GB, NVIDIA V100, NVIDIA L4, NVIDIA T4...).

Sú tiež pomerne flexibilné, pokiaľ ide o výber inštancií. Môžete napríklad poskytnúť inštancie s jedným alebo viacerými grafickými procesormi H100: Môžete si vybrať z nasledujúcich možností: 1xH100, 2xH100, 4xH100 alebo 8xH100.

Ak je vaše konto nové, nemusíte mať povolené poskytovať inštancie GPU a v takom prípade budete musieť požiadať o zvýšenie kvóty prostredníctvom podpory.

Ako prvý krok budete chcieť vytvoriť nový projekt v systéme GCP. Potom budete chcieť pre svoj projekt povoliť rozhranie API Compute Engine. Môžete to urobiť tak, že v konzole GCP prejdete do knižnice API a vyhľadáte položku "Compute Engine". Kliknite naň a potom kliknite na "Enable" (Povoliť), čím aktivujete API.

Po povolení rozhrania API budete môcť vytvoriť novú inštanciu. Môžete to urobiť tak, že v konzole GCP prejdete do časti "VM instances" (Inštancie virtuálnych počítačov) a kliknete na "Create instance" (Vytvoriť inštanciu).

Potom budete vyzvaní na výber typu stroja. Pre LLaMA 3.1 405B v režime fp8 budete chcieť vybrať stroj a3-highgpu-1g s 8xH100 GPU.

Inštancia GCP pre LLaMA 3.1 405B Inštancia GCP pre LLaMA 3.1 405B

Potom budete môcť nastaviť mnohé podrobnosti pre váš virtuálny počítač, ako je sieť, úložisko atď. V tomto článku nebudeme preberať všetky tieto nastavenia, ale zameriame sa na typ obrazu a úložisko.

Na stiahnutie modelových váh LLaMA 3.1 405B vo formáte fp8 budete potrebovať aspoň 500 GB miesta na disku. Odporúčame vám tiež použiť obraz systému Linux Deep Learning s už nainštalovanou aplikáciou CUDA 12, pretože vám to môže neskôr ušetriť prácu. Môžete to dosiahnuť v časti "Operačný systém a úložisko":

Obraz GCP a miesto na disku pre LLaMA 3.1 405B Obraz GCP a miesto na disku pre LLaMA 3.1 405B

Inštalácia vLLM

vLLM, čo je skratka pre Virtual Large Language Model (virtuálny veľký jazykový model), predstavuje významný pokrok v oblasti umelej inteligencie, najmä v tom, ako sa veľké jazykové modely (LLM) obsluhujú a využívajú na odvodzovanie.

Systém vLLM je navrhnutý pre vysoko výkonné a nízko oneskorené odvodzovanie, takže je ideálny pre aplikácie, kde je dôležité rýchle a efektívne spracovanie jazyka. Dosahuje to vďaka inovatívnym technikám, ako je PagedAttention, ktorá optimalizuje využitie pamäte efektívnejšou správou pamäte kľúčov pozornosti a hodnôt, čo umožňuje až 24x vyššiu priepustnosť v porovnaní s tradičnými metódami, ako sú napríklad HuggingFace Transformers.

Jadro efektívnosti systému vLLM spočíva v jeho správe pamäte. Pomocou PagedAttention rozdeľuje vLLM vyrovnávaciu pamäť kľúč-hodnota (KV) do blokov, čo umožňuje lepšie využitie pamäte a znižuje fragmentáciu, ktorá je bežným úzkym miestom pri využívaní pamäte GPU pre LLM. Tento prístup nielenže zrýchľuje spracovanie, ale umožňuje aj spracovanie väčšieho počtu požiadaviek súčasne bez výrazného poklesu výkonu.

Ako inferenčný a obslužný engine sa vLLM zameriava nielen na spúšťanie LLM, ale aj na to, aby sa maximálne využívali zdroje. Využíva techniky, ako je nepretržité dávkovanie prichádzajúcich požiadaviek, ktoré zabezpečuje, že GPU zostáva plne využitý, čím sa skracuje čas nečinnosti a zvyšuje celková efektívnosť.

vLLM podporuje rôzne kvantizačné techniky (ako GPTQ, AWQ, INT4, INT8, FP8), ktoré znižujú presnosť modelových váh, čím znižujú spotrebu pamäte a potenciálne zrýchľujú odvodzovanie.

Inštalácia vLLM je pomerne jednoduchá. Pripojíme sa k našej inštancii virtuálneho počítača GCP a nainštalujeme vLLM pomocou pip:

pip install vllm

Distribuovanú inferenciu budeme vykonávať na 8 x GPU H100, takže musíme nainštalovať aj Ray:

pip install ray

Ak sa pri inštalácii vLLM vyskytnú problémy s kompatibilitou, môže byť pre vás jednoduchšie skompilovať vLLM zo zdrojových kódov alebo použiť ich obraz Docker: pozrite si návod na inštaláciu vLLM.

Inferenčný server pre LLaMA 3.1 405B

Začneme základným príkladom v jazyku Python na otestovanie nášho modelu:

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

Môžete spustiť skript Python. Ak ho spúšťate prvýkrát, musíte počkať, kým sa model stiahne a načíta na GPU, potom dostanete takúto odpoveď:

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. 

Model LLaMA 3.1 405B už bol kvantizovaný v programe fp8 pre vLLM programom Neural Magic, takže kvantizáciu nemusíme vykonávať znova. Jednoducho načítame kvantovaný model z rozbočovača HuggingFace.

Parameter tensor_parallel_size je nastavený podľa počtu GPU, ktoré máme na našom počítači.

Tento jednoduchý skript v jazyku Python však nie je správny produkčný server. Teraz spustíme inferenčný server, aby sme mohli paralelne spotrebovať veľa požiadaviek a maximalizovať priepustnosť:

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

Po načítaní modelu môžete spustiť druhý terminál a vykonať niekoľko požiadaviek:

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

Záver

LLaMA 3.1 405B je špičkový generatívny model AI, ale jeho nasadenie do výroby nie je jednoduché.

Najväčšou výzvou je nájsť správny hardvér. GPU sú veľmi drahé a je ich celosvetový nedostatok. Ale keď sa vám podarí zabezpečiť správne GPU, nasadenie modelu s inferenčným serverom, ako je vLLM, je pomerne jednoduché.

Pri takýchto veľkých modeloch možno budete chcieť využiť kvantizáciu na zníženie spotreby VRAM a zlepšenie latencie, ako sme to urobili my. Ale pozor: kvantizácia nie je vždy striebornou guľkou, pretože môže znížiť presnosť modelu.

Ak nemôžete alebo nechcete nasadiť LLaMA 3.1 405B sami, môžete ho jednoducho použiť v službe NLP Cloud a využiť tento skvelý model vo veľkom meradle v produkcii. Vyskúšajte LLaMA 3.1 405B na NLP Cloud teraz!

Ak máte otázky týkajúce sa LLaMA 3.1 405B a AI všeobecne, neváhajte sa nás opýtať, vždy vám radi poradíme!

Julien
Technický riaditeľ spoločnosti NLP Cloud