Hogyan telepítsük és telepítsük a LLaMA 3-at a termelésbe?

A LLaMA 3 generatív mesterséges intelligencia modellt a Meta néhány napja tette közzé, és máris lenyűgöző képességeket mutat.

Ebből a lépésről lépésre követhető útmutatóból megtudhatja, hogyan telepítse és telepítse a LLaMA 3-at a termelésbe. A hardverkövetelményektől kezdve a telepítésen át a skálázásig mindent lefedünk, amit a zökkenőmentes bevezetéshez tudnia kell.

LLaMA 3

Bevezetés az LLaMA-ba 3

A Meta bemutatta a Llama 3 nyílt forráskódú mesterséges intelligencia modelljének első verzióit, amely szövegalkotásra, programozásra vagy chatbotok készítésére használható. A Meta továbbá bejelentette, hogy tervezi a LLaMA 3 beépítését elsődleges közösségi médiaalkalmazásaiba. A lépés célja, hogy felvegye a versenyt más AI-asszisztensekkel, például az OpenAI ChatGPT-vel, a Microsoft Copilotjával és a Google Geminijével.

A Llama 2-höz hasonlóan a Llama 3 is egy szabadon hozzáférhető, nyílt súlyokkal rendelkező nagy nyelvi modellként tűnik ki, amelyet egy vezető mesterséges intelligenciával foglalkozó vállalat kínál (bár a hagyományos értelemben nem tekinthető "nyílt forráskódúnak").

A Llama 3 jelenleg ingyenesen letölthető a Meta weboldaláról, két különböző paraméterméretben: 8 milliárd (8B) és 70 milliárd (70B) méretben. A felhasználók regisztrálhatnak, hogy hozzáférjenek ezekhez a verziókhoz. A Llama 3 két változatban érhető el: előre betanított, amely egy alapmodell a következő token előrejelzéséhez, és utasításra hangolt, amely a felhasználói parancsokhoz való alkalmazkodásra van finomhangolva. Mindkét változat kontextushatára 8 192 token.

Egy Dwarkesh Patellel készített interjúban Mark Zuckerberg, a Meta vezérigazgatója megemlítette, hogy két egyedi modellt képeztek ki egy 24 000 GPU-s klaszter segítségével. A 70B modellt körülbelül 15 trillió token adatával képezték ki, és soha nem érte el a telítettségi pontot vagy a képességek határát. Ezt követően a Meta úgy döntött, hogy más modellek képzésére összpontosít. A vállalat azt is elárulta, hogy jelenleg a Llama 3 400B paraméteres változatán dolgoznak, amely szakértők, például az Nvidia munkatársa, Jim Fan szerint a GPT-4 Turbo, a Claude 3 Opus és a Gemini Ultra modellekhez hasonlóan teljesíthet az olyan benchmarkokon, mint az MMLU, GPQA, HumanEval és MATH.

A Meta szerint a Llama 3-at különböző mércékkel értékelték, többek között az MMLU (egyetemi szintű tudás), a GSM-8K (általános iskolai matematika), a HumanEval (kódolás), a GPQA (diplomás szintű kérdések) és a MATH (matematikai szófeladatok) segítségével. Ezek a benchmarkok azt mutatják, hogy a 8B modell felülmúlja az olyan nyílt súlyozású modelleket, mint a Google Gemma 7B és Mistral 7B Instruct, a 70B modell pedig versenyképes a Gemini Pro 1.5 és a Claude 3 Sonnet modellekkel szemben.

A Meta jelentése szerint a Llama 3 modellt a Llama 2-höz hasonlóan továbbfejlesztették a kódolás megértésének képességével, és most először képekkel és szöveggel is betanították. A jelenlegi kimenete azonban csak szövegre korlátozódik.

LLaMA 3 referenciaértékek LLaMA 3 referenciaértékek

LLaMA 3 Hardverkövetelmények és a megfelelő példányok kiválasztása az AWS EC2 rendszerben

Mivel sok szervezet használja az AWS-t a termelési munkaterheléshez, nézzük meg, hogyan lehet az LLaMA 3-at az AWS EC2-n telepíteni.

