.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. Конвертер підтримує три джерела: SavedModel, Keras H5 та ConcreteFunction. Мінімальний приклад конвертації моделі Keras:

python
import tensorflow as tf

# Завантажити навчену модель Keras з файлу
model = tf.keras.models.load_model("my_model.h5")

# Конвертувати в .tflite з динамічним квантуванням
converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_model = converter.convert()

# Записати конвертовану модель у файл .tflite
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()

// Підготувати вхідні дані для моделі
let inputData = Data.init(count: 1 * 224 * 224 * 3)
try interpreter.copy(inputData, toInputAt: 0)

// Виконати інференс моделі
try interpreter.invoke()

// Прочитати дані вихідного тензора
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 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

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