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 GPT-NeoX 20B vo výrobe a zameranie na Deepspeed

Nasadenie GPT-NeoX 20B v produkcii je náročné a my sme sa to v NLP Cloud naučili... V tomto článku vám povieme viac o niekoľkých trikoch súvisiacich s používaním GPT-NeoX 20B a najmä o tom, ako sa vysporiadať s DeepSpeed v produkcii.

GPT-NeoX

GPT-NeoX 20B

GPT-NeoX 20B je najväčší model spracovania prirodzeného jazyka s otvoreným zdrojovým kódom v čase písania tohto článku.

Pred 2 týždňami ho vydala spoločnosť EleutherAI. Bola vyškolená na 20 miliárd parametrov po ročnej tvrdej práci plnej výziev. Jedným z ich hlavných problémov sa zdala byť schopnosť nastaviť správnu paralelnú architektúru tak, aby sa model dal efektívne trénovať na viacerých GPU.

Ich predchádzajúci model GPT-J bol vycvičený na TPU spoločnosti Google a bol navrhnutý na použitie na TPU. Vnútorná architektúra modelu GPT-NeoX 20B je radikálne odlišná a je určená na použitie na GPU. Má to byť prvý zo série ešte väčších modelov (cieľom je dobehnúť GPT-3).

GPT-NeoX 20 je model na generovanie textu, čo znamená, že dokáže napísať text za vás a dosiahnuť takmer akýkoľvek prípad použitia spracovania prirodzeného jazyka s veľkou presnosťou: generovanie príspevkov na blogoch, chatboty, klasifikácia textu, analýza sentimentu, extrakcia kľúčových slov, generovanie kódu, extrakcia entít, klasifikácia zámerov, odpovedanie na otázky a ďalšie...

Tento nový model nepochybne využijú mnohí výskumníci a spoločnosti a dosiahnu skvelé výsledky. Je tu však výzva: ako nasadiť GPT-NeoX 20B?

Požiadavky na hardvér

Prvou výzvou, s ktorou sa stretávame pri pokuse o nasadenie systému GPT-NeoX 20B vo výrobe, je pokročilý hardvér, ktorý si vyžaduje.

GPT-J bolo možné nasadiť aj na spotrebnom hardvéri, aj keď bol veľmi drahý. Mohli ste ho napríklad nasadiť na veľmi dobrý procesor (aj keď výsledok bol bolestivo pomalý) alebo na pokročilý herný grafický procesor, ako je NVIDIA RTX 3090. GPT-NeoX 20B je však taký veľký, že to už nie je možné.

GPT-NeoX v podstate vyžaduje aspoň 42 GB VRAM a 40 GB miesta na disku (a áno, hovoríme tu o verzii slim fp16). Týmto požiadavkám zodpovedá len málo GPU. Hlavnými sú NVIDIA A100, A40 a RTX A6000.

Tieto grafické procesory sú nielen veľmi drahé, ale v súčasnosti je aj ťažké dostať sa k nim kvôli celosvetovému nedostatku polovodičov.

Najlepším riešením je v tomto prípade architektúra s viacerými grafickými procesormi.

Multi-GPU s Deepspeed

Ak sa váš model nezmestí do jedného GPU, môžete ho skúsiť rozdeliť na niekoľko GPU.

Je to zaujímavá možnosť z dvoch dôvodov. Po prvé, horizontálne škálovanie infraštruktúry je často lacnejšie ako vertikálne škálovanie. Platí to pre servery a platí to aj pre GPU. Po druhé, je jednoduchšie dostať sa k niekoľkým malým GPU, ako je NVIDIA Tesla T4, ako k väčším GPU, ako je NVIDIA A40.

Rozdelenie modelu strojového učenia na niekoľko GPU je bohužiaľ technická výzva. Hugging Face pripravil skvelý článok o paralelizme modelov a možnostiach, ktoré máte. Prečítajte si ho tu. Ale našťastie spoločnosť EleutherAI navrhla model GPT-NeoX 20B tak, aby sa dal ľahko paralelizovať na viacerých GPU, či už ide o trénovanie alebo inferenciu.

Architektúra GPT-NeoX je založená na technológii Deepspeed. Deepspeed je framework od Microsoftu, ktorý bol pôvodne navrhnutý na paralelizáciu trénovania medzi viacerými GPU a čoraz viac sa používa aj na odvodzovanie. EleutherAI odviedla všetku ťažkú prácu, takže paralelizácia GPT-NeoX je taká jednoduchá ako zmena čísla v konfiguračnom súbore.

Paralelnosť GPT-NeoX
Extract from the GPT-NeoX docs about parallelism

Nasadenie Deepspeedu v produkcii na online odvodzovanie prostredníctvom API je však ťažké... Deepspeed nebol navrhnutý na jednoduchú integráciu do webových serverov. V NLP Cloud sme sa to naučili ťažko, ale po náročnej práci sa nám nakoniec podarilo vymyslieť efektívny spôsob, ako dosiahnuť, aby Deepspeed a GPT-NeoX fungovali za naším API.

Triky používania

Predpokladajme teda, že sa vám podarilo zabezpečiť správny hardvér a správne nasadiť GPT-NeoX 20B s Deepspeed. Teraz je tu niekoľko upozornení, ktoré by ste si mali uvedomiť.

Po prvé, v porovnaní s GPT-J nemajú parametre (top k, top p a teplota) rovnaký vplyv na model. Ak sa vám teda podarilo nájsť dobrú konfiguráciu pre GPT-J, nepovažujte to za samozrejmosť: budete musieť vykonať nové testy s GPT-NeoX.

Napokon, aj keď veľkosť vstupu môže dosiahnuť 2048 tokenov, bude to vyžadovať viac pamäte ako vyššie uvedených 42 GB...

Dávkové odvodzovanie?

Modely GPT sú pomerne pomalé a GPT-NeoX 20B nie je výnimkou. Ak teda chcete zvýšiť priepustnosť svojej aplikácie, možno budete chcieť pracovať na riešení dávkového odvodzovania.

Momentálne sme na to v NLP Cloud neprišli s dobrým riešením.

Kód GPT-NeoX je vytvorený tak, aby bolo možné vykonať niekoľko záverov súčasne v rámci jednej požiadavky. V našich testoch však čas odozvy rástol lineárne s počtom inferencií, čo tak trochu popiera účel dávkového odvodzovania...

Záver

GPT-NeoX 20B je určite ťažké nasadiť vo výrobe. Kvalita generovania textu je úžasná, ale len málokto bude mať kapacitu na skutočnú inštaláciu tohto modelu.

Zdá sa, že viac ako kedykoľvek predtým bude riešením spoliehať sa na cloudovú službu, ako je NLP Cloud, aby bolo možné tento model používať.

Ak máte pripomienky k tomuto článku, neváhajte nás kontaktovať, radi si vypočujeme váš názor!

Julien Salinas
Technický riaditeľ spoločnosti NLP Cloud