.tflite — podstata, struktura a aplikace formátu modelu TFLite

Autor: IT Sectr Publikováno: 2026-07-18 Doba čtení: 6 min

.tflite je binární formát souboru modelu TensorFlow Lite, založený na technologii FlatBuffers od Google. Formát je optimalizován pro efektivní provádění inference na mobilních, vestavěných a edge zařízeních s omezenými zdroji. Na rozdíl od jiných serializačních formátů FlatBuffers poskytuje přímý přístup k datům bez fáze parsování a kopírování, což je kritické pro rychlé spuštění modelu. Podle TensorFlow Lite Converter Guide, 2025 soubor .tflite obsahuje výpočetní graf, kvantované nebo plnopřesné váhy a metadata pro interpret. .tflite je standardní formát pro on-device ML v ekosystému Google.

Hlavní body

  • .tflite — binární formát modelu TensorFlow Lite založený na FlatBuffers pro mobilní inferenci.
  • Soubor obsahuje výpočetní graf, váhy modelu a metadata v jediném binárním kontejneru.
  • FlatBuffers poskytuje přímý přístup k datům bez parsování a alokace paměti.
  • Podporuje kvantizaci INT8, FP16 a dynamickou kvantizaci.
  • .tflite se používá společně s TFLite Interpreter na Android, iOS a Linuxu.

Podstata formátu .tflite

.tflite je serializovaná reprezentace modelu strojového učení, optimalizovaná pro inferenci na zařízeních s omezenou pamětí a výpočetním výkonem. Na rozdíl od formátu SavedModel, který ukládá graf v protobuf a vyžaduje značné zdroje pro načtení, .tflite používá FlatBuffers — serializační knihovnu s přístupem k datům bez kopírování.

Formát .tflite byl navržen s ohledem na specifika mobilních platforem: minimální spotřeba paměti při načítání, rychlý start, podpora kvantovaných vah. Soubor .tflite nepodporuje trénování — pouze inferenci. To je zásadní rozdíl oproti formátům plného TensorFlow, což umožňuje výrazně zmenšit velikost běhového prostředí.

Podle Google Research, 2024 se modely ve formátu .tflite s kvantizací INT8 načítají o 60 % rychleji než analogické modely ve formátu FP32 a spotřebovávají o 40 % méně RAM během inference.

Vnitřní struktura souboru .tflite

Soubor .tflite se skládá z několika sekcí, organizovaných podle schématu FlatBuffers. Hlavní sekce — Model, která obsahuje výpočetní graf (SubGraph), seznam operátorů (OperatorCodes) a buffery s vahami. Každý SubGraph obsahuje tenzory, operátory, vstupní a výstupní indexy.

Sekce OperatorCodes obsahuje identifikátory všech operátorů použitých v modelu — Conv2D, DepthwiseConv2D, FullyConnected, Softmax a další. Každý operátor má kód z předdefinovaného seznamu BuiltinOperator. Pokud model obsahuje operace, které nejsou v seznamu, jsou označeny jako Custom a vyžadují implementaci prostřednictvím delegáta nebo vlastního operátoru.

Sekce Buffers obsahuje binární data vah modelu. V závislosti na režimu kvantizace mohou být váhy uloženy ve FP32, FP16, INT8 nebo v kvantovaném formátu s parametry škálování. Buffery jsou mapovány přímo do paměti pomocí mechanismu mmap, což eliminuje dodatečné kopírování.

Hlavní sekce souboru .tflite

SekceÚčel
ModelKořenová struktura, verze, popis
SubGraphVýpočetní graf: tenzory, operátory, vstupy/výstupy
OperatorCodesSeznam použitých operátorů
BuffersBinární data vah modelu
MetadataMetadata: verze, autor, popis
SignatureDefPojmenované vstupy a výstupy pro API

Kvantizace a optimalizace formátu

.tflite podporuje tři režimy kvantizace. Plná celočíselná kvantizace INT8 — váhy a aktivace jsou reprezentovány jako 8bitová celá čísla. Pro konverzi je vyžadována reprezentativní sada dat pro kalibraci rozsahů aktivací. Velikost modelu se zmenší 4krát.

Kvantizace FP16 — váhy jsou převedeny na 16bitová čísla s plovoucí desetinnou čárkou. Tento režim nevyžaduje kalibraci a poskytuje minimální ztrátu přesnosti. Aktivace zůstávají ve FP32. Velikost modelu se zmenší 2krát. Doporučeno pro zařízení s podporou FP16 na GPU a NPU.

Dynamická kvantizace — váhy jsou konvertovány na INT8, ale aktivace jsou počítány ve FP32. Velikost modelu se zmenší 4krát, ale přesnost zůstává vyšší než u plné INT8. Podle Google ML Performance Benchmarks je tento režim optimální pro NLP modely a modely s vysokou citlivostí na přesnost.

Vytvoření .tflite z modelu TensorFlow

Pro konverzi modelu do .tflite se používá TFLite Converter — komponenta TensorFlow dostupná přes Python API tf.lite.TFLiteConverter. Converter podporuje tři zdroje: SavedModel, Keras H5 a ConcreteFunction. Minimální příklad konverze modelu Keras:

python
import tensorflow as tf

# Načtěte natrénovaný model Keras ze souboru
model = tf.keras.models.load_model("my_model.h5")

# Převeďte na .tflite s dynamickou kvantizací
converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_model = converter.convert()

# Zapište převedený model do souboru .tflite
with open("model.tflite", "wb") as f:
    f.write(tflite_model)

Pro konverzi s plnou kvantizací INT8 je vyžadována kalibrační sada dat. Zadejte representative_dataset pro určení rozsahů aktivací:

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()

Nástroje pro práci s .tflite

Google poskytuje sadu nástrojů pro analýzu a optimalizaci modelů .tflite. TFLite Benchmark Tool měří čas inference na zařízení a zobrazuje statistiky pro každý operátor. TFLite Model Inspector vizualizuje výpočetní graf a ukazuje velikosti tenzorů.

Netron — multiplatformní vizualizátor modelů, který podporuje .tflite vedle ONNX, Core ML a PyTorch. Netron zobrazuje strukturu grafu, parametry každého operátoru a spojení mezi tenzory. Užitečný pro ladění při konverzi.

TFLite Metadata API umožňuje přidávat do souboru .tflite metadata: popis modelu, formát vstupních dat, měrné jednotky, informace o autorovi. Metadata jsou používána Task Library pro automatickou konfiguraci předzpracování a pozpracování.

Příklad načtení a spuštění .tflite

Příklad načtení modelu .tflite na iOS s Swift API. TFLite Swift API poskytuje Interpreter pro načtení modelu z bundle a provedení inference. Zadejte delegáta pro hardwarovou akceleraci prostřednictvím 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()

// Připravte vstupní data pro model
let inputData = Data.init(count: 1 * 224 * 224 * 3)
try interpreter.copy(inputData, toInputAt: 0)

// Spusťte inferenci modelu
try interpreter.invoke()

// Přečtěte data výstupního tenzoru
let outputTensor = try interpreter.output(at: 0)
let results = outputTensor.data.withUnsafeBytes {
    Array($0.bindMemory(to: Float32.self))
}

Často kladené otázky

Lze otevřít soubor .tflite v textovém editoru?

Soubor .tflite má binární formát FlatBuffers a není čitelný v textovém editoru. Pro prohlížení použijte Netron nebo TFLite Model Inspector, které vizualizují strukturu modelu.

Jak zjistit, jaké operátory se v .tflite používají?

Použijte tf.lite.experimental.Analyzer.analyze(model_path) v Pythonu nebo TFLite Benchmark Tool s přepínačem --print_model_details. Nástroje zobrazí úplný seznam operátorů s parametry.

Čím se .tflite liší od ONNX?

.tflite je optimalizován pro inferenci na mobilních zařízeních a používá FlatBuffers. ONNX je univerzální formát pro výměnu modelů mezi frameworky se serializací v protobuf. TFLite má vestavěnou podporu kvantizace.

Lze .tflite převést zpět do TensorFlow?

Ne, zpětná konverze neexistuje kvůli ztrátě informací při kvantizaci a optimalizaci. Původní model TensorFlow by měl být uchováván zvlášť pro další trénování nebo úpravy.

Jak přidat metadata do souboru .tflite?

Použijte TFLite Metadata Writer API v Pythonu. API umožňuje přidání popisu, formátu vstupu/výstupu, měrných jednotek a vzorových dat pro Task Library.

Shrnutí

  • .tflite — binární formát modelu TensorFlow Lite založený na FlatBuffers pro mobilní inferenci.
  • Soubor obsahuje výpočetní graf, váhy, metadata a SignatureDef v jednom kontejneru.
  • FlatBuffers poskytuje mmap přístup k datům bez parsování a zbytečných alokací.
  • Kvantizace INT8, FP16 a dynamická zmenšují velikost až 4krát.
  • Pro konverzi použijte TFLite Converter ze SavedModel, Keras nebo ConcreteFunction.
  • Vizualizace a ladění jsou k dispozici prostřednictvím Netron, TFLite Inspector a Benchmark Tool.
  • Metadata se přidávají přes Metadata Writer API pro integraci s Task Library.

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také