Eğitim sonrası niceleme, model doğruluğunda çok az bozulmayla CPU ve donanım hızlandırıcı gecikmesini, işlemeyi, gücü ve model boyutunu azaltmaya yönelik genel teknikleri içerir. Bu teknikler önceden eğitilmiş bir kayan TensorFlow modelinde gerçekleştirilebilir ve TensorFlow Lite dönüşümü sırasında uygulanabilir. Bu teknikler TensorFlow Lite dönüştürücüde seçenekler olarak etkinleştirilir.
Uçtan uca örneklere atlamak için aşağıdaki eğitimlere bakın:
- Eğitim sonrası dinamik aralık kuantizasyonu
- Eğitim sonrası tam tamsayı nicemleme
- Eğitim sonrası float16 nicelemesi
Ağırlıkların nicelendirilmesi
Ağırlıklar, 16 bitlik kayan sayılar veya 8 bitlik tamsayılar gibi azaltılmış hassasiyete sahip türlere dönüştürülebilir. Genellikle GPU hızlandırma için 16 bitlik kayan değerleri ve CPU yürütmesi için 8 bitlik tamsayıları öneririz.
Örneğin, 8 bitlik tamsayı ağırlık nicemlemesinin nasıl belirleneceği aşağıda açıklanmıştır:
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()
Çıkarımda, en kritik yoğun kısımlar kayan nokta yerine 8 bit ile hesaplanır. Aşağıda hem ağırlıkların hem de aktivasyonların nicelendirilmesine ilişkin bazı çıkarım zamanı performans yükü vardır.
Daha fazla bilgi için TensorFlow Lite eğitim sonrası niceleme kılavuzuna bakın.
Ağırlıkların ve aktivasyonların tam tamsayı nicemlenmesi
Gecikmeyi, işlemeyi ve güç kullanımını iyileştirin ve hem ağırlıkların hem de etkinleştirmelerin nicelendiğinden emin olarak yalnızca tamsayılı donanım hızlandırıcılara erişim sağlayın. Bu, küçük bir temsili veri seti gerektirir.
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()
Ortaya çıkan model kolaylık sağlamak için yine de değişken giriş ve çıkış alacaktır.
Daha fazla bilgi için TensorFlow Lite eğitim sonrası niceleme kılavuzuna bakın.