Karşılaştırma araçları
LiteRT karşılaştırma araçları, şu anda aşağıdakilere ilişkin istatistikleri aşağıdaki önemli performans metriklerini görebilirsiniz:
- Başlatma süresi
- Isınma durumunun çıkarım süresi
- Sabit durumun çıkarım zamanı
- Başlatma süresi sırasında bellek kullanımı
- Toplam bellek kullanımı
Karşılaştırma araçları, Android ve iOS için karşılaştırma uygulaması olarak ve yerel komut satırı ikili programları ve hepsi aynı temel performansı paylaşır ölçüm mantığına bakalım. Kullanılabilir seçeneklerin ve çıkış biçimlerinin şu şekilde olduğunu unutmayın: çalışma zamanı ortamındaki farklılıklardan dolayı biraz farklı olabilir.
Android karşılaştırma uygulaması
Karşılaştırma aracını Android'de kullanmak için iki seçenek vardır. Biri yerel karşılaştırma ikili programı, bir diğeri ise Android karşılaştırma uygulaması, modelin uygulamada nasıl performans göstereceğini daha iyi gösteren bir göstergedir. İkisinden biri bu nedenle, karşılaştırma aracındaki sayılar, çıkarım yapmak için kullanabilirsiniz.
Bu Android karşılaştırma uygulamasının kullanıcı arayüzü yok. adb
kullanarak yükleyip çalıştırın
komutuna dahil etmek ve sonuçları almak için adb logcat
komutunu kullanın.
Uygulamayı indirme veya derleme
Aşağıdaki bağlantıları kullanarak, gecelik önceden oluşturulmuş Android karşılaştırma uygulamalarını indirin:
TF işlemlerini destekleyen Android karşılaştırma uygulamaları konusunda Flex delege aracılığıyla aşağıdaki bağlantıları kullanın:
Aşağıdakileri izleyerek uygulamayı kaynaktan da oluşturabilirsiniz: talimatları inceleyin.
Karşılaştırma hazırlayın
Karşılaştırma uygulamasını çalıştırmadan önce uygulamayı yükleyin ve model dosyasını aşağıdaki adımları uygulayın:
adb install -r -d -g android_aarch64_benchmark_model.apk
adb push your_model.tflite /data/local/tmp
Karşılaştırma çalıştır
adb shell am start -S \
-n org.tensorflow.lite.benchmark/.BenchmarkModelActivity \
--es args '"--graph=/data/local/tmp/your_model.tflite \
--num_threads=4"'
graph
zorunlu bir parametredir.
graph
:string
TFLite model dosyasının yolu.
Karşılaştırmayı çalıştırmak için daha fazla isteğe bağlı parametre belirtebilirsiniz.
num_threads
:int
(varsayılan=1)
TFLite çevirmeni çalıştırmak için kullanılacak iş parçacığı sayısı.use_gpu
:bool
(varsayılan=yanlış)
GPU yetkisini kullanın.use_xnnpack
:bool
(varsayılan=false
)
Tekliflerinizi otomatikleştirmek ve optimize etmek için XNNPACK delegesi.
Kullandığınız cihaza bağlı olarak bu seçeneklerden bazıları veya hiçbir etkisi yoktur. Referans parametreler daha fazla performans parametresine göz atın.
logcat
komutunu kullanarak sonuçları görüntüleyin:
adb logcat | grep "Inference timings"
Karşılaştırma sonuçları şu şekilde raporlanır:
... tflite : Inference timings in us: Init: 5685, First inference: 18535, Warmup (avg): 14462.3, Inference (avg): 14575.2
Yerel karşılaştırma ikili programı
Karşılaştırma aracı ayrıca yerel ikili program (benchmark_model
) olarak sunulur. Şunları yapabilirsiniz:
Bu aracı Linux, Mac, yerleşik cihazlar ve Mac'te bir kabuk komut satırından
Android cihazlar.
İkili dosyayı indirme veya derleme
Aşağıdaki adımları uygulayarak gecelik önceden oluşturulmuş yerel komut satırı ikili programlarını indirin: aşağıdaki bağlantılardan birini takip edin:
TF işlemlerini destekleyen, gecelik önceden oluşturulmuş ikili programlara gelin Flex delege aracılığıyla aşağıdaki bağlantıları kullanın:
Ayrıca, yerel karşılaştırma ikili programını kaynak Google Drive'a ekleyin.
bazel build -c opt //tensorflow/lite/tools/benchmark:benchmark_model
Android NDK araç zinciriyle derleme yapmak için derleme ortamını kurmanız gerekir önce bunu takip edin rehberi kullanabilir veya Docker görüntüsünün bu dosyadaki kılavuz.
bazel build -c opt --config=android_arm64 \
//tensorflow/lite/tools/benchmark:benchmark_model
Karşılaştırma çalıştır
Bilgisayarınızda karşılaştırma işlemleri çalıştırmak için kabuktan ikili programı çalıştırın.
path/to/downloaded_or_built/benchmark_model \
--graph=your_model.tflite \
--num_threads=4
Her bir URL için aynı parametreler ile başlar.
Model operasyonları için profil oluşturma
Karşılaştırma modeli ikili programı, model işlemlerinin profilini çıkarmanıza ve model çalışmalarının
yürütme süresi vardır. Bunu yapmak için bayrağı geçirin
Çağrı sırasında --enable_op_profiling=true
adlı kullanıcıdan benchmark_model
adlı kullanıcıya. Ayrıntılar:
açıklandı
burada bulabilirsiniz.
Tek çalıştırmada birden fazla performans seçeneği için yerel karşılaştırma ikilisi
Kullanışlı ve basit bir C++ ikili programı da
birden fazla performans seçeneğini karşılaştırma
elde edebiliyorlar. Bu ikili program, daha önce belirtilen karşılaştırma aracına göre derlenir
performans karşılaştırması yapabilen bir reklam grubudur. Paydaşlar
aynı derleme/yükleme/çalıştırma işlemidir, ancak bu ikili programın BUILD hedefi adı
benchmark_model_performance_options
ve bazı ek parametreler gerekir.
Bu ikili program için önemli parametrelerden biri şudur:
perf_options_list
: string
(varsayılan='tümü')
Karşılaştırma için TFLite performans seçeneklerinin virgülle ayrılmış listesi.
Bu araç için gecelik önceden oluşturulmuş ikili programlar aşağıda listelenmiştir:
iOS karşılaştırma uygulaması
iOS cihazda karşılaştırma çalıştırmak için uygulamayı
kaynak.
LiteRT model dosyasını
benchmark_data
dizinini seçin ve benchmark_params.json
dosyasını değiştirin. Bu
dosyalar uygulamaya paketlenir ve uygulama, dizinden veri okur. Ziyaret edin:
"the"
iOS karşılaştırma uygulaması
başlıklı bölüme bakın.
İyi bilinen modellerle ilgili performans karşılaştırmaları
Bu bölümde, iyi çalışan LiteRT performans karşılaştırmaları listelenmektedir bilinen modeller için kullanıma sunulmuştur.
Android performans karşılaştırmaları
Bu performans karşılaştırma sayıları yerel karşılaştırma ikili programı ile karşılaştırın.
Android karşılaştırmalarında, CPU benzeşimi cihazda büyük çekirdekleri kullanacak şekilde ayarlanmıştır kullanarak varyansı azaltmak için (bkz. ayrıntıları inceleyin).
Modellerin indirilmiş ve sıkıştırılmış biçimde açıldığı varsayılır.
/data/local/tmp/tflite_models
dizini. Karşılaştırma ikili programı,
bu talimatları
ve /data/local/tmp
dizininde olduğu varsayılmıştır.
Karşılaştırmayı çalıştırmak için:
adb shell /data/local/tmp/benchmark_model \
--num_threads=4 \
--graph=/data/local/tmp/tflite_models/${GRAPH} \
--warmup_runs=1 \
--num_runs=50
GPU yetkisiyle çalışmak için --use_gpu=true
değerini ayarlayın.
Aşağıdaki performans değerleri Android 10'da ölçülür.
Model Adı | Cihaz | CPU, 4 iş parçacığı | GPU |
---|---|---|---|
Mobilenet_1.0_224(float) | Pixel 3 | 23,9 ms. | 6,45 ms. |
Pixel 4 | 14,0 ms. | 9,0 ms. | |
Mobilenet_1.0_224 (miktar) | Pixel 3 | 13,4 ms. | --- |
Pixel 4 | 5,0 ms. | --- | |
NASNet mobil | Pixel 3 | 56 ms. | --- |
Pixel 4 | 34,5 ms. | --- | |
SqueezeNet | Pixel 3 | 35,8 ms. | 9,5 ms. |
Pixel 4 | 23,9 ms. | 11,1 ms. | |
Inception_ResNet_V2 | Pixel 3 | 422 ms. | 99,8 ms. |
Pixel 4 | 272,6 ms. | 87,2 ms. | |
Inception_V4 | Pixel 3 | 486 ms. | 93 ms. |
Pixel 4 | 324,1 ms. | 97,6 ms. |
iOS performans karşılaştırmaları
Bu performans karşılaştırma sayıları iOS karşılaştırma uygulaması.
iOS karşılaştırmalarını çalıştırmak için karşılaştırma uygulaması uygun
model ve benchmark_params.json
, num_threads
değerini 2 olarak ayarlayacak şekilde değiştirildi. Kullanılacak
GPU delegesi, "use_gpu" : "1"
ve "gpu_wait_type" : "aggressive"
seçenekleri
benchmark_params.json
grubuna da eklendi.
Model Adı | Cihaz | CPU, 2 iş parçacığı | GPU |
---|---|---|---|
Mobilenet_1.0_224(float) | iPhone XS | 14,8 ms. | 3,4 ms. |
Mobilenet_1.0_224 (miktar) | iPhone XS | 11 ms. | --- |
NASNet mobil | iPhone XS | 30,4 ms. | --- |
SqueezeNet | iPhone XS | 21,1 ms. | 15,5 ms. |
Inception_ResNet_V2 | iPhone XS | 261,1 ms | 45,7 ms. |
Inception_V4 | iPhone XS | 309 ms. | 54,4 ms. |
LiteRT dahili bilgilerini izleme
Android'de LiteRT dahili bilgilerini izleme
Bir Android uygulamasının LiteRT çevirmenini tarafından sağlanan dahili etkinlikler yakalayan: Android izleme araçları. Android'deki aynı etkinliklerdir Trace API sayesinde Java/Kotlin kodundan yakalanan etkinlikler LiteRT ile birlikte görüntülenir dahili etkinlikler olabilir.
Etkinliklere ilişkin bazı örnekler:
- Operatör çağrısı
- Yetki verilmiş kullanıcıya göre yapılan değişikliğin grafiğini çizme
- Tensor ayırma
İzleri yakalamayla ilgili farklı seçeneklerin yanı sıra bu kılavuzda, Studio CPU Profiler ve Sistem İzleme uygulaması. Referans Perfetto komut satırı aracı veya Systrace komut satırı aracı diğer seçenekler için.
Java koduna izleme etkinlikleri ekleme
Bu,
Görüntü Sınıflandırma
örnek uygulama. LiteRT çevirmeni,
recognizeImage/runInference
bölümü. Bu adım isteğe bağlıdır, ancak
çıkarım çağrısının yapıldığı yeri belirtin.
Trace.beginSection("recognizeImage");
...
// Runs the inference call.
Trace.beginSection("runInference");
tflite.run(inputImageBuffer.getBuffer(), outputProbabilityBuffer.getBuffer().rewind());
Trace.endSection();
...
Trace.endSection();
LiteRT izlemeyi etkinleştir
LiteRT izlemeyi etkinleştirmek için Android sistem özelliğini ayarlayın
Android uygulamasını başlatmadan önce 1'e debug.tflite.trace
.
adb shell setprop debug.tflite.trace 1
LiteRT çevirmeni başlatıldığında bu özellik ayarlanmışsa çevirmenden gelen önemli etkinlikler (ör. operatör çağrısı) izlenir.
Tüm izleri yakaladıktan sonra, özellik değerini ayarlayarak izlemeyi devre dışı bırakın 0 olarak ayarladı.
adb shell setprop debug.tflite.trace 0
Android Studio CPU Profil Aracı
İzleri şunlarla yakalayın: Android Studio CPU Profil Aracı şu adımları uygulayın:
Çalıştır > Üst menülerden "uygulama" profilini seçin.
Profiler penceresi göründüğünde CPU zaman çizelgesindeki herhangi bir yeri tıklayın.
"Sistem Çağrılarını İzle"yi seçin arasında daha fazla seçenek var.
"Kaydet"e basın. düğmesini tıklayın.
'Durdur'a basın düğmesini tıklayın.
İz sonucunu inceleyin.
Bu örnekte, bir ileti dizisindeki etkinliklerin hiyerarşisini ve istatistikleri her operatör süresi için geçerlidir ve ayrıca arayüzdeki tüm uygulamanın veri akışını ileti dizileri.
Sistem İzleme uygulaması
Aşağıdaki adımları uygulayarak izleri Android Studio olmadan yakalayın: Sistem İzleme uygulaması.
Bu örnekte, aynı TFLite etkinlikleri yakalanıp Perfetto'ya kaydedildi. veya Systrace biçimini kullanabilirsiniz. Yakalanan İzleme dosyaları Perfetto kullanıcı arayüzünde açılabilir.
iOS'te LiteRT dahili bilgilerini izleme
Bir iOS uygulamasının LiteRT çevirmenini tarafından sağlanan dahili etkinlikler yakalayan: Enstrümanlar aracını kullanabilirsiniz. Bunlar, iOS signpost Böylece, Swift/Objective-C kodundan yakalanan etkinlikler birlikte görünür. .
Etkinliklere ilişkin bazı örnekler:
- Operatör çağrısı
- Yetki verilmiş kullanıcıya göre yapılan değişikliğin grafiğini çizme
- Tensor ayırma
LiteRT izlemeyi etkinleştir
Aşağıdaki adımları uygulayarak debug.tflite.trace
ortam değişkenini ayarlayın:
Ürün > Şema > Şeması Düzenle... seçeneğini tıklayın.
"Profil"i tıklayın tıklayın.
"Çalıştır işleminin bağımsız değişkenlerini ve ortam değişkenlerini kullan" seçeneğinin işaretini kaldırın onay kutusunu işaretleyin.
"Ortam Değişkenleri" altına
debug.tflite.trace
ekleyin bölümüne bakın.
iOS uygulamasının profilini oluştururken LiteRT etkinliklerini hariç tutmak isterseniz ortam değişkenini kaldırarak izlemeyi devre dışı bırakın.
XCode Aletleri
Aşağıdaki adımları uygulayarak izleri yakalayın:
Ürün > Profil'i seçin.
Araçlar aracı başlatıldığında profil oluşturma şablonları arasından Logging'i (Günlük Kaydı) tıklayın.
"Başlat"a basın düğmesini tıklayın.
'Durdur'a basın düğmesini tıklayın.
"os_signpost"u tıklayın (OS Logging alt sistem öğelerini genişletin.)
"org.tensorflow.lite"ı tıklayın OS Logging alt sistemi.
İz sonucunu inceleyin.
Bu örnekte, her bir etkinlik ve istatistik hiyerarşisini operatör zamanı.
İzleme verilerini kullanma
İzleme verileri, performans sorunlarını belirlemenize olanak tanır.
Profil oluşturucudan edinebileceğiniz analizlere ve performansı iyileştirecek olası çözümler:
- Kullanılabilir CPU çekirdeği sayısı çıkarım sayısından azsa CPU planlama ek yükü, ortalamanın altında bir performansa neden olabilir. Bu gibi durumlarda tekrarlanmaması için uygulamanızda CPU'yu yoğun olarak kullanan diğer görevleri model çıkarımınızla çakışma veya çevirmen sayısını ayarlama ileti dizileri.
- Operatörler için yetki verilmiş değilse model grafiğinin bazı bölümleri olması beklenen donanım hızlandırıcı yerine CPU'da yürütülür. Siz desteklenmeyen operatörleri, desteklenen benzer operatörlerle değiştirebilirsiniz.