Το .tflite είναι μια δυαδική μορφή αρχείου μοντέλου TensorFlow Lite, βασισμένη στην τεχνολογία FlatBuffers της Google. Η μορφή είναι βελτιστοποιημένη για αποτελεσματική εκτέλεση συμπερασμού σε κινητές, ενσωματωμένες και edge συσκευές με περιορισμένους πόρους. Σε αντίθεση με άλλες μορφές σειριοποίησης, το FlatBuffers παρέχει άμεση πρόσβαση στα δεδομένα χωρίς στάδιο ανάλυσης και αντιγραφής, το οποίο είναι κρίσιμο για γρήγορη εκκίνηση του μοντέλου. Σύμφωνα με τον TensorFlow Lite Converter Guide, 2025, το αρχείο .tflite περιέχει γράφο υπολογισμών, κβαντισμένα ή πλήρους ακρίβειας βάρη και μεταδεδομένα για τον διερμηνέα. Το .tflite είναι η τυπική μορφή για on-device ML στο οικοσύστημα της Google.
Κύρια σημεία
Το .tflite είναι μια σειριοποιημένη αναπαράσταση ενός μοντέλου μηχανικής μάθησης, βελτιστοποιημένη για συμπερασμό σε συσκευές με περιορισμένη μνήμη και υπολογιστική ισχύ. Σε αντίθεση με τη μορφή SavedModel, η οποία αποθηκεύει τον γράφο σε protobuf και απαιτεί σημαντικούς πόρους για φόρτωση, το .tflite χρησιμοποιεί FlatBuffers — μια βιβλιοθήκη σειριοποίησης με πρόσβαση στα δεδομένα χωρίς αντιγραφή.
Η μορφή .tflite σχεδιάστηκε λαμβάνοντας υπόψη τα χαρακτηριστικά των κινητών πλατφορμών: ελάχιστη κατανάλωση μνήμης κατά τη φόρτωση, γρήγορη εκκίνηση, υποστήριξη για κβαντισμένα βάρη. Το αρχείο .tflite δεν υποστηρίζει εκπαίδευση — μόνο συμπερασμό. Αυτή είναι μια θεμελιώδης διαφορά από τις μορφές πλήρους TensorFlow, η οποία επιτρέπει σημαντική μείωση του μεγέθους του χρόνου εκτέλεσης.
Σύμφωνα με το Google Research, 2024, τα μοντέλα σε μορφή .tflite με κβάντιση INT8 φορτώνουν 60% γρηγορότερα από παρόμοια μοντέλα σε μορφή FP32 και καταναλώνουν 40% λιγότερη RAM κατά τη διάρκεια του συμπερασμού.
Το αρχείο .tflite αποτελείται από πολλές ενότητες, οργανωμένες σύμφωνα με το σχήμα FlatBuffers. Η κύρια ενότητα — Model, η οποία περιέχει τον γράφο υπολογισμών (SubGraph), τη λίστα τελεστών (OperatorCodes) και τους ρυθμιστές με βάρη. Κάθε SubGraph περιέχει τανυστές, τελεστές, δείκτες εισόδου και εξόδου.
Η ενότητα OperatorCodes περιέχει αναγνωριστικά όλων των τελεστών που χρησιμοποιούνται στο μοντέλο — Conv2D, DepthwiseConv2D, FullyConnected, Softmax και άλλα. Κάθε τελεστής έχει έναν κωδικό από την προκαθορισμένη λίστα BuiltinOperator. Εάν το μοντέλο περιέχει λειτουργίες που δεν υπάρχουν στη λίστα, επισημαίνονται ως Custom και απαιτούν υλοποίηση μέσω εκπροσώπου ή προσαρμοσμένου τελεστή.
Η ενότητα Buffers περιέχει τα δυαδικά δεδομένα των βαρών του μοντέλου. Ανάλογα με τη λειτουργία κβάντισης, τα βάρη μπορούν να αποθηκευτούν σε FP32, FP16, INT8 ή σε κβαντισμένη μορφή με παραμέτρους κλιμάκωσης. Οι ρυθμιστές αντιστοιχίζονται απευθείας στη μνήμη μέσω του μηχανισμού mmap, το οποίο εξαλείφει την πρόσθετη αντιγραφή.
| Ενότητα | Σκοπός |
|---|---|
| Model | Ριζική δομή, έκδοση, περιγραφή |
| SubGraph | Γράφος υπολογισμών: τανυστές, τελεστές, είσοδοι/έξοδοι |
| OperatorCodes | Λίστα χρησιμοποιούμενων τελεστών |
| Buffers | Δυαδικά δεδομένα βαρών μοντέλου |
| Metadata | Μεταδεδομένα: έκδοση, συγγραφέας, περιγραφή |
| SignatureDef | Ονομασμένες είσοδοι και έξοδοι για API |
Το .tflite υποστηρίζει τρεις λειτουργίες κβάντισης. Πλήρης ακέραια κβάντιση INT8 — τα βάρη και οι ενεργοποιήσεις αναπαρίστανται ως ακέραιοι αριθμοί 8-bit. Για τη μετατροπή απαιτείται αντιπροσωπευτικό σύνολο δεδομένων για βαθμονόμηση των περιοχών ενεργοποίησης. Το μέγεθος του μοντέλου μειώνεται 4 φορές.
Κβάντιση FP16 — τα βάρη μετατρέπονται σε αριθμούς κινητής υποδιαστολής 16-bit. Αυτή η λειτουργία δεν απαιτεί βαθμονόμηση και δίνει ελάχιστη απώλεια ακρίβειας. Οι ενεργοποιήσεις παραμένουν σε FP32. Το μέγεθος του μοντέλου μειώνεται 2 φορές. Συνιστάται για συσκευές με υποστήριξη FP16 σε GPU και NPU.
Δυναμική κβάντιση — τα βάρη μετατρέπονται σε INT8, αλλά οι ενεργοποιήσεις υπολογίζονται σε FP32. Το μέγεθος του μοντέλου μειώνεται 4 φορές, αλλά η ακρίβεια παραμένει υψηλότερη από την πλήρη INT8. Σύμφωνα με το Google ML Performance Benchmarks, αυτή η λειτουργία είναι βέλτιστη για μοντέλα NLP και μοντέλα με υψηλή ευαισθησία στην ακρίβεια.
Για τη μετατροπή του μοντέλου σε .tflite χρησιμοποιείται ο TFLite Converter — ένα στοιχείο TensorFlow προσβάσιμο μέσω του Python API tf.lite.TFLiteConverter. Ο Converter υποστηρίζει τρεις πηγές: SavedModel, Keras H5 και ConcreteFunction. Ένα ελάχιστο παράδειγμα μετατροπής μοντέλου Keras:
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 για τον προσδιορισμό των περιοχών ενεργοποίησης:
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()
Η Google παρέχει ένα σύνολο εργαλείων για ανάλυση και βελτιστοποίηση μοντέλων .tflite. Το TFLite Benchmark Tool μετρά τον χρόνο συμπερασμού στη συσκευή και εμφανίζει στατιστικά για κάθε τελεστή. Το TFLite Model Inspector οπτικοποιεί τον γράφο υπολογισμών και δείχνει τα μεγέθη των τανυστών.
Netron — ένας ανεξάρτητος πλατφόρμας οπτικοποιητής μοντέλων, που υποστηρίζει .tflite μαζί με ONNX, Core ML και PyTorch. Το Netron εμφανίζει τη δομή του γράφου, τις παραμέτρους κάθε τελεστή και τις συνδέσεις μεταξύ τανυστών. Χρήσιμο για εντοπισμό σφαλμάτων κατά τη μετατροπή.
Το TFLite Metadata API επιτρέπει την προσθήκη μεταδεδομένων στο αρχείο .tflite: περιγραφή μοντέλου, μορφή δεδομένων εισόδου, μονάδες μέτρησης, πληροφορίες για τον συγγραφέα. Τα μεταδεδομένα χρησιμοποιούνται από το Task Library για αυτόματη διαμόρφωση προεπεξεργασίας και μεταεπεξεργασίας.
Παράδειγμα φόρτωσης μοντέλου .tflite σε iOS με Swift API. Το TFLite Swift API παρέχει έναν Interpreter για φόρτωση του μοντέλου από το bundle και εκτέλεση συμπερασμού. Καθορίστε έναν εκπρόσωπο για επιτάχυνση υλικού μέσω του Core ML Delegate:
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 έχει δυαδική μορφή FlatBuffers και δεν μπορεί να διαβαστεί σε επεξεργαστή κειμένου. Για προβολή χρησιμοποιήστε το Netron ή το TFLite Model Inspector, που οπτικοποιούν τη δομή του μοντέλου.
Χρησιμοποιήστε το tf.lite.experimental.Analyzer.analyze(model_path) στην Python ή το TFLite Benchmark Tool με τη σημαία --print_model_details. Τα εργαλεία εμφανίζουν την πλήρη λίστα των τελεστών με παραμέτρους.
Το .tflite είναι βελτιστοποιημένο για συμπερασμό σε κινητές συσκευές και χρησιμοποιεί FlatBuffers. Το ONNX είναι μια καθολική μορφή για ανταλλαγή μοντέλων μεταξύ πλαισίων με σειριοποίηση σε protobuf. Το TFLite έχει ενσωματωμένη υποστήριξη για κβάντιση.
Όχι, αντίστροφη μετατροπή δεν υπάρχει λόγω απώλειας πληροφοριών κατά την κβάντιση και βελτιστοποίηση. Το αρχικό μοντέλο TensorFlow πρέπει να διατηρείται ξεχωριστά για περαιτέρω εκπαίδευση ή αλλαγές.
Χρησιμοποιήστε το TFLite Metadata Writer API στην Python. Το API επιτρέπει την προσθήκη περιγραφής, μορφής εισόδου/εξόδου, μονάδων μέτρησης και δειγμάτων δεδομένων για το Task Library.
Σύνοψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης