Päätelmien optimointi on kriittinen osa tuotannossa käytettäviä generatiivisia tekoälysovelluksia. LLM:ien tehokas käyttö mittakaavassa on haasteellista, ja viime vuosina on kehitetty monia tekniikoita, joiden avulla päätelmistä voidaan tehdä nopeampia ja halvempia. Tarkastellaan näitä tekniikoita tässä artikkelissa.
Suuret kielimallit (LLM) perustuvat kaikki Transformer-arkkitehtuuriin, jonka Vaswani et al. keksivät vuonna 2017. Transformer-arkkitehtuurilla saavutetaan ylivoimainen tarkkuus, oppiminen muutamalla otoksella ja lähes inhimilliset kyvyt erilaisissa kielitehtävissä. Nämä usein kymmenistä satoihin miljardeihin parametreihin koostuvat perusmallit ovat kuitenkin kalliita kouluttaa ja resurssi-intensiivisiä päättelyn aikana. Päättelykustannukset kasvavat, kun käytetään pitkiä syöttökonteksteja, jotka vaativat huomattavaa prosessointitehoa suurten syöttötietojen vuoksi. Tämä tekee tehokkaasta päättelystä kriittisen haasteen, erityisesti muistin ja laskentaresurssien hallinnassa.

Tarkemmin sanottuna useimmat tunnetut LLM:t ovat pelkkiä dekoodereita, kuten GPT-3, GPT-4, LLaMA, Mistral, DeepSeek jne. Nämä mallit esivalmennetaan kausaalimallinnustehtävässä, ja ne toimivat seuraavan sanan ennustajina. Ne käsittelevät syötteenä merkkijonon ja tuottavat seuraavat merkit autoregressiivisesti, kunnes pysäytysehto saavutetaan.
Pelkästään dekooderilla toimivissa malleissa LLM-päätelmässä on kaksi keskeistä vaihetta: esitäyttövaihe ja dekoodausvaihe. Esitäyttövaiheessa malli käsittelee syötemerkkejä laskeakseen välitilat (avaimet ja arvot) ensimmäisen uuden merkin tuottamista varten. Tämä vaihe, joka muistuttaa matriisi-matriisi-operaatiota, on hyvin rinnakkaistettu ja hyödyntää tehokkaasti grafiikkasuorittimen ominaisuuksia. Sitä vastoin dekoodausvaihe tuottaa merkkejä yksi kerrallaan edellisten merkkien tilojen perusteella. Tämä matriisi-vektori-operaatio on muistisidonnainen, sillä tiedonsiirto GPU:lle, ei niinkään laskentanopeus, määrää ensisijaisesti viiveen, mikä johtaa GPU:n laskentatehon vajaakäyttöön.
Dekoodausvaiheen optimointi on keskeinen tekijä päätelmiin liittyvien haasteiden ratkaisemisessa. Ratkaisuihin kuuluu tehokkaiden huomiomekanismien kehittäminen sekä avainten ja arvojen parempi hallinta muistin pullonkaulojen vähentämiseksi. Kirjoituksessa tuodaan esiin käytännön lähestymistapoja, joilla voidaan parantaa päättelyn suorituskykyä, olettaen, että lukijoilla on perustiedot muuntajan arkkitehtuurista ja huomiomekanismeista. Nämä optimoinnit ovat ratkaisevan tärkeitä läpäisykyvyn parantamiseksi ja viiveen vähentämiseksi todellisissa LLM-käyttöönotoissa.
Lisäkomplikaatioita aiheutuu siitä, että LLM:t käyttävät erilaisia tokenizereita, mikä vaikuttaa tokenien vertailukelpoisuuteen. Tokenit, jotka vastaavat suurin piirtein neljää englanninkielistä merkkiä, vaihtelevat tokenisaattorin mukaan, mikä tekee suorista vertailuista päätelmien läpimenon suhteen (esim. tokenit sekunnissa) harhaanjohtavia. Tämä vaihtelu korostaa tarvetta standardoituihin arviointimittareihin, joilla voidaan arvioida ja vertailla LLM:n suorituskykyä päättelyn aikana.
Erittely on keskeinen strategia, jolla parannetaan GPU:n käyttöastetta ja läpäisykykyä suurissa kielimalleissa (LLM). Käsittelemällä useita pyyntöjä samanaikaisesti samaa mallia käyttäen eräkäsittely jakaa mallipainojen muistikustannukset pyyntöjen kesken, jolloin suuremmat erät voivat hyödyntää enemmän GPU:n laskentatehoa. Eräkoolla on kuitenkin rajansa, sillä liian suuret erät voivat aiheuttaa muistin ylivuodon LLM-mallien muistivaatimusten vuoksi, erityisesti avain-arvojen (KV) välimuistiin liittyen (tästä lisää myöhemmin).

