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 КБ для базового інтерпретатора на 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 зростає до 3х. Квантування FP16 зменшує розмір удвічі з мінімальною втратою точності.
Динамічне квантування зберігає ваги в INT8, але виконує обчислення в FP32. Цей режим підходить для моделей, чутливих до точності, і дає зменшення розміру до 4х разів при збереженні якості. За даними 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 до 4х разів порівняно з CPU. GPU Delegate для iOS використовує Metal Performance Shaders.
XNNPACK Delegate — це кросплатформене рішення для ARM CPU, оптимізоване для мобільних процесорів. XNNPACK підтримує операції FP32, FP16 та INT8 і не потребує спеціального обладнання. Рекомендується як базовий делегат для всіх пристроїв.
Процес розгортання включає три кроки. Перший — конвертація моделі в .tflite через TFLite Converter. Другий — включення файлу .tflite в ресурси додатка. Для Android файл поміщується в assets, для iOS — в бандл додатка через Xcode. Третій — ініціалізація Interpreter та виконання інференсу.
Для динамічного оновлення моделей Google рекомендує використовувати Firebase ML Model Downloading або власний механізм завантаження з хмари. Оновлений файл .tflite зберігається в локальному сховищі та завантажується в Interpreter при наступному запуску.
При розгортанні важливо враховувати розмір файлу .tflite. Google Play обмежує розмір APK до 200 МБ. Для моделей більше 50 МБ рекомендується використовувати 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);
// Run inference on the input data
interpreter.run(input, output);
// Release delegate resources after inference
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 зменшує розмір в 2х, INT8 — в 4х. Також доступні динамічне квантування, обрізка ваг та дистиляція моделі перед конвертацією.
Так, через TFLite Model Maker та API навчання на пристрої (експериментально). Підтримується доналаштування та персоналізація моделей безпосередньо на пристрої користувача.
TFLite підтримує CNN, RNN, LSTM, Transformer, мобільні архітектури (MobileNet, EfficientNet, YOLO, BERT) та користувацькі операції. Обмеження — доступні оператори в цільовому делегаті.
Підсумки
Ми розробимо мобільний застосунок під ключ
IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.
Читайте також