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

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

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

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

أسباب تحسين النماذج

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

تقليل الحجم

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

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

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

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

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

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

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

يمكن لبعض مسرّعات الأجهزة، مثل Edge TPU، إجراء استنتاج بسرعة كبيرة مع الطُرز التي تم تحسينها بشكل صحيح.

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

المفاضلات

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

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

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

يدعم TensorFlow Lite حاليًا عملية التحسين من خلال تحديد الكمية والتصفية والتجميع العنقودي.

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

تحديد الكمية

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

تتوفّر الأنواع التالية من تحديد الكمية في TensorFlow Lite:

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

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

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

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

الطراز أعلى درجة دقة (الأصلي) دقة أهم 1 (كمية بعد التدريب) الدقة الأفضل (تدريب مدرك على تحديد الكم) وقت الاستجابة (الأصلي) (بالملّي ثانية) وقت الاستجابة (كمي بعد التدريب) (بالمللي ثانية) وقت الاستجابة (التدريب الواعي لتحديد الكم) (بالملّي ثانية) الحجم (الأصلي) (ميغابايت) الحجم (محسَّن) (ميغابايت)
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)
Wav2letterفريق WER6.7%7.7% 7.2%
DeepSpeech 0.5.1 (غير مشغَّل)معدّل الإحالات الناجحة (CER)6.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)2.08(0) 88.73(81.15)
الجدول 2 مزايا تحديد كمية النماذج باستخدام عمليات تفعيل int16

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

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

في المستقبل، سيوفر TensorFlow Lite تقليل وقت الاستجابة للنماذج التي تم إجراء تغييرات عليها.

مجمّع

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

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

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

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

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

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