Perinteisellä tai staattisella eränmuodostuksella on rajoituksia, koska erän sisällä olevat pyynnöt tuottavat usein eri määrän valmistumismerkkejä, mikä johtaa vaihteleviin suoritusaikoihin. Tämä aiheuttaa sen, että kaikki pyynnöt joutuvat odottamaan hitaimman pyynnön valmistumista, mikä voi olla ongelmallista, kun sukupolven pituudet vaihtelevat merkittävästi. Tämän ongelman ratkaisemiseksi on kehitetty kehittyneitä tekniikoita, kuten lennon aikainen eränmuodostus, suorituskyvyn optimoimiseksi.
Lennon aikana tapahtuvalla eräajolla, joka tunnetaan myös nimellä jatkuva eräajo, vastataan LLM-työkuormien dynaamisen luonteen asettamiin haasteisiin, jotka voivat vaihdella yksinkertaisista chatbot-vastauksista monimutkaisiin asiakirjojen tiivistämiseen tai koodin luomiseen. Nämä tehtävät tuottavat hyvin erikokoisia tuotoksia, mikä vaikeuttaa pyyntöjen tehokasta panostamista ja suorittamista rinnakkain. Toisin kuin staattisessa eräajossa, lennossa tapahtuvassa eräajossa palvelin voi häätää valmiit jaksot erästä välittömästi ja aloittaa uusien pyyntöjen käsittelyn, kun muut ovat vielä kesken. Tämä lähestymistapa parantaa GPU:n käyttöastetta merkittävästi mukautumalla pyyntöjen vaihteleviin suoritusaikoihin reaalimaailman skenaarioissa.
Mallien rinnakkaistaminen on kriittinen strategia, jolla hallitaan laajamittaisten koneoppimismallien muisti- ja laskentavaatimuksia jakamalla ne useille GPU:ille. Tämä lähestymistapa mahdollistaa sellaisten suurempien mallien tai syöttöerien käsittelyn, jotka ylittävät yksittäisen laitteen muistikapasiteetin, mikä tekee siitä olennaisen tärkeän sekä harjoittelussa että päättelyssä, kun muistirajoitukset ovat tiukat. Mallipainojen jakamiseen on olemassa erilaisia tekniikoita, kuten putkistorinnakkaisuus, tensoririnnakkaisuus ja sekvenssirinnakkaisuus, joista kukin käsittelee mallien jakamiseen liittyviä eri näkökohtia. Toisin kuin datan rinnakkaisuus, jossa keskitytään mallipainojen monistamiseen eri laitteisiin suurempien syöttöerien käsittelemiseksi harjoittelun aikana, nämä menetelmät ovat tärkeämpiä muistijalanjäljen vähentämiseksi sekä harjoittelun että päättelyn aikana.

