Gradient naredi primerjalno analizo LLM stroškovno učinkovito in preprosto z AWS Inferentia | Spletne storitve Amazon

Gradient naredi primerjalno analizo LLM stroškovno učinkovito in preprosto z AWS Inferentia | Spletne storitve Amazon

To je gostujoča objava, ki jo je napisal skupaj z Michaelom Feilom pri Gradientu.

Ocenjevanje zmogljivosti velikih jezikovnih modelov (LLM) je pomemben korak v procesu predhodnega usposabljanja in natančnega prilagajanja pred uvedbo. Hitreje in pogosteje kot lahko potrdite delovanje, večje so možnosti, da boste lahko izboljšali delovanje modela.

At Gradient, delamo na razvoju LLM po meri in smo pred kratkim lansirali naš Laboratorij za razvoj umetne inteligence, ki podjetniškim organizacijam ponuja prilagojeno storitev razvoja od konca do konca za izdelavo zasebnih LLM po meri in kopilotov z umetno inteligenco (AI). Kot del tega procesa redno ocenjujemo delovanje naših modelov (uglašenih, usposobljenih in odprtih) glede na odprte in lastniške primerjalne vrednosti. Med delom z ekipo AWS za usposabljanje naših modelov AWS Trainium, smo ugotovili, da smo bili omejeni tako na VRAM kot na razpoložljivost primerkov GPU, ko gre za glavno orodje za ocenjevanje LLM, lm-vrednotenje-pas. To odprtokodno ogrodje vam omogoča ocenjevanje različnih generativnih jezikovnih modelov v različnih ocenjevalnih nalogah in merilih. Uporabljajo ga lestvice najboljših kot npr Objemni obraz za javno primerjalno analizo.

Da bi premagali te izzive, smo se odločili zgraditi in odprtokodno rešitev – integracijo AWS nevron, knjižnica zadaj Sklepanje AWS in Trainium, v lm-evaluation-harness. Ta integracija je omogočila primerjalno analizo v-alpha-tross, zgodnja različica našega modela Albatros, proti drugim javnim modelom med procesom treninga ter po.

Za kontekst se ta integracija izvaja kot nov razred modela znotraj lm-evaluation-harness, ki abstrahira sklepanje žetonov in oceno verjetnosti dnevnika zaporedij, ne da bi to vplivalo na dejansko nalogo vrednotenja. Odločitev, da našo interno testiranje preselimo v Amazonski elastični računalniški oblak (Amazon EC2) Inf2 primerki (ki ga poganja AWS Inferentia2) nam je omogočil dostop do 384 GB skupnega pomnilnika pospeševalnika, ki se brez težav prilega vsem našim trenutnim javnim arhitekturam. Z uporabo točkovnih primerkov AWS smo lahko izkoristili neizkoriščeno zmogljivost EC2 v oblaku AWS – kar omogoča prihranek stroškov do 90 % znižanih glede na cene na zahtevo. To je zmanjšalo čas, potreben za testiranje, in nam omogočilo pogostejše testiranje, saj smo lahko testirali več primerkov, ki so bili takoj na voljo, in izdali primerke, ko smo končali.

V tej objavi podajamo podrobno razčlenitev naših testov, izzive, na katere smo naleteli, in primer uporabe preskusnega snopa na AWS Inferentia.

Primerjalna analiza na AWS Inferentia2

Cilj tega projekta je bil ustvariti enake rezultate, kot je prikazano v Odprite LLM lestvico najboljših (za številne modele CausalLM, ki so na voljo na Hugging Face), hkrati pa ohranja prilagodljivost za izvajanje z zasebnimi merili uspešnosti. Če si želite ogledati več primerov razpoložljivih modelov, glejte AWS Inferentia in Trainium na Hugging Face.

Spremembe kode, potrebne za prenos modela s transformatorjev Hugging Face na Hugging Face Optimalni nevron Knjižnica Python je bila precej nizka. Ker lm-evalvacija-harness uporablja AutoModelForCausalLM, pride do padca zamenjave z uporabo NeuronModelForCausalLM. Brez vnaprej prevedenega modela se model samodejno prevede v trenutku, kar bi lahko opravilu dodalo 15–60 minut. To nam je dalo prilagodljivost za uvedbo testiranja za kateri koli primerek AWS Inferentia2 in podprt model CausalLM.

Rezultati

Zaradi načina delovanja meril uspešnosti in modelov nismo pričakovali, da se bodo rezultati popolnoma ujemali v različnih serijah. Vendar pa bi morale biti zelo blizu na podlagi standardnega odklona in to smo dosledno videli, kot je prikazano v naslednji tabeli. Začetna merila uspešnosti, ki smo jih izvajali na AWS Inferentia2, so bila potrjena na lestvici najboljših Hugging Face.

In lm-evaluation-harnessobstajata dva glavna toka, ki ju uporabljajo različni testi: generate_until in loglikelihood. Test gsm8k uporablja predvsem generate_until za ustvarjanje odgovorov tako kot med sklepanjem. Loglikelihood se večinoma uporablja pri primerjalni analizi in testiranju ter preučuje verjetnost, da bodo ustvarjeni različni rezultati. Oba delujeta v Neuronu, vendar loglikelihood Metoda v SDK 2.16 uporablja dodatne korake za določanje verjetnosti in lahko traja več časa.

