TensorFlow Model Optimizasyonu tarafından korunur
İki tür kuantizasyon vardır: eğitim sonrası kuantizasyon ve kuantizasyon farkında eğitim. Kullanımı daha kolay olduğu için eğitim sonrası niceleme ile başlayın, ancak niceleme bilinçli eğitim genellikle model doğruluğu için daha iyidir.
Bu sayfa, kullanım durumunuza nasıl uyduğunu belirlemenize yardımcı olmak için nicelleştirmeye duyarlı eğitim hakkında bir genel bakış sağlar.
- Doğrudan uçtan uca bir örneğe dalmak için, niceleme duyarlı eğitim örneğine bakın .
- Kullanım senaryonuz için ihtiyaç duyduğunuz API'leri hızlı bir şekilde bulmak için, nicelleştirmeye duyarlı eğitim kapsamlı kılavuzuna bakın .
genel bakış
Niceleme farkında eğitim, çıkarım-zaman nicelemeyi öykünerek, aşağı yöndeki araçların fiilen nicelenmiş modeller üretmek için kullanacağı bir model yaratır. Kuantize edilmiş modeller daha düşük hassasiyet kullanır (örneğin 32-bit kayan nokta yerine 8-bit), bu da dağıtım sırasında faydalar sağlar.
Niceleme ile dağıtın
Niceleme, model sıkıştırma ve gecikme azaltma yoluyla iyileştirmeler sağlar. API varsayılanlarıyla, model boyutu 4 kat küçülür ve test edilen arka uçlarda CPU gecikmesinde genellikle 1,5 - 4 kat arasında iyileştirmeler görürüz. Sonunda, EdgeTPU ve NNAPI gibi uyumlu makine öğrenimi hızlandırıcılarında gecikme iyileştirmeleri görülebilir.
Nicemleme ve ilgili donanımla denemeler yapın
Kullanıcılar niceleme parametrelerini (örneğin bit sayısı) ve bir dereceye kadar temeldeki algoritmaları yapılandırabilir. API varsayılanlarından yapılan bu değişikliklerle, şu anda bir arka uca dağıtım için desteklenen bir yol olmadığını unutmayın. Örneğin, TFLite dönüştürme ve çekirdek uygulamaları yalnızca 8 bit nicelemeyi destekler.
Bu yapılandırmaya özel API'ler deneyseldir ve geriye dönük uyumluluğa tabi değildir.
API uyumluluğu
Kullanıcılar, aşağıdaki API'lerle niceleme uygulayabilir:
- Model oluşturma: Yalnızca Sıralı ve İşlevsel modellerle
tf.keras.
- TensorFlow sürümleri: tf-nightly için TF 2.x.
- TF 2.X paketi ile
tf.compat.v1desteklenmez.
- TF 2.X paketi ile
- TensorFlow yürütme modu: istekli yürütme
Aşağıdaki alanlarda destek eklemek yol haritamızda yer almaktadır:
- Model oluşturma: Alt Sınıf Modellerin nasıl desteksiz olarak sınırlı olduğunu netleştirin
- Dağıtılmış eğitim:
tf.distribute
Genel destek matrisi
Aşağıdaki alanlarda destek verilmektedir:
- Model kapsamı: izin verilenler listesine eklenen katmanları kullanan modeller , Conv2D ve DepthwiseConv2D katmanlarını takip ettiğinde BatchNormalization ve sınırlı durumlarda
Concat.
- Donanım hızlandırma: API varsayılanlarımız, diğerlerinin yanı sıra EdgeTPU, NNAPI ve TFLite arka uçlarındaki hızlandırma ile uyumludur. Yol haritasındaki uyarıya bakın.
- Niceleme ile devreye alma: Şu anda tensör başına nicemleme değil, evrişimli katmanlar için eksen başına nicemleme desteklenmektedir.
Aşağıdaki alanlarda destek eklemek yol haritamızda yer almaktadır:
- Model kapsamı: RNN/LSTM'leri ve genel Concat desteğini içerecek şekilde genişletildi.
- Donanım hızlandırma: TFLite dönüştürücünün tam tamsayılı modeller üretebildiğinden emin olun. Ayrıntılar için bu konuya bakın.
- Kuantizasyon kullanım durumları ile deney yapın:
- Keras katmanlarını kapsayan veya eğitim adımını gerektiren niceleme algoritmalarıyla denemeler yapın.
- API'leri stabilize edin.
Sonuçlar
Araçlarla görüntü sınıflandırma
|modeli||Kuantize edilmemiş İlk 1 Doğruluk||8-bit Niceliksel Doğruluk|
|MobilnetV1 224||%71.03||%71.06|
|yeniden ağ v1 50||%76,3||%76.1|
|MobilnetV2 224||%70.77||%70.01|
Modeller Imagenet üzerinde test edildi ve hem TensorFlow hem de TFLite'ta değerlendirildi.
Teknik için görüntü sınıflandırması
|modeli||Kuantize edilmemiş İlk 1 Doğruluk||8-Bit Nicelenmiş Doğruluk|
|Nasnet-Mobil||%74||%73|
|Resnet-v2 50||%75.6||%75|
Modeller Imagenet üzerinde test edildi ve hem TensorFlow hem de TFLite'ta değerlendirildi.
Örnekler
Kuantizasyona duyarlı eğitim örneğine ek olarak, aşağıdaki örneklere bakın:
- Nicemleme ile MNIST el yazısı rakam sınıflandırma görevinde CNN modeli: kod
Benzer bir konuda arka plan için, Verimli Tamsayı-Aritmetik-Yalnızca Çıkarım için Sinir Ağlarının Nicelenmesi ve Eğitimi belgesine bakın . Bu makale, bu aracın kullandığı bazı kavramları tanıtmaktadır. Uygulama tam olarak aynı değildir ve bu araçta kullanılan ek kavramlar vardır (örn. eksen başına nicemleme).