Az LLM-ek megvalósításának több akadálya is van, például a VRAM (GPU-memória) fogyasztás, a következtetés sebessége, az átviteli sebesség és a lemezterület kihasználtsága. Ebben a forgatókönyvben gondoskodnunk kell arról, hogy az AWS EC2-n olyan GPU-példányt rendeljünk ki, amely elegendő VRAM-kapacitással rendelkezik a modelljeink végrehajtásához.

A LLaMA 3 8B körülbelül 16 GB lemezterületet és 20 GB VRAM-ot (GPU-memóriát) igényel FP16-ban. A LLaMA 3 természetesen telepíthető CPU-n is, de a késleltetés túl nagy lenne egy valós gyártási felhasználási esethez. Az LLaMA 3 70B esetében az FP16-ban körülbelül 140 GB lemezterületre és 160 GB VRAM-ra van szükség.

A 20 GB VRAM beszerzése a LLaMA 3 8B számára meglehetősen egyszerű. Javaslom, hogy egy NVIDIA A10 GPU-t biztosítson: ez a GPU 24 GB VRAM-mal rendelkezik, és egy gyors, az Ampere platformon alapuló GPU. Az AWS EC2-nél egy G5-ös példányt kell választania ahhoz, hogy A10 GPU-t tudjon biztosítani. A g5.xlarge elegendő lesz.

A LLaMA 3 70B modell telepítése azonban sokkal nagyobb kihívást jelent. Egyetlen GPU sem rendelkezik elegendő VRAM-mal ehhez a modellhez, ezért több GPU-s példányt kell biztosítania. Ha egy g5.48xlarge példányt biztosítunk az AWS-en, akkor 192 GB VRAM-ot kapunk (8 x A10 GPU), ami elegendő lesz a LLaMA 3 70B számára.

Ilyen konfigurációban a következő késleltetési időkre (válaszidőkre) számíthat: A LLaMA 3 8B esetében 50 token generálódik 1 másodperc alatt, a LLaMA 3 70B esetében pedig 50 token generálódik 5 másodperc alatt.

Az ilyen modellek működési költségeinek csökkentése és a késleltetés növelése érdekében vizsgálhatja a kvantálási technikákat, de vegye figyelembe, hogy az ilyen optimalizálások károsíthatják a modell pontosságát. A kvantálás nem tartozik e cikk tárgykörébe.

Az ilyen példányok biztosításához jelentkezzen be az AWS EC2 konzoljába, és indítson el egy új példányt: válassza az NVIDIA mélytanulás AMI-t egy g5.xlarge vagy g5.48xlarge példányon. Ne felejtsünk el elegendő lemezterületet is biztosítani.

Deep Learning AMI G5 példányon az AWS-en

Termelési következtetés vLLM-mel

A vLLM egy olyan könyvtár, amelyet gyors és egyszerű LLM következtetésre és telepítésre terveztek. Hatékonyságát különböző kifinomult módszereknek köszönheti, többek között a figyelemkulcs- és értékmemória optimális kezelését szolgáló paged attentionnek, a bejövő lekérdezések kötegekben történő valós idejű feldolgozásának és a személyre szabott CUDA kerneleknek.

Ezenkívül a vLLM nagyfokú alkalmazkodóképességet biztosít az elosztott számítás (tenzorpárhuzamossággal), a valós idejű streaming és az NVIDIA és az AMD grafikus kártyákkal való kompatibilitás révén.

A vLLM nagyban segíti majd a LLaMA 3 telepítését, lehetővé téve számunkra, hogy több kompakt NVIDIA A10 GPU-val felszerelt AWS EC2 példányt használjunk. Ez előnyösebb, mint egyetlen nagy GPU, például az NVIDIA A100 vagy H100 használata. Továbbá a vLLM a folyamatos kötegelt következtetés révén jelentősen növeli modellünk hatékonyságát.

A vLLM beállítása meglehetősen egyszerű. Hozzunk létre egy SSH-kapcsolatot a nemrég létrehozott AWS-példányunkhoz, és telepítsük a vLLM-et a pip segítségével:

pip install vllm

