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

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

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

للاطلاع على مثال شامل ويمكن تنفيذه بشأن إنشاء نموذج وتحويله، راجع مرحبًا بالعالم مثال.

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

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

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

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

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

سينشئ أمر يونكس التالي ملف مصدر C يحتوي على نموذج LiteRT كمصفوفة 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.

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

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

حجم النموذج

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

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

حجم المعالجة

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

دعم العمليات

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

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