TensorFlow Lite, sınırlı hesaplama kaynaklarına sahip mobil ve gömülü cihazlarda makine öğrenimi modellerini çalıştırmak için Google tarafından geliştirilen TensorFlow çerçevesinin hafif bir sürümüdür. Tam TensorFlow’un aksine TFLite, eğitim desteği olmadan hızlı çıkarım için optimize edilmiş özel bir yorumlayıcı ve .tflite formatı kullanır. TensorFlow Lite Guide, 2025’e göre, çerçeve Android, iOS ve Linux’ta çalışır ve 4 milyardan fazla cihazda kullanılır. TensorFlow Lite niceleme, NNAPI, GPU ve Core ML delegeleri aracılığıyla donanım hızlandırmasını destekler.
Önemli noktalar
TensorFlow Lite, sınırlı kaynaklara sahip cihazlarda makine öğrenimi modellerini çalıştırmak için özel bir çalışma zamanıdır. Tam TensorFlow’un aksine TFLite, eğitim veya geri yayılımı desteklemez — yalnızca çıkarım. Bu, kütüphanenin ikili boyutunun minimumda tutulmasını sağlar: Android’de temel yorumlayıcı için yaklaşık 300 KB.
TFLite mimarisi, FlatBuffers tabanlı .tflite formatı etrafında inşa edilmiştir. FlatBuffers, ayrıştırma aşaması olmadan verilere doğrudan erişim sağlar; bu, sınırlı belleğe sahip mobil cihazlar için kritiktir. .tflite formatındaki bir model, hesaplama grafiğini, ağırlıkları ve meta verileri tek bir ikili dosyada içerir.
Google I/O 2024’e göre TFLite, Google Photos, Gboard, YouTube ve diğer Google uygulamalarında 4 milyardan fazla cihazda kullanılmaktadır. Çerçeve, CNN, RNN, LSTM, Transformer ve delegeler aracılığıyla özel işlemler dahil tüm ana mimarileri destekler.
TFLite çalışma zamanı dört bileşenden oluşur. TFLite Converter, TensorFlow’dan (SavedModel, Keras, ConcreteFunction) bir model alır ve isteğe bağlı optimizasyonla .tflite formatına dönüştürür. TFLite Interpreter, .tflite dosyasını yükler ve tensörleri ve belleği yöneterek çıkarımı gerçekleştirir.
Delegeler, işlem yürütmeyi özel donanıma aktaran bileşenlerdir. GPU Delegate OpenGL ES ve Metal kullanır, NNAPI Delegate Android Neural Networks API’sini kullanır, Core ML Delegate Apple Core ML’yi kullanır. XNNPACK Delegate, ARM CPU’da yürütmeyi optimize eder. Her delege belirli bir operatör kümesini destekler.
Dördüncü bileşen, tipik görevler için üst düzey API’ler sağlayan Task Library’dir: görüntü sınıflandırma, nesne tespiti, segmentasyon, NLU. Task Library, Yorumlayıcı üzerinde çalışır ve tensör yönetiminin ayrıntılarını gizler.
TFLite üç düzey niceleme destekler. Tam tamsayı INT8 nicelemesi, ağırlıkları ve etkinleştirmeleri FP32’den 8 bitlik tamsayılara dönüştürür. Model boyutu 4 kat küçülür ve INT8 destekli cihazlarda çıkarım hızı 3 kata kadar artar. FP16 nicelemesi, minimum doğruluk kaybıyla boyutu yarıya indirir.
Dinamik niceleme ağırlıkları INT8’de tutar ancak hesaplamaları FP32’de gerçekleştirir. Bu mod, doğruluğa duyarlı modeller için uygundur ve kaliteyi korurken 4 kata kadar boyut küçültme sağlar. Google ML Performance Benchmarks’a göre, NLP modelleri için dinamik niceleme önerilir.
| Mod | Ağırlık Türü | Etkinleştirme Türü | Boyut Küçültme |
|---|---|---|---|
| FP32 (niceleme yok) | FP32 | FP32 | 1x |
| FP16 | FP16 | FP32 | 2x |
| Dinamik INT8 | INT8 | FP32 | 4x |
| Tam INT8 | INT8 | INT8 | 4x |
Android’de ana hızlandırma mekanizması, Android Neural Networks API aracılığıyla işlem yürütmeyi NPU, DSP veya GPU’ya aktaran NNAPI Delegate’dir. NNAPI, Android 8.1+ cihazlarda kullanılabilir ve INT8 ile FP16 hesaplamalarını destekler. Android için GPU Delegate, OpenGL ES 3.1+ ve Vulkan kullanır.
iOS’ta hızlandırma, TFLite işlemlerini Core ML formatına çeviren ve Apple Neural Engine’de yürüten Core ML Delegate aracılığıyla sağlır. Apple ML Benchmarking’e göre, Core ML Delegate kullanımı iPhone 15 Pro’da çıkarımı CPU’ya kıyasla 4 kata kadar hızlandırır. iOS için GPU Delegate, Metal Performance Shaders kullanır.
XNNPACK Delegate, mobil işlemciler için optimize edilmiş ARM CPU için çapraz platform bir çözümdür. XNNPACK, FP32, FP16 ve INT8 işlemlerini destekler ve özel donanım gerektirmez. Tüm cihazlar için temel delege olarak önerilir.
Dağıtım süreci üç adım içerir. İlk olarak TFLite Converter aracılığıyla model .tflite’a dönüştürülür. İkinci olarak .tflite dosyası uygulama kaynaklarına dahil edilir. Android için dosya assets klasörüne yerleştirilir; iOS için Xcode aracılığıyla uygulama paketine eklenir. Üçüncü olarak Yorumlayıcı başlatılır ve çıkarım gerçekleştirilir.
Dinamik model güncellemeleri için Google, Firebase ML Model Downloading veya buluttan özel indirme mekanizması kullanılmasını önerir. Güncellenen .tflite dosyası yerel depolamaya kaydedilir ve bir sonraki başlatmada Yorumlayıcı’ya yüklenir.
Dağıtım sırasında .tflite dosya boyutunu dikkate almak önemlidir. Google Play, APK boyutunu 200 MB ile sınırlar. 50 MB’tan büyük modeller için Android App Bundle kullanılması veya modelin Play Asset Delivery aracılığıyla ayrı olarak indirilmesi önerilir.
Android’de Java API ile model yükleme ve çalıştırma örneği. .tflite’ı assets’ten yüklemek için Interpreter.create() ve çıkarım için run() kullanın. Giriş ve çıkış verileri çok boyutlu diziler veya ByteBuffer olarak iletilir:
import org.tensorflow.lite.Interpreter;
import java.nio.MappedByteBuffer;
import java.io.FileInputStream;
import java.nio.channels.FileChannel;
MappedByteBuffer model = new FileInputStream(
getAssets().openFd("model.tflite")
).getChannel().map(
FileChannel.MapMode.READ_ONLY, 0, fc.size()
);
Interpreter interpreter = new Interpreter.create(model);
float[][] input = new float[1][224 * 224 * 3];
float[][] output = new float[1][1000];
interpreter.run(input, output);
interpreter.close();
Donanım hızlandırması için Android’de GPU Delegate kullanımı örneği. com.android.support:tensorflow-lite-gpu bağımlılığını ekleyin ve Yorumlayıcı’yı oluştururken delegeleri belirtin:
import org.tensorflow.lite.Interpreter;
import org.tensorflow.lite.gpu.GpuDelegate;
GpuDelegate gpuDelegate = new GpuDelegate.create();
Interpreter.Options options = new Interpreter.Options().addDelegate(gpuDelegate);
Interpreter interpreter = new Interpreter.create(model, options);
// Run inference on the input data
interpreter.run(input, output);
// Release delegate resources after inference
gpuDelegate.close();
interpreter.close();
Sıkça Sorulan Sorular
TensorFlow eğitim ve çıkarım için tam bir çerçevedir. TensorFlow Lite yalnızca mobil cihazlarda çıkarım içindir. TFLite, .tflite formatını kullanır ve geri yayılımı desteklemez.
Desteklenen delegeler şunları içerir: GPU Delegate (OpenGL/Metal), NNAPI Delegate (Android), Core ML Delegate (iOS) ve XNNPACK Delegate (ARM CPU). Her delege belirli bir donanım türü için optimize edilmiştir.
Niceleme kullanın: FP16 boyutu 2 kat, INT8 4 kat küçültür. Dinamik niceleme, ağırlık budama ve dönüştürme öncesi model damıtma da mevcuttur.
Evet, TFLite Model Maker ve cihaz içi eğitim API’si (deneysel) aracılığıyla destekler. Kullanıcının cihazında doğrudan ince ayar ve model kişiselleştirme desteklenir.
TFLite, CNN, RNN, LSTM, Transformer, mobil mimariler (MobileNet, EfficientNet, YOLO, BERT) ve özel işlemleri destekler. Sınırlama, hedef delegede bulunan operatörlerdir.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun