امروز برای رویداد محلی TensorFlow خود در همه جا پاسخ دهید!
این صفحه به‌وسیله ‏Cloud Translation API‏ ترجمه شده است.
Switch to English

بهینه سازی مدل

دستگاه های لبه اغلب دارای حافظه یا قدرت محاسباتی محدود هستند. بهینه سازی های مختلفی را می توان برای مدل ها اعمال کرد تا بتوان آنها را در این محدودیت ها اجرا کرد. علاوه بر این ، برخی از بهینه سازی ها امکان استفاده از سخت افزار تخصصی برای استنتاج سریع را دارند.

TensorFlow Lite و جعبه ابزار بهینه سازی مدل TensorFlow ابزاری را برای به حداقل رساندن پیچیدگی بهینه سازی استنباط ارائه می دهند.

توصیه می شود که در فرآیند توسعه برنامه خود ، بهینه سازی مدل را در نظر بگیرید. این سند بهترین روش ها را برای بهینه سازی مدل های TensorFlow برای استقرار در سخت افزار ارائه می دهد.

چرا مدل ها باید بهینه شوند

چندین روش اصلی وجود دارد که بهینه سازی مدل می تواند به توسعه برنامه کمک کند.

کاهش اندازه

برای کاهش اندازه مدل می توان از برخی از اشکال بهینه سازی استفاده کرد. مدل های کوچکتر دارای مزایای زیر هستند:

  • اندازه ذخیره سازی کوچکتر: مدل های کوچکتر فضای ذخیره سازی کمتری را در دستگاه های کاربران شما اشغال می کنند. به عنوان مثال ، یک برنامه Android با استفاده از مدل کوچکتر فضای ذخیره سازی کمتری را در دستگاه تلفن همراه کاربر اشغال می کند.
  • اندازه بارگیری کمتر: مدل های کوچکتر برای بارگیری در دستگاه های کاربران به زمان و پهنای باند کمتری نیاز دارند.
  • استفاده کمتر از حافظه: مدل های کوچکتر هنگام اجرا از RAM کمتری استفاده می کنند که باعث می شود حافظه برای قسمت های دیگر برنامه شما استفاده شود و می تواند عملکرد و ثبات بیشتری داشته باشد.

كوانتاسیون می تواند اندازه مدل را در همه این موارد كاهش دهد ، به طور بالقوه با هزینه ای از دقت. هرس و خوشه بندی می تواند با فشرده سازی راحت تر ، اندازه مدل را برای بارگیری کاهش دهد.

کاهش تاخیر

تأخیر ، مدت زمانی است که برای اجرای یک استنتاج واحد با یک مدل معین لازم است. برخی از اشکال بهینه سازی می توانند مقدار محاسبه مورد نیاز برای اجرای استنباط را با استفاده از یک مدل کاهش دهند و در نتیجه تأخیر کمتری ایجاد کنند. تأخیر همچنین می تواند در مصرف برق تأثیر بگذارد.

در حال حاضر ، می توان با ساده سازی محاسباتی که در حین استنتاج رخ می دهد ، به طور بالقوه با هزینه برخی از دقت ، مقداردهی را کاهش داد.

سازگاری شتاب دهنده

برخی از شتاب دهنده های سخت افزاری ، مانند Edge TPU ، می توانند با مدل هایی که به درستی بهینه شده اند ، نتیجه گیری را بسیار سریع انجام دهند.

به طور کلی ، این نوع دستگاه ها به مدل سازی نیاز دارند تا به روشی خاص انجام شود. برای کسب اطلاعات بیشتر در مورد نیاز آنها ، به اسناد شتاب دهنده سخت افزار مراجعه کنید.

داد و ستد

بهینه سازی ها می توانند به طور بالقوه منجر به تغییر در دقت مدل شوند ، که باید در طول فرایند توسعه برنامه مورد بررسی قرار گیرند.

تغییرات دقت به مدل بهینه شده بستگی دارد و پیش بینی آن دشوار است. به طور کلی ، مدل هایی که برای اندازه یا تأخیر بهینه شده اند ، دقت کمی را از دست می دهند. بسته به برنامه شما ، این ممکن است تجربه کاربران شما را تحت تأثیر قرار دهد یا نگذارد. در موارد نادر ، برخی از مدل ها ممکن است در نتیجه فرآیند بهینه سازی ، مقداری دقت داشته باشند.

انواع بهینه سازی

TensorFlow Lite در حال حاضر از بهینه سازی از طریق کمی سازی ، هرس و خوشه بندی پشتیبانی می کند.

اینها بخشی از جعبه ابزار بهینه سازی مدل TensorFlow است که منابعی را برای تکنیک های بهینه سازی مدل سازگار با TensorFlow Lite فراهم می کند.

کمی سازی

کمی سازی با کاهش دقت اعدادی که برای نشان دادن پارامترهای مدل استفاده می شوند ، کار می کند که به طور پیش فرض اعداد شناور 32 بیتی هستند. این نتیجه در اندازه مدل کوچکتر و محاسبه سریعتر است.

انواع مختلف کمی سازی در TensorFlow Lite در دسترس است:

