June 25, 2024

De Face Hug-gids voor het verbeteren van LLM’s in de productie

De Face Hug-gids voor het verbeteren van LLM’s in de productie

Als het gaat om het inzetten van grote taalmodellen (LLM’s) in de productie, komen de twee belangrijkste uitdagingen voort uit de enorme hoeveelheid parameters die ze nodig hebben en de noodzaak om met zeer lange invoerreeksen om te gaan om contextuele informatie weer te geven. Hugging Face heeft een lijst met technieken gedocumenteerd om deze obstakels aan te pakken Gebaseerd op hun ervaring met het onderhouden van dergelijke modellen.

De drie technieken die Patrick von Platen beschrijft in zijn artikel over Hugging Face zijn: Werkt op lage digitale resolutieMet behulp van een variatie op het aandachtsalgoritme, bekend als Flits aandachten gebruiken Gespecialiseerde architecturen voor gevolgtrekking.

LLM’s vereisen dat een grote hoeveelheid VRAM wordt geladen, variërend van tientallen (bigcode/starcoder) tot honderden gigabytes (Llama, Bloom, GPT3). De eerste verbetering is mogelijk door over te stappen van float32`` to bfloat16“ nauwkeurigheid:

Bijna alle modellen zijn tegenwoordig getraind op bfloat16, en er is geen reden om het model op volledige Float32-resolutie te gebruiken als uw GPU bfloat16 ondersteunt. Float32 zal geen betere gevolgtrekkingsresultaten opleveren dan de nauwkeurigheid die werd gebruikt om het model te trainen.

Hierdoor kan het totale geheugengebruik worden gehalveerd, maar helaas kan het benodigde geheugen in veel gevallen nog steeds erg groot zijn. Een agressievere benadering is om de modelgewichten te kwantificeren tot 8 bits of 4 bits, wat ook gebeurt Bewezen dat het geen significant prestatieverlies veroorzaakt.

Kwantisering werkt bijzonder goed voor het genereren van tekst, omdat het ons alleen maar gaat om het kiezen van de volgende meest waarschijnlijke set tokens en het ons niet echt uitmaakt wat de exacte waarden zijn van de logitverdeling van het volgende token.

Hierdoor kan de geheugenbehoefte verder worden verlaagd, waardoor het mogelijk wordt om kleinere modellen op kant-en-klare GPU’s met slechts 16 GB VRAM te draaien, zij het ten koste van een iets langere inferentietijd.

Gebruik Flits aandachteen nieuw algoritme voor zelfaandachtslagen dat LLM’s toepassen om contextuele relaties tussen invoersymbolen te begrijpen, is een andere belangrijke verbetering, zegt Von Platen, omdat het het mogelijk maakt om de kwadratische groei van lagen op te splitsen op basis van het aantal invoersymbolen.

Het algoritme is te complex om hier samen te vatten, maar het volstaat te zeggen dat het gebruik van softmax-normalisatiestatistieken en wat slimme wiskunde identieke resultaten oplevert, terwijl Het vereist alleen geheugen dat lineair groeit met invoercodes. De inferentieprestaties worden ook verbeterd dankzij het algoritme dat sneller SRAM gebruikt in plaats van langzamer GPU VRAM.

In de praktijk is er momenteel absoluut geen reden om Flash Attention niet te gebruiken als deze beschikbaar is. Het algoritme geeft wiskundig dezelfde uitvoer, is sneller en geheugenefficiënter.

Het derde gebied waarop LLM’s in de productie kunnen worden verbeterd, is het kiezen van de juiste structuur zodat ze lange tekstinvoer effectief en efficiënt kunnen verwerken. Hier kan modern onderzoek helpen bij het nemen van de juiste beslissing via twee elementen die snel knelpunten worden, zegt von Platen: Actuele implicaties En de Sleutelwaardecache.

Positionele inbedding geeft de LLM een signaal om de volgorde van de sequentie te begrijpen door de positie van elk token in een digitale presentatie te coderen. Voor LLM’s die gericht zijn op het oplossen van taken die het omgaan met grote tekstuele input vereisen, kunnen relatieve positionele inbedding zoals zwangerschap En Alibi Moet gebruikt worden voor trainingen.

Zowel RoPE- als ALiBi-positiecodering kan invoerlengtes extrapoleren die tijdens de training niet zijn waargenomen, terwijl is aangetoond dat extrapolatie out-of-the-box veel beter werkt voor ALiBi in vergelijking met RoPE.

Beide algoritmen zijn al beschikbaar in een aantal bestaande LLM-programma’s.

Sleutel-waarde-chat kan worden gebruikt als middel om de context van het gesprek te versleutelen. De sleutelwaardecache groeit met één item bij elke nieuwe interactie, wat efficiënter is dan de alternatieve benadering van het coderen/decoderen van context bij elk verzoek. Von Platen gaat gedetailleerd in op twee klassen sleutelwaardecaches, namelijk Multi-query-aandacht (MQA) en Geaggregeerde vraag-aandacht (GQA) om de voordelen die ze met zich meebrengen te laten zien.

Het artikel van Von Platen bestrijkt veel meer terrein dan hier kan worden samengevat en biedt praktische voorbeelden om zijn punten te illustreren. Mis zijn artikel dus niet om een ​​volledig beeld te krijgen.