LLaMA 3, Mistral és Mixtral telepítése AWS EC2-n a vLLM segítségével

2023-ban számos fejlett nyílt forráskódú LLM-et adtak ki, de ezeknek a mesterséges intelligencia modelleknek a termelésbe való bevezetése még mindig technikai kihívást jelent. Ebben a cikkben bemutatjuk, hogyan lehet a legjobb LLM-ek közül néhányat AWS EC2-n telepíteni: LLaMA 3 70B, Mistral 7B és Mixtral 8x7B. Az átviteli teljesítmény maximalizálása érdekében egy fejlett következtetési motort fogunk használni, amely támogatja a kötegelt következtetést: a vLLM-et.

vLLM

LLaMA 3, Mistral és Mixtral

A Meta létrehozta és elindította a LLaMA 3 nagy nyelvi modellek (LLM) sorozatát, amely számos generatív szövegmodellt tartalmaz, amelyeket előre betanítottak és finomhangoltak. Ezek a modellek különböző méretűek, paramétereik 7 milliárd és 70 milliárd között mozognak.

A Mistral AI, egy startup, amelyet a Google DeepMind és Meta cégeknél szerzett tapasztalatokkal rendelkező személyek alapítottak, a Mistral 7B, majd a Mixtral 8x7B révén jelentős belépőt tett az LLM-ek világába.

Ami a Mistral 7B-t különösen lenyűgözővé teszi, az a teljesítménye. Különböző teszteken felülmúlta a Llama2-13B teljesítményét, sőt, számos mérőszámban még a Llama1-34B-t is felülmúlta. Ez azt sugallja, hogy a Mistral 7B hasonló vagy jobb képességeket nyújt, lényegesen kisebb számítási többletköltséggel. A kódolási feladatok tekintetében a Mistral 7B felveszi a versenyt a CodeLlama 7B-vel, és a 13,4 GB-os kompakt mérete lehetővé teszi, hogy szabványos gépeken is fusson.

A Mixtral 8x7B egy alkalmazkodó és gyors modell, amely különböző alkalmazásokhoz alkalmas. Hatszor gyorsabb sebességgel működik, és minden vizsgálati mérőszámon eléri vagy meghaladja a LLaMA 3 70B teljesítményét. Ez a modell több nyelvet is támogat, és eredendő kódolási képességekkel rendelkezik. Akár 32k token hosszúságú szekvenciákat is képes kezelni.

Mindezek a modellek nyílt forráskódúak, és a saját szerverén is telepítheti őket, ha sikerül hozzáférnie a megfelelő hardverhez. Lássuk, hogyan telepíthetjük őket AWS EC2-n a vLLM segítségével.

Batch következtetés és több GPU vLLM-mel

A vLLM egy gyors és felhasználóbarát könyvtár, amely hatékony LLM következtetésre és telepítésre készült. A vLLM teljesítménye számos fejlett technikának köszönhető, mint például a hatékony figyelemkulcs- és értékmemóriakezelést biztosító paged attention, a bejövő lekérdezések valós idejű kötegelt feldolgozása és a testreszabott CUDA kernelek.

A vLLM emellett nagy rugalmasságot kínál az elosztott következtetés (a tenzorpárhuzamosság révén), a kimeneti streaming és az NVIDIA és AMD GPU-architektúrákhoz való alkalmazkodás révén.

A vLLM különösen a LLaMA 3, a Mistral és a Mixtral telepítéséhez lesz nagyon hasznos, mivel lehetővé teszi számunkra, hogy modelljeinket AWS EC2 példányokra telepítsük, amelyek több kisebb GPU-t (mint az NVIDIA A10) ágyaznak be, egyetlen nagy GPU (mint az NVIDIA A100 vagy H100) helyett. Emellett a vLLM lehetővé teszi számunkra, hogy a kötegelt következtetésnek köszönhetően drasztikusan növeljük modellünk átviteli sebességét.

A megfelelő hardver biztosítása az AWS EC2 rendszerben

