.tflite — essenza, struttura e applicazione del formato modello TFLite

Autore: IT Sectr Pubblicato: 2026-07-18 Tempo di lettura: 6 min

.tflite è un formato di file binario per modelli TensorFlow Lite, basato sulla tecnologia FlatBuffers di Google. Il formato è ottimizzato per un'inferenza efficiente su dispositivi mobili, embedded e edge con risorse limitate. A differenza di altri formati di serializzazione, FlatBuffers fornisce accesso diretto ai dati senza analisi né copia, il che è fondamentale per un avvio rapido del modello. Secondo la TensorFlow Lite Converter Guide, 2025, il file .tflite contiene un grafo di calcolo, pesi quantizzati o a piena precisione e metadati per l'interprete. .tflite è il formato standard per il ML su dispositivo nell'ecosistema Google.

Punti chiave

  • .tflite — formato binario del modello TensorFlow Lite basato su FlatBuffers per l'inferenza mobile.
  • Il file contiene un grafo di calcolo, pesi del modello e metadati in un unico contenitore binario.
  • FlatBuffers fornisce accesso diretto ai dati senza analisi né allocazione di memoria.
  • Supporta la quantizzazione INT8, FP16 e la quantizzazione dinamica.
  • .tflite è utilizzato insieme a TFLite Interpreter su Android, iOS e Linux.

Cos'è il formato .tflite

.tflite è una rappresentazione serializzata di un modello di apprendimento automatico ottimizzata per l'inferenza su dispositivi con memoria e potenza di calcolo limitate. A differenza del formato SavedModel, che memorizza un grafo in protobuf e richiede risorse significative per il caricamento, .tflite utilizza FlatBuffers — una libreria di serializzazione con accesso ai dati senza copia.

Il formato .tflite è progettato tenendo conto delle specificità delle piattaforme mobili: consumo minimo di memoria durante il caricamento, avvio rapido e supporto per pesi quantizzati. Un file .tflite non supporta l'addestramento — solo l'inferenza. Questa è una differenza fondamentale rispetto ai formati TensorFlow completi, che consente di ridurre significativamente le dimensioni del runtime.

Secondo Google Research, 2024, i modelli in formato .tflite con quantizzazione INT8 si caricano il 60% più velocemente rispetto ai modelli FP32 equivalenti e consumano il 40% in meno di RAM durante l'inferenza.

Struttura interna del file .tflite

Un file .tflite è composto da diverse sezioni organizzate secondo lo schema FlatBuffers. La sezione principale è Model, che contiene il grafo di calcolo (SubGraph), un elenco di operatori (OperatorCodes) e buffer dei pesi. Ogni SubGraph contiene tensori, operatori e indici di input e output.

La sezione OperatorCodes contiene gli identificatori di tutti gli operatori utilizzati nel modello — Conv2D, DepthwiseConv2D, FullyConnected, Softmax e altri. Ogni operatore ha un codice dall'elenco predefinito BuiltinOperator. Se il modello contiene operazioni non presenti nell'elenco, vengono contrassegnate come Custom e richiedono l'implementazione tramite un delegato o un operatore personalizzato.

La sezione Buffers contiene i dati binari dei pesi del modello. A seconda della modalità di quantizzazione, i pesi possono essere memorizzati in FP32, FP16, INT8 o in un formato quantizzato con parametri di scala. I buffer vengono mappati direttamente in memoria tramite mmap, eliminando copie aggiuntive.

Sezioni principali del file .tflite

SezioneScopo
ModelStruttura radice, versione, descrizione
SubGraphGrafo di calcolo: tensori, operatori, input/output
OperatorCodesElenco degli operatori utilizzati
BuffersDati binari dei pesi del modello
MetadataMetadati: versione, autore, descrizione
SignatureDefInput e output nominati per l'API

Quantizzazione e ottimizzazione del formato

.tflite supporta tre modalità di quantizzazione. Quantizzazione intera completa INT8 — pesi e attivazioni sono rappresentati come interi a 8 bit. La conversione richiede un dataset rappresentativo per calibrare gli intervalli di attivazione. La dimensione del modello si riduce di 4 volte.

Quantizzazione FP16 — i pesi vengono convertiti in numeri a virgola mobile a 16 bit. Questa modalità non richiede calibrazione e offre una perdita minima di precisione. Le attivazioni rimangono in FP32. La dimensione del modello si riduce di 2 volte. Raccomandata per dispositivi con supporto FP16 su GPU e NPU.

Quantizzazione dinamica — i pesi vengono convertiti in INT8 ma le attivazioni vengono calcolate in FP32. La dimensione del modello si riduce di 4 volte mentre la precisione rimane superiore rispetto all'INT8 completo. Secondo Google ML Performance Benchmarks, questa modalità è ottimale per modelli NLP e modelli con elevata sensibilità alla precisione.

Creazione di .tflite da un modello TensorFlow

Per convertire un modello in .tflite, si utilizza TFLite Converter — un componente di TensorFlow disponibile tramite l'API Python tf.lite.TFLiteConverter. Il convertitore supporta tre sorgenti: SavedModel, Keras H5 e ConcreteFunction. Un esempio minimo di conversione di un modello Keras:

python
import tensorflow as tf

# Caricare il modello Keras addestrato dal file
model = tf.keras.models.load_model("my_model.h5")

# Convertire in .tflite con quantizzazione dinamica
converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_model = converter.convert()

# Scrivere il modello convertito in un file .tflite
with open("model.tflite", "wb") as f:
    f.write(tflite_model)

Per la conversione con quantizzazione INT8 completa, è necessario un dataset di calibrazione. Fornire un representative_dataset per determinare gli intervalli di attivazione:

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

Strumenti per lavorare con .tflite

Google fornisce una serie di strumenti per analizzare e ottimizzare i modelli .tflite. TFLite Benchmark Tool misura il tempo di inferenza sul dispositivo e mostra le statistiche per ogni operatore. TFLite Model Inspector visualizza il grafo di calcolo e mostra le dimensioni dei tensori.

Netron è un visualizzatore di modelli multipiattaforma che supporta .tflite insieme a ONNX, Core ML e PyTorch. Netron mostra la struttura del grafo, i parametri di ogni operatore e le connessioni tra i tensori. Utile per il debug durante la conversione.

L'API metadati TFLite consente di aggiungere metadati al file .tflite: descrizione del modello, formato dei dati di input, unità di misura, informazioni sull'autore. I metadati vengono utilizzati da Task Library per la configurazione automatica del pre-processing e post-processing.

Esempio di caricamento ed esecuzione di .tflite

Esempio di caricamento di un modello .tflite su iOS con Swift API. L'API Swift di TFLite fornisce un Interpreter per caricare il modello dal bundle ed eseguire l'inferenza. Specificare un delegato per l'accelerazione hardware tramite 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()

// Preparare i dati di input per il modello
let inputData = Data.init(count: 1 * 224 * 224 * 3)
try interpreter.copy(inputData, toInputAt: 0)

// Eseguire l'inferenza del modello
try interpreter.invoke()

// Leggere i dati del tensore di output
let outputTensor = try interpreter.output(at: 0)
let results = outputTensor.data.withUnsafeBytes {
    Array($0.bindMemory(to: Float32.self))
}

Domande frequenti

Si può aprire un file .tflite in un editor di testo?

Il file .tflite ha un formato binario FlatBuffers e non può essere letto in un editor di testo. Per visualizzarlo, utilizzare Netron o TFLite Model Inspector che visualizzano la struttura del modello.

Come verificare quali operatori sono utilizzati in .tflite?

Utilizzare tf.lite.experimental.Analyzer.analyze(model_path) in Python o TFLite Benchmark Tool con il flag --print_model_details. Questi strumenti mostrano un elenco completo degli operatori con parametri.

Qual è la differenza tra .tflite e ONNX?

.tflite è ottimizzato per l'inferenza su dispositivi mobili e utilizza FlatBuffers. ONNX è un formato universale per lo scambio di modelli tra framework con serializzazione protobuf. TFLite ha il supporto integrato per la quantizzazione.

Si può riconvertire .tflite in TensorFlow?

No, non esiste conversione inversa a causa della perdita di informazioni durante la quantizzazione e l'ottimizzazione. Il modello TensorFlow originale deve essere salvato separatamente per futuri addestramenti o modifiche.

Come aggiungere metadati a un file .tflite?

Utilizzare l'API Metadata Writer di TFLite in Python. L'API consente di aggiungere una descrizione, il formato di input/output, le unità di misura e dati di esempio per Task Library.

Riepilogo

  • .tflite — formato binario del modello TensorFlow Lite basato su FlatBuffers per l'inferenza mobile.
  • Il file contiene un grafo di calcolo, pesi, metadati e SignatureDef in un unico contenitore.
  • FlatBuffers fornisce accesso mmap ai dati senza analisi o allocazioni extra.
  • La quantizzazione INT8, FP16 e dinamica riduce le dimensioni fino a 4x.
  • Utilizzare TFLite Converter da SavedModel, Keras o ConcreteFunction per la conversione.
  • La visualizzazione e il debug sono disponibili tramite Netron, TFLite Inspector e Benchmark Tool.
  • I metadati vengono aggiunti tramite l'API Metadata Writer per l'integrazione con Task Library.

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche