مؤتمر Google I / O هو التفاف! تابع جلسات TensorFlow اعرض الجلسات

نموذج الأمثل

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

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

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

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

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

تخفيض حجم

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

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

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

تقليل الكمون

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

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

التوافق مع المسرع

بعض مسرعات الأجهزة، مثل حافة TPU ، يمكن تشغيل الاستدلال سريع للغاية مع النماذج التي تم تحسين بشكل صحيح.

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

المقايضات

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

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

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

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

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

توضيح

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

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

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

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

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

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

نموذج دقة أعلى 1 (أصلي) دقة أعلى 1 (بعد التدريب الكمي) أعلى 1 دقة (التدريب على معرفة الكميات) الكمون (الأصلي) (مللي ثانية) الكمون (الكمي بعد التدريب) (مللي ثانية) الكمون (التدريب على الوعي الكمي) (مللي ثانية) الحجم (الأصلي) (ميغا بايت) الحجم (الأمثل) (ميغا بايت)
Mobilenet-v1-1-224 0.709 0.657 0.70 124 112 64 16.9 4.3
Mobilenet-v2-1-224 0.719 0.637 0.709 89 98 54 14 3.6
Inception_v3 0.78 0.772 0.775 1130 845 543 95.7 23.9
Resnet_v2_101 0.770 0.768 غير متاح 3973 2868 غير متاح 178.3 44.9
الجدول 1 فوائد تكميم نموذج لنماذج مختارة CNN

تكميم عدد صحيح كامل مع عمليات تنشيط int16 وأوزان int8

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

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

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

نموذج نوع مقياس الدقة الدقة (عمليات تنشيط float32) الدقة (عمليات تنشيط int8) الدقة (عمليات تنشيط int16)
Wav2 حرف WER 6.7٪ 7.7٪ 7.2٪
DeepSpeech 0.5.1 (غير مسجل) CER 6.13٪ 43.67٪ 6.52٪
YoloV3 خريطة (IOU = 0.5) 0.577 0.563 0.574
MobileNetV1 دقة أعلى 1 0.7062 0.694 0.6936
MobileNetV2 دقة أعلى 1 0.718 0.7126 0.7137
موبايلبيرت F1 (تطابق تام) 88.81 (81.23) 2.08 (0) 88.73 (81.15)
الجدول 2 فوائد تكميم نموذج مع التنشيط int16

تشذيب

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

في المستقبل ، سيوفر TensorFlow Lite تقليل زمن الوصول للنماذج المشذبة.

تجمع

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

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

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

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

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

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