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

Jak nainstalovat a nasadit LLaMA 3 do výroby?

Společnost Meta před několika dny vydala generativní model umělé inteligence LLaMA 3, který již nyní vykazuje působivé schopnosti.

V tomto průvodci se krok za krokem dozvíte, jak nainstalovat a nasadit LLaMA 3 do výroby. Od hardwarových požadavků až po nasazení a škálování - věnujeme se všemu, co potřebujete vědět pro bezproblémovou implementaci.

LLaMA 3

Úvod do LLaMA 3

Společnost Meta představila první verze svého open-source modelu umělé inteligence Llama 3, který lze využít pro tvorbu textů, programování nebo chatboty. Společnost Meta dále oznámila, že plánuje začlenit LLaMA 3 do svých primárních aplikací pro sociální média. Tento krok má za cíl konkurovat dalším asistentům AI, jako jsou ChatGPT od OpenAI, Copilot od Microsoftu a Gemini od Googlu.

Podobně jako Llama 2 se Llama 3 vyznačuje volně přístupným velkým jazykovým modelem s otevřenými váhami, který nabízí přední společnost zabývající se umělou inteligencí (i když se nejedná o "open source" v běžném slova smyslu).

V současné době si můžete Lamu 3 stáhnout zdarma z webových stránek společnosti Meta ve dvou různých velikostech parametrů: 8 miliard (8B) a 70 miliard (70B). Pro přístup k těmto verzím se mohou uživatelé zaregistrovat. Llama 3 je nabízen ve dvou variantách: předtrénovaný, což je základní model pro předpovídání dalších tokenů, a instrukčně vyladěný, který je vyladěn tak, aby dodržoval příkazy uživatele. Obě verze mají kontextový limit 8 192 tokenů.

Mark Zuckerberg, generální ředitel společnosti Meta, v rozhovoru s Dwarkeshem Patelem zmínil, že pomocí clusteru s 24 000 grafickými procesory vycvičili dva modely vytvořené na zakázku. Model 70B byl vycvičen s přibližně 15 biliony tokenů dat a nikdy nedosáhl bodu nasycení nebo limitu svých možností. Poté se společnost Meta rozhodla zaměřit na trénování dalších modelů. Společnost také prozradila, že v současné době pracuje na verzi Llama 3 s 400B parametry, která by podle odborníků, jako je Jim Fan z Nvidie, mohla dosahovat podobných výsledků jako GPT-4 Turbo, Claude 3 Opus a Gemini Ultra v benchmarcích jako MMLU, GPQA, HumanEval a MATH.

Podle společnosti Meta byla Llama 3 hodnocena pomocí různých měřítek, včetně MMLU (znalosti na vysokoškolské úrovni), GSM-8K (matematika pro základní školy), HumanEval (kódování), GPQA (otázky pro absolventy) a MATH (matematické slovní úlohy). Tyto benchmarky ukazují, že model 8B překonává modely s otevřenými váhami, jako jsou Gemma 7B a Mistral 7B Instruct společnosti Google, a model 70B je konkurenceschopný s modely Gemini Pro 1.5 a Claude 3 Sonnet.

Společnost Meta uvádí, že model Llama 3 byl vylepšen o schopnost porozumět kódování, podobně jako model Llama 2, a poprvé byl vycvičen pomocí obrázků i textu. Jeho současný výstup je však omezen na text.

Srovnávací testy LLaMA 3 Srovnávací testy LLaMA 3

Požadavky na hardware LLaMA 3 a výběr správných instancí na AWS EC2

Vzhledem k tomu, že mnoho organizací používá pro své produkční úlohy systém AWS, podívejme se, jak nasadit LLaMA 3 na AWS EC2.

Při implementaci LLM existuje řada překážek, jako je spotřeba VRAM (paměti GPU), rychlost odvozování, propustnost a využití diskového prostoru. V tomto scénáři musíme zajistit, abychom na AWS EC2 alokovali instanci GPU s dostatečnou kapacitou VRAM pro podporu provádění našich modelů.

LLaMA 3 8B vyžaduje přibližně 16 GB místa na disku a 20 GB VRAM (paměti GPU) v FP16. LLaMA 3 byste samozřejmě mohli nasadit na CPU, ale latence by byla pro reálné produkční použití příliš vysoká. Pokud jde o LLaMA 3 70B, vyžaduje přibližně 140 GB místa na disku a 160 GB VRAM v FP16.

Získat 20 GB VRAM pro LLaMA 3 8B je poměrně snadné. Doporučuji vám zajistit si grafický procesor NVIDIA A10: tento grafický procesor je vybaven 24 GB VRAM a jedná se o rychlý grafický procesor založený na platformě Ampere. V systému AWS EC2 byste měli vybrat instanci G5, abyste mohli zajistit GPU A10. Postačí instance g5.xlarge.

Nasazení modelu LLaMA 3 70B je však mnohem náročnější. Žádný grafický procesor nemá pro tento model dostatek paměti VRAM, takže je třeba zajistit instanci s více grafickými procesory. Pokud zajistíte instanci g5.48xlarge na AWS, získáte 192 GB VRAM (8 x GPU A10), což bude pro LLaMA 3 70B stačit.

V takové konfiguraci lze očekávat následující latence (doby odezvy): 50 tokenů vygenerovaných za 1 sekundu pro LLaMA 3 8B a 50 tokenů vygenerovaných za 5 sekund pro LLaMA 3 70B.

Abyste snížili provozní náklady těchto modelů a zvýšili latenci, můžete prozkoumat techniky kvantizace, ale mějte na paměti, že takové optimalizace mohou poškodit přesnost vašeho modelu. Kvantizace je mimo rozsah tohoto článku.

Chcete-li takové instance poskytnout, přihlaste se do konzole AWS EC2 a spusťte novou instanci: vyberte rozhraní NVIDIA deep learning AMI na instanci g5.xlarge nebo g5.48xlarge. Nezapomeňte také zajistit dostatek místa na disku.

Deep Learning AMI na instanci G5 na AWS

Odvozování produkce pomocí vLLM

vLLM je knihovna určená pro rychlé a snadné odvozování a nasazení LLM. Její efektivita je dána různými sofistikovanými metodami, včetně stránkované pozornosti pro optimální správu paměti klíčů a hodnot pozornosti, zpracování příchozích dotazů v dávkách v reálném čase a personalizovaných jader CUDA.

Kromě toho vLLM poskytuje vysokou míru přizpůsobivosti díky využití distribuovaných výpočtů (s využitím tenzorového paralelismu), streamování v reálném čase a kompatibilitě s grafickými kartami NVIDIA i AMD.

Konkrétně vLLM výrazně pomůže při nasazení LLaMA 3, protože nám umožní využívat instance AWS EC2 vybavené několika kompaktními grafickými procesory NVIDIA A10. To je výhodnější než použití jediného velkého GPU, například NVIDIA A100 nebo H100. Kromě toho vLLM výrazně zvýší efektivitu našeho modelu díky kontinuální dávkové inferenci.

Nastavení vLLM je poměrně jednoduché. Vytvoříme SSH připojení k naší nedávno vytvořené instanci AWS a nainstalujeme vLLM pomocí pip:

pip install vllm

Vzhledem k tomu, že plánujeme provádět distribuovanou inferenci pomocí vLLM na 8 x A10 GPU, je nutná také instalace Ray:

pip install ray

Pokud při instalaci narazíte na problémy s kompatibilitou, může být jednodušší zkompilovat vLLM ze zdrojových kódů nebo použít jejich obraz Docker: podívejte se na návod k instalaci vLLM.

Spuštění inferenčního serveru

Nyní vytvoříme náš inferenční skript v jazyce Python:

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

Výše uvedený skript můžete spustit. Pokud tento skript spouštíte poprvé, musíte počkat, až se model stáhne a načte na GPU, a pak se zobrazí něco takového:

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

Je to docela jednoduché na pochopení. Stačí upravit tensor_parallel_size podle počtu GPU, které máte k dispozici.

Nyní se snažíme iniciovat vhodný inferenční server, který by byl schopen spravovat četné požadavky a provádět inference současně. Začněte spuštěním serveru:

Pro LLaMA 3 8B:

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

Pro LLaMA 3 70B:

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

Načtení modelu na GPU by mělo trvat až 1 minutu. Pak můžete spustit druhý terminál a začít zadávat nějaké požadavky:

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?"
}'

Nyní máte k dispozici správný inferenční server připravený k výrobě, který díky průběžnému dávkování zvládne mnoho paralelních požadavků. V určitém okamžiku, pokud bude počet požadavků příliš vysoký, však dojde k přetížení GPU. V takovém případě budete muset model replikovat na několika instancích GPU a požadavky vyvažovat podle zátěže (to však již přesahuje rámec tohoto článku).

Závěr

Jak vidíte, nasazení LLaMA 3 do produkce nevyžaduje žádný složitý kód díky inferenčním serverům, jako je vLLM.

Zajistit správný hardware je však náročné. Jednak proto, že tyto GPU jsou velmi nákladné, ale také kvůli současnému celosvětovému nedostatku GPU. Pokud se o provisioning serveru s GPU u AWS pokoušíte poprvé, je možné, že nemáte oprávnění k vytvoření serveru s GPU. V takovém případě budete muset kontaktovat podporu a vysvětlit svůj případ použití. V tomto článku jsme použili AWS EC2, ale k dispozici jsou samozřejmě i další dodavatelé (Azure, GCP, OVH, Scaleway...).

Pokud nemáte zájem nasadit LLaMA 3 sami, doporučujeme využít naše rozhraní API NLP Cloud. Tato možnost může být efektivnější a potenciálně mnohem úspornější než správa vlastní infrastruktury LLaMA 3. Vyzkoušejte si LLaMA 3 na NLP Cloud!

Pokud máte dotazy ohledně LLaMA 3 a nasazení AI obecně, neváhejte se nás zeptat, vždy vám rádi pomůžeme!

Julien
Technický ředitel společnosti NLP Cloud