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 и выполняет инференс, управляя тензорами и памятью.
Delegates — это компоненты, переносящие выполнение операций на специализированное оборудование. 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 операции и не требует специального оборудования. Рекомендуется как baseline-делегат для всех устройств.
Процесс развёртывания включает три шага. Первый — конвертация модели в .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 уменьшает размер в 2x, INT8 — в 4x. Также доступно динамическое квантование, обрезка весов (weight pruning) и дистилляция модели перед конвертацией.
Да, через TFLite Model Maker и on-device training API (экспериментально). Поддерживается дообучение (fine-tuning) и персонализация моделей непосредственно на устройстве пользователя.
TFLite поддерживает CNN, RNN, LSTM, Transformer, мобильные архитектуры (MobileNet, EfficientNet, YOLO, BERT) и пользовательские операции. Ограничение — доступные операторы в целевом делегате.
Итоги
Мы разработаем мобильное приложение под ключ
IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.
Читайте также