TinyML Benchmark: Tamamen Bağlantılı Sinir Ağları

Tensorflow Lite sinir ağlarını çalıştırmak için popüler mikrodenetleyici kartlarının ne kadar hızlı olduğunu hiç düşündünüz mü? Bu yazıda, Tamamen bağlantılı sinir ağlar için bu bilgilere bakacağız.

tinyml benchmark

Bu yazıda Tensorflow Lite Sinir Ağlarını çalıştırma göreviyle ilgili farklı geliştirme kartlarını karşılaştıracağız.

Listedeki geliştirme kartları:

  • Arduino Nano 33 BLE Sense (Cortex M4 @ 64 MHz)
  • ESP32 (Xtensa çift çekirdekli @ 240 MHz)
  • Tüy M4 Ekspres (Cortex M4F @ 200 MHz)
  • STM32 Nucleo H743ZI2 (Cortex M7 @ 480 MHz)
  • Arduino Portenta (Cortex M7 @ 480 MHz)
  • Teensy 4.0 (Cortex M7 @ 600 MHz)
  • Raspberry Pi Pico (Rp2040 / Cortex M0+ @ 125 MHz)

Gördüğünüz gibi, CPU ve saat frekansı açısından farklılık gösterirler.

Karşılaştırmalı ağ topolojisi, 3 tür tam bağlantılı ağdır:

  • 10 nöronlu 1 katman
  • Biri 10 nöronlu, diğeri 50 nöronlu 2 katman
  • Her biri 10 nöron içeren 10 katman

Tahmin Süreleri

Aşağıdaki çizelgeler, lineer ve logaritmik ölçekte her bir geliştirme kartı için farklı ağların çıkarım süresini (mikrosaniye cinsinden) göstermektedir.

tinyml benchmark

Tam bağlantılı kıyaslamalar Çıkarım süresi doğrusal ölçeği, Rpi Pico dahil

tinyml benchmark

Tam bağlantılı kıyaslamalar Rpi Pico olmadan çıkarım süresi doğrusal ölçeği

tinyml benchmark

Tam bağlantılı karşılaştırma ölçütleri En yavaşsız çıkarım süresi, doğrusal ölçeği

tinyml benchmark

Tam bağlantılı kıyaslamalar Çıkarım zaman günlüğü ölçeği, Rpi Pico dahil

Karar nedir?

  • Teensy 4.0, daha hızlı saatinden bekleyebileceğiniz gibi en hızlısıdır.
  • Arduino Portenta ve Nucleo H743ZI2, aynı aileden iki CPU’yu paylaştıklarından oldukça eşittir, ancak Nucleo tüm topolojilerde daha hızlıdır.
  • Fiyat/performans olarak bakarsak, ESP32 hala harika bir performans / fiyat oranına sahip.
  • Raspberry Pi Pico, en yavaş saate sahip olmamasına rağmen en yavaş olanıdır (ancak Arduino Nano 33 BLE Sense, Cortex M4 CPU’ya sahiptir)

İşlenmemiş Veriler

