تحسين النموذج

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

LiteRT وتحسين نموذج TensorFlow مجموعة الأدوات توفر أدوات إلى الحدّ من تعقيد تحسين الاستنتاج.

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

مميزات تحسين النماذج

هناك العديد من الطرق الرئيسية التي يمكن أن يساعد بها تحسين النموذج في التطبيق والتطوير.

تقليل الحجم

يمكن استخدام بعض أشكال التحسين لخفض حجم أي نموذج. أصغر الفوائد التالية:

  • حجم تخزين أصغر: تشغَل النماذج الأصغر مساحة تخزين أقل على المستخدِمين الأجهزة. على سبيل المثال، سيحتاج تطبيق Android الذي يستخدم طرازًا أصغر مساحة تخزين أقل على الجهاز المحمول للمستخدم.
  • حجم تنزيل أصغر: تتطلب النماذج الأصغر حجمًا وقتًا أقل ومعدل نقل بيانات أقل التنزيل للمستخدمين الأجهزة.
  • استخدام أقل للذاكرة: تستخدم الطُرز الأصغر ذاكرة وصول عشوائي (RAM) أقل عند تشغيلها، وهو ما ويعمل على تفريغ الذاكرة لتستخدمه أجزاء أخرى من التطبيق، لتحقيق أداء واستقرار أفضل.

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

تقليل وقت الاستجابة

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

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

التوافق مع مسرِّعة الأعمال

بعض مسرِّعات الأجهزة، مثل Edge وحدة معالجة الموتّرات، يمكن أن تستنِد إلى الاستنتاج بسرعة كبيرة من خلال النماذج التي تم تحسينها بشكل صحيح.

وبشكل عام، تتطلب هذه الأنواع من الأجهزة تحديد النماذج كميًا في قائمة نفسها. ويمكنك الاطلاع على وثائق كل مسرِّع أجهزة للحصول على مزيد من المعلومات حول متطلبات المشروع.

المفاضلات

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

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

أنواع التحسين

يدعم LiteRT حاليًا التحسين من خلال التحليل الكمّي والتقليم والتجميع العنقودي.

هذه جزء من تحسين نماذج TensorFlow مجموعة الأدوات، التي توفر الموارد لتقنيات تحسين النماذج المتوافقة مع TensorFlow بسيط

الكمية

الكمية بتقليل دقة الأرقام المستخدمة لتمثيل قيمة التي تكون تلقائيًا أرقام نقاط عائمة بتنسيق 32 بت. وينتج عن ذلك حجم نموذج أصغر وحوسبة أسرع.

تتوفّر الأنواع التالية من قياس الكمية في LiteRT:

الأسلوب متطلبات البيانات تقليل الحجم الدقة الأجهزة المتوافقة
الكمّية float16 بعد التدريب ليس هناك أي بيانات ما يصل إلى 50% نقص بسيط في الدقة وحدة المعالجة المركزية (CPU)، وحدة معالجة الرسومات (GPU)
قياس النطاق الديناميكي بعد التدريب ليس هناك أي بيانات ما يصل إلى 75% أدنى نسبة انخفاض للدقة وحدة المعالجة المركزية (CPU)، وحدة معالجة الرسومات (GPU) (Android)
قياس الأعداد الصحيحة بعد التدريب العيّنة التمثيلية غير المصنَّفة ما يصل إلى 75% نقص بسيط في الدقة وحدة المعالجة المركزية (CPU)، وحدة معالجة الرسومات (Android)، EdgeTPU
تدريب مستند إلى الكميات بيانات التدريب المصنّفة ما يصل إلى 75% أدنى نسبة انخفاض للدقة وحدة المعالجة المركزية (CPU)، وحدة معالجة الرسومات (Android)، EdgeTPU

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

شجرة القرار الكمي

فيما يلي نتائج وقت الاستجابة والدقة لتقدير الكمي بعد التدريب التدريب المدرك للكمي على بعض النماذج. يتم قياس كل أرقام وقت الاستجابة على أجهزة Pixel 2 التي تستخدم وحدة معالجة مركزية (CPU) أساسية واحدة كبيرة ومع تحسن مجموعة الأدوات، الأرقام هنا:

الطراز الدقة الأولى (الأصلية) الدقة الأولى (تم تحديد قيمة ما بعد التدريب) الدقة الأولى (تدريب على قياس الكمية) وقت الاستجابة (الأصلي) (بالملّي ثانية) وقت الاستجابة (محدّد بعد التدريب) (بالمللي ثانية) وقت الاستجابة (تدريب مستند إلى الكمية) (بالملّي ثانية) الحجم (الأصلي) (بالميغابايت) الحجم (المحسَّن) (بالميغابايت)
Mobilenet-v1-1-2240.7090.6570.70 1241126416.94.3
Mobilenet-v2-1-2240.7190.6370.709 899854143.6
Inception_v30.780.7720.775 113084554395.723.9
Resnet_v2_1010.7700.768لا ينطبق 39732868لا ينطبق178.344.9
الجدول 1 مزايا تحديد كميّ النماذج لنماذج محدَّدة من شبكات CNN

قياس الأعداد الصحيحة بالكامل باستخدام عمليات تفعيل int16 ونسب int8

الكمّية باستخدام عمليات تفعيل int16 هو نظام الكمي للأعداد الصحيحة الكاملة مع عمليات التفعيل في int16 والأوزان في int8. ويمكن لهذا الوضع تحسين دقة النموذج الكمي مقارنةً نظام كمي الأعداد الصحيحة الكاملة باستخدام عمليات التفعيل والأوزان في int8 مع الحفاظ على حجم نموذج مماثل. يُنصح باستخدامه عندما تكون عمليات التفعيل حسّاسة. إلى تحديد الكمية.

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

في ما يلي نتائج الدقة لبعض النماذج التي تستفيد من هذا الوضع.

الطراز نوع مقياس الدقة الدقة (عمليات تفعيل float32) الدقة (عمليات تفعيل int8) الدقة (عمليات تفعيل int16)
Wav2letterWER6.7%7.7% 7.2%
Deepالكلام 0.5.1 (بدون تشغيل)CER6.13%43.67% 6.52%
YoloV3mAP(IOU=0.5)0.5770.563 0.574
MobileNetV1الدقة الأولى0.70620.694 0.6936
MobileNetV2الدقة الأولى0.7180.7126 0.7137
MobileBertF1(مطابقة تامة)88.81(81.23)(0) 88.73(81.15)
الجدول 2 مزايا قياس كمّية النماذج من خلال عمليات تفعيل int16

منشار تقليم وتشذيب

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

وفي المستقبل، سيعمل LiteRT على تقليل وقت الاستجابة للنماذج التي تم اقتطاعها.

مجمّع

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

ونتيجةً لذلك، يمكن ضغط النماذج المجمّعة بشكل أكثر فعالية، ما يوفر نشر مماثلة للتقليم.

سير عمل التطوير

كنقطة انطلاق، تحقق مما إذا كانت النماذج في النماذج مع تطبيقك. إذا لم يكن الأمر كذلك، أن يبدأ المستخدمون بتحديد الكميات بعد التدريب لأنّ ذلك ينطبق على نطاق واسع لا تتطلب بيانات تدريب.

بالنسبة إلى الحالات التي لا يتم فيها تحقيق أهداف الدقة ووقت الاستجابة، أو الأجهزة مسرِّعة الأعمال مهمة، ومع الإدراك الكمي التدريب هو الخيار الأفضل. اطّلع على مزيد من أساليب التحسين ضمن تحسين نموذج TensorFlow مجموعة الأدوات.

إذا أردت تقليل حجم النموذج أكثر، يمكنك تجربة الاقتصاص والدمج. و/أو التجميع العنقودي قبل قياس كميّة النماذج.