Gradient tekee LLM-benchmarkingista kustannustehokasta ja vaivatonta AWS Inferentian avulla | Amazon Web Services

Gradient tekee LLM-benchmarkingista kustannustehokasta ja vaivatonta AWS Inferentian avulla | Amazon Web Services

Tämä on vieraspostaus, joka on kirjoitettu yhdessä Michael Feilin kanssa Gradientissa.

Suurten kielimallien (LLM) suorituskyvyn arviointi on tärkeä vaihe esikoulutus- ja hienosäätöprosessissa ennen käyttöönottoa. Mitä nopeammin ja useammin pystyt vahvistamaan suorituskyvyn, sitä todennäköisemmin pystyt parantamaan mallin suorituskykyä.

At Kaltevuus, työskentelemme mukautetun LLM-kehityksen parissa ja lanseerasimme juuri äskettäin AI-kehityslaboratorio, joka tarjoaa yritysorganisaatioille henkilökohtaisen, päästä päähän -kehityspalvelun yksityisten, räätälöityjen LLM-yritysten ja tekoälyn perämiesten rakentamiseen. Osana tätä prosessia arvioimme säännöllisesti malliemme suorituskykyä (viritetty, koulutettu ja avoin) avoimiin ja patentoituihin vertailuarvoihin verrattuna. Työskennellessään AWS-tiimin kanssa kouluttaaksemme mallejamme AWS Trainium, ymmärsimme, että rajoittuimme sekä VRAM-muistiin että GPU-esiintymien saatavuuteen, kun oli kyse LLM-arvioinnin valtavirran työkalusta, lm-evaluation-valjaat. Tämän avoimen lähdekoodin kehyksen avulla voit pisteyttää erilaisia ​​generatiivisia kielimalleja erilaisissa arviointitehtävissä ja vertailuissa. Sitä käyttävät tulostaulukot, kuten Halaaminen kasvot julkista vertailua varten.

Voittaaksemme nämä haasteet, päätimme rakentaa ja avata lähdekoodin ratkaisumme – integroivan AWS Neuron, kirjasto takana AWS Inferencia ja Trainium, osaksi lm-evaluation-harness. Tämä integraatio mahdollisti vertailun v-alpha-tross, varhainen versio Albatross-mallistamme, muita julkisia malleja vastaan ​​koulutusprosessin aikana ja sen jälkeen.

Kontekstia varten tämä integrointi toimii uutena malliluokkana lm-evaluation-harnessissa, joka abstraktioi merkkien johtopäätöksen ja sekvenssien log-todennäköisyysarvioinnin vaikuttamatta varsinaiseen arviointitehtävään. Päätös siirtää sisäinen testausputkimme Amazonin elastinen laskentapilvi (Amazon EC2) Inf2-esiintymät (AWS Inferentia2:n tuottamana) antoi meille mahdollisuuden käyttää jopa 384 Gt jaettua kiihdytinmuistia, mikä sopii vaivattomasti kaikkiin nykyisiin julkisiin arkkitehtuureihimme. Käyttämällä AWS Spot Instances -tapahtumia pystyimme hyödyntämään AWS Cloudin käyttämätöntä EC2-kapasiteettia, mikä mahdollistaa kustannussäästöt jopa 90 % alennettuun tilaushintoihin. Tämä minimoi testaamiseen kuluvan ajan ja antoi meille mahdollisuuden testata useammin, koska pystyimme testaamaan useissa esiintymissä, jotka olivat helposti saatavilla, ja vapauttaa esiintymät, kun olimme valmis.

Tässä viestissä annamme yksityiskohtaisen erittelyn testeistämme, kohtaamistamme haasteista ja esimerkin testausvaljaiden käytöstä AWS Inferentiassa.

AWS Inferentia2 -vertailu

Tämän projektin tavoitteena oli tuottaa identtiset pisteet kuten kuvassa Avaa LLM-tulostaulukko (Monille CausalLM-malleille, jotka ovat saatavilla Hugging Facessa), säilyttäen samalla joustavuuden käyttää sitä yksityisiä vertailuarvoja vastaan. Jos haluat nähdä lisää esimerkkejä saatavilla olevista malleista, katso AWS Inferentia ja Trainium Hugging Facella.

