Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Model optimizasyonu

Uç cihazlar genellikle sınırlı belleğe veya hesaplama gücüne sahiptir. Bu kısıtlamalar dahilinde çalıştırılabilmeleri için modellere çeşitli optimizasyonlar uygulanabilir. Ek olarak, bazı optimizasyonlar hızlandırılmış çıkarım için özel donanım kullanımına izin verir.

TensorFlow Lite ve TensorFlow Model Optimizasyon Araç Seti , çıkarımı optimize etmenin karmaşıklığını en aza indirecek araçlar sağlar.

Uygulama geliştirme süreciniz sırasında model optimizasyonunu düşünmeniz önerilir. Bu belge, uç donanıma dağıtım için TensorFlow modellerini optimize etmeye yönelik bazı en iyi uygulamaları özetlemektedir.

Modeller neden optimize edilmelidir?

Model optimizasyonunun uygulama geliştirmeye yardımcı olabileceği birkaç ana yol vardır.

Boyut küçültme

Bir modelin boyutunu küçültmek için bazı optimizasyon biçimleri kullanılabilir. Daha küçük modeller aşağıdaki avantajlara sahiptir:

  • Daha küçük depolama boyutu: Daha küçük modeller, kullanıcılarınızın cihazlarında daha az depolama alanı kaplar. Örneğin, daha küçük bir model kullanan bir Android uygulaması, bir kullanıcının mobil cihazında daha az depolama alanı kaplar.
  • Daha küçük indirme boyutu: Daha küçük modeller, kullanıcıların cihazlarına indirmek için daha az zaman ve bant genişliği gerektirir.
  • Daha az bellek kullanımı: Daha küçük modeller çalıştırıldıklarında daha az RAM kullanır, bu da uygulamanızın diğer bölümlerinin kullanması için belleği serbest bırakır ve daha iyi performans ve kararlılığa dönüşebilir.

Niceleme, tüm bu durumlarda bir modelin boyutunu, potansiyel olarak bir miktar doğruluk pahasına azaltabilir. Budama ve kümeleme, indirilecek bir modelin boyutunu daha kolay sıkıştırılabilir hale getirerek azaltabilir.

Gecikme azaltma

Gecikme , belirli bir modelle tek bir çıkarım çalıştırmak için gereken süredir. Bazı optimizasyon biçimleri, bir model kullanarak çıkarım yapmak için gereken hesaplama miktarını azaltarak daha düşük gecikme süresi sağlayabilir. Gecikme, güç tüketimini de etkileyebilir.

Şu anda niceleme, çıkarım sırasında meydana gelen hesaplamaları basitleştirerek gecikmeyi azaltmak için kullanılabilir, potansiyel olarak bir miktar doğruluk pahasına.

Hızlandırıcı uyumluluğu

Edge TPU gibi bazı donanım hızlandırıcılar, doğru şekilde optimize edilmiş modellerle son derece hızlı bir şekilde çıkarım yapabilir.

Genel olarak, bu tür cihazlar, modellerin belirli bir şekilde nicelleştirilmesini gerektirir. Gereksinimleri hakkında daha fazla bilgi edinmek için her bir donanım hızlandırıcının belgelerine bakın.

Ticaret-off

Optimizasyonlar, uygulama geliştirme sürecinde dikkate alınması gereken model doğruluğunda potansiyel olarak değişikliklere neden olabilir.

Doğruluk değişiklikleri, optimize edilen bireysel modele bağlıdır ve önceden tahmin edilmesi zordur. Genellikle, boyut veya gecikme için optimize edilmiş modeller az miktarda doğruluk kaybeder. Uygulamanıza bağlı olarak, bu, kullanıcılarınızın deneyimini etkileyebilir veya etkilemeyebilir. Nadir durumlarda, belirli modeller optimizasyon sürecinin bir sonucu olarak bir miktar doğruluk kazanabilir.

Optimizasyon türleri

TensorFlow Lite şu anda niceleme, budama ve kümeleme yoluyla optimizasyonu desteklemektedir.

