Quantization-aware training

forkortelse for QAT

Quantization-aware training (QAT) er en træningsteknik, hvor kvantiseringseffekter simuleres under træningen for at opnå høj nøjagtighed efter efterfølgende kvantisering.

Kort fortalt

En metode til at træne en AI-model, så den bevarer præcisionen, selv når den gøres mindre og hurtigere ved at arbejde med mindre præcise tal.

Kategori
teknik
Niveau
øvet
Udtale
/ˈkwɒntɪzeɪʃən ˈeər trˈeɪnɪŋ/

Betydninger

1
  1. 1

    En træningsmetode, der simulerer kvantisering under fremadrettet passage for at gøre modellen robust over for kvantiseringsfejl, typisk ved at fastholde fuld præcision i vægte og aktiviteter under opdateringer, men kvantisere dem i forward pass.

    • Ved at anvende quantization-aware training opnåede vi en top-1 nøjagtighed på 70,2% efter 8-bit kvantisering, kun 0,5% lavere end det fuldpræcise baseline.Eksempel baseret på praksis
    • QAT anvender en straight-through estimator (STE) til at approksimere gradienterne gennem kvantiseringsfunktionen.Jacob et al., 2018

Hvornår bruges det

QAT bruges til at optimere deep learning-modeller til implementering på ressourcebegrænsede enheder som mobiltelefoner eller edge-enheder. Det er især relevant for inferens i integer-aritmetik, fx med 8-bit heltal. Teknikken inkorporerer kvantiseringsoperationer i træningsgrafen og bruger en straight-through estimator til at håndtere den ikke-differentiable kvantiseringsfunktion.

Kodeeksempel

# TensorFlow eksempel på QAT
import tensorflow as tf
from tensorflow import keras
import tensorflow_model_optimization as tfmot

model = keras.Sequential([...])  # original model
qat_model = tfmot.quantization.keras.quantize_model(model)

# Træn med QAT (simuleret kvantisering)
qat_model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
qat_model.fit(train_images, train_labels, epochs=5)

# Efter træning konverteres til heltalsrepræsentation
converter = tf.lite.TFLiteConverter.from_keras_model(qat_model)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_model = converter.convert()

TensorFlow-kode, der illustrerer, hvordan et eksisterende Keras-modell pakkes ind med `quantize_model` for at udføre quantization-aware training, og derefter konverteres til TFLite med heltalsoptimering.

Oprindelse

Sammensat af 'quantization' (kvantisering) og 'aware' (bevidst) og 'training' (træning).

Afledte ord

2

Kilder

3
  • Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference (Jacob et al., 2018)
  • TensorFlow Model Optimization Toolkit – Quantization Aware Training
  • PyTorch Quantization – Quantization Aware Training