.tflite — a TFLite modellformátum lényege, szerkezete és alkalmazása

Szerző: IT Sectr Megjelenés: 2026-07-18 Olvasási idő: 6 perc

A .tflite a TensorFlow Lite modellfájl bináris formátuma, amely a Google FlatBuffers technológiáján alapul. A formátum a korlátozott erőforrásokkal rendelkező mobil, beágyazott és edge eszközökön történő hatékony inferencia végrehajtására van optimalizálva. Más szerializációs formátumokkal ellentétben a FlatBuffers közvetlen hozzáférést biztosít az adatokhoz elemzés és másolás nélkül, ami kritikus fontosságú a modell gyors elindításához. A TensorFlow Lite Converter Guide, 2025 szerint a .tflite fájl számítási gráfot, kvantált vagy teljes pontosságú súlyokat és metaadatokat tartalmaz az interpreter számára. A .tflite a szabványos formátum az on-device ML számára a Google ökoszisztémában.

Főbb pontok

  • .tflite — a TensorFlow Lite modell bináris formátuma FlatBuffers alapokon mobil inferenciához.
  • A fájl számítási gráfot, modellsúlyokat és metaadatokat tartalmaz egyetlen bináris konténerben.
  • A FlatBuffers közvetlen adatelérést biztosít elemzés és memóriaallokáció nélkül.
  • Támogatja az INT8, FP16 kvantálást és a dinamikus kvantálást.
  • A .tflite a TFLite Interpreter segítségével használható Android, iOS és Linux rendszereken.

A .tflite formátum lényege

A .tflite egy gépi tanulási modell szerializált reprezentációja, amely korlátozott memóriájú és számítási teljesítményű eszközökön történő inferenciára optimalizált. Ellentétben a SavedModel formátummal, amely a gráfot protobuf-ban tárolja és jelentős erőforrásokat igényel a betöltéshez, a .tflite a FlatBuffers-t használja — egy olyan szerializációs könyvtárat, amely másolás nélkül biztosít hozzáférést az adatokhoz.

A .tflite formátum a mobil platformok sajátosságainak figyelembevételével készült: minimális memóriafogyasztás betöltéskor, gyors indítás, kvantált súlyok támogatása. A .tflite fájl nem támogatja a tanítást — csak inferenciát. Ez alapvető különbség a teljes TensorFlow formátumokhoz képest, ami lehetővé teszi a futtatási környezet méretének jelentős csökkentését.

A Google Research, 2024 szerint a .tflite formátumú modellek INT8 kvantálással 60%-kal gyorsabban töltődnek be, mint a hasonló FP32 formátumú modellek, és 40%-kal kevesebb RAM-ot fogyasztanak inferencia közben.

A .tflite fájl belső szerkezete

A .tflite fájl több szekcióból áll, amelyek a FlatBuffers séma szerint vannak megszervezve. A fő szekció — a Model, amely tartalmazza a számítási gráfot (SubGraph), az operátorok listáját (OperatorCodes) és a súlyokkal rendelkező puffereket. Minden SubGraph tartalmaz tenzorokat, operátorokat, bemeneti és kimeneti indexeket.

Az OperatorCodes szekció tartalmazza a modellben használt összes operátor azonosítóját — Conv2D, DepthwiseConv2D, FullyConnected, Softmax és mások. Minden operátornak kódja van a BuiltinOperator előre meghatározott listájából. Ha a modell olyan műveleteket tartalmaz, amelyek nincsenek a listán, akkor ezek Customként vannak jelölve, és delegáláson vagy egyéni operátoron keresztül történő implementációt igényelnek.

A Buffers szekció a modellsúlyok bináris adatait tartalmazza. A kvantálási módtól függően a súlyok tárolhatók FP32, FP16, INT8 formátumban vagy kvantált formátumban skálázási paraméterekkel. A pufferek közvetlenül a memóriába vannak vetítve az mmap mechanizmuson keresztül, ami kiküszöböli a további másolást.

A .tflite fájl fő szekciói

SzekcióRendeltetés
ModelGyökérszerkezet, verzió, leírás
SubGraphSzámítási gráf: tenzorok, operátorok, bemenetek/kimenetek
OperatorCodesA használt operátorok listája
BuffersA modellsúlyok bináris adatai
MetadataMetaadatok: verzió, szerző, leírás
SignatureDefNevesített bemenetek és kimenetek az API-hoz

Kvantálás és formátumoptimalizálás

A .tflite három kvantálási módot támogat. Teljes egész számú INT8 kvantálás — a súlyok és aktivációk 8 bites egész számokként vannak ábrázolva. A konverzióhoz reprezentatív adatkészlet szükséges az aktivációs tartományok kalibrálásához. A modell mérete 4-szeresére csökken.

FP16 kvantálás — a súlyok 16 bites lebegőpontos számokká alakulnak. Ez a mód nem igényel kalibrálást és minimális pontosságvesztéssel jár. Az aktivációk FP32-ben maradnak. A modell mérete 2-szeresére csökken. GPU és NPU FP16 támogatással rendelkező eszközökhöz ajánlott.

Dinamikus kvantálás — a súlyok INT8-ra vannak konvertálva, de az aktivációk FP32-ben számítódnak. A modell mérete 4-szeresére csökken, de a pontosság magasabb marad, mint a teljes INT8-nál. A Google ML Performance Benchmarks szerint ez a mód optimális az NLP modellekhez és a pontosságra nagy érzékenységű modellekhez.

