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.
- Uçtan uca bir örneğe dalmak için kuantizasyona duyarlı eğitim örneğine bakın.
- Kullanım durumunuz için ihtiyaç duyduğunuz API'leri hızlı bir şekilde bulmak için nicemleme farkındalığına dayalı eğitim kapsamlı kılavuzuna bakın.
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.
- TF 2.X paketine sahip
tf.compat.v1
desteklenmez.
- TF 2.X paketine sahip
- 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).