Koodi muuttuu, jotta malli voidaan siirtää Hugging Face -muuntajista Hugging Faceen Optimaalinen neuroni Python-kirjasto oli melko alhainen. Koska lm-evaluation-harness käyttää AutoModelForCausalLM, korvaava käyttö on vähentynyt NeuronModelForCausalLM. Ilman esikäännettyä mallia malli käännetään automaattisesti hetkessä, mikä voi lisätä työhön 15–60 minuuttia. Tämä antoi meille joustavuuden ottaa käyttöön testausta mille tahansa AWS Inferentia2 -esiintymälle ja tuetulle CausalLM-mallille.

tulokset

Vertailuarvojen ja mallien toimintatavan vuoksi emme odottaneet tulosten vastaavan täsmälleen eri ajoissa. Niiden pitäisi kuitenkin olla hyvin lähellä keskihajonnan perusteella, ja olemme jatkuvasti nähneet sen, kuten seuraavasta taulukosta ilmenee. Hugging Face -tulostaulu vahvisti kaikki alkuperäiset vertailuarvot, jotka suoritimme AWS Inferentia2:lla.

In lm-evaluation-harness, eri testit käyttävät kahta päävirtaa: generate_until ja loglikelihood. gsm8k-testi käyttää ensisijaisesti generate_until tuottaa vastauksia aivan kuten päättelyn aikana. Loglikelihood käytetään pääasiassa benchmarkingissa ja testauksessa, ja se tutkii erilaisten tuotosten todennäköisyyttä. Molemmat työskentelevät Neuronissa, mutta loglikelihood menetelmä SDK 2.16:ssa käyttää lisävaiheita todennäköisyyksien määrittämiseen ja voi viedä ylimääräistä aikaa.

Lm-evaluation-valjaat Tulokset
Laitteiston kokoonpano Alkuperäinen järjestelmä AWS Inferentia inf2.48xlarge
Aika batch_size=1:n kanssa arvioida mistralai/Mistral-7B-Instruct-v0.1 gsm8k:ssa 103 minuuttia 32 minuuttia
Pisteet gsm8k:ssa (get-answer – tarkka_vastaavuus std:n kanssa) 0.3813 – 0.3874 (± 0.0134) 0.3806 – 0.3844 (± 0.0134)

Aloita Neuronin ja lm-evaluation-valjaiden kanssa

Tämän osion koodi voi auttaa sinua käyttämään lm-evaluation-harness ja suorita se Hugging Facen tuettuja malleja vastaan. Näet joitakin saatavilla olevia malleja osoitteessa AWS Inferentia ja Trainium Hugging Facella.

Jos olet perehtynyt AWS Inferentia2:n käynnissä oleviin malleihin, saatat huomata, että sitä ei ole num_cores Koodimme havaitsee, kuinka monta ydintä on käytettävissä ja välittää sen automaattisesti parametrina. Näin voit suorittaa testin käyttämällä samaa koodia käyttämäsi ilmentymän koosta riippumatta. Saatat myös huomata, että viittaamme alkuperäiseen malliin, emme Neuronin käännettyyn versioon. Valjaat kokoavat automaattisesti mallin puolestasi tarpeen mukaan.

Seuraavat vaiheet osoittavat, kuinka gradientti otetaan käyttöön gradientai/v-alpha-tross testaamamme malli. Jos haluat testata pienemmällä esimerkillä pienemmässä ilmentymässä, voit käyttää mistralai/Mistral-7B-v0.1 malli.

  1. On-Demand Inf -ilmentymien suorittamisen oletuskiintiö on 0, joten sinun tulee pyytää lisäystä palvelukiintiöiden kautta. Lisää toinen pyyntö kaikille Inf Spot Instance -pyynnöille, jotta voit testata spot-instanssien kanssa. Tarvitset 192 vCPU:n kiintiön tässä esimerkissä inf2.48xlarge-instanssia käytettäessä tai 4 vCPU:n kiintiön perusinf2.xlargea varten (jos käytät Mistral-mallia). Kiintiöt ovat AWS-aluekohtaisia, joten varmista, että pyydät sisään us-east-1 or us-west-2.
  2. Päätä esiintymäsi mallin perusteella. Koska v-alpha-tross on 70B-arkkitehtuuri, päätimme käyttää inf2.48xlarge-instanssia. Ota käyttöön inf2.xlarge (7B Mistral -mallille). Jos testaat eri mallia, saatat joutua säätämään esiintymääsi mallin koon mukaan.
  3. Ota ilmentymä käyttöön käyttämällä Hugging Face DLAMI-versio 20240123, jotta kaikki tarvittavat ohjaimet on asennettu. (Näytetty hinta sisältää ilmentymän kustannukset, eikä siitä peritä ohjelmistomaksua.)
  4. Säädä aseman kooksi 600 Gt (100 Gt Mistral 7B:lle).
  5. Kloonaa ja asenna lm-evaluation-harness tapauksessa. Määritämme koontiversion, jotta tiedämme, että kaikki varianssit johtuvat mallin muutoksista, emme testi- tai koodimuutoksista.
