GPT-NeoX 20B:n käyttöönotto tuotannossa on haasteellista, ja opimme sen kantapään kautta NLP Cloudissa.... Tässä artikkelissa kerromme lisää useista tempuista, jotka liittyvät GPT-NeoX 20B:n käyttöön, ja erityisesti siitä, miten käsitellä DeepSpeediä tuotannossa.

GPT-NeoX 20B on suurin avoimen lähdekoodin luonnollisen kielen prosessointimalli tätä kirjoitettaessa.
EleutherAI julkaisi sen 2 viikkoa sitten. Se koulutettiin 20 miljardilla parametrilla 1 vuoden kovan työn jälkeen, joka oli täynnä haasteita. Yksi heidän suurimmista vaikeuksistaan näytti olevan kunnollisen rinnakkaisarkkitehtuurin luominen, jotta malli voidaan kouluttaa tehokkaasti useilla GPU:illa.
Heidän edellinen mallinsa, GPT-J, koulutettiin Googlen TPU:lla ja suunniteltiin TPU:lla käytettäväksi. GPT-NeoX 20B:n sisäinen arkkitehtuuri on radikaalisti erilainen, ja se on suunniteltu käytettäväksi GPU:illa. Ajatuksena on, että sen pitäisi olla ensimmäinen vielä suurempien mallien sarjassa (tavoitteena on saavuttaa GPT-3).
GPT-NeoX 20 on tekstintuotantomalli, mikä tarkoittaa, että se voi kirjoittaa tekstiä puolestasi ja saavuttaa lähes minkä tahansa luonnollisen kielen prosessoinnin käyttötapauksen suurella tarkkuudella: blogikirjoitusten luominen, chatbotit, tekstiluokittelu, tunneanalyysi, avainsanojen louhinta, koodien luominen, entiteettien louhinta, aikomusten luokittelu, kysymyksiin vastaaminen ja paljon muuta....
Epäilemättä monet tutkijat ja yritykset hyödyntävät tätä uutta mallia ja saavat hyviä tuloksia. Mutta on olemassa haaste: miten GPT-NeoX 20B otetaan käyttöön?
Ensimmäinen haaste, joka kohdataan, kun GPT-NeoX 20B:tä yritetään ottaa käyttöön tuotannossa, on sen vaatima kehittynyt laitteisto.
GPT-J:n käyttöönotto kuluttajille tarkoitetuilla laitteistoilla oli edelleen mahdollista, vaikka se olikin hyvin kallista. Sitä voit käyttää esimerkiksi erittäin hyvällä suorittimella (vaikka tulos olikin tuskallisen hidas) tai kehittyneellä pelinäytönohjaimella, kuten NVIDIA RTX 3090:llä. Mutta GPT-NeoX 20B on niin iso, että se ei ole enää mahdollista.
Periaatteessa GPT-NeoX vaatii vähintään 42 Gt VRAM-muistia ja 40 Gt levytilaa (ja kyllä, puhumme tässä ohuesta fp16-versiosta). Harva näytönohjain vastaa näitä vaatimuksia. Tärkeimmät niistä ovat NVIDIA A100, A40 ja RTX A6000.
Nämä näytönohjaimet ovat erittäin kalliita, ja niitä on myös vaikea saada nykyään, koska puolijohdepulasta on maailmanlaajuinen pula.
Paras ratkaisu tässä tapauksessa on käyttää usean grafiikkaprosessorin arkkitehtuuria.
Jos malli ei mahdu yhdelle näytönohjaimelle, voit yrittää jakaa sen useammalle näytönohjaimelle.
Se on mielenkiintoinen vaihtoehto kahdesta syystä. Ensinnäkin infrastruktuurin skaalautuminen horisontaalisesti on usein halvempaa kuin vertikaalisesti. Tämä pätee palvelimiin ja myös näytönohjaimiin. Toiseksi on helpompaa saada käsiinsä useita pieniä näytönohjaimia, kuten NVIDIA Tesla T4, kuin suurempia näytönohjaimia, kuten NVIDIA A40.
Valitettavasti koneoppimismallin jakaminen usealle GPU:lle on tekninen haaste. Hugging Face teki hienon artikkelin mallien rinnakkaisuudesta ja valinnoista, joita sinulla on. Lue se täältä. Mutta onneksi EleutherAI suunnitteli GPT-NeoX 20B:n niin, että se on helposti rinnakkaistettavissa usealle GPU:lle, olipa kyse sitten harjoittelusta tai päättelystä.
GPT-NeoX-arkkitehtuuri perustuu Deepspeediin. Deepspeed on Microsoftin kehys, joka on alun perin suunniteltu harjoittelun rinnakkaistamiseen useiden GPU:iden kesken, ja sitä käytetään yhä enemmän myös päättelyyn. EleutherAI teki kaiken vaikean työn, joten GPT-NeoX:n rinnakkaistaminen on yhtä yksinkertaista kuin numeron muuttaminen asetustiedostossa.

Extract from the GPT-NeoX docs about parallelism
Deepspeedin käyttöönotto tuotannossa API:n kautta tapahtuvaa online-päätelmää varten on kuitenkin vaikeaa.... Deepspeediä ei ole suunniteltu helposti integroitavaksi verkkopalvelimiin. NLP Cloudissa opimme sen kantapään kautta, mutta kovan työn jälkeen onnistuimme lopulta keksimään tehokkaan tavan saada Deepspeed ja GPT-NeoX toimimaan API:n takana.
Oletetaan siis, että onnistuit hankkimaan oikean laitteiston ja ottamaan GPT-NeoX 20B:n oikein käyttöön Deepspeedin kanssa. Nyt on pari varoitusta, jotka sinun on syytä huomioida.
Ensinnäkin GPT-J:hen verrattuna parametreilla (top k, top p ja lämpötila) ei ole samanlaisia vaikutuksia malliin. Jos siis onnistuit löytämään hyvän kokoonpanon GPT-J:lle, älä pidä sitä itsestäänselvyytenä: sinun on tehtävä uusia testejä GPT-NeoX:llä.
Viimeiseksi, vaikka syöttökoko voi nousta 2048 merkkiin, se vaatii enemmän muistia kuin edellä mainittu 42GB....
GPT-mallit ovat melko hitaita, eikä GPT-NeoX 20B ole poikkeus. Jos siis haluat parantaa sovelluksesi läpimenoaikaa, kannattaa ehkä käyttää eräkohtaista päättelyratkaisua.
Tällä hetkellä emme ole vielä keksineet hyvää ratkaisua tähän NLP Cloudissa.
GPT-NeoX-koodi on tehty niin, että yhdellä pyynnöllä voidaan tehdä useita päätelmiä samanaikaisesti. Mutta testeissämme vasteaika kasvoi lineaarisesti päätelmien määrän myötä, mikä tavallaan kumoaa eräkohtaisen päättelyn tarkoituksen...
GPT-NeoX 20B on varmasti vaikea ottaa käyttöön tuotannossa. Tekstin tuottamisen laatu on hämmästyttävä, mutta harvalla on kapasiteettia asentaa tämä malli.
Vaikuttaa siltä, että ratkaisuna on entistä enemmän turvautua NLP Cloudin kaltaiseen pilvipalveluun, jotta tätä mallia voidaan käyttää.
Jos sinulla on palautetta tästä artikkelista, älä epäröi ottaa meihin yhteyttä, olisi hienoa kuulla mielipiteesi tästä!
Julien Salinas
teknologiajohtaja, NLP Cloud