Máte potíže s umělou inteligencí nebo s vývojem celého balíku? Naši odborníci jsou tu pro vás: poradenství na míru, technická integrace a další. Obraťte se na [email protected].

Nasazení LLaMA 3, Mistral a Mixtral na AWS EC2 pomocí vLLM

V roce 2023 bylo vydáno mnoho pokročilých open-source LLM, ale nasazení těchto modelů AI do výroby je stále technickou výzvou. V tomto článku si ukážeme, jak nasadit některé z nejlepších LLM na AWS EC2: LLaMA 3 70B, Mistral 7B a Mixtral 8x7B. Použijeme pokročilý inferenční engine, který podporuje dávkovou inferenci, abychom maximalizovali propustnost: vLLM.

vLLM

LLaMA 3, Mistral a Mixtral

Společnost Meta vytvořila a uvedla na trh řadu velkých jazykových modelů (LLM) LLaMA 3, která zahrnuje řadu generativních textových modelů, které byly předem natrénovány a vyladěny. Tyto modely se liší velikostí parametrů, které se pohybují mezi 7 a 70 miliardami.

Mistral AI, startup, který spoluzaložili lidé se zkušenostmi z DeepMind a Meta společnosti Google, významně vstoupil do světa LLM s Mistral 7B a poté Mixtral 8x7B.

Mistral 7B je obzvláště působivý svým výkonem. V různých testech překonal Lamu2-13B a v mnoha ukazatelích dokonce Lamu1-34B. To naznačuje, že Mistral 7B poskytuje podobné nebo lepší schopnosti s výrazně nižší výpočetní režií. Pokud jde o úlohy kódování, Mistral 7B konkuruje CodeLlama 7B a jeho kompaktní velikost 13,4 GB mu umožňuje běžet na standardních strojích.

Mixtral 8x7B je přizpůsobivý a rychlý model vhodný pro různé aplikace. Pracuje šestkrát vyšší rychlostí a ve všech testovacích ukazatelích splňuje nebo překonává výkonnost modelu LLaMA 3 70B. Tento model podporuje více jazyků a disponuje inherentními možnostmi kódování. Zvládne sekvence o délce až 32 tisíc tokenů.

Všechny tyto modely jsou open-source a můžete je nasadit na vlastním serveru, pokud se vám podaří získat přístup ke správnému hardwaru. Podívejme se, jak je nasadit na AWS EC2 pomocí vLLM.

Dávkové odvozování a více GPU s vLLM

vLLM je rychlá a uživatelsky přívětivá knihovna přizpůsobená pro efektivní odvozování a nasazení LLM. Výkon vLLM vychází z několika pokročilých technik, jako je stránkovaná pozornost pro efektivní správu klíčů a hodnot paměti pozornosti, dávkové zpracování příchozích dotazů v reálném čase a přizpůsobená jádra CUDA.

Kromě toho vLLM nabízí dobrou flexibilitu díky distribuovanému odvozování (prostřednictvím tenzorového paralelismu), výstupnímu streamování a přizpůsobení pro architektury GPU NVIDIA i AMD.

Zejména vLLM bude velmi užitečný při nasazení LLaMA 3, Mistral a Mixtral, protože nám umožní nasadit naše modely na instance AWS EC2 s několika menšími GPU (jako je NVIDIA A10) namísto jednoho velkého GPU (jako je NVIDIA A100 nebo H100). Také nám vLLM umožní výrazně zvýšit propustnost našeho modelu díky dávkové inferenci.

Zajištění správného hardwaru na AWS EC2

Nasazení LLM je z mnoha důvodů náročné: Využití VRAM (paměti GPU), rychlost odvozování, propustnost, využití diskového prostoru... Zde se musíme ujistit, že poskytneme instanci GPU na AWS EC2, která má dostatek VRAM pro běh našich modelů.

Instance G5 jsou dobrou volbou, protože umožňují přístup k moderním grafickým procesorům NVIDIA A10 a lze je škálovat až na 192 GB VRAM (viz instance g5.48xlarge), přičemž zůstávají poměrně cenově výhodné.

Mistral 7B je nejsnadněji nasaditelný model, protože vyžaduje přibližně 14 GB VRAM. Pak následuje Mixtral 8x7B se 110 GB a LLaMA 3 70B se 140 GB. Zde uvažujeme pouze fp16, nikoli fp32, a nepoužíváme žádný druh kvantizace.

Proto může Mistral 7B běžet na instanci g5.xlarge, ale Mixtral 8x7B a LLaMA 3 70B vyžadují instanci g5.48xlarge, takže v tomto návodu budeme poskytovat instanci g5.48xlarge.

Chcete-li takové instance poskytnout, přihlaste se do konzoly AWS EC2 a spusťte novou instanci: vyberte rozhraní NVIDIA deep learning AMI na instanci g5.48xlarge. Budete potřebovat alespoň 300 GB místa na disku.

Deep Learning AMI na instanci G5 na AWS

Instalace vLLM pro distribuované odvozování

Instalace vLLM je poměrně jednoduchá. Otevřeme SSH připojení k naší nově vytvořené instanci AWS a nainstalujeme vLLM pomocí pip:

pip install vllm

Protože budeme používat vLLM pro distribuovanou inferenci na 8 x A10 GPU, musíme nainstalovat také Ray:

pip install ray

V případě problémů s kompatibilitou během procesu instalace může být pro vás jednodušší sestavit vLLM ze zdrojových kódů nebo použít jejich obraz Docker: další podrobnosti naleznete v instalační dokumentaci.

Vytvoření odvozovacího skriptu

Nyní můžete vytvořit svůj první odvozovací skript. Vytvořte soubor v jazyce Python, který bude obsahovat následující položky:

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

Nyní spusťte svůj skript pomocí Pythonu, který vrátí něco takového:

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.

Jak vidíte, je to hračka. Musíte přizpůsobit tensor_parallel_size v závislosti na počtu základních GPU, které máte.

Výše uvedený scénář byl jednorázový. Nyní chceme spustit řádný inferenční server, který dokáže zpracovávat více požadavků a provádět dávkové inference za běhu. Nejprve spusťte server:

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

Po nějaké době, jakmile je model správně načten do paměti VRAM, můžete otevřít druhé okno shellu a zadat několik požadavků:

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átí se stejný výsledek jako dříve, ale tentokrát můžete provést několik požadavků najednou.

Závěr

Využití pokročilého inferenčního serveru, jako je vLLM, je výhodné, pokud chcete maximalizovat využití grafického procesoru a snadno nasadit svůj model na několik GPU paralelně.

Jak vidíte, díky této technice je poměrně snadné nasadit nejpokročilejší open-source modely umělé inteligence, jako jsou LLaMA 3, Mistral a Mixtral, na vlastní server.

V tomto návodu jsme použili AWS EC2, ale mohli jsme samozřejmě použít i jiné dodavatele. Hlavním problémem bude cena grafických procesorů a také jejich dostupnost.

Pokud nechcete takovéto LLM nasazovat sami, doporučujeme vám použít naše rozhraní NLP Cloud API. Ušetří vám to spoustu času a může to být dokonce levnější než nasazení vlastních LLM. Pokud jste to ještě neudělali, neváhejte a zkuste to!

Vincent
Zástupce vývojářů ve společnosti NLP Cloud