Putkilinjan rinnakkaisuus jakaa mallin vertikaalisesti peräkkäisiin lohkoihin, joista kukin sisältää erilliselle laitteelle osoitetun kerrosten osajoukon. Esimerkiksi nelisuuntaisessa putkistoasetelmassa kukin laite käsittelee neljäsosaa mallin kerroksista ja välittää ulostulot seuraavalle laitteelle peräkkäin. Vaikka tämä vähentää huomattavasti laitekohtaisia muistivaatimuksia, se aiheuttaa tehottomuutta, joka tunnetaan nimellä "putkikuplat", jolloin laitteet voivat olla toimettomina odottaessaan edellisten kerrosten tulosteita.
Sen sijaan tensoririnnakkaisuus jakaa yksittäiset kerrokset horisontaalisesti pienempiin laskentalohkoihin, joita voidaan suorittaa itsenäisesti eri laitteilla. Tämä on erityisen tehokasta muuntajakomponenteille, kuten huomiolohkoille ja monikerroksisille perceptroneille (MLP), joissa esimerkiksi eri huomiopäät voidaan määrittää erillisille laitteille rinnakkaista laskentaa varten. Tensoririnnakkaisuus ei kuitenkaan ole yhtä tehokasta LayerNorm- ja Dropout-operaatioiden kaltaisissa operaatioissa, joita ei voida helposti jakaa ja jotka on toistettava eri laitteissa, mikä johtaa turhaan muistin käyttöön aktivointien tallentamiseen. Tämä rajoitus korostaa tarvetta täydentäviin lähestymistapoihin muistin tehokkuuden optimoimiseksi.
Sekvenssin rinnakkaistoiminnolla ratkaistaan LayerNorm- ja Dropout-operaatioiden kaltaisten operaatioiden muistin tehottomuus jakamalla ne syötesekvenssiulottuvuutta pitkin ja hyödyntämällä niiden riippumattomuutta sekvenssielementtien välillä. Tämä menetelmä vähentää turhien aktivointien muistijalanjälkeä, mikä tekee siitä arvokkaan täydennyksen tensoririnnakkaisuudelle. Nämä rinnakkaistamistekniikat eivät sulje toisiaan pois, ja niitä voidaan yhdistää suurten kielimallien (LLM) optimoimiseksi edelleen. Lisäksi erityiset huomiomoduulin optimointistrategiat voivat parantaa skaalautuvuutta ja vähentää GPU-kohtaisia muistivaatimuksia, mikä mahdollistaa tehokkaamman harjoittelun ja päättelyn suurille malleille.
Vaswani et al. esittelivät vuonna 2017 julkaisussaan *Attention Is All You Need* Transformer-mallin, jonka kulmakivenä on itsehuomio. Self-attentionin avulla malli pystyy arvioimaan lauseen eri sanojen merkityksellisyyttä suhteessa toisiinsa, mikä parantaa kontekstuaalista ymmärrystä esimerkiksi luonnollisen kielen prosessoinnin kaltaisissa tehtävissä. Artikkelissa formalisoitiin itsehuomio erityisesti SDPA-mekanismin (SDPA = scaled dot-product attention) avulla, joka kuvaa kysely- ja avain-arvopareja tulosteeksi, mikä tekee siitä keskeisen komponentin nykyaikaisissa neuroverkoissa. Seuraavassa on joitakin tärkeimpiä tekniikoita huomiolaskennan optimoimiseksi:

Multi-head attention (MHA) perustuu SDPA:han suorittamalla useita huomio-operaatioita rinnakkain, ja jokaisella on omat kysely-, avain- ja arvomatriisien projektiot. Nämä rinnakkaiset operaatiot eli "päät" keskittyvät eri representaation osa-alueisiin, mikä rikastuttaa mallin ymmärrystä syötteestä. Näiden päiden tuotokset yhdistetään ja projisoidaan lineaarisesti, jolloin laskennallinen tehokkuus säilyy vertailukelpoisena yhden pään huomion kanssa vähentämällä kunkin pään dimensiota (esim. jakamalla mallin dimensio päiden lukumäärällä, esimerkiksi 8:lla).
MQA (Multi-query attention) optimoi MHA:n päättelyä varten jakamalla avain- ja arvoprojektiot useiden huomiopäähän ja säilyttämällä samalla useat kyselyprojektiot. Tämä vähentää muistin kaistanleveysvaatimuksia ja avain-arvovälimuistin (KV-välimuistin) kokoa, mikä mahdollistaa suuremmat eräkoot ja paremman laskentakäytön. MQA saattaa kuitenkin hieman heikentää tarkkuutta, ja sitä hyödyntävät mallit vaativat suorituskyvyn säilyttämiseksi harjoittelua tai hienosäätöä, kun MQA on käytössä.
Ryhmitetty kyselyhuomio (GQA) tasapainottaa MHA:n ja MQA:n ryhmittelemällä kyselypäitä ja jakamalla avainarvoprojektioita kussakin ryhmässä, jolloin saavutetaan lähes MHA-laatu ja laskentatehokkuus on lähempänä MQA:ta. Llama 2 70B:n kaltaiset mallit käyttävät GQA:ta, ja MHA:lla koulutetut mallit voidaan mukauttaa GQA:han vähäisellä lisäkoulutuksella. Sekä MQA että GQA vähentävät KV:n välimuistin muistivaatimuksia, vaikka välimuistin hallinnan optimointi on edelleen tarpeen.
FlashAttention parantaa huomiomekanismeja järjestämällä laskutoimitukset uudelleen, jotta GPU:n muistihierarkioita voidaan hyödyntää tehokkaammin. Toisin kuin perinteinen kerroksittainen käsittely, FlashAttention sulauttaa toimintoja ja käyttää "laatoitusta" laskeakseen pieniä osia tulostematriisista kerralla, mikä minimoi muistin luku- ja kirjoitusoperaatiot. Tämä I/O-tietoinen, tarkka huomioalgoritmi integroituu saumattomasti olemassa oleviin malleihin ilman muutoksia ja tarjoaa huomattavaa nopeutusta optimoimalla tiedonsiirtoa.
KV-välimuistitallennus on kriittinen optimointitekniikka, jota käytetään suurten kielimallien (LLM) dekoodausvaiheessa parantamaan itsetarkkailulaskennan tehokkuutta. Tässä vaiheessa kukin luotu merkki riippuu kaikkien aiempien merkkien avain- (K) ja arvotensoreista (V), mukaan lukien esitäyttövaiheen ja myöhempien dekoodausvaiheiden aikana lasketut merkit. Sen sijaan, että nämä tensorit laskettaisiin uudelleen jokaiselle merkille jokaisessa aika-askeleessa, KV-välimuisti tallentaa ne GPU:n muistiin ja lisää uudet tensorit välimuistiin sitä mukaa kuin niitä lasketaan. Tyypillisesti jokaiselle mallin kerrokselle ylläpidetään erillistä KV-välimuistia, mikä vähentää merkittävästi turhia laskutoimituksia ja nopeuttaa dekoodausprosessia.