Mivel a vLLM segítségével 8 x A10 GPU-n tervezünk elosztott következtetést végezni, a Ray telepítése is szükséges:

pip install ray

Ha a telepítés során kompatibilitási problémák merülnek fel, egyszerűbb lehet a vLLM-et a forrásból lefordítani, vagy a Docker-képüket használni: nézze meg a vLLM telepítési útmutatóját.

Indítsa el a következtetési kiszolgálót

Most hozzuk létre a Python következtetési szkriptünket:

from vllm import LLM

# Use LLaMA 3 8B on 1 GPU
llm = LLM("meta-llama/Meta-Llama-3-8B-Instruct")

# Use LLaMA 3 70B on 8 GPUs
# llm = LLM("meta-llama/Meta-Llama-3-70B-Instruct", tensor_parallel_size=8)

print(llm.generate("What are the most popular quantization techniques for LLMs?"))

Futtathatja a fenti szkriptet. Ha először futtatja ezt a szkriptet, meg kell várnia, amíg a modell letöltődik és betöltődik a GPU-ra, majd valami ilyesmit fog kapni:

The most popular quantization techniques for Large Language Models (LLMs) are:
1. Integer Quantization
2. Floating-Point Quantization
3. Mixed-Precision Training
4. Knowledge Distillation

Ez elég egyszerűen érthető. Egyszerűen csak a tensor_parallel_size értéket kell beállítani a GPU-k számának megfelelően.

Most egy olyan megfelelő következtetési szervert keresünk, amely képes számos kérést kezelni és egyidejűleg következtetéseket végrehajtani. Kezdetnek indítsuk el a szervert:

Az LLaMA 3 8B:

python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Meta-Llama-3-8B-Instruct

Az LLaMA 3 70B esetében:

python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Meta-Llama-3-70B-Instruct
--tensor-parallel-size 8

A modell betöltése a GPU-ra legfeljebb 1 percig tarthat. Ezután elindíthatsz egy második terminált, és elkezdhetsz néhány kérést:

curl http://localhost:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
    "model": "meta-llama/Meta-Llama-3-8B-Instruct",
    "prompt": "What are the most popular quantization techniques for LLMs?"
}'

Most már van egy megfelelő, gyártásra kész következtetési kiszolgálója, amely a folyamatos kötegelésnek köszönhetően sok párhuzamos kérést képes kezelni. Egy bizonyos ponton azonban, ha a kérések száma túl nagy, a GPU túlterhelődik. Ebben az esetben a modellt több GPU-példányon kell replikálnod, és a kéréseket terheléselosztással kell kiegyensúlyoznod (de ez nem tartozik ennek a cikknek a tárgykörébe).

Következtetés

Mint látható, a LLaMA 3 termelésbe való telepítése nem igényel bonyolult kódot, köszönhetően a vLLM-hez hasonló következtetési kiszolgálóknak.

A megfelelő hardver beszerzése azonban kihívást jelent. Egyrészt azért, mert ezek a GPU-k nagyon drágák, másrészt pedig a jelenlegi globális GPU-hiány miatt. Ha először próbálsz GPU-kiszolgálót biztosítani az AWS-en, lehet, hogy nincs engedélyed GPU-kiszolgáló létrehozására. Ebben az esetben kapcsolatba kell lépnie az ügyfélszolgálattal, és el kell magyaráznia a felhasználási esetet. Ebben a cikkben az AWS EC2-t használtuk, de természetesen más gyártók is rendelkezésre állnak (Azure, GCP, OVH, Scaleway...).

Ha nem szeretné saját maga telepíteni a LLaMA 3-at, javasoljuk, hogy használja az NLP Cloud API-t. Ez a lehetőség hatékonyabb és potenciálisan sokkal költséghatékonyabb lehet, mint a saját LLaMA 3 infrastruktúra kezelése. Próbáld ki a LLaMA 3-at az NLP Cloudon most!

Ha kérdése van a LLaMA 3-mal és általában az AI telepítéssel kapcsolatban, kérjük, ne habozzon kérdezni, mindig örömmel segítünk!

Julien
CTO az NLP Cloudnál