Niceleme farkındalığı eğitimi

TensorFlow Model Optimizasyonu tarafından sürdürülüyor

İki kuantizasyon biçimi vardır: eğitim sonrası kuantizasyon ve kuantizasyona duyarlı eğitim. Kullanımı daha kolay olduğundan eğitim sonrası kuantizasyonla başlayın, ancak kuantizasyona duyarlı eğitim genellikle model doğruluğu açısından daha iyidir.

Bu sayfa, kullanım senaryonuza nasıl uyduğunu belirlemenize yardımcı olmak için nicemleme farkındalığına sahip eğitime genel bir bakış sağlar.

Genel Bakış

Niceleme farkındalığına sahip eğitim, çıkarım zamanı nicelemesini taklit ederek aşağı yöndeki araçların gerçekten nicelenmiş modeller üretmek için kullanacağı bir model oluşturur. Nicelenmiş modeller daha düşük hassasiyet kullanır (örneğin, 32 bit kayan nokta yerine 8 bit), bu da dağıtım sırasında fayda sağlar.

Niceleme ile dağıtma

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 iyileşme görürüz. Sonunda EdgeTPU ve NNAPI gibi uyumlu makine öğrenimi hızlandırıcılarında gecikme iyileştirmeleri görülebilir.

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

Niceleme ve ilgili donanımla denemeler yapın

Kullanıcılar niceleme parametrelerini (örn. bit sayısı) ve bir dereceye kadar temel algoritmaları yapılandırabilirler. API varsayılanlarındaki bu değişikliklerle birlikte, şu anda bir arka uca dağıtım için desteklenen bir yol bulunmadığını unutmayın. Örneğin, TFLite dönüşümü ve çekirdek uygulamaları yalnızca 8 bitlik 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 modellere sahip 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ıflandırılmış Modellerin nasıl desteksizlikle sınırlı olduğunu açıklayın
  • Dağıtılmış eğitim: tf.distribute

Genel destek matrisi

Destek aşağıdaki alanlarda mevcuttur:

  • Model kapsamı: izin verilenler listesindeki 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ırmayla uyumludur. Yol haritasındaki uyarıya bakın.
  • Niceleme ile dağıtma: şu anda evrişimsel katmanlar için yalnızca eksen başına niceleme desteklenmektedir, tensör başına niceleme desteklenmemektedir.

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.
  • Niceleme kullanım durumlarıyla denemeler yapın:
    • Keras katmanlarını kapsayan veya eğitim adımı gerektiren niceleme algoritmalarıyla denemeler yapın.
    • API'leri stabilize edin.

Sonuçlar

Araçlarla görüntü sınıflandırma

Modeli Nicelenmemiş İlk 1 Doğruluk 8-bit Niceleştirilmiş Doğruluk
MobilenetV1 224 %71,03 %71,06
v1 50'yi yeniden başlat %76,3 %76,1
MobilenetV2 224 %70,77 %70,01

Modeller Imagenet'te test edildi ve hem TensorFlow hem de TFLite'da değerlendirildi.

Tekniğe yönelik görüntü sınıflandırması

Modeli Nicelenmemiş İlk 1 Doğruluk 8-Bit Nicelenmiş Doğruluk
Nasnet-Mobil %74 %73
Resnet-v2 50 %75,6 %75

Modeller Imagenet'te test edildi ve hem TensorFlow hem de TFLite'da değerlendirildi.

Örnekler

Niceleme uyumlu eğitim örneğine ek olarak aşağıdaki örneklere bakın:

  • MNIST'in nicelemeli el yazısı rakam sınıflandırma görevindeki CNN modeli: kod

Benzer bir konuyla ilgili arka plan bilgisi için Verimli Tam Sayı-Aritmetik-Yalnızca Çıkarım için Sinir Ağlarının Nicelenmesi ve Eğitimi makalesine bakın. Bu yazıda bu aracın kullandığı bazı kavramlar tanıtılmaktadır. Uygulama tam olarak aynı değildir ve bu araçta kullanılan ek kavramlar vardır (örn. eksen başına nicemleme).