.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% по-малко RAM по време на инференс.

Вътрешна структура на .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

# Заредете обучения 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 за зареждане на модела от bundle и изпълнение на инференс. Посочете делегат за хардуерно ускорение чрез 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 и динамично квантуване намаляват размера до 4 пъти.
  • За конвертиране използвайте TFLite Converter от SavedModel, Keras или ConcreteFunction.
  • Визуализация и отстраняване на грешки чрез Netron, TFLite Inspector и Benchmark Tool.
  • Метаданни се добавят чрез Metadata Writer API за интеграция с Task Library.

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

IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също