Grūtības ar mākslīgā intelekta vai pilnas paketes izstrādi? Mūsu eksperti ir gatavi jums palīdzēt: individuāli pielāgoti padomi, tehniskā integrācija un daudz kas cits. Sazinieties ar [email protected].

GPT-NeoX 20B izvietošana ražošanā un fokuss uz Deepspeed

GPT-NeoX 20B izvietošana ražošanā ir izaicinājums, un mēs to uzzinājām no NLP Cloud... Šajā rakstā mēs jums pastāstīsim par vairākiem trikiem, kas saistīti ar GPT-NeoX 20B izmantošanu, un jo īpaši par to, kā rīkoties ar DeepSpeed ražošanā.

GPT-NeoX

GPT-NeoX 20B

GPT-NeoX 20B ir lielākais atvērtā pirmkoda dabiskās valodas apstrādes modelis, kāds ir pieejams līdz šim.

Pirms 2 nedēļām to izlaida EleutherAI. Tas tika apmācīts 20 miljardiem parametru pēc 1 gada smaga un izaicinājumu pilna darba. Viena no galvenajām grūtībām, šķiet, bija spēja izveidot atbilstošu paralēlo arhitektūru, lai modeli varētu efektīvi apmācīt uz vairākiem GPU.

Iepriekšējais modelis GPT-J tika apmācīts ar Google TPU, un tas bija paredzēts izmantošanai TPU. GPT-NeoX 20B iekšējā arhitektūra ir radikāli atšķirīga, un tas ir paredzēts izmantošanai GPU. Ideja ir tāda, ka tam vajadzētu būt pirmajam no vēl lielāku modeļu sērijas (mērķis ir panākt GPT-3).

GPT-NeoX 20 ir teksta ģenerēšanas modelis, kas nozīmē, ka tas var rakstīt tekstu jūsu vietā un faktiski ar lielu precizitāti sasniegt gandrīz jebkuru dabiskās valodas apstrādes lietojumu: bloga ierakstu ģenerēšana, tērzēšanas roboti, teksta klasifikācija, noskaņojuma analīze, atslēgvārdu ieguve, kodu ģenerēšana, būtņu ieguve, nodomu klasifikācija, jautājumu atbildēšana un daudz kas cits...

Nav šaubu, ka daudzi pētnieki un uzņēmumi izmantos šo jauno modeli un gūs lieliskus rezultātus. Taču ir viens izaicinājums: kā izmantot GPT-NeoX 20B?

Aparatūras prasības

Pirmais izaicinājums, ar ko nākas saskarties, mēģinot ieviest GPT-NeoX 20B ražošanā, ir tā nepieciešamā modernā aparatūra.

GPT-J joprojām bija iespējams uzstādīt uz plaša patēriņa aparatūras, pat ja tā bija ļoti dārga. Piemēram, to varēja izmantot ļoti labā CPU (pat ja rezultāts bija sāpīgi lēns) vai modernā spēļu GPU, piemēram, NVIDIA RTX 3090. Taču GPT-NeoX 20B ir tik liela, ka tas vairs nav iespējams.

Pamatā GPT-NeoX prasa vismaz 42 GB VRAM un 40 GB vietas uz diska (jā, mēs runājam par slaido fp16 versiju). Tikai daži GPU atbilst šīm prasībām. Galvenie ir NVIDIA A100, A40 un RTX A6000.

Šie GPU ir ne tikai ļoti dārgi, bet mūsdienās ir arī grūti tos dabūt rokā, jo pasaulē trūkst pusvadītāju.

Labākais risinājums šajā gadījumā ir izmantot vairāku GPU arhitektūru.

Multi-GPU ar Deepspeed

Ja savu modeli nevarat ietilpināt vienā GPU, varat mēģināt to sadalīt vairākos GPU.

