Aceasta este o postare pentru invitați scrisă împreună cu Michael Feil la Gradient.
Evaluarea performanței modelelor de limbaj mari (LLM) este un pas important al procesului de pre-instruire și reglare fină înainte de implementare. Cu cât poți valida performanța mai rapid și mai frecvent, cu atât sunt mai mari șansele să poți îmbunătăți performanța modelului.
At Gradient, lucrăm la dezvoltarea personalizată LLM și tocmai am lansat recent Laboratorul de dezvoltare AI, oferind organizațiilor de întreprindere un serviciu de dezvoltare personalizat, de la capăt la capăt, pentru a construi LLM-uri private personalizate și copiloți de inteligență artificială (AI). Ca parte a acestui proces, evaluăm în mod regulat performanța modelelor noastre (reglate, antrenate și deschise) în raport cu benchmark-uri deschise și proprietare. În timp ce lucram cu echipa AWS pentru a ne instrui modelele AWS Trainium, ne-am dat seama că eram restricționați atât la VRAM, cât și la disponibilitatea instanțelor GPU atunci când era vorba de instrumentul principal pentru evaluarea LLM, lm-evaluare-ham. Acest cadru open source vă permite să notați diferite modele de limbaj generativ în diferite sarcini de evaluare și benchmark-uri. Este folosit de clasamente precum Fata îmbrățișată pentru benchmarking public.
Pentru a depăși aceste provocări, am decis să construim și să deschidem soluția noastră – integrarea AWS Neuron, biblioteca din spate Inferentia AWS și Trainium, în lm-evaluation-harness
. Această integrare a făcut posibilă evaluarea comparativă v-alpha-tross, o versiune timpurie a modelului nostru Albatross, față de alte modele publice în timpul procesului de instruire și după.
Pentru context, această integrare rulează ca o nouă clasă de model în cadrul lm-evaluation-harness, abstragând inferența jetoanelor și estimarea log-probabilității secvențelor fără a afecta sarcina reală de evaluare. Decizia de a muta conducta noastră de testare internă la Cloud Elastic de calcul Amazon (Amazon EC2) Instanțe Inf2 (produs de AWS Inferentia2) ne-a permis să accesăm până la 384 GB de memorie de accelerație partajată, potrivindu-se fără efort în toate arhitecturile noastre publice actuale. Folosind Instanțele AWS Spot, am putut profita de capacitatea EC2 neutilizată din AWS Cloud, permițând economii de până la 90% la prețuri la cerere. Acest lucru a minimizat timpul necesar pentru testare și ne-a permis să testăm mai des, deoarece am putut testa mai multe instanțe care erau ușor disponibile și eliberăm instanțele când am terminat.
În această postare, oferim o detaliere a testelor noastre, provocările pe care le-am întâlnit și un exemplu de utilizare a cablajului de testare pe AWS Inferentia.
Evaluare comparativă pe AWS Inferentia2
Scopul acestui proiect a fost de a genera scoruri identice așa cum se arată în Deschideți Clasamentul LLM (pentru multe modele CausalLM disponibile pe Hugging Face), păstrând în același timp flexibilitatea de a-l rula pe benchmark-uri private. Pentru a vedea mai multe exemple de modele disponibile, consultați AWS Inferentia și Trainium pe Hugging Face.
Schimbările de cod necesare pentru a porta un model de la transformatoare Hugging Face la Hugging Face Neuron optim Biblioteca Python era destul de scăzută. Deoarece lm-evaluare-ham utilizeaza AutoModelForCausalLM
, există o scădere a utilizării de înlocuire NeuronModelForCausalLM
. Fără un model precompilat, modelul este compilat automat în acest moment, ceea ce ar putea adăuga 15-60 de minute la o lucrare. Acest lucru ne-a oferit flexibilitatea de a implementa testarea pentru orice instanță AWS Inferentia2 și modelul CausalLM acceptat.
REZULTATE
Din cauza modului în care funcționează benchmark-urile și modelele, nu ne așteptam ca scorurile să se potrivească exact în diferite runde. Cu toate acestea, ar trebui să fie foarte apropiate pe baza abaterii standard și am văzut în mod constant acest lucru, așa cum se arată în tabelul următor. Benchmark-urile inițiale pe care le-am rulat pe AWS Inferentia2 au fost toate confirmate de clasamentul Hugging Face.
In lm-evaluation-harness
, există două fluxuri principale utilizate de teste diferite: generate_until
și loglikelihood
. Testul gsm8k folosește în principal generate_until
pentru a genera răspunsuri la fel ca în timpul inferenței. Loglikelihood
este utilizat în principal în benchmarking și testare și examinează probabilitatea producerii diferitelor rezultate. Ambele lucrează în Neuron, dar loglikelihood
metoda din SDK 2.16 folosește pași suplimentari pentru a determina probabilitățile și poate dura timp suplimentar.
Lm-evaluare-harness Rezultate | ||
Configurarea hardware | Sistemul original | AWS Inferentia inf2.48xlarge |
Timp cu batch_size=1 pentru a evalua mistralai/Mistral-7B-Instruct-v0.1 pe gsm8k | 103 minute | 32 minute |
Scor pe gsm8k (get-answer – exact_match with std) | 0.3813 – 0.3874 (± 0.0134) | 0.3806 – 0.3844 (± 0.0134) |
Începeți cu Neuron și lm-evaluation-harness
Codul din această secțiune vă poate ajuta să utilizați lm-evaluation-harness
și rulați-l împotriva modelelor acceptate pe Hugging Face. Pentru a vedea câteva modele disponibile, vizitați AWS Inferentia și Trainium pe Hugging Face.
Dacă sunteți familiarizat cu rularea modelelor pe AWS Inferentia2, este posibil să observați că nu există num_cores
setarea a fost transmisă. Codul nostru detectează câte nuclee sunt disponibile și trece automat acel număr ca parametru. Acest lucru vă permite să rulați testul folosind același cod, indiferent de dimensiunea instanței pe care o utilizați. De asemenea, s-ar putea să observați că ne referim la modelul original, nu la o versiune compilată Neuron. Hamul compilează automat modelul pentru tine, după cum este necesar.
Următorii pași vă arată cum să implementați Gradient gradientai/v-alpha-tross
modelul pe care l-am testat. Dacă doriți să testați cu un exemplu mai mic pe o instanță mai mică, puteți utiliza mistralai/Mistral-7B-v0.1
model.
- Cota implicită pentru rularea instanțelor On-Demand Inf este 0, așa că ar trebui să solicitați o creștere prin Service Quotes. Adăugați o altă solicitare pentru toate solicitările Inf Spot Instanțe, astfel încât să puteți testa cu Instanțe Spot. Veți avea nevoie de o cotă de 192 vCPU pentru acest exemplu folosind o instanță inf2.48xlarge sau o cotă de 4 vCPU pentru un inf2.xlarge de bază (dacă implementați modelul Mistral). Cotele sunt specifice regiunii AWS, așa că asigurați-vă că solicitați
us-east-1
orus-west-2
. - Decideți-vă instanța pe baza modelului dvs. Deoarece
v-alpha-tross
este o arhitectură 70B, am decis să folosim o instanță inf2.48xlarge. Implementați un inf2.xlarge (pentru modelul 7B Mistral). Dacă testați un alt model, poate fi necesar să vă ajustați instanța în funcție de dimensiunea modelului dvs. - Implementați instanța utilizând Hugging Face DLAMI versiunea 20240123, astfel încât să fie instalate toate driverele necesare. (Prețul afișat include costul instanței și nu există nicio taxă suplimentară pentru software.)
- Reglați dimensiunea unității la 600 GB (100 GB pentru Mistral 7B).
- Clonează și instalează
lm-evaluation-harness
pe instanță. Specificăm o construcție astfel încât să știm că orice variație se datorează modificărilor de model, nu modificărilor testului sau codului.
- Alerga
lm_eval
cu tipul de model hf-neuron și asigurați-vă că aveți un link către calea înapoi la modelul de pe Hugging Face:
Dacă rulați exemplul precedent cu Mistral, ar trebui să primiți următoarea ieșire (pe inf2.xlarge mai mic, ar putea dura 250 de minute):
A curăța
Când ați terminat, asigurați-vă că opriți instanțele EC2 prin consola Amazon EC2.
Concluzie
Echipele Gradient și Neuron sunt încântate să vadă o adoptare mai largă a evaluării LLM cu această versiune. Încercați-l singur și rulați cel mai popular cadru de evaluare pe instanțe AWS Inferentia2. Acum puteți beneficia de disponibilitatea la cerere a AWS Inferentia2 atunci când utilizați dezvoltare personalizată LLM de la Gradient. Începeți să găzduiți modele pe AWS Inferentia cu acestea tutoriale.
Despre Autori
Michael Feil este inginer AI la Gradient și a lucrat anterior ca inginer ML la Rodhe & Schwarz și cercetător la Max-Plank Institute for Intelligent Systems și Bosch Rexroth. Michael este unul dintre cei mai importanți contribuitori la diferite biblioteci de inferențe open source pentru LLM și proiecte open source, cum ar fi StarCoder. Michael deține o diplomă de licență în mecatronică și IT de la KIT și un master în robotică de la Universitatea Tehnică din München.
Jim Burtoft este arhitect senior de soluții pentru startup la AWS și lucrează direct cu startup-uri precum Gradient. Jim este CISSP, parte a comunității AWS AI/ML Technical Field, Ambasador Neuron și lucrează cu comunitatea open source pentru a permite utilizarea Inferentia și Trainium. Jim deține o diplomă de licență în matematică de la Universitatea Carnegie Mellon și un master în economie de la Universitatea din Virginia.
- Distribuție de conținut bazat pe SEO și PR. Amplifică-te astăzi.
- PlatoData.Network Vertical Generative Ai. Împuterniciți-vă. Accesați Aici.
- PlatoAiStream. Web3 Intelligence. Cunoștințe amplificate. Accesați Aici.
- PlatoESG. carbon, CleanTech, Energie, Mediu inconjurator, Solar, Managementul deșeurilor. Accesați Aici.
- PlatoHealth. Biotehnologie și Inteligență pentru studii clinice. Accesați Aici.
- Sursa: https://aws.amazon.com/blogs/machine-learning/gradient-makes-llm-benchmarking-cost-effective-and-effortless-with-aws-inferentia/
- :este
- :nu
- $UP
- 1
- 10
- 100
- 16
- 250
- 32
- 600
- 7
- a
- Capabil
- accelerator
- acces
- peste
- curent
- adăuga
- Suplimentar
- regla
- Adoptare
- Avantaj
- care afectează
- După
- împotriva
- AI
- AI / ML
- TOATE
- permis
- de asemenea
- Amazon
- Amazon EC2
- Amazon Web Services
- Ambasador
- an
- și
- O alta
- Orice
- arhitectură
- arhitecturi
- SUNT
- artificial
- inteligență artificială
- Inteligența artificială (AI)
- AS
- At
- în mod automat
- disponibilitate
- disponibil
- AWS
- Inferentia AWS
- înapoi
- bazat
- de bază
- BE
- deoarece
- înainte
- în spatele
- fiind
- Benchmark
- analiza comparativă
- valori de referință
- beneficia
- atât
- Branch firma
- Defalcarea
- mai larg
- construi
- dar
- by
- a venit
- CAN
- Capacitate
- Carnegie Mellon
- CD
- provocări
- șansele
- Modificări
- taxă
- Finalizeaza comanda
- clasă
- Închide
- cod
- comunitate
- compilat
- Calcula
- CONFIRMAT
- consecvent
- Consoleze
- context
- contribuabil
- A costat
- economii
- cost-eficiente
- ar putea
- Curent
- personalizat
- hotărât
- decizie
- Mod implicit
- Grad
- În funcție
- implementa
- Implementarea
- desfășurarea
- detaliat
- Determina
- Dezvoltare
- deviere
- diferit
- direct
- actualizate
- făcut
- conduce
- drivere
- Picătură
- două
- în timpul
- e
- Devreme
- Economie
- fără efort
- efort
- permite
- activat
- un capăt la altul
- inginer
- Afacere
- evalua
- evaluare
- exact
- exact
- Analizează
- exemplu
- exemple
- excitat
- existent
- aștepta
- suplimentar
- Față
- familiar
- mai repede
- camp
- filtru
- montaj
- Flexibilitate
- următor
- Pentru
- Cadru
- frecvent
- frecvent
- din
- a dat
- genera
- generativ
- obține
- merge
- Da
- scop
- GPU
- Oaspete
- Vizitator Mesaj
- valorifica
- Avea
- ajutor
- superior
- deține
- găzduire
- Cum
- Cum Pentru a
- Totuși
- HTML
- http
- HTTPS
- identic
- if
- important
- îmbunătăţi
- in
- include
- Crește
- inițială
- instala
- instalare
- instalat
- instanță
- Institut
- integrare
- Inteligență
- Inteligent
- intern
- în
- IT
- Jim
- Loc de munca
- jpg
- doar
- Cunoaște
- limbă
- mare
- a lansat
- Leaderboard
- clasamente
- conducere
- Permite
- biblioteci
- Bibliotecă
- ca
- LIMITĂ
- LINK
- LLM
- Jos
- făcut
- Principal
- mai ales
- Mainstream
- face
- FACE
- multe
- studii de masterat
- Meci
- matematică
- Mai..
- pepene
- Memorie
- metodă
- metric
- Michael
- ar putea
- minute
- ML
- model
- Modele
- moment
- mai mult
- cele mai multe
- Cel mai popular
- muta
- multiplu
- necesar
- Nevoie
- necesar
- Nou
- Nu.
- Nici unul
- Înștiințare..
- acum
- număr
- of
- oferind
- on
- La cerere
- pe
- deschide
- open-source
- or
- organizații
- original
- Altele
- al nostru
- afară
- producție
- iesiri
- peste
- Învinge
- parametru
- parte
- Trecut
- trece
- cale
- performanță
- Personalizat
- alege
- conducte
- Plato
- Informații despre date Platon
- PlatoData
- Popular
- posibil
- Post
- alimentat
- precedent
- în prealabil
- preţ
- Prețuri
- în primul rând
- privat
- probabilități
- proces
- Produs
- proiect
- Proiecte
- proprietate
- public
- Piton
- cu totul
- uşor
- realizat
- a primi
- recent
- corelarea
- Fără deosebire
- regiune
- regulat
- eliberaţi
- înlocuire
- depozit
- solicita
- cereri de
- necesar
- cercetător
- răspunsuri
- limitat
- REZULTATE
- reținere
- robotica
- Alerga
- funcţionare
- ruleaza
- acelaşi
- Economie
- Negru
- scor
- scorurile
- sdk
- Secțiune
- vedea
- văzut
- senior
- serviciu
- Servicii
- instalare
- comun
- să
- Arăta
- indicat
- Mărimea
- mai mici
- So
- Software
- soluţii
- unele
- Sursă
- specific
- Loc
- standard
- început
- lansare
- Startup-urile
- Pas
- paşi
- Stop
- fluxuri
- astfel de
- Suportat
- sigur
- sisteme
- tabel
- Lua
- Sarcină
- sarcini
- echipă
- echipe
- Tehnic
- test
- testat
- Testarea
- teste
- acea
- Acolo.
- Acestea
- ei
- acest
- timp
- la
- indicativele
- a luat
- instrument
- lanternă
- Tren
- dresat
- Pregătire
- transformatoare
- încerca
- reglate
- Două
- tip
- universitate
- nefolosit
- us
- utilizare
- utilizat
- utilizări
- folosind
- VALIDA
- diverse
- versiune
- foarte
- de
- Virginia
- Vizita
- vrea
- a fost
- Cale..
- we
- web
- servicii web
- au fost
- Ce
- cand
- care
- în timp ce
- voi
- cu
- în
- fără
- Apartamente
- a lucrat
- de lucru
- fabrică
- Tu
- Ta
- te
- zephyrnet