.tflite هو تنسيق ملف ثنائي لنماذج TensorFlow Lite، يعتمد على تقنية FlatBuffers من Google. التنسيق مُحسَّن للاستدلال الفعال على الأجهزة المحمولة والمضمنة والحافة ذات الموارد المحدودة. على عكس تنسيقات التسلسل الأخرى، يوفر FlatBuffers وصولاً مباشراً إلى البيانات دون الحاجة إلى تحليل أو نسخ، وهو أمر بالغ الأهمية لبدء تشغيل النموذج بسرعة. وفقاً لدليل محول TensorFlow Lite، 2025، يحتوي ملف .tflite على رسم بياني للحساب، وأوزان مكممة أو كاملة الدقة، وبيانات وصفية للمفسر. .tflite هو التنسيق القياسي للتعلم الآلي على الجهاز في نظام Google البيئي.
الخلاصة
.tflite هو تمثيل متسلسل لنموذج تعلم آلي مُحسَّن للاستدلال على الأجهزة ذات الذاكرة والطاقة الحاسوبية المحدودة. على عكس تنسيق SavedModel الذي يخزن الرسم البياني في protobuf ويتطلب موارد كبيرة للتحميل، يستخدم .tflite FlatBuffers — مكتبة تسلسل مع وصول إلى البيانات دون نسخ.
تم تصميم تنسيق .tflite مع مراعاة خصائص المنصات المحمولة: استهلاك أدنى للذاكرة أثناء التحميل، بدء تشغيل سريع، ودعم الأوزان المكممة. لا يدعم ملف .tflite التدريب — فقط الاستدلال. هذا فرق جوهري عن تنسيقات TensorFlow الكاملة، مما يسمح بتقليل حجم وقت التشغيل بشكل كبير.
وفقاً لـ Google Research، 2024، النماذج بتنسيق .tflite مع كمية INT8 تُحمَّل أسرع بنسبة 60% من نماذج FP32 المماثلة وتستهلك ذاكرة وصول عشوائي أقل بنسبة 40% أثناء الاستدلال.
يتكون ملف .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 بت. يتطلب التحويل مجموعة بيانات تمثيلية لمعايرة نطاقات التنشيط. يقل حجم النموذج 4 مرات.
الكمية FP16 — يتم تحويل الأوزان إلى أعداد فاصلة عائمة 16 بت. لا يتطلب هذا الوضع معايرة ويوفر فقداناً ضئيلاً في الدقة. تبقى التنشيطات في FP32. يقل حجم النموذج مرتين. يُوصى به للأجهزة التي تدعم FP16 على GPU وNPU.
الكمية الديناميكية — يتم تحويل الأوزان إلى INT8 ولكن تُحسب التنشيطات في FP32. يقل حجم النموذج 4 مرات مع بقاء الدقة أعلى من INT8 الكامل. وفقاً لـ Google ML Performance Benchmarks، هذا الوضع مثالي لنماذج NLP والنماذج عالية الحساسية للدقة.
لتحويل نموذج إلى .tflite، يُستخدم محول TFLite — مكون من TensorFlow متاح عبر واجهة Python tf.lite.TFLiteConverter. يدعم المحول ثلاثة مصادر: 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. توفر واجهة Swift API الخاصة بـ TFLite مفسراً (Interpreter) لتحميل النموذج من الحزمة وتشغيل الاستدلال. حدد مفوضاً للتسريع硬件 عبر 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 الأصلي بشكل منفصل للتدريب أو التعديلات المستقبلية.
استخدم واجهة Metadata Writer API من TFLite في Python. تسمح الواجهة بإضافة وصف وتنسيق المدخلات/المخرجات ووحدات القياس وبيانات مثال لـ Task Library.
الملخص
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.
اقرأ أيضًا