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.
- 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
orus-west-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. - 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.)
- Pas de schijfgrootte aan naar 600 GB (100 GB voor Mistral 7B).
- 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.
- 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:
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):
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.
- Door SEO aangedreven content en PR-distributie. Word vandaag nog versterkt.
- PlatoData.Network Verticale generatieve AI. Versterk jezelf. Toegang hier.
- PlatoAiStream. Web3-intelligentie. Kennis versterkt. Toegang hier.
- PlatoESG. carbon, CleanTech, Energie, Milieu, Zonne, Afvalbeheer. Toegang hier.
- Plato Gezondheid. Intelligentie op het gebied van biotech en klinische proeven. Toegang hier.
- Bron: https://aws.amazon.com/blogs/machine-learning/gradient-makes-llm-benchmarking-cost-effective-and-effortless-with-aws-inferentia/