Edge cihazlar genellikle sınırlı belleğe veya işlem gücüne sahiptir. Çeşitli modellerin bu öğeler içinde çalıştırılabilmesini sağlamak için kısıtlar. Buna ek olarak, bazı optimizasyonlar, özelleştirilmiş içeriklerin donanım ve kontrol mekanizmalarını kullanabilirsiniz.
LiteRT ve TensorFlow Model Optimizasyonu Araç Seti belirli çıkarımı optimize etmenin karmaşıklığını en aza indirmenize yardımcı olur.
Uygulamanız sırasında model optimizasyonunu göz önünde bulundurmanız önerilir sürecidir. Bu dokümanda, optimizasyonla ilgili en iyi uygulamalardan bazıları Uç donanıma dağıtım için TensorFlow modelleri.
Modeller neden optimize edilmelidir?
Model optimizasyonunun uygulama konusunda yardımcı olabileceği birkaç temel yöntem vardır bahsedeceğim.
Boyut küçültme
Bazı optimizasyon biçimleri, bir modelin boyutunu küçültmek için kullanılabilir. Daha küçük modellerin avantajları şunlardır:
- Daha küçük depolama alanı: Daha küçük modeller kullanıcıların cihazlar. Örneğin, daha küçük model kullanan bir Android uygulaması daha az depolama alanı sunar.
- Daha küçük indirme boyutu: Daha küçük modeller, kullanıcılara indir cihazlar.
- Daha az bellek kullanımı: Daha küçük modeller çalıştırıldığında daha az RAM kullanır. Bu da uygulamanızın diğer bölümlerinin kullanması için hafızada yer açar ve daha iyi performans ve istikrar sağlar.
Nicelikleştirme tüm bu durumlarda modelin boyutunu küçültebilir. riskleri ele alacağız. Budama ve kümeleme, bir veri türünün daha kolay sıkıştırılabilir hale getirerek indirilebilecek modeldir.
Gecikme süresi azaltma
Gecikme, belirli bir çıkarımda bulunmak için gereken süredir modeli. Bazı optimizasyon türleri gereken hesaplama miktarını azaltabilir kullanarak çıkarım yapmak için daha düşük bir gecikme sağlar. Gecikme güç tüketimini etkiler.
Şu anda niceleme, çıkarım sırasında yapılan hesaplamalarda, bu durumun pahasına, emin olun.
Hızlandırıcı uyumluluğu
Edge gibi bazı donanım hızlandırıcılar TPU sayesinde son derece hızlı çıkarım yapabilir modellerin doğru şekilde optimize edilmesini sağlayın.
Genel olarak bu tür cihazlarda, modellerin belirli bir sağlar. Daha fazla bilgi edinmek için her bir donanım hızlandırıcının dokümanlarına bakın gereksinimlerini karşılayın.
Dengeler
Optimizasyonlar modelin doğruluğunda değişikliklere neden olabilir. göz önünde bulundurmalısınız.
Doğruluk değişiklikleri, optimize edilmekte olan her bir modele bağlıdır ve önceden tahmin edilmesi zordur. Genellikle, dönüşüm hunisinin orta kısmı için veya gecikme de bir miktar doğruluk kaybına neden olur. Size uygulamanız durumunda kullanıcılarınızın sunmaktır. Nadiren Belirli modeller, optimizasyon sürecinin sonucu olarak bir miktar doğruluk elde edebilir.
Optimizasyon türleri
LiteRT şu anda niceleme, ayıklama ve ayıklama yoluyla optimizasyonu desteklemektedir. kümeleme gibi.
Bunlar, TensorFlow Model Optimizasyonu'nun bir parçasıdır. yardımcı olan araçlardır TensorFlow ile uyumlu model optimizasyon teknikleri için kaynaklar Basit.
Nicelendirme
Nicelleştirme değeri temsil etmek için kullanılan sayıların kesinliğini azaltarak çalışır. parametreleridir. Bunlar varsayılan olarak 32 bitlik kayan nokta sayılardır. Bu durum, ve daha hızlı hesaplama yapabilmenizi sağlar.
LiteRT'te aşağıdaki ölçüm türleri kullanılabilir:
Teknik | Veri gereksinimleri | Boyut küçültme | Doğruluk | Desteklenen donanım |
---|---|---|---|---|
Eğitim sonrası kayan nokta 16'nın niceliği | Veri yok | En fazla %50 | Önemsiz doğruluk kaybı | CPU, GPU |
Eğitim sonrası dinamik aralık nicelemesi | Veri yok | %75'e kadar | En küçük doğruluk kaybı | CPU, GPU (Android) |
Eğitim sonrası tam sayı miktarını belirleme | Etiketsiz temsilci örneği | %75'e kadar | Küçük doğruluk kaybı | CPU, GPU (Android), EdgeTPU |
Nicelik odaklı eğitim | Etiketli eğitim verileri | %75'e kadar | En küçük doğruluk kaybı | CPU, GPU (Android), EdgeTPU |
Aşağıdaki karar ağacı, kullanabileceğiniz niceleme şemalarını istediğiniz model boyutuna ve boyutlarına dayalı olarak emin olun.
Aşağıda, eğitim sonrası niceleme ve odaklı eğitimlere dayandırabilirsiniz. Tüm gecikme sayıları şu tarihte ölçülür: Tek bir büyük çekirdekli CPU kullanan Pixel 2 cihazlar. Araç seti geliştikçe şuradaki sayılar:
Model | 1. Doğruluk (Orijinal) | En İyi 1 Doğruluk (Eğitim Sonrası Nitelikli) | İlk 1 Doğruluk (Nicelleştirmeye Duyarlı Eğitim) | Gecikme (Orijinal) (ms) | Gecikme (Eğitim Sonrası Miktarı Göre) (ms) | Gecikme (Nicelleştirme Duyarlı Eğitim) (ms) | Boyut (Orijinal) (MB) | Boyut (Optimize Edilmiş) (MB) |
---|---|---|---|---|---|---|---|---|
Mobilenet-v1-1-224 | 0,709 | 0,657 | 0,70 | 124 | 112 | 64 | 16,9 | 4,3 |
Mobilenet-v2-1-224 | 0,719 | 0,637 | 0,709 | 89 | 98 | 54 | 14 | 3.6 |
Inception_v3 | 0,78 | 0,772 | 0,775 | 1130 | 845 | 543 | 95,7 | 23,9 |
Resnet_v2_101 | 0,770 | 0,768 | Yok | 3973 | 2868 | Yok | 178,3 | 44,9 |
Int16 etkinleştirmeleri ve int8 ağırlıklarıyla tam sayı niceleme
Int16 etkinleştirmeleriyle miktar belirleme int16'da etkinleştirmeleri ve int8 Bu mod, int8'de hem etkinleştirme hem de ağırlıklarla tam sayı niceleme şeması elde edebilirsiniz. Etkinleştirmeler hassas olduğunda önerilir hesaplamaya çalıştık.
NOT: Şu anda yalnızca optimize edilmemiş referans çekirdek uygulamaları bu ölçüm şeması için TFLite'ta kullanılabilir. Bu nedenle, int8 çekirdekle karşılaştırıldığında yavaş olacaktır. Bu modun tüm avantajları özel donanımlar veya özel yazılımlarla erişilebilir durumda.
Bu moddan yararlanan bazı modeller için doğruluk sonuçlarını aşağıda bulabilirsiniz.
Model | Doğruluk metriği türü | Doğruluk (float32 etkinleştirmeleri) | Doğruluk (int8 etkinleştirmeleri) | Doğruluk (int16 etkinleştirme) |
---|---|---|---|---|
Wav2letter | WER | %6,7 | %7,7 | %7,2 |
DeepSpeech 0.5.1 (yayından kaldırılmış) | CER | %6,13 | %43,67 | %6,52 |
YoloV3 | mAP(IOU=0,5) | 0,577 | 0,563 | 0,574 |
MobileNetV1 | Doğruluk İlk 1 | 0,7062 | 0,694 | 0,6936 |
MobileNetV2 | Doğruluk İlk 1 | 0,718 | 0,7126 | 0,7137 |
MobileBert | F1(Tam eşleme) | 88,81(81,23) | 2,08(0) | 88,73(81,15) |
Budama
Budama işlemi üzerinde çok küçük etkisi olan bir modeldeki parametreleri kaldırma tahminler. Budanan modeller, disk üzerinde aynı boyuttadır ve aynı çalışma zamanına sahiptir daha etkili bir şekilde sıkıştırılabilir. Bu, budama işlemini faydalı tekniktir.
Gelecekte LiteRT, kısaltılan modeller için gecikme azaltma olanağı sunacaktır.
Kümeleme
Kümeleme modeldeki her katmanın ağırlıklarını önceden tanımlanmış bir sayı altında gruplandırarak çalışır ve her bir kümeye ait ağırlıkların merkezi değerlerini, için de geçerlidir. Bu, bir modeldeki benzersiz ağırlık değerlerinin sayısını azaltır, ve karmaşıklığını azaltır.
Sonuç olarak, kümelenmiş modeller daha etkili bir şekilde sıkıştırılabilir, böylece ve budamaya benzer.
Geliştirme iş akışı
Başlangıç olarak, modellerin barındırılan bir web sitesindeki hangi modellerden yararlanabileceğinizi öğrenin. Aksi halde Kullanıcıların eğitim sonrası miktar belirleme ya da aracını kullanın çünkü bu, geniş ölçekte uygulanabilir ve eğitim verisi gerektirmez.
Doğruluk ve gecikme hedeflerinin karşılanmadığı durumlarda veya hızlandırıcı desteği önemlidir, nicelleştirmeye duyarlı eğitim o daha iyi bir seçenektir. Ek optimizasyon tekniklerini TensorFlow Model Optimizasyonu Araç Seti'ni inceleyin.
Modelinizin boyutunu daha da küçültmek isterseniz budamayı deneyebilirsiniz ve/veya kümeleme işlemini uygulayın.