Mikrodenetleyicilerin sınırlı RAM ve depolama alanı vardır, bu da makine öğrenimi modellerinin boyutlarına kısıtlamalar getirir. Ek olarak, Mikrodenetleyiciler için TensorFlow Lite şu anda sınırlı sayıda işlem alt kümesini desteklemektedir, dolayısıyla tüm model mimarileri mümkün değildir.
Bu belge, bir TensorFlow modelini mikro denetleyicilerde çalışacak şekilde dönüştürme sürecini açıklamaktadır. Ayrıca desteklenen operasyonların ana hatlarını çizer ve sınırlı belleğe sığacak bir model tasarlama ve eğitme konusunda bazı rehberlik sağlar.
Bir modeli oluşturmanın ve dönüştürmenin uçtan uca, çalıştırılabilir bir örneği için Merhaba Dünya örneğine bakın.
Model dönüşümü
Eğitimli bir TensorFlow modelini mikro denetleyicilerde çalışacak şekilde dönüştürmek için TensorFlow Lite dönüştürücü Python API'sini kullanmalısınız. Bu, modeli bir FlatBuffer
dönüştürecek, model boyutunu küçültecek ve TensorFlow Lite işlemlerini kullanacak şekilde değiştirecektir.
Mümkün olan en küçük model boyutunu elde etmek için eğitim sonrası kuantizasyon kullanmayı düşünmelisiniz.
C dizisine dönüştürme
Birçok mikrodenetleyici platformunun yerel dosya sistemi desteği yoktur. Programınızdaki bir modeli kullanmanın en kolay yolu, onu bir C dizisi olarak eklemek ve programınıza derlemektir.
Aşağıdaki unix komutu, char
dizisi olarak TensorFlow Lite modelini içeren bir C kaynak dosyası oluşturacaktır:
xxd -i converted_model.tflite > model_data.cc
Çıktı aşağıdakine benzer görünecektir:
unsigned char converted_model_tflite[] = {
0x18, 0x00, 0x00, 0x00, 0x54, 0x46, 0x4c, 0x33, 0x00, 0x00, 0x0e, 0x00,
// <Lines omitted>
};
unsigned int converted_model_tflite_len = 18200;
Dosyayı oluşturduktan sonra programınıza ekleyebilirsiniz. Gömülü platformlarda daha iyi bellek verimliliği sağlamak için dizi bildirimini const
olarak değiştirmek önemlidir.
Programınıza bir modelin nasıl dahil edileceğine ve kullanılacağına ilişkin bir örnek için Merhaba Dünya örneğinde hello_world_test.cc
bakın.
Model mimarisi ve eğitimi
Mikrodenetleyicilerde kullanılmak üzere bir model tasarlarken model boyutunu, iş yükünü ve kullanılan işlemleri dikkate almak önemlidir.
Modeli boyutu
Bir model, hem ikili dosya olarak hem de çalışma zamanında, programınızın geri kalanıyla birlikte hedef cihazınızın belleğine sığacak kadar küçük olmalıdır.
Daha küçük bir model oluşturmak için mimarinizde daha az ve daha küçük katmanlar kullanabilirsiniz. Bununla birlikte, küçük modellerin yetersiz uyumdan muzdarip olma olasılığı daha yüksektir. Bu, birçok sorun için belleğe sığacak en büyük modeli denemek ve kullanmak mantıklı olduğu anlamına gelir. Ancak daha büyük modellerin kullanılması işlemci iş yükünün artmasına da yol açacaktır.
İş yükü
Modelin boyutu ve karmaşıklığının iş yükü üzerinde etkisi vardır. Büyük, karmaşık modeller daha yüksek görev döngüsüne neden olabilir; bu, cihazınızın işlemcisinin çalışırken daha fazla, boşta daha az zaman harcadığı anlamına gelir. Bu, uygulamanıza bağlı olarak sorun olabilecek güç tüketimini ve ısı çıkışını artıracaktır.
Operasyon desteği
Mikrodenetleyiciler için TensorFlow Lite şu anda TensorFlow işlemlerinin sınırlı bir alt kümesini desteklemektedir ve bu da çalıştırılması mümkün olan model mimarilerini etkilemektedir. Belirli mimarilere yönelik hem referans uygulamaları hem de optimizasyonlar açısından operasyon desteğini genişletmek için çalışıyoruz.
Desteklenen işlemler micro_mutable_ops_resolver.h
dosyasında görülebilir.