Lm-evaluation-harness Rezultati
Konfiguracija strojne opreme Originalni sistem AWS Inferentia inf2.48xlarge
Čas z batch_size=1 za oceno mistralai/Mistral-7B-Instruct-v0.1 na gsm8k 103 minut 32 minut
Rezultat na gsm8k (dobi-odgovor – natančno ujemanje s std) 0.3813 – 0.3874 (± 0.0134) 0.3806 – 0.3844 (± 0.0134)

Začnite z Neuronom in lm-evaluation-harness

Koda v tem razdelku vam lahko pomaga pri uporabi lm-evaluation-harness in ga zaženite s podprtimi modeli na Hugging Face. Če si želite ogledati nekaj razpoložljivih modelov, obiščite AWS Inferentia in Trainium na Hugging Face.

Če ste seznanjeni z izvajanjem modelov na AWS Inferentia2, boste morda opazili, da ni num_cores nastavitev posredovana. Naša koda zazna, koliko jeder je na voljo, in to številko samodejno posreduje kot parameter. To vam omogoča, da preizkus izvedete z isto kodo, ne glede na velikost primerka, ki ga uporabljate. Morda boste opazili tudi, da se sklicujemo na izvirni model, ne na prevedeno različico Neuron. Pas po potrebi samodejno sestavi model namesto vas.

Naslednji koraki vam pokažejo, kako razmestiti Gradient gradientai/v-alpha-tross model, ki smo ga testirali. Če želite preizkusiti z manjšim primerom na manjšem primerku, lahko uporabite mistralai/Mistral-7B-v0.1 model.

  1. Privzeta kvota za izvajanje primerkov Inf na zahtevo je 0, zato bi morali zahtevati povečanje prek storitvenih kvot. Dodajte še eno zahtevo za vse zahteve Inf Spot Instance, da boste lahko testirali s Spot Instances. Za ta primer z instanco inf192xlarge boste potrebovali kvoto 2.48 vCPU-jev ali kvoto 4 vCPU-jev za osnovni inf2.xlarge (če uvajate model Mistral). Kvote so specifične za regijo AWS, zato poskrbite, da boste zahtevali vstop us-east-1 or us-west-2.
  2. Odločite se za svoj primer na podlagi svojega modela. Ker v-alpha-tross je arhitektura 70B, smo se odločili uporabiti instanco inf2.48xlarge. Namestite inf2.xlarge (za model 7B Mistral). Če preizkušate drug model, boste morda morali svoj primerek prilagoditi glede na velikost modela.
  3. Razmestite primerek z uporabo Objemni obraz DLAMI različica 20240123, tako da so nameščeni vsi potrebni gonilniki. (Prikazana cena vključuje stroške primerka in ni dodatnih stroškov programske opreme.)
  4. Prilagodite velikost diska na 600 GB (100 GB za Mistral 7B).
  5. Kloniraj in namesti lm-evaluation-harness na primeru. Določimo gradnjo, da vemo, da je kakršna koli variacija posledica sprememb modela, ne pa sprememb preskusa ali kode.
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. Run lm_eval z vrsto modela hf-neuron in se prepričajte, da imate povezavo do poti nazaj do modela na Hugging Face:
# 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

Če zaženete prejšnji primer z Mistralom, bi morali prejeti naslednji izhod (na manjšem inf2.xlarge lahko traja 250 minut, da se zažene):

███████████████████████| 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|

Čiščenje

Ko končate, ne pozabite ustaviti primerkov EC2 prek konzole Amazon EC2.

zaključek

Ekipi Gradient in Neuron sta navdušeni nad širšim sprejetjem vrednotenja LLM s to izdajo. Preizkusite sami in zaženite najbolj priljubljeno evalvacijsko ogrodje na instancah AWS Inferentia2. Zdaj lahko izkoristite razpoložljivost AWS Inferentia2 na zahtevo, ko ga uporabljate LLM razvoj po meri iz Gradienta. S temi začnite gostovati modele na AWS Inferentia vaje.


O avtorjih

Gradient naredi primerjalno analizo LLM stroškovno učinkovito in preprosto z AWS Inferentia | Amazon Web Services PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Michael Feil je inženir AI pri Gradientu in je prej delal kot inženir ML pri Rodhe & Schwarz ter raziskovalec pri Max-Plank Institute for Intelligent Systems in Bosch Rexroth. Michael je vodilni sodelavec različnih odprtokodnih knjižnic sklepanja za LLM in odprtokodnih projektov, kot je StarCoder. Michael je diplomiral iz mehatronike in informatike na KIT ter magistriral iz robotike na Tehnični univerzi v Münchnu.

Gradient naredi primerjalno analizo LLM stroškovno učinkovito in preprosto z AWS Inferentia | Amazon Web Services PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Jim Burtoft je višji arhitekt za zagonske rešitve pri AWS in neposredno sodeluje z zagonskimi podjetji, kot je Gradient. Jim je CISSP, del skupnosti AWS AI/ML Technical Field Community, Neuron Ambassador in sodeluje z odprtokodno skupnostjo, da omogoči uporabo Inferentia in Trainium. Jim je diplomiral iz matematike na Univerzi Carnegie Mellon in magistriral iz ekonomije na Univerzi v Virginiji.

Časovni žig:

Več od Strojno učenje AWS