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, която предоставя високо-level 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 г. Ще ви консултираме и ще предложим най-доброто решение.
Прочетете също