.tflite létrehozása TensorFlow modellből

A modell .tflite formátumba konvertálásához a TFLite Converter használatos — egy TensorFlow komponens, amely a Python API tf.lite.TFLiteConverter segítségével érhető el. A Converter három forrást támogat: SavedModel, Keras H5 és ConcreteFunction. A Keras modell konvertálásának minimális példája:

python
import tensorflow as tf

# Töltse be a betanított Keras modellt fájlból
model = tf.keras.models.load_model("my_model.h5")

# Konvertálja .tflite formátumba dinamikus kvantálással
converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_model = converter.convert()

# Írja a konvertált modellt egy .tflite fájlba
with open("model.tflite", "wb") as f:
    f.write(tflite_model)

Teljes INT8 kvantálással történő konverzióhoz kalibrációs adatkészlet szükséges. Adja meg a representative_dataset paramétert az aktivációs tartományok meghatározásához:

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

Eszközök a .tflite használatához

A Google eszközkészletet biztosít a .tflite modellek elemzéséhez és optimalizálásához. A TFLite Benchmark Tool méri az inferenciaidőt az eszközön és statisztikákat jelenít meg minden operátorról. A TFLite Model Inspector vizualizálja a számítási gráfot és megjeleníti a tenzorok méretét.

Netron — egy platformfüggetlen modellvizualizáló, amely a .tflite-ot támogatja az ONNX, Core ML és PyTorch mellett. A Netron megjeleníti a gráf szerkezetét, az egyes operátorok paramétereit és a tenzorok közötti kapcsolatokat. Hasznos a konverzió során fellépő hibakereséshez.

A TFLite Metadata API lehetővé teszi metaadatok hozzáadását a .tflite fájlhoz: modell leírása, bemeneti adatok formátuma, mértékegységek, információ a szerzőről. A metaadatokat a Task Library használja az előfeldolgozás és utófeldolgozás automatikus konfigurálásához.

Példa a .tflite betöltésére és végrehajtására

Példa a .tflite modell betöltésére iOS rendszeren Swift API-val. A TFLite Swift API egy Interpreter-t biztosít a modell bundle-ból történő betöltéséhez és az inferencia végrehajtásához. Adjon meg egy delegált a hardveres gyorsításhoz a Core ML Delegate segítségével:

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

// Készítse elő a bemeneti adatokat a modellhez
let inputData = Data.init(count: 1 * 224 * 224 * 3)
try interpreter.copy(inputData, toInputAt: 0)

// Futtassa a modell inferenciát
try interpreter.invoke()

// Olvassa ki a kimeneti tenzor adatait
let outputTensor = try interpreter.output(at: 0)
let results = outputTensor.data.withUnsafeBytes {
    Array($0.bindMemory(to: Float32.self))
}

Gyakran ismételt kérdések

Megnyitható egy .tflite fájl szövegszerkesztőben?

A .tflite fájl bináris FlatBuffers formátumú és nem olvasható szövegszerkesztőben. Megtekintéshez használja a Netron vagy a TFLite Model Inspector alkalmazást, amelyek vizualizálják a modell szerkezetét.

Hogyan ellenőrizhető, hogy milyen operátorok vannak a .tflite fájlban?

Használja a tf.lite.experimental.Analyzer.analyze(model_path) függvényt Pythonban vagy a TFLite Benchmark Tool-t a --print_model_details kapcsolóval. Az eszközök megjelenítik az operátorok teljes listáját a paraméterekkel együtt.

Miben különbözik a .tflite az ONNX-tól?

A .tflite mobil eszközökön történő inferenciára van optimalizálva és FlatBuffers-t használ. Az ONNX egy univerzális formátum a modellek keretrendszerek közötti cseréjére protobuf szerializációval. A TFLite beépített kvantálástámogatással rendelkezik.

Visszakonvertálható a .tflite TensorFlow-ba?

Nem, visszirányú konverzió nem létezik az információvesztés miatt a kvantálás és optimalizálás során. Az eredeti TensorFlow modellt külön kell megőrizni a további tanításhoz vagy módosításokhoz.

Hogyan lehet metaadatokat hozzáadni egy .tflite fájlhoz?

Használja a TFLite Metadata Writer API-t Pythonban. Az API lehetővé teszi leírás, bemeneti/kimeneti formátum, mértékegységek és mintadatok hozzáadását a Task Library számára.

Összefoglalás

  • .tflite — a TensorFlow Lite modell bináris formátuma FlatBuffers alapokon mobil inferenciához.
  • A fájl számítási gráfot, súlyokat, metaadatokat és SignatureDef-et tartalmaz egyetlen konténerben.
  • A FlatBuffers mmap hozzáférést biztosít az adatokhoz elemzés és felesleges allokáció nélkül.
  • Az INT8, FP16 és dinamikus kvantálás 4-szeresére csökkenti a méretet.
  • Konverzióhoz használja a TFLite Converter-t SavedModel, Keras vagy ConcreteFunction forrásból.
  • Vizualizáció és hibakeresés a Netron, TFLite Inspector és Benchmark Tool segítségével érhető el.
  • Metaadatok hozzáadása a Metadata Writer API-n keresztül a Task Library-val való integrációhoz.

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is