إنشاء نماذج وتحويلها

تكون وحدات التحكم الدقيقة ذات ذاكرة وصول عشوائي ومساحة تخزين محدودة، ما يضع قيودًا على أحجام نماذج التعلم الآلي. بالإضافة إلى ذلك، يدعم TensorFlow Lite لوحدات التحكم الصغيرة حاليًا مجموعة فرعية محدودة من العمليات، لذا ليست كل بُنى النماذج ممكنة.

يشرح هذا المستند عملية تحويل نموذج TensorFlow لتشغيله على وحدات التحكم الدقيقة. كما أنه يحدد العمليات المدعومة ويقدم بعض الإرشادات حول تصميم وتدريب نموذج ليناسب الذاكرة المحدودة.

للاطّلاع على مثال شامل قابل للتنفيذ لإنشاء نموذج وتحويله، يُرجى مراجعة مثال Hello World.

الإحالة الناجحة للنموذج

لتحويل نموذج TensorFlow المدرَّب لتشغيله على وحدات التحكّم الدقيقة، عليك استخدام واجهة برمجة تطبيقات Python Lite للمحوِّلات من TensorFlow Lite. سيؤدي هذا إلى تحويل النموذج إلى FlatBuffer، ما يقلّل من حجم النموذج ويعدّله لاستخدام عمليات TensorFlow Lite.

للحصول على أصغر حجم نموذج ممكن، ننصحك باستخدام تحديد الكمي بعد التدريب.

التحويل إلى صفيفة C

لا تدعم العديد من الأنظمة الأساسية لوحدات التحكم الدقيقة نظام ملفات أصلي. إن أسهل طريقة لاستخدام نموذج من برنامجك هي تضمينه كصفيفة C وتجميعه في برنامجك.

سينشئ أمر Unix التالي ملف مصدر C يحتوي على نموذج TensorFlow Lite على أنّه مصفوفة char:

xxd -i converted_model.tflite > model_data.cc

سيبدو الناتج مشابهًا لما يلي:

unsigned char converted_model_tflite[] = {
  0x18, 0x00, 0x00, 0x00, 0x54, 0x46, 0x4c, 0x33, 0x00, 0x00, 0x0e, 0x00,
  // <Lines omitted>
};
unsigned int converted_model_tflite_len = 18200;

بمجرد إنشاء الملف، يمكنك تضمينه في برنامجك. من المهم تغيير تعريف الصفيف إلى const لتحسين كفاءة الذاكرة في الأنظمة الأساسية المضمّنة.

للحصول على مثال حول كيفية تضمين نموذج واستخدامه في برنامجك، يمكنك الاطّلاع على hello_world_test.cc في مثال Hello World.

بنية النموذج والتدريب

عند تصميم نموذج لاستخدامه على وحدات التحكم الدقيقة، من المهم مراعاة حجم النموذج وعبء العمل والعمليات المستخدمة.

حجم الطراز

يجب أن يكون النموذج صغيرًا بما يكفي ليناسب ذاكرة الجهاز المستهدف إلى جانب بقية البرنامج، سواء كبرنامج ثنائي أو في وقت التشغيل.

لإنشاء نموذج أصغر، يمكنك استخدام طبقات أقل وأصغر في البنية. ومع ذلك، فمن المرجح أن تعاني النماذج الصغيرة من فرط التخصيص. هذا يعني أنه بالنسبة للعديد من المشكلات، من المنطقي محاولة استخدام أكبر نموذج يتناسب مع الذاكرة. ومع ذلك، سيؤدي استخدام نماذج أكبر أيضًا إلى زيادة عبء عمل المعالج.

حجم المعالجة

يؤثر حجم وتعقيد النموذج في عبء العمل. قد تؤدي النماذج الكبيرة والمعقدة إلى دورة عمل أعلى، ما يعني أن معالج الجهاز يقضي وقتًا أطول في العمل ووقتًا أقل في وضع عدم النشاط. سيؤدي ذلك إلى زيادة استهلاك الطاقة وإخراج الحرارة، ما قد يمثل مشكلة بناءً على استخدام التطبيق.

دعم العمليات

يدعم TensorFlow Lite لوحدات التحكم الدقيقة حاليًا مجموعة فرعية محدودة من عمليات TensorFlow التي تؤثر في بُنى النماذج التي يمكن تشغيلها. ونحن نعمل على توسيع نطاق دعم العمليات، سواء من حيث عمليات تنفيذ المراجع وعمليات التحسين لبُنى محددة.

يمكن الاطّلاع على العمليات المتوافقة في الملف. micro_mutable_ops_resolver.h