تکنیک نیازهای داده کاهش اندازه دقت سخت افزار پشتیبانی شده
کمی سازی شناور 16 پس از آموزش اطلاعاتی وجود ندارد حداکثر تا 50٪ از دست دادن دقت ناچیز پردازنده ، پردازنده گرافیکی
کمی سازی محدوده دینامیکی پس از آموزش اطلاعاتی وجود ندارد تا 75٪ از دست دادن دقت CPU ، GPU (اندروید)
کمی سازی عدد صحیح پس از آموزش نمونه نماینده بدون برچسب تا 75٪ کاهش دقت کوچکتر CPU ، GPU (اندروید) ، EdgeTPU ، Hexagon DSP
آموزش آگاه از اندازه گیری داده های آموزشی دارای برچسب تا 75٪ کوچکترین افت دقت CPU ، GPU (اندروید) ، EdgeTPU ، Hexagon DSP

در زیر نتایج تأخیر و دقت برای اندازه گیری بعد از آموزش و آموزش آگاه از مقداردهی در چند مدل آورده شده است. تمام اعداد تأخیر در دستگاه های Pixel 2 با استفاده از یک پردازنده مرکزی بزرگ هسته ای اندازه گیری می شود. با بهبود جعبه ابزار ، اعداد در اینجا نیز بهبود می یابند:

مدل دقت بالا 1 (اصلی) دقت بالا 1 (آموزش مقدماتی پس از آموزش) دقت بالا 1 (آموزش آگاهی از اندازه گیری) تأخیر (اصلی) (میلی ثانیه) تأخیر (آموزش پس از اندازه گیری) (ms) تأخیر (آموزش آگاهی از میزان) (ms) اندازه (اصلی) (مگابایت) اندازه (بهینه شده) (مگابایت)
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 N / A 3973 2868 N / A 178.3 9/44
جدول 1 مزایای کمی سازی مدل برای مدل های انتخاب شده CNN

کمی سازی کامل عدد صحیح با فعال سازی int16 و وزن int8

کمی سازی با فعال سازی int16 یک طرح کمی سازی کامل عدد صحیح با فعال سازی در int16 و وزن در int8 است. این حالت می تواند دقت مدل کوانتیزه شده را در مقایسه با طرح کوانتیزه کردن عدد صحیح کامل با فعال سازی و وزن در int8 با اندازه مدل مشابه بهبود بخشد. توصیه می شود در مواقعی که فعال سازی ها به مقداردهی حساس هستند.

توجه: در حال حاضر فقط پیاده سازی های هسته مرجع غیربهینه شده در TFLite برای این طرح کمی سازی در دسترس هستند ، بنابراین به طور پیش فرض عملکرد در مقایسه با هسته های int8 کند خواهد بود. مزایای کامل این حالت در حال حاضر از طریق سخت افزار تخصصی یا نرم افزار سفارشی قابل دسترسی است.

در زیر نتایج دقت برخی از مدل هایی که از این حالت بهره می برند ، آورده شده است.

مدل نوع متریک دقت دقت (float32 فعال سازی) دقت (فعال سازی int8) دقت (فعال سازی int16)
Wav2letter 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.944 0.6936
MobileNetV2 دقت بالا 1 0.718 0.7126 0.7137
MobileBert F1 (مسابقه دقیق) 88.81 (81.23) 2.08 (0) 88.73 (81.15)
جدول 2 مزایای کمی سازی مدل با فعال سازی int16

هرس

هرس با حذف پارامترهای درون یک مدل که فقط تأثیر جزئی در پیش بینی های آن دارند ، کار می کند. مدل های هرس شده بر روی دیسک به یک اندازه هستند و زمان تاخیر یکسانی دارند ، اما می توانند به طور موثرتری فشرده شوند. این باعث می شود هرس یک روش مفید برای کاهش اندازه بارگیری مدل باشد.

در آینده ، TensorFlow Lite کاهش تاخیر برای مدل های هرس شده را فراهم می کند.

خوشه بندی

خوشه بندی با گروه بندی وزن های هر لایه در یک مدل در تعداد خوشه های از پیش تعریف شده ، سپس تقسیم مقادیر مرکز برای وزن های مربوط به هر خوشه منفرد کار می کند. این تعداد مقادیر وزن منحصر به فرد در یک مدل را کاهش می دهد ، بنابراین از پیچیدگی آن می کاهد.

در نتیجه ، می توان مدلهای خوشه ای را به طور موثرتری فشرده کرد ، و مزایای استقرار مشابه هرس را فراهم می کند.

گردش کار توسعه

به عنوان نقطه شروع ، بررسی کنید که آیا مدلهای موجود در مدلهای میزبان می توانند برای برنامه شما مناسب باشند. در غیر این صورت ، ما به کاربران توصیه می کنیم که از ابزار کوانتیزه بعد از آموزش استفاده کنند زیرا این کاربرد به طور گسترده ای کاربرد دارد و نیازی به داده های آموزشی ندارد.

برای مواردی که اهداف دقت و تأخیر برآورده نمی شوند ، یا پشتیبانی از شتاب دهنده سخت افزاری مهم است ، آموزش آگاهی از مقدار ، گزینه بهتر است. تکنیک های اضافی بهینه سازی را در جعبه ابزار بهینه سازی مدل TensorFlow مشاهده کنید.

اگر می خواهید اندازه مدل خود را بیشتر کاهش دهید ، می توانید هرس و / یا خوشه بندی را قبل از کمی سازی مدل های خود امتحان کنید.