Kuantizasyon farkında eğitim

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.

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.

Teknik, konuşma, görme, metin ve çeviri kullanım durumlarında üretimde kullanılır. Kod şu anda bu modellerin bir alt kümesini desteklemektedir.

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.
  • 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).