Bunlar, TensorFlow Lite ile uyumlu model optimizasyon teknikleri için kaynaklar sağlayan TensorFlow Model Optimization Toolkit'in bir parçasıdır.

niceleme

Niceleme , bir modelin parametrelerini temsil etmek için kullanılan sayıların hassasiyetini azaltarak çalışır, bunlar varsayılan olarak 32 bitlik kayan nokta sayılarıdır. Bu, daha küçük bir model boyutu ve daha hızlı hesaplama ile sonuçlanır.

TensorFlow Lite'ta aşağıdaki niceleme türleri mevcuttur:

teknik Veri gereksinimleri Boyut küçültme doğruluk Desteklenen donanım
Eğitim sonrası float16 niceleme Veri yok 50'ye kadar% Önemsiz doğruluk kaybı CPU, GPU
Eğitim sonrası dinamik aralık niceleme Veri yok % 75'e kadar Doğruluk kaybı CPU, GPU (Android)
Eğitim sonrası tamsayı niceleme Etiketsiz temsili örnek % 75'e kadar Daha küçük doğruluk kaybı CPU, GPU (Android), EdgeTPU, Altıgen DSP
Nicemlemeye duyarlı eğitim Etiketli eğitim verileri % 75'e kadar En küçük doğruluk kaybı CPU, GPU (Android), EdgeTPU, Altıgen DSP

Aşağıda, birkaç model üzerinde eğitim sonrası niceleme ve nicemlemeye duyarlı eğitim için gecikme ve doğruluk sonuçları verilmiştir. Tüm gecikme sayıları, tek bir büyük çekirdekli CPU kullanan Pixel 2 cihazlarda ölçülür. Araç seti geliştikçe, buradaki rakamlar da gelişecektir:

model İlk 1 Doğruluk (Orijinal) İlk 1 Doğruluk (Eğitim Sonrası Ölçülen) İlk 1 Doğruluk (Niceleme Farkında Eğitim) Gecikme (Orijinal) (ms) Gecikme (Eğitim Sonrası Ölçülen) (ms) Gecikme (Quantization Aware Training) (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 N / A 3973 2868 N / A 178.3 44,9
Tablo 1 Belirli CNN modelleri için model nicemlemenin avantajları

Budama

Budama, bir modeldeki tahminleri üzerinde yalnızca küçük bir etkisi olan parametreleri kaldırarak çalışır. Kesilmiş modeller disk üzerinde aynı boyuttadır ve aynı çalışma zamanı gecikmesine sahiptir, ancak daha etkili bir şekilde sıkıştırılabilir. Bu, model indirme boyutunu azaltmak için budamayı kullanışlı bir teknik yapar.

Gelecekte TensorFlow Lite, budanmış modeller için gecikme azaltma sağlayacaktır.

Kümeleme

Kümeleme , bir modeldeki her katmanın ağırlıklarını önceden tanımlanmış sayıda küme halinde gruplayarak ve ardından her bir kümeye ait ağırlıkların ağırlık merkez değerlerini paylaşarak çalışır. Bu, bir modeldeki benzersiz ağırlık değerlerinin sayısını azaltarak karmaşıklığını azaltır.

Sonuç olarak, kümelenmiş modeller daha etkili bir şekilde sıkıştırılabilir ve bu da budamaya benzer dağıtım avantajları sağlar.

Geliştirme iş akışı

Başlangıç ​​noktası olarak, barındırılan modellerdeki modellerin uygulamanız için çalışıp çalışmadığını kontrol edin. Değilse, genel olarak uygulanabilir olduğundan ve eğitim verisi gerektirmediğinden, kullanıcıların eğitim sonrası niceleme aracıyla başlamasını öneririz.

Doğruluk ve gecikme hedeflerinin karşılanmadığı veya donanım hızlandırıcı desteğinin önemli olduğu durumlar için nicelemeye duyarlı eğitim daha iyi bir seçenektir. TensorFlow Model Optimizasyon Araç Seti altında ek optimizasyon tekniklerine bakın.

Model boyutunuzu daha da küçültmek istiyorsanız, modellerinizi nicelleştirmeden önce budamayı ve / veya kümelemeyi deneyebilirsiniz.