.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

# Учитајте обучени 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. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође