Imate težave z umetno inteligenco ali razvojem celotnega paketa? Naši strokovnjaki so vam na voljo za pomoč: prilagojeni nasveti, tehnična integracija in še več. Obrnite se na [email protected].

Uvajanje tehnologije GPT-NeoX 20B v produkcijo in osredotočanje na Deepspeed

Namestitev GPT-NeoX 20B v produkcijo je izziv in v NLP Cloud smo se tega naučili na težak način... V tem članku vam predstavljamo več trikov, povezanih z uporabo GPT-NeoX 20B, in še posebej, kako se spoprijeti s funkcijo DeepSpeed v produkciji.

GPT-NeoX

GPT-NeoX 20B

GPT-NeoX 20B je največji odprtokodni model za obdelavo naravnega jezika v času pisanja tega članka.

EleutherAI ga je izdal pred dvema tednoma. Po enoletnem trdem delu, polnem izzivov, je bil usposobljen za 20 milijard parametrov. Zdi se, da je bila ena od njihovih glavnih težav zmožnost vzpostavitve ustrezne vzporedne arhitekture, da bi model lahko učinkovito usposobili na več grafičnih procesorjih.

Njihov prejšnji model GPT-J je bil usposobljen na Googlovih procesorjih TPU in je bil zasnovan za uporabo na teh procesorjih. Notranja arhitektura modela GPT-NeoX 20B je bistveno drugačna in je namenjena uporabi na grafičnih procesorjih. Po zamisli naj bi bil prvi v seriji še večjih modelov (cilj je dohiteti model GPT-3).

GPT-NeoX 20 je model za generiranje besedila, kar pomeni, da lahko namesto vas napiše besedilo in dejansko z veliko natančnostjo doseže skoraj vse primere uporabe obdelave naravnega jezika: generiranje prispevkov na blogih, klepetalnike, klasifikacijo besedila, analizo čustev, ekstrakcijo ključnih besed, generiranje kode, ekstrakcijo entitet, klasifikacijo namenov, odgovarjanje na vprašanja in še več...

Nedvomno bodo številni raziskovalci in podjetja uporabili ta novi model in dosegli odlične rezultate. Vendar je tu izziv: kako uporabiti GPT-NeoX 20B?

Zahteve za strojno opremo

Prvi izziv, s katerim se soočimo pri poskusu uvedbe GPT-NeoX 20B v produkcijo, je napredna strojna oprema, ki jo zahteva.

GPT-J je bilo še vedno mogoče namestiti na potrošniški strojni opremi, čeprav je bila zelo draga. Lahko ste ga na primer namestili na zelo dober procesor (čeprav je bil rezultat boleče počasen) ali na napreden igralni grafični procesor, kot je NVIDIA RTX 3090. Toda GPT-NeoX 20B je tako velik, da to ni več mogoče.

GPT-NeoX v osnovi zahteva vsaj 42 GB pomnilnika VRAM in 40 GB prostora na disku (da, govorimo o različici slim fp16). Le malo grafičnih procesorjev ustreza tem zahtevam. Glavni so NVIDIA A100, A40 in RTX A6000.

Ti grafični procesorji niso le zelo dragi, temveč jih je danes zaradi globalnega pomanjkanja polprevodnikov tudi težko dobiti.

Najboljša rešitev je arhitektura z več grafičnimi procesorji.

Več grafičnih procesorjev s funkcijo Deepspeed

Če modela ne morete vgraditi v en sam grafični procesor, ga lahko poskusite razdeliti na več grafičnih procesorjev.

To je zanimiva možnost iz dveh razlogov. Prvič, vodoravno razširjanje infrastrukture je pogosto cenejše kot navpično razširjanje. To velja za strežnike in tudi za grafične procesorje. Drugič, lažje je dobiti več majhnih grafičnih procesorjev, kot je NVIDIA Tesla T4, kot večjih, kot je NVIDIA A40.

Žal je razdelitev modela strojnega učenja na več grafičnih procesorjev tehnični izziv. Hugging Face je pripravil odličen članek o vzporednosti modelov in možnostih, ki jih imate na voljo. Preberi ga tukaj. Toda na srečo je podjetje EleutherAI zasnovalo model GPT-NeoX 20B tako, da ga je mogoče enostavno vzporediti na več grafičnih procesorjev, bodisi za učenje bodisi za sklepanje.

Arhitektura GPT-NeoX temelji na tehnologiji Deepspeed. Deepspeed je Microsoftovo ogrodje, ki je bilo prvotno zasnovano za paralelizacijo treningov med več grafičnimi procesorji, vse pogosteje pa se uporablja tudi za sklepanje. EleutherAI je opravil vse težko delo, zato je paralelizacija GPT-NeoX tako preprosta kot sprememba številke v konfiguracijski datoteki.

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

Vendar pa je uvedba storitve Deepspeed v produkcijo za spletno sklepanje prek vmesnika API težka... Deepspeed ni bil zasnovan tako, da bi ga bilo mogoče enostavno integrirati v spletne strežnike. V oblaku NLP Cloud smo se tega naučili na težak način, vendar nam je po trdem delu končno uspelo najti učinkovit način za delovanje sistemov Deepspeed in GPT-NeoX za našim API.

Triki za uporabo

Predpostavimo, da vam je uspelo zagotoviti ustrezno strojno opremo in pravilno namestiti GPT-NeoX 20B z Deepspeedom. Zdaj morate biti pozorni na nekaj zadržkov.

Prvič, v primerjavi z GPT-J parametri (top k, top p in temperatura) nimajo enakih učinkov na model. Če vam je uspelo najti dobro konfiguracijo za GPT-J, tega ne smete jemati za samoumevno: z GPT-NeoX boste morali opraviti nove preskuse.

Nazadnje, tudi če se velikost vnosa lahko poveča na 2048 žetonov, bo to zahtevalo več pomnilnika kot zgoraj omenjenih 42 GB...

Paketno sklepanje?

Modeli GPT so precej počasni in GPT-NeoX 20B ni izjema. Da bi izboljšali prepustnost svoje aplikacije, boste morda želeli uporabiti rešitev za paketno sklepanje.

Za zdaj v oblaku NLP Cloud še nismo našli dobre rešitve za to.

Koda GPT-NeoX je narejena tako, da je mogoče z eno samo zahtevo opraviti več sklepov hkrati. Vendar se je pri naših testih odzivni čas linearno povečeval s številom sklepanj, kar nekako izniči namen paketnega sklepanja...

Zaključek

GPT-NeoX 20B je vsekakor težko uvesti v produkcijo. Kakovost ustvarjanja besedila je neverjetna, vendar bo le malokdo zmogel dejansko namestiti ta model.

Zdi se, da bo rešitev za uporabo tega modela bolj kot kdaj koli prej odvisna od storitve v oblaku, kot je NLP Cloud.

Če imate povratne informacije o tem članku, nam pišite, saj bomo veseli vašega mnenja o tem!

Julien Salinas
Tehnični direktor v podjetju NLP Cloud