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í GPT-NeoX 20B ve výrobě a zaměření na Deepspeed

Nasazení GPT-NeoX 20B v produkčním provozu je náročné a my jsme se to v NLP Cloud naučili... V tomto článku vám povíme více o několika tricích souvisejících s používáním GPT-NeoX 20B, a zejména o tom, jak se vypořádat s DeepSpeed v produkci.

GPT-NeoX

GPT-NeoX 20B

GPT-NeoX 20B je v době psaní tohoto článku největším modelem zpracování přirozeného jazyka s otevřeným zdrojovým kódem.

Před 2 týdny ji vydala společnost EleutherAI. Po roce tvrdé práce plné výzev byla vyškolena na 20 miliardách parametrů. Jedním z jejich hlavních problémů se zdála být schopnost nastavit správnou paralelní architekturu tak, aby model mohl být efektivně trénován na více GPU.

Jejich předchozí model GPT-J byl vycvičen na jednotkách Google TPU a byl navržen pro použití na jednotkách TPU. Vnitřní architektura modelu GPT-NeoX 20B je radikálně odlišná a je určena pro použití na GPU. Záměrem je, aby byl prvním z řady ještě větších modelů (cílem je zde dohnat GPT-3).

GPT-NeoX 20 je model pro generování textu, což znamená, že dokáže psát text za vás a skutečně dosáhnout téměř jakéhokoli případu použití zpracování přirozeného jazyka s velkou přesností: generování příspěvků na blogu, chatboty, klasifikace textu, analýza sentimentu, extrakce klíčových slov, generování kódu, extrakce entit, klasifikace záměrů, zodpovídání otázek a další...

Není pochyb o tom, že tento nový model využije mnoho výzkumných pracovníků a společností a dosáhne skvělých výsledků. Je tu však výzva: jak nasadit GPT-NeoX 20B?

Požadavky na hardware

Prvním problémem, se kterým se setkáváme při pokusu o nasazení systému GPT-NeoX 20B ve výrobě, je pokročilý hardware, který vyžaduje.

GPT-J bylo možné nasadit i na spotřebitelském hardwaru, i když byl velmi drahý. Například jste jej mohli nasadit na velmi dobrém CPU (i když výsledek byl bolestivě pomalý) nebo na pokročilém herním GPU, jako je NVIDIA RTX 3090. GPT-NeoX 20B je ale tak velký, že už to není možné.

GPT-NeoX v podstatě vyžaduje alespoň 42 GB VRAM a 40 GB místa na disku (ano, mluvíme o verzi slim fp16). Těmto požadavkům odpovídá jen málo grafických procesorů. Mezi hlavní patří NVIDIA A100, A40 a RTX A6000.

Nejenže jsou tyto grafické procesory velmi drahé, ale v dnešní době je také těžké je sehnat kvůli celosvětovému nedostatku polovodičů.

Nejlepším řešením je architektura s více grafickými procesory.

Multi-GPU s Deepspeed

Pokud se váš model nevejde do jednoho grafického procesoru, můžete jej zkusit rozdělit do několika grafických procesorů.

Je to zajímavá možnost ze dvou důvodů. Za prvé, horizontální škálování infrastruktury je často levnější než vertikální. Platí to pro servery a platí to i pro GPU. Za druhé je snazší dostat do ruky několik malých GPU, jako je NVIDIA Tesla T4, než větších GPU, jako je NVIDIA A40.

Rozdělení modelu strojového učení na několik GPU je bohužel technickou výzvou. Hugging Face napsal skvělý článek o paralelizování modelů a možnostech, které máte. Přečtěte si ho zde. Společnost EleutherAI však naštěstí navrhla model GPT-NeoX 20B tak, aby jej bylo možné snadno paralelizovat na několika GPU, ať už jde o trénování nebo inferenci.

Architektura GPT-NeoX je založena na technologii Deepspeed. Deepspeed je framework od Microsoftu, který byl původně navržen pro paralelizaci trénování mezi několika GPU a stále častěji se používá i pro inferenci. EleutherAI odvedla veškerou těžkou práci, takže paralelizace GPT-NeoX je stejně jednoduchá jako změna čísla v konfiguračním souboru.

Paralelismus GPT-NeoX
Extract from the GPT-NeoX docs about parallelism

Nasazení Deepspeedu v produkčním provozu pro online odvozování prostřednictvím API je však obtížné... Deepspeed nebyl navržen pro snadnou integraci do webových serverů. Ve společnosti NLP Cloud jsme se to naučili po zlém, ale po usilovné práci se nám nakonec podařilo přijít na efektivní způsob, jak Deepspeed a GPT-NeoX zprovoznit za naším API.

Triky používání

Předpokládejme tedy, že se vám podařilo zajistit správný hardware a správně nasadit GPT-NeoX 20B s Deepspeed. Nyní je zde několik výhrad, které byste měli mít na paměti.

Za prvé, ve srovnání s GPT-J nemají parametry (top k, top p a teplota) na model stejný vliv. Pokud se vám tedy podařilo najít dobrou konfiguraci pro GPT-J, nepovažujte ji za samozřejmost: budete muset provést nové testy s GPT-NeoX.

A konečně, i když velikost vstupu může být až 2048 tokenů, bude to vyžadovat více paměti než výše zmíněných 42 GB...

Dávkové odvozování?

Modely GPT jsou poměrně pomalé a GPT-NeoX 20B není výjimkou. Chcete-li tedy zvýšit propustnost své aplikace, možná budete chtít pracovat na řešení dávkového odvozování.

V NLP Cloudu jsme zatím nepřišli na dobré řešení.

Kód GPT-NeoX je vytvořen tak, aby bylo možné provést několik závěrů najednou v rámci jednoho požadavku. V našich testech však doba odezvy rostla lineárně s počtem inferencí, což tak trochu popírá účel dávkového odvozování...

Závěr

GPT-NeoX 20B je rozhodně obtížné nasadit ve výrobě. Kvalita generování textu je úžasná, ale málokdo bude mít kapacitu na skutečnou instalaci tohoto modelu.

Více než kdy jindy se zdá, že řešením pro použití tohoto modelu bude spoléhat se na cloudovou službu, jako je NLP Cloud.

Pokud máte připomínky k tomuto článku, neváhejte nás kontaktovat, rádi si poslechneme váš názor!

Julien Salinas
Technický ředitel společnosti NLP Cloud