LLM:n muistivaatimukset GPU:lla johtuvat pääasiassa kahdesta komponentista: mallipainoista ja KV-välimuistista. Mallipainot, jotka koostuvat mallin parametreista, vievät huomattavan paljon muistia; esimerkiksi Llama 2 7B:n kaltainen 7 miljardin parametrin malli 16-bittisellä tarkkuudella vaatii noin 14 gigatavua. KV-välimuisti puolestaan tallentaa itsehuomiointitensorit uudelleenlaskennan välttämiseksi, ja sen koko määräytyy esimerkiksi kerrosten, huomiopäähäntien, pään koon ja tarkkuuden mukaan. Kunkin merkin osalta välimuistin koko lasketaan seuraavasti: 2 * num_layers * (num_heads * dim_head) * precision_in_bytes, jossa kerroin 2 ottaa huomioon sekä K- että V-matriisit. Syöttöerän osalta KV-välimuistin kokonaiskoko skaalautuu erän koon ja jakson pituuden mukaan, ja se voi saavuttaa huomattavia kokoja, kuten ~2 Gt Llama 2 7B -mallissa, jonka jakson pituus on 4 096 ja eräkoko 1.
KV-välimuistin tehokas hallinta on haasteellista, koska sen lineaarinen kasvu erän koon ja sekvenssin pituuden myötä voi rajoittaa läpäisykykyä ja vaikeuttaa pitkien kontekstien käsittelyä. Yleinen tehottomuus johtuu staattisesta ylivarauskäytöstä, jossa muistia varataan suurimmalle tuetulle sekvenssin pituudelle (esim. 2 048 merkkiä) riippumatta syötteen todellisesta koosta. Tämä johtaa huomattavaan muistin tuhlaukseen tai pirstoutumiseen, sillä suuri osa varatusta tilasta jää usein käyttämättä koko pyynnön elinkaaren ajaksi, mikä sitoo GPU:n arvokkaita muistiresursseja.
PagedAttention-algoritmi ottaa käyttöön uudenlaisen lähestymistavan, joka on saanut vaikutteita käyttöjärjestelmän hakemistohakemistosta. Se jakaa KV-välimuistin kiinteän kokoisiin lohkoihin, joista kukin edustaa tiettyä määrää merkkejä, jotka voidaan tallentaa muistiin ei-yhtenäisesti. Lohkotaulukko seuraa näitä lohkoja ja noutaa ne tarpeen mukaan huomiolaskennan aikana. Kun uusia merkkejä syntyy, uusia lohkoja varataan dynaamisesti. Tämä menetelmä minimoi muistin tuhlauksen poistamalla tarpeen vierekkäiseen jakamiseen ja ylitarjontaan, mahdollistaa suuremmat eräkoot ja parantaa läpäisykykyä, mikä tekee siitä merkittävän edistysaskeleen LLM:n KV-välimuistin hallinnassa.
Tässä luvussa käsittelemme erilaisia tekniikoita suurten kielimallien (LLM) optimoimiseksi, jotta niiden muistinkulutusta voidaan vähentää ja suorituskykyä parantaa näytönohjaimilla. Keskeisiä menetelmiä ovat kvantisointi, harvennus ja tislaus, jotka kaikki kohdistuvat mallin tehokkuuden eri osa-alueisiin. Näillä tekniikoilla muutetaan mallin painoja, hyödynnetään GPU-laitteiston kiihdytystä ja siirretään tietoa pienempiin malleihin, jolloin suurempia malleja voidaan ajaa rajoitetulla laitteistolla suorituskyvyn säilyttäen. Nämä menetelmät voivat heikentää mallin tarkkuutta, joten niitä on käytettävä varoen.
Kvantisointi vähentää mallin painojen ja aktivaatioiden tarkkuutta tyypillisesti 32 tai 16 bitistä 8 tai vähemmän bittiin, jolloin mallit vievät vähemmän muistia ja siirtävät tietoa tehokkaammin. Painojen kvantisointi on suoraviivaista, koska ne ovat kiinteitä koulutuksen jälkeen, mutta aktivointien kvantisointi on monimutkaisempaa, koska niiden dynaamista aluetta laajentavat poikkeamat. LLM.int8():n kaltaiset tekniikat ratkaisevat tämän soveltamalla valikoivasti suurempaa tarkkuutta tiettyihin aktivointeihin tai käyttämällä uudelleen kvantifioitujen painojen dynaamista aluetta aktivointeihin, vaikka GPU:t saattavat vaatia painojen muuntamista takaisin suurempaan tarkkuuteen operaatioita varten.
Harvassa muodossa karsitaan mallin arvot läheltä nollaa ja luodaan harvoja matriiseja, jotka vaativat vähemmän muistia. GPU:t tukevat strukturoitua harvennusta, kuten kahden nollan esittämistä neljästä arvosta, mikä nopeuttaa laskentaa. Harvennuksen ja kvantisoinnin yhdistäminen voi parantaa suoritusnopeutta entisestään. Tutkimus jatkaa optimaalisten harvalukuisten esitysten tutkimista LLM-malleille, mikä on lupaava tapa parantaa päättelynopeuksia.
Tislaus siirtää tietoa suuremmasta "opettaja"-mallista pienempään "oppilas"-malliin, jolloin koko pienenee ja suorituskyky säilyy. Esimerkiksi DistilBERT pienentää kokoa 40 prosenttia ja lisää nopeutta 60 prosenttia verrattuna BERT:iin ja säilyttää 97 prosenttia sen ominaisuuksista. Tislaus voi sisältää opettajan tuotosten jäljittelyä tai opettajan tuottaman datan käyttämistä harjoitteluun, ja menetelmiin, kuten "Distilling Step by Step!", sisältyy tehokkaan oppimisen perusteluja. Monien kehittyneiden LLM-ohjelmien rajoittavat lisenssit rajoittavat kuitenkin sopivien opettajamallien saatavuutta tislausta varten.
Spekulatiivinen päättely, joka tunnetaan myös nimellä spekulatiivinen näytteenotto tai avustettu generointi, on menetelmä, jolla rinnakkaistetaan autoregressiivisten suurten kielimallien (LLM), kuten GPT-tyylisten mallien, suorittaminen. Tavallisessa suorituksessa jokainen merkki riippuu kontekstiltaan kaikista aiemmista merkeistä, mikä tekee rinnakkaisen generoinnin mahdottomaksi, koska n:nnen merkin on oltava generoitu ennen (n+1)-n:ää merkkiä. Spekulatiivinen päättely ratkaisee tämän käyttämällä "halvempaa" luonnosmallia ennustamaan useita tulevia merkkejä samanaikaisesti, jotka päämalli sitten tarkistaa tai hylkää rinnakkain, mikä mahdollistaa nopeamman tekstin tuottamisen.
Prosessissa luodaan luonnos useiden merkkien jatkumosta käyttämällä vähemmän resursseja vaativaa menetelmää, minkä jälkeen päämallilla tehdään rinnakkainen verifiointi käyttäen luonnosta spekulatiivisena kontekstina. Jos todentamismalli vastaa luonnoksen merkkejä, ne hyväksytään; muussa tapauksessa merkit, jotka eivät vastaa luonnosta, ja niitä seuraavat merkit hylätään, ja prosessi toistetaan uudella luonnoksella. Luonnosmerkkejä voidaan tuottaa eri lähestymistapoja käyttäen, kuten kouluttamalla useita malleja, hienosäätämällä useita päitä esivalmennettuun malliin tulevien merkkien ennustamiseksi tai käyttämällä pienempää luonnosmallia isomman, kyvykkäämmän todentamismallin rinnalla, joista kullakin on omat kompromissinsa.
Hajautettu päättely on tekniikka, jossa laskentatehtävät jaetaan eri laitteistoihin suorituskyvyn, kustannusten ja resurssien käytön optimoimiseksi. Tarkemmin sanottuna siinä erotetaan esitäyttö- ja dekoodausvaiheet toisistaan. Kun nämä vaiheet erotetaan toisistaan, kukin vaihe voidaan osoittaa laitteistolle, joka soveltuu parhaiten sen laskennallisiin vaatimuksiin, mikä parantaa tehokkuutta ja skaalautuvuutta.

Esitäyttö on laskentaintensiivistä, sillä se vaatii huomattavia matriisikertoja koko syötekehotuksen käsittelemiseksi ja KV-välimuistien tuottamiseksi. Tässä vaiheessa hyödynnetään suorituskykyisiä laitteistoja, kuten grafiikkasuorittimia tai TPU:ita, jotka ovat erinomaisia rinnakkaislaskennassa. Koska esitäyttö on kertaluonteinen tehtävä kutakin päättelypyyntöä kohti, se voidaan siirtää keskitettyyn, tehokkaaseen laskentasolmuun, joka on optimoitu tällaiseen työmäärään. Tämä asetus mahdollistaa suurten kyselyjen nopeamman käsittelyn ja vähentää vähemmän suorituskykyisten laitteiden taakkaa, joten se sopii erinomaisesti pilvipohjaisiin tai datakeskusympäristöihin, joissa on käytettävissä suuritehoisia laitteistoja.
Dekoodaus sen sijaan on muistisidonnaista ja sisältää iteratiivista merkkien luomista, joka perustuu pitkälti KV-välimuistien käyttöön. Se vaatii vähemmän laskentatehoa mutta nopeaa muistin käyttöä, joten se soveltuu vähemmän tehokkaille, muistioptimoiduille laitteistoille, kuten suorittimille tai reunalaitteille. Kun dekoodaus siirretään erilliseen laitteistoon - mahdollisesti lähemmäs loppukäyttäjää, kuten tiloissa oleviin palvelimiin tai reunalaitteisiin - eriytetty päättely vähentää latenssia ja verkon kaistanleveysvaatimuksia. Tämä erottelu mahdollistaa joustavan käyttöönoton, jossa esitäyttö suoritetaan huippuluokan pilvipalvelimilla ja dekoodaus paikallisilla tai reunalaitteilla, mikä optimoi resurssien kohdentamisen ja mahdollistaa tehokkaan skaalauksen reaaliaikaisille sovelluksille, kuten reaaliaikaisille chat-roboteille tai interaktiivisille tekoälyjärjestelmille.
Viime aikoina on keksitty monia päättelyn optimointitekniikoita LLM:ien suorituskyvyn parantamiseksi.
Näiden tekniikoiden toteuttaminen edellyttää LLM-arkkitehtuurin ja käytettävän laitteiston syvällistä tuntemusta, joten on yleensä helpompaa käyttää olemassa olevaa päättelymoottoria, joka on jo toteuttanut nämä tekniikat, kuten vLLM, TensorRT-LLM, LMDeploy jne. Olemme itse asiassa toteuttaneet nämä tekniikat omassa päättelymoottorissamme NLP Cloudissa, ja olemme kirjoittaneet blogikirjoituksen päättelymoottoreista, jos haluat ottaa käyttöön omat mallisi: voit lukea sen täältä.
Jos et voi tai halua ottaa omia LLM-malleja käyttöön itse, voit käyttää NLP Cloudia ja hyödyntää nopeita generatiivisia tekoälymalleja tuotannossa. Kokeile nopeaa päättelyä NLP Cloudissa nyt!
Jos sinulla on kysyttävää päättelymoottoreista yleensä, älä epäröi kysyä meiltä, on aina ilo neuvoa!
Julien
teknologiajohtaja, NLP Cloud