git clone https://github.com/EleutherAI/lm-evaluation-harness
cd lm-evaluation-harness
# optional: pick specific revision from the main branch version to reproduce the exact results
git checkout 756eeb6f0aee59fc624c81dcb0e334c1263d80e3
# install the repository without overwriting the existing torch and torch-neuronx installation
pip install --no-deps -e . 
pip install peft evaluate jsonlines numexpr pybind11 pytablewriter rouge-score sacrebleu sqlitedict tqdm-multiprocess zstandard hf_transfer

  1. ajaa lm_eval hf-neuronimallityypin kanssa ja varmista, että sinulla on linkki takaisin malliin Hugging Facessa:
# e.g use mistralai/Mistral-7B-v0.1 if you are on inf2.xlarge
MODEL_ID=gradientai/v-alpha-tross

python -m lm_eval --model "neuronx" --model_args "pretrained=$MODEL_ID,dtype=bfloat16" --batch_size 1 --tasks gsm8k

Jos suoritat edellisen esimerkin Mistralilla, sinun pitäisi saada seuraava tulos (pienemmällä inf2.xlargella sen suorittaminen voi kestää 250 minuuttia):

███████████████████████| 1319/1319 [32:52<00:00,  1.50s/it]
neuronx (pretrained=mistralai/Mistral-7B-v0.1,dtype=bfloat16), gen_kwargs: (None), limit: None, num_fewshot: None, batch_size: 1
|Tasks|Version|  Filter  |n-shot|  Metric   |Value |   |Stderr|
|-----|------:|----------|-----:|-----------|-----:|---|-----:|
|gsm8k|      2|get-answer|     5|exact_match|0.3806|±  |0.0134|

Puhdistaa

Kun olet valmis, muista pysäyttää EC2-esiintymät Amazon EC2 -konsolin kautta.

Yhteenveto

Gradient- ja Neuron-tiimit ovat innoissaan nähdessään LLM-arvioinnin laajemman käyttöönoton tämän julkaisun myötä. Kokeile sitä itse ja suorita suosituin arviointikehys AWS Inferentia2 -esiintymissä. Voit nyt hyötyä AWS Inferentia2:n pyynnöstä, kun käytät sitä mukautettu LLM-kehitys Gradientilta. Aloita mallien isännöinti AWS Inferentiassa näiden avulla opetusohjelmat.


Tietoja Tekijät

Gradient tekee LLM-benchmarkingista kustannustehokasta ja vaivatonta AWS Inferentian avulla | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.Michael Feil on tekoälyinsinööri Gradientissa ja työskennellyt aiemmin ML-insinöörinä Rodhe & Schwarzissa sekä tutkijana Max-Plank Institute for Intelligent Systemsissä ja Bosch Rexrothissa. Michael on johtava avustaja erilaisissa avoimen lähdekoodin johtopäätöskirjastoissa LLM-yrityksille ja avoimen lähdekoodin projekteille, kuten StarCoder. Michael on suorittanut kandidaatin tutkinnon mekatroniikasta ja IT:stä KIT:stä ja maisterin tutkinnon robotiikasta Münchenin teknisestä yliopistosta.

Gradient tekee LLM-benchmarkingista kustannustehokasta ja vaivatonta AWS Inferentian avulla | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.Jim Burtoft on AWS:n Senior Startup Solutions -arkkitehti ja työskentelee suoraan Gradientin kaltaisten startup-yritysten kanssa. Jim on CISSP, osa AWS AI/ML Technical Field Communityä, Neuron Ambassador ja tekee yhteistyötä avoimen lähdekoodin yhteisön kanssa mahdollistaakseen Inferentian ja Trainiumin käytön. Jim on suorittanut matematiikan kandidaatin tutkinnon Carnegie Mellonin yliopistosta ja maisterin tutkinnon taloustieteessä Virginian yliopistosta.

Aikaleima:

Lisää aiheesta AWS-koneoppiminen