GPT-NeoX 20B kasutuselevõtt tootmises on väljakutse ja me õppisime seda NLP Cloudis raskelt... Selles artiklis räägime teile lähemalt mitmetest nippidest, mis on seotud GPT-NeoX 20B kasutamisega ja eriti sellest, kuidas tulla toime DeepSpeediga tootmises.

GPT-NeoX 20B on käesoleva artikli kirjutamise ajal suurim avatud lähtekoodiga loodusliku keele töötlemise mudel.
See ilmus EleutherAI poolt 2 nädalat tagasi. Seda koolitati 20 miljardi parameetri põhjal, pärast 1-aastast rasket tööd täis väljakutseid. Üks nende peamisi raskusi näis olevat võime luua korralik paralleelarhitektuur, et mudelit saaks tõhusalt koolitada mitmel GPU-l.
Nende eelmine mudel, GPT-J, treeniti Google TPUdel ja oli mõeldud kasutamiseks TPUdel. GPT-NeoX 20B sisemine arhitektuur on radikaalselt erinev ja see on mõeldud kasutamiseks GPUdel. Idee on, et see peaks olema esimene veelgi suuremate mudelite seeriast (eesmärk on siinkohal jõuda GPT-3-le järele).
GPT-NeoX 20 on teksti genereerimise mudel, mis tähendab, et see suudab kirjutada teksti teie eest ja tegelikult saavutada peaaegu iga loodusliku keele töötlemise kasutusjuhtumi suure täpsusega: blogipostituste genereerimine, juturobotid, teksti klassifitseerimine, tundmusanalüüs, märksõnade väljavõtmine, koodide genereerimine, entiteetide väljavõtmine, kavatsuste klassifitseerimine, küsimustele vastamine ja palju muud...
Kahtlemata kasutavad paljud teadlased ja ettevõtted seda uut mudelit ja saavad suurepäraseid tulemusi. Kuid on üks väljakutse: kuidas kasutada GPT-NeoX 20B?
Esimene väljakutse, millega GPT-NeoX 20B tootmisel silmitsi seisab, on selle jaoks vajalik täiustatud riistvara.
GPT-J-d oli siiski võimalik kasutada tarbijaravimil, isegi kui see oli väga kallis. Näiteks võis seda kasutada väga heal protsessoril (isegi kui tulemus oli valusalt aeglane) või arenenud mängugraafikaga, nagu NVIDIA RTX 3090. Aga GPT-NeoX 20B on nii suur, et see ei ole enam võimalik.
Põhimõtteliselt nõuab GPT-NeoX vähemalt 42 GB VRAMi ja 40 GB kettaruumi (ja jah, me räägime siinkohal õhukesest fp16 versioonist). Vähesed GPU-d vastavad nendele nõuetele. Peamised neist on NVIDIA A100, A40 ja RTX A6000.
Need GPUd ei ole mitte ainult väga kallid, vaid neid on ka raske saada, sest pooljuhtidest on praegu ülemaailmselt puudus.
Parim lahendus siinkohal on valida mitme GPU arhitektuur.
Kui teie mudel ei mahu ühele GPU-le, võite proovida jagada selle mitmele GPU-le.
See on huvitav võimalus 2 põhjusel. Esiteks on infrastruktuuri horisontaalne skaleerimine sageli odavam kui vertikaalne skaleerimine. See kehtib nii serverite kui ka GPUde puhul. Teiseks on lihtsam saada kätte mitu väikest GPU-d, nagu NVIDIA Tesla T4, kui suuremat GPU-d, nagu NVIDIA A40.
Kahjuks on masinõppe mudeli jagamine mitmele GPU-le tehniline väljakutse. Hugging Face tegi suurepärase artikli mudeli paralleelsusest ja teie valikutest. Luge seda siin. Aga õnneks on EleutherAI kujundanud GPT-NeoX 20B nii, et see on kergesti paralleeldatav mitmel GPU-l, olgu see siis treenimiseks või järelduste tegemiseks.
GPT-NeoXi arhitektuur põhineb Deepspeedil. Deepspeed on Microsofti raamistik, mis on algselt mõeldud treeningute paralleelseks jaotamiseks mitme GPU vahel ning mida kasutatakse üha enam ka järelduste tegemiseks. EleutherAI tegi kogu raske töö ära, nii et GPT-NeoXi paralleelistamine on sama lihtne kui numbri muutmine konfiguratsioonifailis.

Extract from the GPT-NeoX docs about parallelism
Kuid Deepspeed'i kasutuselevõtt tootmises online järelduste tegemiseks API kaudu on raske... Deepspeed ei ole mõeldud selleks, et seda oleks lihtne integreerida veebiserveritesse. NLP Cloudis õppisime seda raskel teel, kuid pärast rasket tööd õnnestus meil lõpuks välja töötada tõhus viis, kuidas Deepspeed ja GPT-NeoX meie API taga tööle panna.
Eeldame, et teil õnnestus õige riistvara hankida ja GPT-NeoX 20B koos Deepspeediga õigesti kasutusele võtta. Nüüd on paar hoiatust, millest te peaksite teadlik olema.
Esiteks, võrreldes GPT-J-ga ei ole parameetritel (top k, top p ja temperatuur) mudelile sama mõju. Seega, kui teil õnnestus leida hea konfiguratsioon GPT-J jaoks, ärge võtke seda iseenesestmõistetavana: te peate tegema uusi katseid GPT-NeoXiga.
Viimaks, isegi kui sisendi suurus võib ulatuda 2048 märgini, nõuab see rohkem mälu kui eespool mainitud 42 GB...
GPT mudelid on üsna aeglased ja GPT-NeoX 20B ei ole erandiks. Nii et rakenduse läbilaskevõime parandamiseks võiksite töötada partii järelduste lahenduse kallal.
Hetkel ei ole me NLP Cloudis selle jaoks head lahendust leidnud.
GPT-NeoXi kood on tehtud nii, et ühe taotluse raames saab üheaegselt teha mitu järeldust. Kuid meie testides kasvas reageerimisaeg lineaarselt koos järelduste arvuga, mis omamoodi lükkab tagasi partii järelduste eesmärgi...
GPT-NeoX 20B on kindlasti raske tootmises kasutusele võtta. Teksti genereerimise kvaliteet on hämmastav, kuid vähesed suudavad seda mudelit tegelikult paigaldada.
Tundub, et rohkem kui kunagi varem on selle mudeli kasutamiseks vaja toetuda pilveteenusele nagu NLP Cloud.
Kui teil on tagasisidet selle artikli kohta, võtke meiega ühendust, oleks tore kuulda teie arvamust selle kohta!
Julien Salinas
NLP Cloud tehnoloogiajuht