.tflite — الجوهر، الهيكل وتطبيق تنسيق نموذج TFLite

المؤلف: IT Sectr نُشر: 2026-07-18 وقت القراءة: 6 دق

.tflite هو تنسيق ملف ثنائي لنماذج TensorFlow Lite، يعتمد على تقنية FlatBuffers من Google. التنسيق مُحسَّن للاستدلال الفعال على الأجهزة المحمولة والمضمنة والحافة ذات الموارد المحدودة. على عكس تنسيقات التسلسل الأخرى، يوفر FlatBuffers وصولاً مباشراً إلى البيانات دون الحاجة إلى تحليل أو نسخ، وهو أمر بالغ الأهمية لبدء تشغيل النموذج بسرعة. وفقاً لدليل محول TensorFlow Lite، 2025، يحتوي ملف .tflite على رسم بياني للحساب، وأوزان مكممة أو كاملة الدقة، وبيانات وصفية للمفسر. .tflite هو التنسيق القياسي للتعلم الآلي على الجهاز في نظام Google البيئي.

الخلاصة

  • .tflite — تنسيق نموذج TensorFlow Lite الثنائي القائم على FlatBuffers للاستدلال المحمول.
  • يحتوي الملف على رسم بياني للحساب وأوزان النموذج وبيانات وصفية في حاوية ثنائية واحدة.
  • يوفر FlatBuffers وصولاً مباشراً إلى البيانات دون تحليل أو تخصيص ذاكرة.
  • يدعم الكمية INT8, FP16 والكمية الديناميكية.
  • يُستخدم .tflite مع مفسر TFLite على Android وiOS وLinux.

ما هو تنسيق .tflite

.tflite هو تمثيل متسلسل لنموذج تعلم آلي مُحسَّن للاستدلال على الأجهزة ذات الذاكرة والطاقة الحاسوبية المحدودة. على عكس تنسيق SavedModel الذي يخزن الرسم البياني في protobuf ويتطلب موارد كبيرة للتحميل، يستخدم .tflite FlatBuffers — مكتبة تسلسل مع وصول إلى البيانات دون نسخ.

تم تصميم تنسيق .tflite مع مراعاة خصائص المنصات المحمولة: استهلاك أدنى للذاكرة أثناء التحميل، بدء تشغيل سريع، ودعم الأوزان المكممة. لا يدعم ملف .tflite التدريب — فقط الاستدلال. هذا فرق جوهري عن تنسيقات TensorFlow الكاملة، مما يسمح بتقليل حجم وقت التشغيل بشكل كبير.

وفقاً لـ Google Research، 2024، النماذج بتنسيق .tflite مع كمية INT8 تُحمَّل أسرع بنسبة 60% من نماذج FP32 المماثلة وتستهلك ذاكرة وصول عشوائي أقل بنسبة 40% أثناء الاستدلال.

الهيكل الداخلي لملف .tflite

يتكون ملف .tflite من عدة أقسام منظمة وفق مخطط FlatBuffers. القسم الرئيسي هو Model، الذي يحتوي على الرسم البياني للحساب (SubGraph)، وقائمة المشغلين (OperatorCodes) ومخازن الأوزان المؤقتة. يحتوي كل SubGraph على موترات ومشغلين ومؤشرات إدخال وإخراج.

يحتوي قسم OperatorCodes على معرفات جميع المشغلين المستخدمين في النموذج — Conv2D, DepthwiseConv2D, FullyConnected, Softmax وغيرها. لكل مشغل رمز من قائمة BuiltinOperator المحددة مسبقاً. إذا كان النموذج يحتوي على عمليات غير موجودة في القائمة، يتم وضع علامة Custom عليها وتتطلب تنفيذاً عبر مفوض أو مشغل مخصص.

يحتوي قسم Buffers على البيانات الثنائية لأوزان النموذج. اعتماداً على وضع الكمية، يمكن تخزين الأوزان بتنسيق FP32 أو FP16 أو INT8 أو بتنسيق مكمع مع معلمات القياس. يتم تعيين المخازن المؤقتة مباشرة في الذاكرة عبر mmap، مما يلغي النسخ الإضافي.

