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

Nasadenie LLaMA 3, Mistral a Mixtral na AWS EC2 pomocou vLLM

V roku 2023 bolo vydaných mnoho pokročilých modelov LLM s otvoreným zdrojovým kódom, ale nasadenie týchto modelov AI do výroby je stále technickou výzvou. V tomto článku si ukážeme, ako nasadiť niektoré z najlepších LLM na AWS EC2: LLaMA 3 70B, Mistral 7B a Mixtral 8x7B. Použijeme pokročilý inferenčný engine, ktorý podporuje dávkovú inferenciu s cieľom maximalizovať priepustnosť: vLLM.

vLLM

LLaMA 3, Mistral a Mixtral

Spoločnosť Meta vytvorila a uviedla na trh sériu veľkých jazykových modelov (LLM) LLaMA 3, ktorá zahŕňa rôzne generatívne textové modely, ktoré boli vopred natrénované a vyladené. Tieto modely sa líšia veľkosťou, pričom ich parametre sa pohybujú v rozmedzí od 7 do 70 miliárd.

Startup Mistral AI, ktorý spoluzaložili ľudia so skúsenosťami zo spoločností DeepMind a Meta spoločnosti Google, významne vstúpil do sveta LLM s projektmi Mistral 7B a potom Mixtral 8x7B.

Na modeli Mistral 7B je obzvlášť pôsobivý jeho výkon. V rôznych testoch prekonal model Llama2-13B a v mnohých ukazovateľoch dokonca prekonal model Llama1-34B. To naznačuje, že Mistral 7B poskytuje podobné alebo lepšie schopnosti s výrazne nižšou výpočtovou réžiou. Pokiaľ ide o úlohy kódovania, Mistral 7B konkuruje CodeLlama 7B a jeho kompaktná veľkosť 13,4 GB mu umožňuje bežať na štandardných počítačoch.

Mixtral 8x7B je prispôsobivý a rýchly model vhodný na rôzne aplikácie. Pracuje so šesťnásobne vyššou rýchlosťou a vo všetkých testovacích ukazovateľoch dosahuje alebo prekonáva výkonnosť modelu LLaMA 3 70B. Tento model podporuje viacero jazykov a disponuje vlastnými kódovacími schopnosťami. Dokáže spracovať sekvencie s dĺžkou až 32 tisíc tokenov.

Všetky tieto modely sú open-source a môžete ich nasadiť na vlastnom serveri, ak sa vám podarí získať prístup k správnemu hardvéru. Pozrime sa, ako ich nasadiť na AWS EC2 pomocou vLLM.

Dávkové odvodzovanie a viac GPU s vLLM

vLLM je rýchla a používateľsky prívetivá knižnica prispôsobená na efektívne odvodzovanie a nasadenie LLM. Výkon vLLM pochádza z niekoľkých pokročilých techník, ako je stránkovaná pozornosť na efektívnu správu kľúčov a hodnôt pamäte pozornosti, dávkové spracovanie prichádzajúcich dotazov v reálnom čase a prispôsobené jadrá CUDA.

Okrem toho vLLM ponúka dobrú flexibilitu vďaka distribuovanému odvodzovaniu (prostredníctvom tenzorového paralelizmu), výstupnému streamovaniu a prispôsobeniu pre architektúry GPU NVIDIA aj AMD.

VLLM bude veľmi užitočný najmä pri nasadzovaní LLaMA 3, Mistral a Mixtral, pretože nám umožní nasadiť naše modely na inštancie AWS EC2 s niekoľkými menšími GPU (ako NVIDIA A10) namiesto jedného veľkého GPU (ako NVIDIA A100 alebo H100). Okrem toho nám vLLM umožní výrazne zvýšiť priepustnosť nášho modelu vďaka dávkovej inferencii.

Zabezpečenie správneho hardvéru na AWS EC2

Nasadenie LLM je výzvou z mnohých dôvodov: Využitie VRAM (pamäte GPU), rýchlosť odvodzovania, priepustnosť, využitie diskového priestoru... Tu sa musíme uistiť, že poskytneme inštanciu GPU na AWS EC2, ktorá má dostatok VRAM na spustenie našich modelov.

Inštancie G5 sú dobrou voľbou, pretože poskytujú prístup k moderným grafickým procesorom NVIDIA A10 a môžu sa škálovať až do 192 GB VRAM (pozri inštanciu g5.48xlarge), pričom sú cenovo pomerne výhodné.

Mistral 7B je najjednoduchší model na nasadenie, pretože vyžaduje približne 14 GB VRAM. Potom nasleduje Mixtral 8x7B so 110 GB a LLaMA 3 70B so 140 GB. Tu berieme do úvahy len fp16, nie fp32, a nepoužívame žiadny druh kvantizácie.

Z toho vyplýva, že Mistral 7B môže bežať na inštancii g5.xlarge, ale Mixtral 8x7B a LLaMA 3 70B vyžadujú inštanciu g5.48xlarge, takže v tomto návode budeme poskytovať inštanciu g5.48xlarge.

Ak chcete zabezpečiť takéto inštancie, prihláste sa do konzoly AWS EC2 a spustite novú inštanciu: vyberte NVIDIA deep learning AMI na inštancii g5.48xlarge. Budete potrebovať aspoň 300 GB diskového priestoru.

Deep Learning AMI na inštancii G5 na AWS

Inštalácia vLLM pre distribuované odvodzovanie

Inštalácia vLLM je pomerne jednoduchá. Otvorme SSH pripojenie k našej novovytvorenej inštancii AWS a nainštalujme vLLM pomocou pip:

pip install vllm

Keďže budeme používať vLLM na distribuovanú inferenciu na 8 x GPU A10, musíme nainštalovať aj Ray:

pip install ray

V prípade problémov s kompatibilitou počas procesu inštalácie môže byť pre vás jednoduchšie zostaviť vLLM zo zdrojových kódov alebo použiť ich obraz Docker: ďalšie podrobnosti nájdete v inštalačnej dokumentácii.

Vytvorenie odvodzovacieho skriptu

Teraz môžete vytvoriť svoj prvý inferenčný skript. Vytvorte súbor v jazyku Python, ktorý bude obsahovať nasledujúce údaje:

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

Teraz spustite svoj skript v jazyku Python, ktorý vráti niečo podobné:

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.

Ako vidíte, je to hračka. Musíte prispôsobiť tensor_parallel_size v závislosti od počtu základných GPU, ktoré máte.

Vyššie uvedený scenár bol jednorazový. Teraz chceme spustiť riadny inferenčný server, ktorý dokáže spracovať viacero požiadaviek a vykonávať dávkové inferencie za chodu. Najprv spustite server:

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

Po určitom čase, keď sa model správne načíta do pamäte VRAM, môžete otvoriť druhé okno shellu a vykonať niekoľko požiadaviek:

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

Vráti sa rovnaký výsledok ako predtým, ale tentoraz môžete vykonať niekoľko požiadaviek súčasne.

Záver

Využitie pokročilého inferenčného servera, ako je vLLM, je výhodné, ak chcete maximalizovať využitie grafického procesora a ľahko nasadiť svoj model na niekoľkých paralelných grafických procesoroch.

Ako vidíte, vďaka tejto technike je pomerne jednoduché nasadiť najpokročilejšie modely AI s otvoreným zdrojovým kódom, ako sú LLaMA 3, Mistral a Mixtral, na vlastnom serveri.

V tomto návode sme použili AWS EC2, ale samozrejme sme mohli použiť aj iných dodávateľov. Hlavnou výzvou bude cena GPU a tiež ich dostupnosť.

Ak nechcete takéto LLM nasadzovať sami, odporúčame vám namiesto toho použiť naše rozhranie API NLP Cloud. Ušetrí vám to veľa času a môže to byť dokonca lacnejšie ako nasadenie vlastných LLM. Ak ste to ešte neurobili, neváhajte a vyskúšajte to!

Vincent
Zástupca vývojárov v službe NLP Cloud