Geliştirme KartıVeri SeticlfTahmin Süresi
Arduino Nano 33Meme kanseriFC 1 x 10138.71
Arduino Nano 33Meme kanseriFC 10 x 10472.11
Arduino Nano 33Meme kanseriFC 10+50286.86
Arduino Nano 33RakamlarFC 1 x 10390.25
Arduino Nano 33RakamlarFC 10 x 10719.08
Arduino Nano 33RakamlarFC 10+50589.75
Arduino Nano 33IrisFC 1 x 10113.61
Arduino Nano 33IrisFC 10 x 10442.75
Arduino Nano 33IrisFC 10+50266.54
Arduino Nano 33WineFC 1 x 10130.1
Arduino Nano 33WineFC 10 x 10460.02
Arduino Nano 33WineFC 10+50283.82
Arduino Portenta M7Meme kanseriFC 1 x 1013.75
Arduino Portenta M7Meme kanseriFC 10 x 1055.16
Arduino Portenta M7Meme kanseriFC 10+5031.72
Arduino Portenta M7RakamlarFC 1 x 1026.96
Arduino Portenta M7RakamlarFC 10 x 1069.54
Arduino Portenta M7RakamlarFC 10+5051.56
Arduino Portenta M7IrisFC 1 x 108.71
Arduino Portenta M7IrisFC 10 x 1049.85
Arduino Portenta M7IrisFC 10+5027.35
Arduino Portenta M7WineFC 1 x 1010.94
Arduino Portenta M7WineFC 10 x 1052.11
Arduino Portenta M7WineFC 10+5029.55
ESP32 Dev ModuleMeme kanseriFC 1 x 1036.31
ESP32 Dev ModuleMeme kanseriFC 10 x 10125.03
ESP32 Dev ModuleMeme kanseriFC 10+5074.86
ESP32 Dev ModuleRakamlarFC 1 x 1077.25
ESP32 Dev ModuleRakamlarFC 10 x 10172.94
ESP32 Dev ModuleRakamlarFC 10+50130.61
ESP32 Dev ModuleIrisFC 1 x 1020.83
ESP32 Dev ModuleIrisFC 10 x 10109.23
ESP32 Dev ModuleIrisFC 10+5061.17
ESP32 Dev ModuleWineFC 1 x 1028.89
ESP32 Dev ModuleWineFC 10 x 10117.95
ESP32 Dev ModuleWineFC 10+5069.28
Feather M4 Express {opt=fastest,speed=200}Meme kanseriFC 1 x 1031.81
Feather M4 Express {opt=fastest,speed=200}Meme kanseriFC 10 x 10132.66
Feather M4 Express {opt=fastest,speed=200}Meme kanseriFC 10+5079.13
Feather M4 Express {opt=fastest,speed=200}RakamlarFC 1 x 1069.89
Feather M4 Express {opt=fastest,speed=200}RakamlarFC 10 x 10167.29
Feather M4 Express {opt=fastest,speed=200}RakamlarFC 10+50132.14
Feather M4 Express {opt=fastest,speed=200}IrisFC 1 x 1017.79
Feather M4 Express {opt=fastest,speed=200}IrisFC 10 x 10118.9
Feather M4 Express {opt=fastest,speed=200}IrisFC 10+5067.17
Feather M4 Express {opt=fastest,speed=200}WineFC 1 x 1023.84
Feather M4 Express {opt=fastest,speed=200}WineFC 10 x 10124.46
Feather M4 Express {opt=fastest,speed=200}WineFC 10+5072.93
NUCLEO H743ZI2 {opt=o3}Meme kanseriFC 1 x 108.5
NUCLEO H743ZI2 {opt=o3}Meme kanseriFC 10 x 1034.19
NUCLEO H743ZI2 {opt=o3}Meme kanseriFC 10+5020.18
NUCLEO H743ZI2 {opt=o3}RakamlarFC 1 x 1018.08
NUCLEO H743ZI2 {opt=o3}RakamlarFC 10 x 1044.16
NUCLEO H743ZI2 {opt=o3}RakamlarFC 10+5033.8
NUCLEO H743ZI2 {opt=o3}IrisFC 10 x 1031.51
NUCLEO H743ZI2 {opt=o3}IrisFC 10+5017.8
NUCLEO H743ZI2 {opt=o3}WineFC 10 x 1032.57
NUCLEO H743ZI2 {opt=o3}WineFC 10+5019.06
Raspberry Pi PicoMeme kanseriFC 1 x 10872.85
Raspberry Pi PicoMeme kanseriFC 10 x 103369.54
Raspberry Pi PicoMeme kanseriFC 10+502413.44
Raspberry Pi PicoRakamlarFC 1 x 101982.31
Raspberry Pi PicoRakamlarFC 10 x 104503.25
Raspberry Pi PicoRakamlarFC 10+504314.19
Raspberry Pi PicoIrisFC 1 x 10313.77
Raspberry Pi PicoIrisFC 10 x 102801.82
Raspberry Pi PicoIrisFC 10+501953.96
Raspberry Pi PicoWineFC 1 x 10509.76
Raspberry Pi PicoWineFC 10 x 103021.03
Raspberry Pi PicoWineFC 10+502176.92
Teensy 4.0Meme kanseriFC 1 x 105.16
Teensy 4.0Meme kanseriFC 10 x 1020.15
Teensy 4.0Meme kanseriFC 10+5012.32
Teensy 4.0RakamlarFC 10 x 1026.09
Teensy 4.0RakamlarFC 10+5021.01
Teensy 4.0IrisFC 1 x 103.14
Teensy 4.0IrisFC 10 x 1018.12
Teensy 4.0IrisFC 10+5011.13
Teensy 4.0WineFC 1 x 103.86
Teensy 4.0WineFC 10 x 1018.92
Teensy 4.0WineFC 10+5011.43