Zephyrnet-logo

Gradient maakt LLM-benchmarking kosteneffectief en moeiteloos met AWS Inferentia | Amazon-webservices

Datum:

Dit is een gastpost, geschreven in samenwerking met Michael Feil van Gradient.

Het evalueren van de prestaties van grote taalmodellen (LLM's) is een belangrijke stap in het pre-trainings- en verfijningsproces vóór de implementatie. Hoe sneller en vaker u de prestaties kunt valideren, hoe groter de kans dat u de prestaties van het model kunt verbeteren.

At Verlooptint, we werken aan aangepaste LLM-ontwikkeling en hebben onlangs onze AI-ontwikkelingslaboratorium, dat bedrijfsorganisaties een gepersonaliseerde, end-to-end ontwikkelingsservice biedt om particuliere, op maat gemaakte LLM's en co-piloten voor kunstmatige intelligentie (AI) te bouwen. Als onderdeel van dit proces evalueren we regelmatig de prestaties van onze modellen (afgestemd, getraind en open) aan de hand van open en eigen benchmarks. Terwijl we samenwerkten met het AWS-team om onze modellen op te trainen AWS Trainium, realiseerden we ons dat we beperkt waren tot zowel VRAM als de beschikbaarheid van GPU-instanties als het ging om de reguliere tool voor LLM-evaluatie, lm-evaluatie-harnas. Met dit open source-framework kunt u verschillende generatieve taalmodellen scoren voor verschillende evaluatietaken en benchmarks. Het wordt gebruikt door scoreborden zoals Gezicht knuffelen voor publieke benchmarking.

Om deze uitdagingen het hoofd te bieden, hebben we besloten onze oplossing te bouwen en open source te maken: integreren AWS-neuron, de bibliotheek erachter AWS Inferentie en Trainium, in lm-evaluation-harness. Deze integratie maakte het mogelijk om te benchmarken v-alpha-tross, een vroege versie van ons Albatross-model, tegen andere publieke modellen tijdens het trainingsproces en daarna.

Voor de context draait deze integratie als een nieuwe modelklasse binnen lm-evaluation-harness, waarbij de gevolgtrekking van tokens en de log-waarschijnlijkheidsschatting van sequenties worden geabstraheerd zonder de daadwerkelijke evaluatietaak te beïnvloeden. De beslissing om onze interne testpijplijn te verplaatsen naar Amazon Elastic Compute-cloud (Amazone EC2) Inf2-instanties (mogelijk gemaakt door AWS Inferentia2) stelde ons in staat toegang te krijgen tot 384 GB gedeeld acceleratorgeheugen, wat moeiteloos past bij al onze huidige openbare architecturen. Door AWS Spot Instances te gebruiken, konden we profiteren van ongebruikte EC2-capaciteit in de AWS Cloud, waardoor kostenbesparingen tot 90% mogelijk waren, met korting op on-demand prijzen. Dit minimaliseerde de tijd die nodig was voor het testen en stelde ons in staat vaker te testen omdat we in staat waren om te testen op meerdere instances die direct beschikbaar waren en de instances konden vrijgeven toen we klaar waren.

In dit bericht geven we een gedetailleerd overzicht van onze tests, de uitdagingen die we tegenkwamen, en een voorbeeld van het gebruik van het testharnas op AWS Inferentia.

Benchmarking op AWS Inferentia2

Het doel van dit project was om identieke scores te genereren zoals weergegeven in de LLM-klassement openen (voor veel CausalLM-modellen die beschikbaar zijn op Hugging Face), terwijl de flexibiliteit behouden blijft om deze te vergelijken met particuliere benchmarks. Voor meer voorbeelden van beschikbare modellen, zie AWS Inferentia en Trainium op knuffelend gezicht.

De codewijzigingen die nodig zijn om een ​​model over te zetten van Hugging Face-transformatoren naar het Hugging Face Optimaal neuron De Python-bibliotheek was vrij laag. Omdat lm-evaluatie-harnas gebruikt AutoModelForCausalLM, er is een daling in het vervangingsgebruik NeuronModelForCausalLM. Zonder een vooraf gecompileerd model wordt het model op dat moment automatisch samengesteld, wat 15 tot 60 minuten aan een taak kan toevoegen. Dit gaf ons de flexibiliteit om tests uit te voeren voor elk AWS Inferentia2-exemplaar en ondersteund CausalLM-model.

Resultaten

Vanwege de manier waarop de benchmarks en modellen werken, hadden we niet verwacht dat de scores bij verschillende runs exact zouden overeenkomen. Op basis van de standaarddeviatie zouden ze echter heel dicht bij elkaar moeten liggen, en dat hebben we consequent gezien, zoals blijkt uit de volgende tabel. De eerste benchmarks die we op AWS Inferentia2 hebben uitgevoerd, werden allemaal bevestigd door het Hugging Face-klassement.

In lm-evaluation-harness, zijn er twee hoofdstromen die door verschillende tests worden gebruikt: generate_until en loglikelihood. De gsm8k-test maakt voornamelijk gebruik van generate_until om reacties te genereren, net als bij gevolgtrekking. Loglikelihood wordt voornamelijk gebruikt bij benchmarking en testen, en onderzoekt de waarschijnlijkheid dat verschillende outputs worden geproduceerd. Beide werken in Neuron, maar de loglikelihood De methode in SDK 2.16 gebruikt aanvullende stappen om de kansen te bepalen en kan extra tijd in beslag nemen.

Lm-evaluatie-harnas Resultaten
Hardware configuratie Origineel systeem AWS Inferentia inf2.48xgroot
Tijd met batch_size=1 om mistralai/Mistral-7B-Instruct-v0.1 op gsm8k te evalueren 103 minuten 32 minuten
Score op gsm8k (krijg antwoord – exacte_match met std) 0.3813 – 0.3874 (± 0.0134) 0.3806 – 0.3844 (± 0.0134)

Aan de slag met Neuron en lm-evaluatieharnas

De code in deze sectie kan u helpen bij het gebruik lm-evaluation-harness en voer het uit tegen ondersteunde modellen op Hugging Face. Bezoek voor een aantal beschikbare modellen AWS Inferentia en Trainium op knuffelend gezicht.

Als u bekend bent met het uitvoeren van modellen op AWS Inferentia2, merkt u misschien dat dit niet het geval is num_cores instelling doorgegeven. Onze code detecteert hoeveel cores beschikbaar zijn en geeft dat aantal automatisch door als parameter. Hierdoor kunt u de test uitvoeren met dezelfde code, ongeacht de instantiegrootte die u gebruikt. Het zal je misschien ook opvallen dat we verwijzen naar het originele model, en niet naar een door Neuron gecompileerde versie. Het harnas stelt indien nodig automatisch het model voor u samen.

De volgende stappen laten zien hoe u het verloop implementeert gradientai/v-alpha-tross model dat we hebben getest. Als u met een kleiner voorbeeld op een kleinere instantie wilt testen, kunt u de mistralai/Mistral-7B-v0.1 model.

  1. Het standaardquotum voor het uitvoeren van On-Demand Inf-instanties is 0, dus u moet een verhoging aanvragen via Servicequota. Voeg nog een verzoek toe voor alle Inf Spot Instance-verzoeken, zodat u kunt testen met Spot Instances. Voor dit voorbeeld hebt u een quotum van 192 vCPU's nodig met een inf2.48xlarge-instantie, of een quotum van 4 vCPU's voor een standaard inf2.xlarge (als u het Mistral-model implementeert). Quota zijn specifiek voor de AWS-regio, dus zorg ervoor dat u deze aanvraagt us-east-1 or us-west-2.
  2. Bepaal uw exemplaar op basis van uw model. Omdat v-alpha-tross is een 70B-architectuur, we hebben besloten een inf2.48xlarge-instantie te gebruiken. Implementeer een inf2.xlarge (voor het 7B Mistral-model). Als u een ander model test, moet u mogelijk uw exemplaar aanpassen, afhankelijk van de grootte van uw model.
  3. Implementeer het exemplaar met behulp van de Knuffelgezicht DLAMI versie 20240123, zodat alle benodigde stuurprogramma's zijn geïnstalleerd. (De getoonde prijs is inclusief de instancekosten en er zijn geen extra softwarekosten.)
  4. Pas de schijfgrootte aan naar 600 GB (100 GB voor Mistral 7B).
  5. Klonen en installeren lm-evaluation-harness op de instantie. We specificeren een build zodat we weten dat eventuele afwijkingen te wijten zijn aan modelwijzigingen en niet aan test- of codewijzigingen.
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. lopen lm_eval met het hf-neuron-modeltype en zorg ervoor dat je een link hebt naar het pad terug naar het model op 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

Als u het voorgaande voorbeeld met Mistral uitvoert, zou u de volgende uitvoer moeten ontvangen (op de kleinere inf2.xlarge kan het 250 minuten duren om uit te voeren):

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

Opruimen

Als u klaar bent, zorg er dan voor dat u de EC2-instanties stopt via de Amazon EC2-console.

Conclusie

De teams van Gradient en Neuron zijn verheugd om met deze release een bredere acceptatie van LLM-evaluatie te zien. Probeer het zelf uit en voer het populairste evaluatieframework uit op AWS Inferentia2-instanties. U kunt nu profiteren van de on-demand beschikbaarheid van AWS Inferentia2 wanneer u deze gebruikt aangepaste LLM-ontwikkeling van Gradient. Ga hiermee aan de slag met het hosten van modellen op AWS Inferentia tutorials.


Over de auteurs

Michaël Feil is AI-ingenieur bij Gradient en werkte eerder als ML-ingenieur bij Rodhe & Schwarz en onderzoeker bij Max-Plank Institute for Intelligent Systems en Bosch Rexroth. Michael levert een belangrijke bijdrage aan verschillende open source-inferentiebibliotheken voor LLM's en open source-projecten zoals StarCoder. Michael heeft een bachelordiploma in mechatronica en IT van het KIT en een masterdiploma in robotica van de Technische Universiteit van München.

Jim Burtoft is Senior Startup Solutions Architect bij AWS en werkt rechtstreeks samen met startups als Gradient. Jim is een CISSP, onderdeel van de AWS AI/ML Technical Field Community, een Neuron Ambassador, en werkt samen met de open source-gemeenschap om het gebruik van Inferentia en Trainium mogelijk te maken. Jim heeft een bachelordiploma in wiskunde van de Carnegie Mellon University en een masterdiploma in economie van de Universiteit van Virginia.

spot_img

Laatste intelligentie

spot_img