TensorFlow Lite — је лагана верзија TensorFlow оквира, коју је развио Google за извршавање модела машинског учења на мобилним и уграђеним уређајима са ограниченим рачунарским ресурсима. За разлику од пуног TensorFlow-а, TFLite користи специјализовани интерпретатор и .tflite формат, оптимизован за брзо закључивање без подршке за учење. Према TensorFlow Lite Guide, 2025, оквир ради на Android, iOS и Linux и користи се на више од 4 милијарде уређаја. TensorFlow Lite подржава квантизацију, хардверско убрзање кроз NNAPI, GPU и Core ML делегате.
Главне тачке
TensorFlow Lite — је специјализовано извршно окружење за покретање модела машинског учења на уређајима са ограниченим ресурсима. За разлику од пуног TensorFlow-а, TFLite не подржава учење и повратно простирање грешке — само закључивање. Ово омогућава минималну величину библиотеке: око 300 KB за основни интерпретатор на Android-у.
Архитектура TFLite-а је изграђена око .tflite формата, заснованог на FlatBuffers-у. FlatBuffers обезбеђује директан приступ подацима без фазе парсирања, што је кључно за мобилне уређаје са ограниченом меморијом. Модел у .tflite формату садржи граф израчунавања, тежине и метаподатке у јединственој бинарној датотеци.
Према Google I/O 2024, TFLite се користи у Google Photos, Gboard, YouTube и другим Google апликацијама са укупном публиком од преко 4 милијарде уређаја. Оквир подржава све главне архитектуре: CNN, RNN, LSTM, Transformer и прилагођене операције кроз делегате.
TFLite извршно окружење састоји се од четири компоненте. TFLite Converter прима модел из TensorFlow-а (SavedModel, Keras, ConcreteFunction) и претвара га у .tflite формат са опционом оптимизацијом. TFLite Interpreter учитава .tflite и извршава закључивање, управљајући тензорима и меморијом.
Делегати — су компоненте које преносе извршавање операција на специјализовани хардвер. GPU Delegate користи OpenGL ES и Metal, NNAPI Delegate — Android Neural Networks API, Core ML Delegate — Apple Core ML. XNNPACK Delegate оптимизује извршавање на ARM CPU-у. Сваки делегат подржава одређени скуп оператора.
Четврта компонента — Task Library, која пружа високоапстрактне API-је за типичне задатке: класификацију слика, детекцију објеката, сегментацију, NLU. Task Library ради изнад Interpreter-а и скрива детаље управљања тензорима.
TFLite подржава три нивоа квантизације. Потпуна целобројна квантизација INT8 претвара тежине и активације из FP32 у 8-битне целе бројеве. Величина модела се смањује 4 пута, а брзина закључивања на уређајима са подршком за INT8 расте до 3x. Квантизација FP16 смањује величину упола уз минималан губитак прецизности.
Динамичка квантизација чува тежине у INT8, али извршава прорачуне у FP32. Овај режим је погодан за моделе осетљиве на прецизност и даје смањење величине до 4x уз очување квалитета. Према Google ML Performance Benchmarks, динамичка квантизација се препоручује за NLP моделе.
| Режим | Тип тежина | Тип активација | Смањење величине |
|---|---|---|---|
| FP32 (без квантизације) | FP32 | FP32 | 1x |
| FP16 | FP16 | FP32 | 2x |
| Динамички INT8 | INT8 | FP32 | 4x |
| Потпуни INT8 | INT8 | INT8 | 4x |
На Android-у главни механизам убрзања је NNAPI Delegate, који преноси извршавање операција на NPU, DSP или GPU кроз Android Neural Networks API. NNAPI је доступан на уређајима са Android 8.1+ и подржава INT8 и FP16 прорачуне. GPU Delegate за Android користи OpenGL ES 3.1+ и Vulkan.
На iOS-у убрзање се обезбеђује кроз Core ML Delegate, који преводи TFLite операције у Core ML формат и извршава их на Apple Neural Engine-у. Према Apple ML Benchmarking, коришћење Core ML Delegate-а убрзава закључивање на iPhone 15 Pro до 4x у поређењу са CPU-ом. GPU Delegate за iOS користи Metal Performance Shaders.
XNNPACK Delegate — је вишеплатформско решење за ARM CPU, оптимизовано за мобилне процесоре. XNNPACK подржава FP32, FP16 и INT8 операције и не захтева специјализовани хардвер. Препоручује се као базни делегат за све уређаје.
Процес примене укључује три корака. Први — конверзија модела у .tflite кроз TFLite Converter. Други — укључивање .tflite датотеке у ресурсе апликације. За Android датотека се поставља у assets, за iOS — у bundle апликације кроз Xcode. Трећи — иницијализација Interpreter-а и извршавање закључивања.
За динамичко ажурирање модела Google препоручује коришћење Firebase ML Model Downloading или сопственог механизма преузимања из облака. Ажурирана .tflite датотека се чува у локалном складишту и учитава у Interpreter при следећем покретању.
При примени важно је узети у обзир величину .tflite датотеке. Google Play ограничава величину APK-а на 200 MB. За моделе веће од 50 MB препоручује се коришћење Android App Bundle-а или преузимање модела одвојено кроз Play Asset Delivery.
Пример учитавања и извршавања модела на Android-у са Java API-јем. Користите Interpreter.create() за учитавање .tflite из assets и run() за закључивање. Улазни и излазни подаци се преносе као вишедимензионални низови или 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();
Пример коришћења GPU Delegate-а на Android-у за хардверско убрзање. Додајте зависност com.android.support:tensorflow-lite-gpu и наведите делегат при креирању 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);
// Покрени закључивање на улазним подацима
interpreter.run(input, output);
// Ослободи ресурсе делегата након закључивања
gpuDelegate.close();
interpreter.close();
Често постављана питања
TensorFlow — потпуни оквир за учење и закључивање. TensorFlow Lite — само за закључивање на мобилним уређајима. TFLite користи .tflite формат и не подржава повратно простирање грешке.
Подржани су GPU Delegate (OpenGL/Metal), NNAPI Delegate (Android), Core ML Delegate (iOS) и XNNPACK Delegate (ARM CPU). Сваки делегат је оптимизован за одређени тип хардвера.
Користите квантизацију: FP16 смањује величину 2x, INT8 — 4x. Такође су доступне динамичка квантизација, обрезивање тежина (weight pruning) и дестилација модела пре конверзије.
Да, кроз TFLite Model Maker и API за учење на уређају (експериментално). Подржано је фино подешавање (fine-tuning) и персонализација модела директно на уређају корисника.
TFLite подржава CNN, RNN, LSTM, Transformer, мобилне архитектуре (MobileNet, EfficientNet, YOLO, BERT) и прилагођене операције. Ограничење — доступни оператори у циљном делегату.
Закључак
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође