TensorFlow Lite — este versiunea ușoară a framework-ului TensorFlow, dezvoltată de Google pentru executarea modelelor de învățare automată pe dispozitive mobile și încorporate cu resurse de calcul limitate. Spre deosebire de TensorFlow complet, TFLite utilizează un interpretor specializat și formatul .tflite, optimizat pentru inferență rapidă fără suport pentru antrenare. Conform TensorFlow Lite Guide, 2025, framework-ul funcționează pe Android, iOS și Linux și este utilizat pe peste 4 miliarde de dispozitive. TensorFlow Lite suportă cuantizarea, accelerarea hardware prin NNAPI, GPU și delegații Core ML.
Principalele puncte
TensorFlow Lite — este un runtime specializat pentru executarea modelelor de învățare automată pe dispozitive cu resurse limitate. Spre deosebire de TensorFlow complet, TFLite nu suportă antrenarea și propagarea inversă — doar inferența. Acest lucru permite minimizarea dimensiunii binare a bibliotecii: aproximativ 300 KB pentru interpretorul de bază pe Android.
Arhitectura TFLite este construită în jurul formatului .tflite, bazat pe FlatBuffers. FlatBuffers asigură acces direct la date fără etapa de parsare, ceea ce este critic pentru dispozitivele mobile cu memorie limitată. Modelul în format .tflite conține graful de calcul, ponderile și metadatele într-un singur fișier binar.
Conform Google I/O 2024, TFLite este utilizat în Google Photos, Gboard, YouTube și alte aplicații Google cu o audiență totală de peste 4 miliarde de dispozitive. Framework-ul suportă toate arhitecturile principale: CNN, RNN, LSTM, Transformer și operații personalizate prin delegați.
Runtime-ul TFLite constă din patru componente. TFLite Converter primește modelul din TensorFlow (SavedModel, Keras, ConcreteFunction) și îl transformă în formatul .tflite cu optimizare opțională. TFLite Interpreter încarcă .tflite și execută inferența, gestionând tensorii și memoria.
Delegații — sunt componente care transferă executarea operațiilor pe hardware specializat. GPU Delegate utilizează OpenGL ES și Metal, NNAPI Delegate — Android Neural Networks API, Core ML Delegate — Apple Core ML. XNNPACK Delegate optimizează executarea pe ARM CPU. Fiecare delegat suportă un set specific de operatori.
A patra componentă — Task Library, care oferă API-uri de nivel înalt pentru sarcini tipice: clasificare imagini, detectare obiecte, segmentare, NLU. Task Library funcționează pe deasupra Interpreter și ascunde detaliile gestionării tensorilor.
TFLite suportă trei niveluri de cuantizare. Cuantizarea completă întreagă INT8 transformă ponderile și activările din FP32 în numere întregi pe 8 biți. Dimensiunea modelului se reduce de 4 ori, iar viteza de inferență pe dispozitivele cu suport INT8 crește de până la 3x. Cuantizarea FP16 reduce dimensiunea la jumătate cu pierdere minimă de precizie.
Cuantizarea dinamică păstrează ponderile în INT8, dar execută calculele în FP32. Acest mod este potrivit pentru modelele sensibile la precizie și oferă reducerea dimensiunii de până la 4x cu păstrarea calității. Conform Google ML Performance Benchmarks, cuantizarea dinamică este recomandată pentru modelele NLP.
| Mod | Tip ponderi | Tip activări | Reducere dimensiune |
|---|---|---|---|
| FP32 (fără cuantizare) | FP32 | FP32 | 1x |
| FP16 | FP16 | FP32 | 2x |
| INT8 dinamic | INT8 | FP32 | 4x |
| INT8 complet | INT8 | INT8 | 4x |
Pe Android, mecanismul principal de accelerare este NNAPI Delegate, care transferă executarea operațiilor pe NPU, DSP sau GPU prin Android Neural Networks API. NNAPI este disponibil pe dispozitive cu Android 8.1+ și suportă calcule INT8 și FP16. GPU Delegate pentru Android utilizează OpenGL ES 3.1+ și Vulkan.
Pe iOS, accelerarea este asigurată prin Core ML Delegate, care traduce operațiile TFLite în formatul Core ML și le execută pe Apple Neural Engine. Conform Apple ML Benchmarking, utilizarea Core ML Delegate accelerează inferența pe iPhone 15 Pro de până la 4x comparativ cu CPU. GPU Delegate pentru iOS utilizează Metal Performance Shaders.
XNNPACK Delegate — este o soluție cross-platform pentru ARM CPU, optimizată pentru procesoare mobile. XNNPACK suportă operații FP32, FP16 și INT8 și nu necesită hardware special. Este recomandat ca delegat de bază pentru toate dispozitivele.
Procesul de implementare include trei pași. Primul — conversia modelului în .tflite prin TFLite Converter. Al doilea — includerea fișierului .tflite în resursele aplicației. Pentru Android, fișierul este plasat în assets, pentru iOS — în bundle-ul aplicației prin Xcode. Al treilea — inițializarea Interpreter și executarea inferenței.
Pentru actualizarea dinamică a modelelor, Google recomandă utilizarea Firebase ML Model Downloading sau a unui mecanism propriu de descărcare din cloud. Fișierul .tflite actualizat este salvat în stocarea locală și încărcat în Interpreter la următoarea pornire.
La implementare, este important de luat în considerare dimensiunea fișierului .tflite. Google Play limitează dimensiunea APK la 200 MB. Pentru modele mai mari de 50 MB, se recomandă utilizarea Android App Bundle sau descărcarea modelului separat prin Play Asset Delivery.
Exemplu de încărcare și executare a modelului pe Android cu Java API. Utilizați Interpreter.create() pentru încărcarea .tflite din assets și run() pentru inferență. Datele de intrare și ieșire sunt transmise ca tablouri multidimensionale sau ByteBuffer:
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();
Exemplu de utilizare a GPU Delegate pe Android pentru accelerare hardware. Adăugați dependența com.android.support:tensorflow-lite-gpu și specificați delegatul la crearea Interpreter:
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);
// Rulează inferența pe datele de intrare
interpreter.run(input, output);
// Eliberează resursele delegatului după inferență
gpuDelegate.close();
interpreter.close();
Întrebări frecvente
TensorFlow — framework complet pentru antrenare și inferență. TensorFlow Lite — doar pentru inferență pe dispozitive mobile. TFLite utilizează formatul .tflite și nu suportă propagarea inversă.
Suportă GPU Delegate (OpenGL/Metal), NNAPI Delegate (Android), Core ML Delegate (iOS) și XNNPACK Delegate (ARM CPU). Fiecare delegat este optimizat pentru un tip specific de hardware.
Utilizați cuantizarea: FP16 reduce dimensiunea de 2x, INT8 — de 4x. De asemenea, este disponibilă cuantizarea dinamică, tăierea ponderilor (weight pruning) și distilarea modelului înainte de conversie.
Da, prin TFLite Model Maker și API-ul de antrenare pe dispozitiv (experimental). Se suportă reglajul fin (fine-tuning) și personalizarea modelelor direct pe dispozitivul utilizatorului.
TFLite suportă CNN, RNN, LSTM, Transformer, arhitecturi mobile (MobileNet, EfficientNet, YOLO, BERT) și operații personalizate. Limitarea — operatorii disponibili în delegatul țintă.
Concluzii
Vom dezvolta o aplicație mobilă la cheie
IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.
Citiți și