Model optimizasyonu

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.

nicel-karar-aktarma-ağacı

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-2240,7090,6570,70 1241126416,94,3
Mobilenet-v2-1-2240,7190,6370,709 899854143.6
Inception_v30,780,7720,775 113084554395,723,9
Resnet_v2_1010,7700,768Yok 39732868Yok178,344,9
Tablo 1 Belirli CNN modelleri için model nicelemenin avantajları

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)
Wav2letterWER%6,7%7,7 %7,2
DeepSpeech 0.5.1 (yayından kaldırılmış)CER%6,13%43,67 %6,52
YoloV3mAP(IOU=0,5)0,5770,563 0,574
MobileNetV1Doğruluk İlk 10,70620,694 0,6936
MobileNetV2Doğruluk İlk 10,7180,7126 0,7137
MobileBertF1(Tam eşleme)88,81(81,23)2,08(0) 88,73(81,15)
Tablo 2 int16 etkinleştirmeleriyle model nicelemenin avantajları

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.