TinyML nedir? Termostatların, giyilebilir cihazların ve sensör düğümlerinin içinde bulunan, belleği kilobaytlarla ve güç tüketimi miliwattlarla ölçülen mikrodenetleyiciler üzerinde çalışan makine öğrenimidir. Bu yazı TinyML'i diğer edge AI yaklaşımlarından ayıran şeyleri, hangi framework'lerin ve kartların kullanılacağını, öne çıktığı kullanım senaryolarını ve bu cihazların neden ham sensör verisi yerine kompakt çıkarım sonuçlarını MQTT üzerinden yayınlaması gerektiğini ele alıyor.
Sade Bir Dille TinyML
Bir mikrodenetleyici (MCU), tek bir çip üzerindeki küçük bir bilgisayardır: bir işlemci, biraz RAM, flash depolama ve sensörler için çevre birimleri. Masaüstü anlamında bir işletim sistemi, Python çalışma zamanı ve çoğu zaman kayan nokta donanımı yoktur. TinyML, eğitilmiş bir sinir ağını bu ortamda, sürekli ve çoğu zaman pille çalışabilecek kadar küçük ve verimli hale getiren teknikler bütünüdür.
Sonuç, ölçtüğü şeyi anlayan bir sensördür. TinyML mikrofon düğümü ham sesi akıtmak yerine "anahtar kelime algılandı" bildirir. Motor düğümü titreşimi yüksek hızda örnekleyip yüklemek yerine "dengesizlik, güven 0,9" bildirir. TinyML, edge AI'ın bir alt kümesidir; önce daha geniş resmi görmek istiyorsanız edge AI nedir yazısını okuyun.
TinyML'i Tanımlayan Kısıtlar
| Kaynak | Tipik TinyML cihazı | Tipik Linux edge cihazı |
|---|---|---|
| RAM | Onlarca ile yüzlerce KB, bazen birkaç MB PSRAM | Gigabaytlar |
| Depolama | Yüzlerce KB ile birkaç MB flash | Gigabaytlar |
| Hesaplama | Tek veya çift çekirdek, onlarca ile yüzlerce MHz | Çok çekirdekli GHz CPU, bazen GPU/NPU |
| Güç | Miliwattlar; düğme pil veya küçük bir pille çalışabilir | Wattlar |
| Yazılım | Bare metal veya RTOS, C/C++ | Tam işletim sistemi, Python, container'lar |
| Model boyutu | KB aralığı | MB ile GB aralığı |
Bu sınırlar her tasarım seçimini şekillendirir:
- Modeller küçük olmalıdır. On binlerce parametreli küçük evrişimli veya yoğun (dense) ağlar tipiktir.
- Tam sayı aritmetiği. Modeller 8 bit tam sayılara nicemlenir; bu, 32 bit kayan noktaya kıyasla boyutu yaklaşık dörtte birine indirir ve kayan nokta birimi olmayan veya SIMD komutlarına sahip çiplerde hızlı çalışır.
- Statik bellek. Çıkarım sırasında dinamik bellek ayırma yoktur. Framework'ler derleme zamanında boyutlandırılan sabit bir bellek bloğu (tensör arenası) kullanır.
- Öznitelik çıkarımı önemlidir. Ham sinyaller, model onları görmeden önce ses için spektrogram veya titreşim için RMS ve spektral tepeler gibi kompakt özniteliklere dönüştürülür.
Bir TinyML Modeli Nasıl Oluşturulur
İş akışı herhangi bir ML projesine benzer, sonunda ek bir sıkıştırma adımıyla:
- Gerçek ortamdaki gerçek cihazdan etiketli sensör verisi toplayın.
- Öznitelikleri ve küçük bir modeli tasarlayın; genellikle TensorFlow/Keras'ta veya Edge Impulse gibi bir platformda.
- Bir iş istasyonunda veya bulutta eğitin ve doğrulayın.
- Modeli dönüştürün ve nicemleyin; örneğin tam int8 nicemlemeli bir
.tflitedosyasına. - Modeli firmware'e bir bayt dizisi olarak gömün ve çıkarım çalışma zamanını bağlayın.
- Cihaz üzerinde ölçün: çıkarım süresi, RAM kullanımı (arena boyutu), flash kullanımı ve doğruluk.
- Yineleyin. Girdi penceresini veya öznitelik sayısını küçültmek, çoğu zaman ağı küçültmekten daha fazla yardımcı olur.
TinyML Framework'leri ve Araçları
- TensorFlow Lite for Microcontrollers (artık Google'ın LiteRT ailesinin bir parçası): en yaygın kullanılan açık çalışma zamanı. Bir flatbuffer modeli yüklersiniz, yalnızca ihtiyaç duyduğunuz operatörleri kaydedersiniz ve statik bir arena üzerinde bir yorumlayıcı çalıştırırsınız. TensorFlow Lite Micro başlangıç rehberine bakın.
- Edge Impulse: veri toplama, öznitelik mühendisliği, eğitim ve hedef kart için bir C++ kütüphanesi veya Arduino kütüphanesi dışa aktarma için uçtan uca bir platform. Edge Impulse MQTT eğitimine bakın.
- Üretici kütüphaneleri: Arm CMSIS-NN, Cortex-M için optimize edilmiş çekirdekler sağlar; Espressif, ESP-DL ile TensorFlow Lite Micro'nun ESP32 için optimize edilmiş bir portunu (esp-tflite-micro) sunar; diğer silikon üreticilerinin de kendi araç zincirleri vardır.
- Arduino kütüphaneleri ve PlatformIO, hobi kartlarında çıkarımı sensör sürücüleri ve ağ iletişimiyle birleştirmeyi kolaylaştırır.
Popüler TinyML Kartları
ESP32-S3 kartları bağlantılı TinyML için yaygın bir seçimdir; çünkü sinir ağı çekirdekleri için yararlı vektör komutlarını, isteğe bağlı PSRAM'i ve yerleşik Wi-Fi'yi tek bir ucuz çipte birleştirirler. Arduino Nano 33 BLE Sense ve dahili sensörlere sahip benzer Cortex-M4 kartları öğrenmek için popülerdir; Raspberry Pi Pico ailesi ise düşük maliyetli bir Cortex-M seçeneği sunar. Wi-Fi'si olmayan kartlar da sonuçları seri port veya Bluetooth üzerinden bir ağ geçidine göndererek bir IoT sistemine katılabilir. Hızlandırıcılar dahil cihaz sınıfları arasında doğrudan bir karşılaştırma için edge AI donanımı karşılaştırması yazısına bakın.
TinyML Neyde İyidir
- Anahtar kelime algılama ve ses olayları: uyandırma kelimeleri, alarmlar, cam kırılması, anormal makine gürültüsü.
- Hareket ve jest tanıma: giyilebilir cihazlardaki ve aletlerdeki ivmeölçerler ve jiroskoplardan.
- Kestirimci bakım: motorlar, pompalar ve fanlardaki titreşim desenlerini sınıflandırma.
- Basit görü: PSRAM'li kartlarda düşük çözünürlüklü kameralarla insan varlığı, rakam okuma veya "nesne mevcut" tespiti.
- Çevresel algılama: gaz, sıcaklık ve nem desenlerinden doluluk veya anomali çıkarımı.
TinyML; geniş kelime dağarcığı, yüksek çözünürlüklü görüntüler, uzun bağlam veya sık model değişikliği gerektiren görevler için uygun değildir. Bunlar bir ağ geçidinde veya bulutta yapılmalıdır.
TinyML Cihazları Neden MQTT Üzerinden Kompakt Sonuçlar Yayınlar
Bağlantılı TinyML düğümleri aynı anda iki sınırla karşı karşıyadır: çok küçük hesaplama gücü ve pahalı radyo süresi. Pille çalışan cihazlarda radyo çoğu zaman çıkarımdan çok daha fazla enerji harcar. Yalnızca ilginç bir şey olduğunda kısa bir mesaj göndermek, elde edilebilecek en büyük güç ve bant genişliği tasarrufudur.
MQTT bu desene uyar. Protokol ek yükü küçüktür, PubSubClient ve esp-mqtt gibi istemci kütüphaneleri MCU'larda rahatça çalışır ve broker her mesajı ona ihtiyaç duyan herkese dağıtır. Tipik bir TinyML çıkarım mesajı 200 baytın epey altındadır:
{"dev":"fan-12","m":"vib-v2","label":"imbalance","p":0.91,"ms":7}
Kısıtlı cihazlarda kısa anahtarlar bilinçli bir tercihtir. Bunları plant1/hvac/ahu3/fan-12/inference gibi bağlamı taşıyan bir topic ve düğüm çevrimdışı olduğunda gösterge panellerinin bunu bilmesi için Last Will içeren retained bir durum topic'iyle eşleştirin. Alıcı tarafta bir MQTT broker, cihazın onlardan haberi olmadan gösterge panellerinin, uyarı sistemlerinin ve bulut analitiğinin abone olmasını sağlar.
Mikrodenetleyiciler İçin Minimal Bir Yayın Deseni
PubSubClient kullanan bir ESP32'deki ana döngü şöyle görünür. Çıkarım çağrısı bir yer tutucudur; ESP32 üzerinde TinyML eğitimi eksiksiz çalışan bir model gösteriyor.
// Her çıkarımdan sonra çağrılır; yalnızca değişiklikte veya 60 sn'de bir yayınlar.
void reportResult(PubSubClient &mqtt, const char *topic, const char *label, float p) {
static char lastLabel[24] = "";
static unsigned long lastSent = 0;
if (strcmp(label, lastLabel) == 0 && millis() - lastSent < 60000) return;
char payload[96];
snprintf(payload, sizeof(payload),
"{\"dev\":\"fan-12\",\"m\":\"vib-v2\",\"label\":\"%s\",\"p\":%.2f}", label, p);
if (mqtt.publish(topic, payload)) {
strncpy(lastLabel, label, sizeof(lastLabel) - 1);
lastSent = millis();
}
}
Böyle bir düğümü broker.connectmq.com adresindeki herkese açık MQTT test broker'ı üzerinde, 1883 portunda, benzersiz herhangi bir client ID ve benzersiz bir topic önekiyle test edebilirsiniz. Herkese açık alanın herkes tarafından okunabildiğini unutmayın; gerçek dağıtımları 8883 portunda TLS'li bir ConnectMQ broker gibi özel kimlik bilgilerine taşıyın.
Yaygın TinyML Hataları
- Yalnızca laboratuvar verisiyle eğitmek. Sahadaki montaj, sıcaklık ve arka plan gürültüsü sinyali değiştirir.
- Arena boyutunu yok saymak.
AllocateTensors()başarısız olursa arena çok küçüktür; gerçek gereksinimi ölçün ve bir pay ekleyin. - Desteklenmeyen operatörler. Her TensorFlow katmanının bir mikrodenetleyici çekirdeği yoktur. Tasarımınızı onlara göre kurmadan önce dönüştürülmüş modelin operatörlerini kontrol edin.
- Her çıkarımı yayınlamak. Saniyede on kez çalışan bir model saniyede on mesaj yayınlamamalıdır; toplayın veya değişiklikte yayınlayın.
- Model sürümü olmaması. Kablosuz (OTA) bir güncellemeden sonra davranışı izleyebilmek için sürümü her mesaja ekleyin.
TinyML'in bulut analitiği ve LLM ajanlarıyla eksiksiz bir sisteme nasıl yerleştiğini öğrenmek için yapay zeka ve IoT rehberini okuyun.
ConnectMQ ile Başlayın
TinyML düğümünüz tezgâhta çalıştığında ona güvenli bir yuva verin. ConnectMQ, 8883 portunda TLS, MQTT 3.1.1 ve 5.0 desteği ve çıkarım mesajlarının gelişini izlemek için canlı bir topic gezgini sunan barındırılan bir MQTT broker hizmetidir. app.connectmq.com adresinde ücretsiz Serverless planında kredi kartı gerektirmeden bir broker oluşturun.
Sık Sorulan Sorular
TinyML ne için kullanılır?
TinyML, düşük güçlü cihazlarda anahtar kelime algılama, jest tanıma, titreşim tabanlı arıza tespiti ve basit varlık algılama gibi sürekli açık algılama görevleri için kullanılır.
Bir ESP32 TinyML çalıştırabilir mi?
Evet. ESP32 ailesi, özellikle vektör komutları ve PSRAM seçenekleri sunan ESP32-S3, TensorFlow Lite Micro ve Edge Impulse modellerini çalıştırır ve sonuçları Wi-Fi üzerinden MQTT ile yayınlayabilir.
TinyML, edge AI ile aynı şey mi?
TinyML, edge AI'ın mikrodenetleyicilere odaklanan bir parçasıdır. Edge AI ayrıca tek kartlı bilgisayarlar, hızlandırıcılar ve GPU modülleri gibi daha büyük cihazları da kapsar.
TinyML modelleri internete ihtiyaç duyar mı?
Hayır. Çıkarım tamamen cihaz üzerinde çalışır. Bağlantı yalnızca sonuçları bildirmek, yapılandırma almak veya modeli güncellemek için gereklidir.