الأقسام الرئيسية لملف .tflite

القسمالغرض
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 من نموذج TensorFlow

لتحويل نموذج إلى .tflite، يُستخدم محول TFLite — مكون من TensorFlow متاح عبر واجهة Python tf.lite.TFLiteConverter. يدعم المحول ثلاثة مصادر: SavedModel وKeras H5 وConcreteFunction. مثال بسيط لتحويل نموذج Keras:

python
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 لتحديد نطاقات التنشيط:

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

أدوات العمل مع .tflite

توفر Google مجموعة من الأدوات لتحليل وتحسين نماذج .tflite. يقيس TFLite Benchmark Tool وقت الاستدلال على الجهاز ويعرض إحصائيات كل مشغل. يقوم TFLite Model Inspector بتصور الرسم البياني للحساب ويظهر أحجام الموترات.

Netron — أداة تصور نماذج متعددة المنصات تدعم .tflite إلى جانب ONNX وCore ML وPyTorch. يعرض Netron هيكل الرسم البياني ومعلمات كل مشغل والوصلات بين الموترات. مفيد لتصحيح الأخطاء أثناء التحويل.

تسمح واجهة TFLite Metadata API بإضافة بيانات وصفية إلى ملف .tflite: وصف النموذج، تنسيق بيانات الإدخال، وحدات القياس، معلومات المؤلف. تُستخدم البيانات الوصفية من قبل Task Library للتكوين التلقائي للمعالجة المسبقة واللاحقة.

مثال تحميل وتشغيل .tflite

مثال لتحميل نموذج .tflite على iOS باستخدام Swift API. توفر واجهة Swift API الخاصة بـ TFLite مفسراً (Interpreter) لتحميل النموذج من الحزمة وتشغيل الاستدلال. حدد مفوضاً للتسريع硬件 عبر 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()

// تحضير بيانات الإدخال للنموذج
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 في محرر نصوص؟

ملف .tflite له تنسيق FlatBuffers ثنائي ولا يمكن قراءته في محرر نصوص. للعرض، استخدم Netron أو TFLite Model Inspector اللذين يقومان بتصور هيكل النموذج.

كيف أتحقق من المشغلين المستخدمين في .tflite؟

استخدم tf.lite.experimental.Analyzer.analyze(model_path) في Python أو TFLite Benchmark Tool مع العلم --print_model_details. تعرض هذه الأدوات قائمة كاملة بالمشغلين مع المعلمات.

ما الفرق بين .tflite وONNX؟

.tflite مُحسَّن للاستدلال على الأجهزة المحمولة ويستخدم FlatBuffers. ONNX هو تنسيق عالمي لتبادل النماذج بين الأطر مع تسلسل protobuf. يتمتع TFLite بدعم كمية مدمج.

هل يمكن تحويل .tflite مرة أخرى إلى TensorFlow؟

لا، لا يوجد تحويل عكسي بسبب فقدان المعلومات أثناء الكمية والتحسين. يجب حفظ نموذج TensorFlow الأصلي بشكل منفصل للتدريب أو التعديلات المستقبلية.

كيف أضيف بيانات وصفية إلى ملف .tflite؟

استخدم واجهة Metadata Writer API من TFLite في Python. تسمح الواجهة بإضافة وصف وتنسيق المدخلات/المخرجات ووحدات القياس وبيانات مثال لـ Task Library.

الملخص

  • .tflite — تنسيق نموذج TensorFlow Lite الثنائي القائم على FlatBuffers للاستدلال المحمول.
  • يحتوي الملف على رسم بياني للحساب وأوزان وبيانات وصفية وSignatureDef في حاوية واحدة.
  • يوفر FlatBuffers وصول mmap إلى البيانات دون تحليل أو تخصيصات إضافية.
  • الكمية INT8 وFP16 والديناميكية تُقلل الحجم حتى 4 مرات.
  • استخدم محول TFLite من SavedModel أو Keras أو ConcreteFunction للتحويل.
  • التصور وتصحيح الأخطاء متاحان عبر Netron وTFLite Inspector وBenchmark Tool.
  • تُضاف البيانات الوصفية عبر Metadata Writer API للتكامل مع Task Library.

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا