Το TensorFlow Lite — είναι η ελαφριά έκδοση του πλαισίου TensorFlow, που αναπτύχθηκε από την Google για την εκτέλεση μοντέλων μηχανικής μάθησης σε κινητές και ενσωματωμένες συσκευές με περιορισμένους υπολογιστικούς πόρους. Σε αντίθεση με το πλήρες TensorFlow, το TFLite χρησιμοποιεί εξειδικευμένο διερμηνέα και μορφή .tflite, βελτιστοποιημένη για γρήγορη εξαγωγή συμπερασμάτων χωρίς υποστήριξη εκπαίδευσης. Σύμφωνα με τον TensorFlow Lite Guide, 2025, το πλαίσιο λειτουργεί σε Android, iOS και Linux και χρησιμοποιείται σε περισσότερες από 4 δισεκατομμύρια συσκευές. Το TensorFlow Lite υποστηρίζει κβάντιση, επιτάχυνση υλικού μέσω NNAPI, GPU και αντιπροσώπων Core ML.
Βασικά σημεία
TensorFlow Lite — είναι ένα εξειδικευμένο περιβάλλον χρόνου εκτέλεσης για την εκτέλεση μοντέλων μηχανικής μάθησης σε συσκευές με περιορισμένους πόρους. Σε αντίθεση με το πλήρες TensorFlow, το TFLite δεν υποστηρίζει εκπαίδευση και οπισθοδιάδοση — μόνο εξαγωγή συμπερασμάτων. Αυτό επιτρέπει την ελαχιστοποίηση του δυαδικού μεγέθους της βιβλιοθήκης: περίπου 300 KB για τον βασικό διερμηνέα σε Android.
Η αρχιτεκτονική του TFLite είναι χτισμένη γύρω από τη μορφή .tflite, που βασίζεται στα FlatBuffers. Τα FlatBuffers παρέχουν άμεση πρόσβαση στα δεδομένα χωρίς στάδιο ανάλυσης, κάτι που είναι κρίσιμο για κινητές συσκευές με περιορισμένη μνήμη. Το μοντέλο σε μορφή .tflite περιέχει το γράφημα υπολογισμού, τα βάρη και τα μεταδεδομένα σε ένα ενιαίο δυαδικό αρχείο.
Σύμφωνα με το Google I/O 2024, το TFLite χρησιμοποιείται στα Google Photos, Gboard, YouTube και άλλες εφαρμογές Google με συνολικό κοινό άνω των 4 δισεκατομμυρίων συσκευών. Το πλαίσιο υποστηρίζει όλες τις κύριες αρχιτεκτονικές: CNN, RNN, LSTM, Transformer και προσαρμοσμένες λειτουργίες μέσω αντιπροσώπων.
Το περιβάλλον χρόνου εκτέλεσης TFLite αποτελείται από τέσσερα στοιχεία. Ο TFLite Converter δέχεται το μοντέλο από το TensorFlow (SavedModel, Keras, ConcreteFunction) και το μετατρέπει σε μορφή .tflite με προαιρετική βελτιστοποίηση. Ο TFLite Interpreter φορτώνει το .tflite και εκτελεί την εξαγωγή συμπερασμάτων, διαχειριζόμενος τανυστές και μνήμη.
Αντιπρόσωποι — είναι στοιχεία που μεταφέρουν την εκτέλεση λειτουργιών σε εξειδικευμένο υλικό. Ο GPU Delegate χρησιμοποιεί OpenGL ES και Metal, ο NNAPI Delegate — Android Neural Networks API, ο Core ML Delegate — Apple Core ML. Ο XNNPACK Delegate βελτιστοποιεί την εκτέλεση σε ARM CPU. Κάθε αντιπρόσωπος υποστηρίζει ένα συγκεκριμένο σύνολο τελεστών.
Το τέταρτο στοιχείο — Task Library, που παρέχει API υψηλού επιπέδου για τυπικές εργασίες: ταξινόμηση εικόνων, ανίχνευση αντικειμένων, τμηματοποίηση, NLU. Η Task Library λειτουργεί πάνω από τον Interpreter και κρύβει τις λεπτομέρειες διαχείρισης τανυστών.
Το TFLite υποστηρίζει τρία επίπεδα κβάντισης. Η πλήρης ακέραια κβάντιση INT8 μετατρέπει τα βάρη και τις ενεργοποιήσεις από FP32 σε 8-bit ακέραιους αριθμούς. Το μέγεθος του μοντέλου μειώνεται 4 φορές και η ταχύτητα εξαγωγής συμπερασμάτων σε συσκευές με υποστήριξη INT8 αυξάνεται έως 3x. Η κβάντιση FP16 μειώνει το μέγεθος στο μισό με ελάχιστη απώλεια ακρίβειας.
Η δυναμική κβάντιση διατηρεί τα βάρη σε INT8, αλλά εκτελεί υπολογισμούς σε FP32. Αυτή η λειτουργία είναι κατάλληλη για μοντέλα ευαίσθητα στην ακρίβεια και παρέχει μείωση μεγέθους έως 4x διατηρώντας την ποιότητα. Σύμφωνα με το Google ML Performance Benchmarks, η δυναμική κβάντιση συνιστάται για μοντέλα NLP.
| Λειτουργία | Τύπος βαρών | Τύπος ενεργοποιήσεων | Μείωση μεγέθους |
|---|---|---|---|
| FP32 (χωρίς κβάντιση) | FP32 | FP32 | 1x |
| FP16 | FP16 | FP32 | 2x |
| Δυναμικό INT8 | INT8 | FP32 | 4x |
| Πλήρες INT8 | INT8 | INT8 | 4x |
Στο Android, ο κύριος μηχανισμός επιτάχυνσης είναι ο NNAPI Delegate, ο οποίος μεταφέρει την εκτέλεση λειτουργιών σε NPU, DSP ή GPU μέσω του Android Neural Networks API. Το NNAPI είναι διαθέσιμο σε συσκευές με Android 8.1+ και υποστηρίζει υπολογισμούς INT8 και FP16. Ο GPU Delegate για Android χρησιμοποιεί OpenGL ES 3.1+ και Vulkan.
Στο iOS, η επιτάχυνση παρέχεται μέσω του Core ML Delegate, ο οποίος μεταφράζει τις λειτουργίες TFLite σε μορφή Core ML και τις εκτελεί στο Apple Neural Engine. Σύμφωνα με το Apple ML Benchmarking, η χρήση του Core ML Delegate επιταχύνει την εξαγωγή συμπερασμάτων στο iPhone 15 Pro έως 4x σε σύγκριση με την CPU. Ο GPU Delegate για iOS χρησιμοποιεί Metal Performance Shaders.
Ο XNNPACK Delegate — μια διαπλατφορμική λύση για ARM CPU, βελτιστοποιημένη για κινητούς επεξεργαστές. Το XNNPACK υποστηρίζει λειτουργίες FP32, FP16 και INT8 και δεν απαιτεί εξειδικευμένο υλικό. Συνιστάται ως βασικός αντιπρόσωπος για όλες τις συσκευές.
Η διαδικασία ανάπτυξης περιλαμβάνει τρία βήματα. Πρώτο — μετατροπή του μοντέλου σε .tflite μέσω TFLite Converter. Δεύτερο — συμπερίληψη του αρχείου .tflite στους πόρους της εφαρμογής. Για Android το αρχείο τοποθετείται στους φακέλους assets, για iOS — στο bundle της εφαρμογής μέσω Xcode. Τρίτο — αρχικοποίηση του Interpreter και εκτέλεση εξαγωγής συμπερασμάτων.
Για δυναμική ενημέρωση μοντέλων, η Google συνιστά τη χρήση του Firebase ML Model Downloading ή ενός δικού σας μηχανισμού λήψης από το cloud. Το ενημερωμένο αρχείο .tflite αποθηκεύεται στην τοπική αποθήκευση και φορτώνεται στον Interpreter κατά την επόμενη εκκίνηση.
Κατά την ανάπτυξη, είναι σημαντικό να ληφθεί υπόψη το μέγεθος του αρχείου .tflite. Το Google Play περιορίζει το μέγεθος APK στα 200 MB. Για μοντέλα μεγαλύτερα από 50 MB, συνιστάται η χρήση του Android App Bundle ή η λήψη του μοντέλου ξεχωριστά μέσω του Play Asset Delivery.
Παράδειγμα φόρτωσης και εκτέλεσης μοντέλου σε Android με Java API. Χρησιμοποιήστε Interpreter.create() για φόρτωση .tflite από assets και run() για εξαγωγή συμπερασμάτων. Τα δεδομένα εισόδου και εξόδου μεταφέρονται ως πολυδιάστατοι πίνακες ή ByteBuffer:
import org.tensorflow.lite.Interpreter;
import java.nio.MappedByteBuffer;
import java.io.FileInputStream;
import java.nio.channels.FileChannel;
MappedByteBuffer model = new FileInputStream(
getAssets().openFd("model.tflite")
).getChannel().map(
FileChannel.MapMode.READ_ONLY, 0, fc.size()
);
Interpreter interpreter = new Interpreter.create(model);
float[][] input = new float[1][224 * 224 * 3];
float[][] output = new float[1][1000];
interpreter.run(input, output);
interpreter.close();
Παράδειγμα χρήσης GPU Delegate σε Android για επιτάχυνση υλικού. Προσθέστε την εξάρτηση com.android.support:tensorflow-lite-gpu και καθορίστε τον αντιπρόσωπο κατά τη δημιουργία του Interpreter:
import org.tensorflow.lite.Interpreter;
import org.tensorflow.lite.gpu.GpuDelegate;
GpuDelegate gpuDelegate = new GpuDelegate.create();
Interpreter.Options options = new Interpreter.Options().addDelegate(gpuDelegate);
Interpreter interpreter = new Interpreter.create(model, options);
// Εκτέλεση συμπερασμού στα δεδομένα εισόδου
interpreter.run(input, output);
// Απελευθέρωση πόρων αντιπροσώπου μετά τον συμπερασμό
gpuDelegate.close();
interpreter.close();
Συχνές ερωτήσεις
TensorFlow — πλήρες πλαίσιο για εκπαίδευση και εξαγωγή συμπερασμάτων. Το TensorFlow Lite — μόνο για εξαγωγή συμπερασμάτων σε κινητές συσκευές. Το TFLite χρησιμοποιεί μορφή .tflite και δεν υποστηρίζει οπισθοδιάδοση.
Υποστηρίζονται GPU Delegate (OpenGL/Metal), NNAPI Delegate (Android), Core ML Delegate (iOS) και XNNPACK Delegate (ARM CPU). Κάθε αντιπρόσωπος είναι βελτιστοποιημένος για συγκεκριμένο τύπο υλικού.
Χρησιμοποιήστε κβάντιση: το FP16 μειώνει το μέγεθος 2x, το INT8 — 4x. Επίσης διαθέσιμα είναι η δυναμική κβάντιση, το κλάδεμα βαρών (weight pruning) και η απόσταξη μοντέλου πριν από τη μετατροπή.
Ναι, μέσω του TFLite Model Maker και του API εκπαίδευσης στη συσκευή (πειραματικά). Υποστηρίζεται η λεπτή ρύθμιση (fine-tuning) και η εξατομίκευση μοντέλων απευθείας στη συσκευή του χρήστη.
Το TFLite υποστηρίζει CNN, RNN, LSTM, Transformer, κινητές αρχιτεκτονικές (MobileNet, EfficientNet, YOLO, BERT) και προσαρμοσμένες λειτουργίες. Περιορισμός — διαθέσιμοι τελεστές στον αντιπρόσωπο-στόχο.
Σύνοψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης