Kuantisasi pasca-pelatihan mencakup teknik umum untuk mengurangi latensi akselerator CPU dan perangkat keras, pemrosesan, daya, dan ukuran model dengan sedikit penurunan dalam akurasi model. Teknik ini dapat dilakukan pada model TensorFlow float yang sudah terlatih dan diterapkan selama konversi TensorFlow Lite. Teknik ini diaktifkan sebagai opsi di konverter TensorFlow Lite .
Untuk langsung ke contoh ujung ke ujung, lihat tutorial berikut:
- Kuantisasi rentang dinamis pasca-pelatihan
- Kuantisasi bilangan bulat penuh pasca-pelatihan
- Kuantisasi float16 pasca-pelatihan
Menghitung bobot
Bobot dapat dikonversi ke tipe dengan presisi yang dikurangi, seperti float 16 bit atau integer 8 bit. Kami biasanya merekomendasikan float 16-bit untuk akselerasi GPU dan integer 8-bit untuk eksekusi CPU.
Sebagai contoh, berikut adalah cara menentukan kuantisasi bobot integer 8 bit:
import tensorflow as tf
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_quant_model = converter.convert()
Pada inferensi, bagian intensif yang paling kritis dihitung dengan 8 bit, bukan floating point. Ada beberapa overhead kinerja waktu inferensi, relatif terhadap kuantisasi bobot dan aktivasi di bawah ini.
Untuk informasi selengkapnya, lihat panduan kuantisasi pasca pelatihan TensorFlow Lite.
Kuantisasi bilangan bulat penuh dari bobot dan aktivasi
Tingkatkan latensi, pemrosesan, dan penggunaan daya, serta dapatkan akses ke akselerator perangkat keras khusus bilangan bulat dengan memastikan bobot dan aktivasi terkuantisasi. Ini membutuhkan kumpulan data kecil yang representatif.
import tensorflow as tf
def representative_dataset_gen():
for _ in range(num_calibration_steps):
# Get sample input data as a numpy array in a method of your choosing.
yield [input]
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.representative_dataset = representative_dataset_gen
tflite_quant_model = converter.convert()
Model yang dihasilkan masih akan mengambil input dan output float untuk kenyamanan.
Untuk informasi selengkapnya, lihat panduan kuantisasi pasca pelatihan TensorFlow Lite.