Kuantisasi pasca pelatihan mencakup teknik umum untuk mengurangi latensi CPU dan akselerator perangkat keras, pemrosesan, daya, dan ukuran model dengan sedikit penurunan akurasi model. Teknik ini dapat dilakukan pada model TensorFlow float yang sudah dilatih dan diterapkan selama konversi TensorFlow Lite. Teknik ini diaktifkan sebagai opsi di konverter TensorFlow Lite .
Untuk langsung melihat contoh end-to-end, lihat tutorial berikut:
- Kuantisasi rentang dinamis pasca pelatihan
- Kuantisasi bilangan bulat penuh pasca pelatihan
- Kuantisasi float16 pasca pelatihan
Mengkuantisasi bobot
Bobot dapat dikonversi ke tipe dengan presisi yang dikurangi, seperti float 16 bit atau bilangan bulat 8 bit. Kami biasanya merekomendasikan float 16-bit untuk akselerasi GPU dan integer 8-bit untuk eksekusi CPU.
Misalnya, berikut cara menentukan kuantisasi bobot bilangan bulat 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()
Sebagai kesimpulan, bagian yang paling intensif 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. Hal ini memerlukan 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.