Wat is Post-training quantization (PTQ)?

Methode waarbij de gewichten en activaties van een getraind model worden omgezet naar een lagere precisie nadat het waardebereik met representatieve gegevens is bepaald. PTQ.

Japanse benaming: 学習後量子化

“Post-training quantization (PTQ)” komt voor in 2 oefenvragen uit 1 onderwerpen, bijv. AI-hardware en softwarestack.

Vakgebied: AI-hardware en softwarestack

Hoe post-training quantization werkt

Post-training quantization (PTQ) gaat uit van een model dat al in 32-bit floating point is getraind en beeldt elke tensor af op een klein raster van gehele getallen, meestal INT8. Elke reële waarde wordt weergegeven als een geheel getal maal een schaalfactor, soms met een zero-point-offset. Gewichten liggen na de training vast, dus hun schalen kunnen rechtstreeks uit de opgeslagen waarden worden berekend, vaak per uitgangskanaal apart om verschillen tussen filters te volgen. Er vinden geen gradiëntupdates plaats, dus PTQ is meestal binnen minuten klaar en heeft geen gelabelde trainingsdata nodig, alleen een kleine set invoer voor kalibratie.

Kalibratie en de afweging bij clipping

Activaties veranderen bij elke invoer, dus hun bereik kan niet uit het model zelf worden afgelezen. Bij kalibratie gaan een paar honderd representatieve invoeren door het netwerk, wordt per laag de verdeling van de activaties vastgelegd en wordt het bereik gekozen dat op het symmetrische INT8-raster van -127 tot 127 wordt afgebeeld. Het absolute maximum gebruiken garandeert dat niets wordt afgekapt, maar een paar zeldzame uitschieters rekken de schaal dan op en verspillen de meeste beschikbare niveaus aan waarden die vrijwel nooit voorkomen. Het bereik beperken tot het grootste deel van de verdeling kapt de uitschieters af (clipping), maar geeft de gangbare waarden een fijnere resolutie.

PTQ vs. quantization-aware training

Quantization-aware training (QAT) voegt tijdens training of fine-tuning gesimuleerde afronding toe aan de forward pass, zodat de gewichten leren de kwantisatiefout te verdragen. PTQ slaat deze stap volledig over, wat het veel goedkoper maakt en bruikbaar wanneer de oorspronkelijke trainingspipeline of dataset niet beschikbaar is. De prijs is nauwkeurigheid: bij INT8 is het verlies vaak klein, maar naarmate de bitbreedte richting 4 bits krimpt, groeit de afrondingsfout snel en is PTQ alleen mogelijk niet meer acceptabel. QAT is dan de gebruikelijke terugvaloptie, omdat het de nauwkeurigheid kan behouden bij precisies waar PTQ tekortschiet.

Waarom het belangrijk is voor inferentiehardware

Een INT8-gewicht neemt een kwart van het geheugen van een FP32-gewicht in, dus hetzelfde model heeft minder DRAM-capaciteit nodig en, belangrijker nog, minder geheugenbandbreedte per inferentie. Multiply-accumulate-eenheden voor gehele getallen zijn ook veel kleiner en verbruiken minder energie per bewerking dan floating-point-eenheden; daarom zijn neural processing units en edge-accelerators rond integer-arrays met lage precisie gebouwd. PTQ is de meest gebruikte manier om een bestaand model naar zulke hardware over te zetten, en deploymenttoolchains bieden er doorgaans een kalibratiestap voor.

Nu oefenen: vragen over Post-training quantization (PTQ)

Welke uitspraak over het verschil tussen post-training quantization (PTQ) en quantization-aware training (QAT) is juist?

  1. APTQ kwantiseert vóór de training en QAT na de training
  2. BPTQ kwantiseert een reeds getraind model zoals het is, en QAT bootst tijdens de training het effect van kwantisatie na en past de gewichten aan zodat de fout ook bij lage precisie klein blijft
  3. CZowel PTQ als QAT zijn methoden zonder kwantisatie
Antwoord en toelichting tonen

Antwoord: B. PTQ kwantiseert een reeds getraind model zoals het is, en QAT bootst tijdens de training het effect van kwantisatie na en past de gewichten aan zodat de fout ook bij lage precisie klein blijft

Bij post-training quantization worden de gewichten (en activaties) van een volledig getraind model omgezet naar lagere precisie nadat het waardenbereik met een kleine hoeveelheid representatieve data is onderzocht; dit is eenvoudig, maar de nauwkeurigheid neemt gemakkelijker af naarmate het aantal bits kleiner is. Bij quantization-aware training wordt de afronding door kwantisatie in de voorwaartse propagatie van de training nagebootst en worden de gewichten inclusief die fout aangepast, zodat de nauwkeurigheid ook bij lage precisie zoals 4 bits goed behouden blijft.

Wat is het doel van "kalibratie" bij post-training quantization waarbij activaties naar INT8 worden gekwantiseerd?

  1. ARepresentatieve invoerdata doorrekenen om het waardenbereik van de activaties van elke laag te bepalen en de kwantisatieschaal vast te stellen
  2. BDe klok van de GPU nauwkeurig afstellen
  3. CDe weergave van kleuren op het scherm aanpassen
Antwoord en toelichting tonen

Antwoord: A. Representatieve invoerdata doorrekenen om het waardenbereik van de activaties van elke laag te bepalen en de kwantisatieschaal vast te stellen

De waarden van de gewichten liggen na de training vast, maar die van de activaties hangen van de invoer af. Daarom worden enkele honderden invoeren die op het werkelijke gebruik lijken doorgerekend om het waardenbereik en de verdeling van de activaties van elke laag te onderzoeken en te bepalen welk bereik op −127 tot 127 van INT8 wordt afgebeeld (de schaal). Bij afstemming op de maximumwaarde gaat door uitschieters nauwkeurigheid verloren, zodat het bereik soms iets wordt verkleind zodat het grootste deel van de verdeling erin past.

Veelgestelde vragen

Wat is het verschil tussen post-training quantization en quantization-aware training?

Post-training quantization zet een al getraind model zonder hertraining om naar lage precisie, met alleen een kleine kalibratieset. Quantization-aware training simuleert de afronding tijdens de training zodat de gewichten zich aanpassen; dat kost een trainingsrun, maar behoudt de nauwkeurigheid beter bij zeer lage bitbreedtes zoals 4 bits.

Waarom heeft post-training quantization kalibratiedata nodig?

Gewichten zijn na de training bekend, maar activatiewaarden hangen af van de invoer, dus hun bereik moet worden waargenomen door representatieve invoer door het model te sturen. Die waargenomen bereiken bepalen de schaalfactoren waarmee activaties op het integer-raster worden afgebeeld.

Heeft post-training quantization de oorspronkelijke trainingsdataset nodig?

Er is geen volledige trainingsdataset en er zijn geen labels nodig. Een paar honderd ongelabelde invoeren die op het echte gebruik lijken, zijn normaal genoeg om de activatiebereiken te kalibreren.

“Post-training quantization (PTQ)” in de toelichting

Vragen met “Post-training quantization (PTQ)” (2)

  1. Welke uitspraak over het verschil tussen post-training quantization (PTQ) en quantization-aware training (QAT) is juist?
  2. Wat is het doel van "kalibratie" bij post-training quantization waarbij activaties naar INT8 worden gekwantiseerd?

Verwante termen

Quantization-aware training (QAT) INT8 Numerieke apertuur (NA) AI-compiler All-reduce Attention Backpropagatie Batchgrootte Dataparallellisme FlashAttention

Naar de woordenlijst