Az LLM-ek alkalmazása több okból is kihívást jelent: VRAM (GPU memória) használat, következtetési sebesség, átviteli sebesség, lemezterület használat... Itt meg kell győződnünk arról, hogy az AWS EC2-n egy olyan GPU-példányt fogunk biztosítani, amely elegendő VRAM-mal rendelkezik a modelljeink futtatásához.

A G5 példányok jó választásnak bizonyulnak, mivel modern NVIDIA A10 GPU-khoz biztosítanak hozzáférést, és akár 192 GB VRAM-ig is skálázhatók (lásd a g5.48xlarge példányt), miközben meglehetősen költséghatékonyak maradnak.

A Mistral 7B a legkönnyebben telepíthető modell, mivel körülbelül 14 GB VRAM-ot igényel. Ezután következik a Mixtral 8x7B 110 GB-mal és a LLaMA 3 70B 140 GB-mal. Itt csak fp16-ot veszünk figyelembe, nem fp32-t, és nem alkalmazunk semmiféle kvantálást.

Következésképpen a Mistral 7B g5.xlarge példányon is futhat, de a Mixtral 8x7B és a LLaMA 3 70B g5.48xlarge példányt igényel, ezért ebben a bemutatóban egy g5.48xlarge példányt fogunk biztosítani.

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.48xlarge példányon. Legalább 300 GB lemezterületre lesz szükséged.

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

A vLLM telepítése elosztott következtetéshez

A vLLM telepítése meglehetősen egyszerű. Nyissunk SSH-kapcsolatot az újonnan 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-et 8 x A10 GPU-n fogjuk használni az elosztott következtetéshez, a Ray-t is telepítenünk kell:

pip install ray

Ha a telepítési folyamat során kompatibilitási problémák merülnek fel, egyszerűbb lehet a vLLM forrásból történő összeállítása vagy a Docker-kép használata: további részletekért lásd a telepítési dokumentációt.

Létrehozza a következtetési parancsfájlt

Most már létrehozhatja az első következtetési szkriptet. Hozzon létre egy Python fájlt, amely a következőket tartalmazza:

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

Most futtassa a szkriptet Python segítségével, ami valami ilyesmit ad vissza:

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.

Amint látja, ez egy gyerekjáték. A tensor_parallel_size-t a mögöttes GPU-k számától függően kell beállítani.

A fenti egy egyszeri forgatókönyv volt. Most egy megfelelő következtetés-kiszolgálót szeretnénk indítani, amely több kérést is képes kezelni, és menet közbeni kötegelt következtetést tud végrehajtani. Először is indítsuk el a kiszolgálót:

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

Egy idő után, miután a modell megfelelően betöltődött a VRAM-ba, megnyithat egy második shell ablakot, és elvégezhet néhány kérést:

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

Ez ugyanazt az eredményt adja vissza, mint korábban, de ezúttal egyszerre több kérést is végezhet.

Következtetés

Egy fejlett következtetési szerver, mint a vLLM használata előnyös, ha maximalizálni szeretné a GPU kihasználtságát, és egyszerűen, párhuzamosan, több GPU-n szeretné telepíteni a modelljét.

Amint láthatja, ennek a technikának köszönhetően a legfejlettebb nyílt forráskódú AI modelleket, mint például a LLaMA 3, a Mistral és a Mixtral, nagyon egyszerűen telepítheti saját szerverére.

Ebben a bemutatóban az AWS EC2-t használtuk, de természetesen használhattunk volna más gyártókat is. A fő kihívást a GPU-k költsége és a rendelkezésre állásuk jelenti.

Ha nem szeretné saját maga telepíteni az ilyen LLM-eket, javasoljuk, hogy használja inkább az NLP Cloud API-t. Ezzel sok időt takaríthat meg, és még olcsóbb is lehet, mint saját LLM-ek telepítése. Ha még nem tetted meg, nyugodtan próbáld ki!

Vincent
Fejlesztői tanácsadó az NLP Cloudnál