Tas ir interesants risinājums 2 iemeslu dēļ. Pirmkārt, infrastruktūras horizontālā mērogošana bieži ir lētāka nekā vertikālā mērogošana. Tas attiecas gan uz serveriem, gan arī uz GPU. Otrkārt, ir vieglāk iegūt vairākus mazus GPU, piemēram, NVIDIA Tesla T4, nekā lielākus GPU, piemēram, NVIDIA A40.

Diemžēl mašīnmācīšanās modeļa sadalīšana vairākos GPU ir tehnisks izaicinājums. Hugging Face ir sagatavojis lielisku rakstu par modeļu paralēlismu un izvēles iespējām. Lasiet to šeit. Bet, par laimi, EleutherAI izstrādāja GPT-NeoX 20B tā, lai to varētu viegli paralelizēt uz vairākiem GPU, neatkarīgi no tā, vai tas ir apmācībai vai secinājumiem.

GPT-NeoX arhitektūra ir balstīta uz Deepspeed. Deepspeed ir Microsoft radīta sistēma, kas sākotnēji tika izstrādāta, lai paralēlizētu apmācības starp vairākiem GPU, un to arvien vairāk izmanto arī secinājumiem. EleutherAI veica visu smago darbu, tāpēc GPT-NeoX paralēlizēšana ir tikpat vienkārša, kā mainīt skaitli konfigurācijas failā.

GPT-NeoX paralēlisms
Extract from the GPT-NeoX docs about parallelism

Tomēr Deepspeed izvietošana ražošanā tiešsaistes secinājumiem, izmantojot API, ir sarežģīta... Deepspeed nebija paredzēts vieglai integrēšanai tīmekļa serveros. NLP Cloud mēs to uzzinājām grūtā ceļā, bet pēc smaga darba mums beidzot izdevās atrast efektīvu veidu, kā panākt, lai Deepspeed un GPT-NeoX darbotos aiz mūsu API.

Lietošanas triki

Pieņemsim, ka jums ir izdevies nodrošināt atbilstošu aparatūru un pareizi izvietot GPT-NeoX 20B ar Deepspeed. Tagad ir pāris brīdinājumi, kas jums būtu jāņem vērā.

Pirmkārt, salīdzinājumā ar GPT-J parametriem (top k, top p un temperatūra) nav tādas pašas ietekmes uz modeli. Tāpēc, ja jums ir izdevies atrast labu GPT-J konfigurāciju, neuzskatiet to par pašsaprotamu: jums būs jāveic jauni testi ar GPT-NeoX.

Visbeidzot, pat ja ievades lielumu var palielināt līdz 2048 žetoniem, tam būs nepieciešams vairāk atmiņas nekā iepriekš minētie 42 GB...

Partijas secinājums?

GPT modeļi ir diezgan lēni, un GPT-NeoX 20B nav izņēmums. Tāpēc, lai uzlabotu lietojumprogrammas caurlaides spēju, iespējams, būtu jāstrādā pie sērijveida secinājumu izdarīšanas risinājuma.

Pagaidām mēs NLP Cloud neesam izstrādājuši labu risinājumu šim jautājumam.

GPT-NeoX kods ir veidots tā, lai vienā pieprasījumā vienlaikus varētu veikt vairākus secinājumus. Taču mūsu testos atbildes laiks lineāri pieauga līdz ar secinājumu skaitu, kas zināmā mērā izjauc sērijveida secinājumu izdarīšanas mērķi...

Secinājums

GPT-NeoX 20B noteikti ir grūti izvietot ražošanā. Teksta ģenerēšanas kvalitāte ir pārsteidzoša, taču tikai retajam būs iespējas šo modeli reāli instalēt.

Vairāk nekā jebkad agrāk šķiet, ka risinājums būs paļauties uz mākoņpakalpojumu, piemēram, NLP Cloud, lai izmantotu šo modeli.

Ja jums ir atsauksmes par šo rakstu, lūdzu, nekautrējieties sazināties ar mums, būs prieks dzirdēt jūsu viedokli par šo!

Julien Salinas
NLP Cloud tehniskais direktors