.tflite — суть, структура и применение формата модели TFLite

Автор: IT Sectr Опубликовано: 2026-07-18 Время чтения: 6 мин

.tflite — это бинарный формат файла модели TensorFlow Lite, основанный на технологии FlatBuffers от Google. Формат оптимизирован для эффективного выполнения инференса на мобильных, встраиваемых и edge-устройствах с ограниченными ресурсами. В отличие от других форматов сериализации, FlatBuffers обеспечивает прямой доступ к данным без этапа парсинга и копирования, что критически важно для быстрого запуска модели. По данным TensorFlow Lite Converter Guide, 2025, файл .tflite содержит граф вычислений, квантованные или полноточные веса и метаданные для интерпретатора. .tflite является стандартным форматом для on-device ML в экосистеме Google.

Главное

  • .tflite — бинарный формат модели TensorFlow Lite на основе FlatBuffers для мобильного инференса.
  • Файл содержит граф вычислений, веса модели и метаданные в едином бинарном контейнере.
  • FlatBuffers обеспечивает прямой доступ к данным без парсинга и аллокации памяти.
  • Поддерживается квантование INT8, FP16 и динамическое квантование.
  • .tflite используется совместно с TFLite Interpreter на Android, iOS и Linux.

Суть формата .tflite

.tflite — это сериализованное представление модели машинного обучения, оптимизированное для инференса на устройствах с ограниченной памятью и вычислительной мощностью. В отличие от формата SavedModel, который хранит граф в protobuf и требует значительных ресурсов для загрузки, .tflite использует FlatBuffers — библиотеку сериализации с доступом к данным без копирования.

Формат .tflite разработан с учётом особенностей мобильных платформ: минимальное потребление памяти при загрузке, быстрый старт, поддержка квантованных весов. Файл .tflite не поддерживает обучение — только инференс. Это принципиальное отличие от форматов полного TensorFlow, что позволяет значительно уменьшить размер рантайма.

По данным Google Research, 2024, модели в формате .tflite с квантованием INT8 загружаются на 60% быстрее, чем аналогичные модели в FP32 формате, и потребляют на 40% меньше оперативной памяти во время инференса.

Внутренняя структура .tflite файла

Файл .tflite состоит из нескольких секций, организованных по схеме FlatBuffers. Основная секция — Model, которая содержит граф вычислений (SubGraph), список операторов (OperatorCodes) и буферы с весами. Каждый SubGraph содержит тензоры, операторы, входные и выходные индексы.

Секция OperatorCodes содержит идентификаторы всех операторов, используемых в модели — Conv2D, DepthwiseConv2D, FullyConnected, Softmax и другие. Каждый оператор имеет код из предопределённого списка BuiltinOperator. Если модель содержит операции, отсутствующие в списке, они помечаются как Custom и требуют реализации через делегат или пользовательский оператор.

Секция Buffers содержит бинарные данные весов модели. В зависимости от режима квантования веса могут храниться в FP32, FP16, INT8 или в квантованном формате с параметрами масштабирования. Буферы отображаются в память напрямую через механизм mmap, что исключает дополнительное копирование.

Основные секции .tflite файла

СекцияНазначение
ModelКорневая структура, версия, описание
SubGraphГраф вычислений: тензоры, операторы, входы/выходы
OperatorCodesСписок используемых операторов
BuffersБинарные данные весов модели
MetadataМетаданные: версия, автор, описание
SignatureDefИменованные входы и выходы для API

Квантование и оптимизация формата

.tflite поддерживает три режима квантования. Полное целочисленное квантование INT8 — веса и активации представляются 8-битными целыми числами. Для конвертации требуется репрезентативный набор данных для калибровки диапазонов активаций. Размер модели уменьшается в 4 раза.

Квантование FP16 — веса преобразуются в 16-битные числа с плавающей точкой. Этот режим не требует калибровки и даёт минимальную потерю точности. Активации остаются в FP32. Размер модели уменьшается в 2 раза. Рекомендуется для устройств с поддержкой FP16 на GPU и NPU.

Динамическое квантование — веса конвертируются в INT8, но активации вычисляются в FP32. Размер модели уменьшается в 4 раза, но точность сохраняется выше, чем при полном INT8. По данным Google ML Performance Benchmarks, этот режим оптимален для NLP-моделей и моделей с высокой чувствительностью к точности.

Создание .tflite из TensorFlow модели

Для конвертации модели в .tflite используется TFLite Converter — компонент TensorFlow, доступный через Python API tf.lite.TFLiteConverter. Converter поддерживает три источника: SavedModel, Keras H5 и ConcreteFunction. Минимальный пример конвертации модели Keras:

python
import tensorflow as tf

# Load the trained Keras model from file
model = tf.keras.models.load_model("my_model.h5")

# Convert to .tflite with dynamic quantization
converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_model = converter.convert()

# Write the converted model to a .tflite file
with open("model.tflite", "wb") as f:
    f.write(tflite_model)

Для конвертации с полным INT8 квантованием требуется калибровочный набор данных. Укажите representative_dataset для определения диапазонов активаций:

python
converter = tf.lite.TFLiteConverter.from_saved_model("saved_model")
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.representative_dataset = representative_dataset
converter.target_spec.supported_ops = [
    tf.lite.OpsSet.TFLITE_BUILTINS_INT8
]
converter.inference_input_type = tf.uint8
converter.inference_output_type = tf.uint8
tflite_quant_model = converter.convert()

Инструменты для работы с .tflite

Google предоставляет набор инструментов для анализа и оптимизации .tflite моделей. TFLite Benchmark Tool измеряет время инференса на устройстве и выводит статистику по каждому оператору. TFLite Model Inspector визуализирует граф вычислений и показывает размеры тензоров.

Netron — кроссплатформенный визуализатор моделей, поддерживающий .tflite наравне с ONNX, Core ML и PyTorch. Netron отображает структуру графа, параметры каждого оператора и связи между тензорами. Полезен для отладки при конвертации.

TFLite Metadata API позволяет добавлять в .tflite файл метаданные: описание модели, формат входных данных, единицы измерения, информацию об авторе. Метаданные используются Task Library для автоматической настройки препроцессинга и постпроцессинга.

Пример загрузки и выполнения .tflite

Пример загрузки .tflite модели на iOS с Swift API. TFLite Swift API предоставляет Interpreter для загрузки модели из бандла и выполнения инференса. Укажите делегат для аппаратного ускорения через Core ML Delegate:

swift
import TensorFlowLite

guard let modelPath = Bundle.main.path(
    forResource: "model", ofType: "tflite"
) else { return }

let interpreter = try Interpreter.init(modelPath: modelPath)
try interpreter.allocateTensors()

// Prepare input data for the model
let inputData = Data.init(count: 1 * 224 * 224 * 3)
try interpreter.copy(inputData, toInputAt: 0)

// Run model inference
try interpreter.invoke()

// Read output tensor data
let outputTensor = try interpreter.output(at: 0)
let results = outputTensor.data.withUnsafeBytes {
    Array($0.bindMemory(to: Float32.self))
}

Часто задаваемые вопросы

Можно ли открыть .tflite файл в текстовом редакторе?

Файл .tflite имеет бинарный формат FlatBuffers и не читается в текстовом редакторе. Для просмотра используйте Netron или TFLite Model Inspector, которые визуализируют структуру модели.

Как проверить, какие операторы используются в .tflite?

Используйте tf.lite.experimental.Analyzer.analyze(model_path) в Python или TFLite Benchmark Tool с флагом --print_model_details. Инструменты выводят полный список операторов с параметрами.

Чем .tflite отличается от ONNX?

.tflite оптимизирован для инференса на мобильных устройствах и использует FlatBuffers. ONNX — универсальный формат для обмена моделями между фреймворками с сериализацией в protobuf. TFLite имеет встроенную поддержку квантования.

Можно ли конвертировать .tflite обратно в TensorFlow?

Нет, обратной конвертации не существует из-за потери информации при квантовании и оптимизации. Исходную модель TensorFlow следует сохранять отдельно для дальнейшего обучения или изменений.

Как добавить метаданные в .tflite файл?

Используйте TFLite Metadata Writer API на Python. API позволяет добавить описание, формат входов/выходов, единицы измерения и примеры данных для Task Library.

Итоги

  • .tflite — бинарный формат модели TensorFlow Lite на основе FlatBuffers для мобильного инференса.
  • Файл содержит граф вычислений, веса, метаданные и SignatureDef в едином контейнере.
  • FlatBuffers обеспечивает mmap-доступ к данным без парсинга и лишних аллокаций.
  • Квантование INT8, FP16 и динамическое квантование уменьшают размер до 4x.
  • Для конвертации используйте TFLite Converter из SavedModel, Keras или ConcreteFunction.
  • Визуализация и отладка доступны через Netron, TFLite Inspector и Benchmark Tool.
  • Метаданные добавляются через Metadata Writer API для интеграции с Task Library.

Мы разработаем мобильное приложение под ключ

IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.

Обсудить проект

Читайте также