آموزش آگاهی از کوانتیزاسیون

توسط بهینه سازی مدل TensorFlow نگهداری می شود

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

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

بررسی اجمالی

آموزش آگاهانه کوانتیزاسیون، کوانتیزاسیون زمان استنتاج را تقلید می کند، و مدلی را ایجاد می کند که ابزارهای پایین دستی برای تولید مدل های واقعی کوانتیزه شده از آن استفاده می کنند. مدل‌های کوانتیزه شده از دقت کمتری استفاده می‌کنند (مثلاً 8 بیت به جای شناور 32 بیت)، که منجر به مزایایی در طول استقرار می‌شود.

استقرار با کوانتیزاسیون

کوانتیزاسیون از طریق فشرده سازی مدل و کاهش تأخیر بهبودهایی را به همراه دارد. با پیش‌فرض‌های API، اندازه مدل 4 برابر کاهش می‌یابد و ما معمولاً بین 1.5 تا 4 برابر بهبود در تأخیر CPU در باطن‌های آزمایش شده مشاهده می‌کنیم. در نهایت، بهبود تاخیر در شتاب دهنده های یادگیری ماشینی سازگار، مانند EdgeTPU و NNAPI قابل مشاهده است.

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

آزمایش با کوانتیزاسیون و سخت افزار مرتبط

کاربران می توانند پارامترهای کوانتیزاسیون (به عنوان مثال تعداد بیت ها) و تا حدی، الگوریتم های اساسی را پیکربندی کنند. توجه داشته باشید که با این تغییرات از پیش‌فرض‌های API، در حال حاضر هیچ مسیر پشتیبانی شده برای استقرار به یک باطن وجود ندارد. به عنوان مثال، تبدیل TFLite و پیاده سازی هسته فقط از کوانتیزاسیون 8 بیتی پشتیبانی می کند.

APIهای مخصوص این پیکربندی آزمایشی هستند و مشمول سازگاری با عقب نیستند.

سازگاری API

کاربران می توانند کوانتیزاسیون را با API های زیر اعمال کنند:

  • ساختمان مدل: keras تنها با مدل های ترتیبی و کاربردی.
  • نسخه های TensorFlow: TF 2.x برای tf-شب.
    • tf.compat.v1 با بسته TF 2.X پشتیبانی نمی شود.
  • حالت اجرای TensorFlow: اجرای مشتاقانه

در نقشه راه ما افزودن پشتیبانی در زمینه های زیر است:

  • ساخت مدل: توضیح دهید که چگونه مدل‌های زیرکلاسی به عدم پشتیبانی محدود شده‌اند
  • آموزش توزیع شده: tf.distribute

ماتریس پشتیبانی عمومی

پشتیبانی در زمینه های زیر در دسترس است:

  • پوشش مدل: مدل هایی با استفاده از لایه های مجاز ، BatchNormalization زمانی که از لایه های Conv2D و DepthwiseConv2D پیروی می کند، و در موارد محدود، Concat .
  • شتاب سخت‌افزاری: پیش‌فرض‌های API ما با شتاب در باطن‌های EdgeTPU، NNAPI، و TFLite و غیره سازگار هستند. هشدار را در نقشه راه ببینید.
  • استقرار با کوانتیزه کردن: در حال حاضر فقط کوانتیزاسیون هر محور برای لایه‌های کانولوشن پشتیبانی می‌شود، نه کوانتیزاسیون هر تانسور.

در نقشه راه ما افزودن پشتیبانی در زمینه های زیر است:

  • پوشش مدل: شامل RNN/LSTMs و پشتیبانی عمومی Concat گسترش یافته است.
  • شتاب سخت‌افزاری: اطمینان حاصل کنید که مبدل TFLite می‌تواند مدل‌های عدد صحیح کامل تولید کند. برای جزئیات به این شماره مراجعه کنید.
  • آزمایش با موارد استفاده کوانتیزاسیون:
    • با الگوریتم‌های کوانتیزاسیون که لایه‌های Keras را در بر می‌گیرند یا به مرحله آموزش نیاز دارند، آزمایش کنید.
    • API ها را تثبیت کنید.

نتایج

طبقه بندی تصاویر با ابزار

مدل دقت بالا-1 غیر کوانتیزه شده دقت کوانتیزه 8 بیتی
MobilenetV1 224 71.03٪ 71.06٪
Resnet نسخه 1 50 76.3٪ 76.1٪
MobilenetV2 224 70.77٪ 70.01٪

مدل‌ها روی Imagenet آزمایش شدند و در هر دو TensorFlow و TFLite ارزیابی شدند.

طبقه بندی تصویر برای تکنیک

مدل دقت بالا-1 غیر کوانتیزه شده دقت کوانتیزه 8 بیتی
Nasnet-Mobile 74% 73%
Resnet-v2 50 75.6٪ 75%

مدل‌ها روی Imagenet آزمایش شدند و در هر دو TensorFlow و TFLite ارزیابی شدند.

مثال ها

علاوه بر مثال آموزش آگاهی از کوانتیزاسیون ، نمونه های زیر را ببینید:

  • مدل CNN در تکلیف دسته‌بندی رقمی دست‌نویس MNIST با کوانتیزاسیون: کد

برای پیشینه چیزی مشابه، به مقاله Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference مقاله مراجعه کنید. این مقاله به معرفی مفاهیمی می پردازد که این ابزار از آنها استفاده می کند. پیاده سازی دقیقاً یکسان نیست و مفاهیم اضافی در این ابزار استفاده می شود (مثلاً کوانتیزاسیون هر محور).

،

توسط بهینه سازی مدل TensorFlow نگهداری می شود

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

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

بررسی اجمالی

آموزش آگاهانه کوانتیزاسیون، کوانتیزاسیون زمان استنتاج را تقلید می کند، و مدلی را ایجاد می کند که ابزارهای پایین دستی برای تولید مدل های واقعی کوانتیزه شده از آن استفاده می کنند. مدل‌های کوانتیزه شده از دقت کمتری استفاده می‌کنند (مثلاً 8 بیت به جای شناور 32 بیت)، که منجر به مزایایی در طول استقرار می‌شود.

استقرار با کوانتیزاسیون

کوانتیزاسیون از طریق فشرده سازی مدل و کاهش تأخیر بهبودهایی را به همراه دارد. با پیش‌فرض‌های API، اندازه مدل 4 برابر کاهش می‌یابد و ما معمولاً بین 1.5 تا 4 برابر بهبود در تأخیر CPU در باطن‌های آزمایش شده مشاهده می‌کنیم. در نهایت، بهبود تاخیر در شتاب دهنده های یادگیری ماشینی سازگار، مانند EdgeTPU و NNAPI قابل مشاهده است.

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

آزمایش با کوانتیزاسیون و سخت افزار مرتبط

کاربران می توانند پارامترهای کوانتیزاسیون (به عنوان مثال تعداد بیت ها) و تا حدی، الگوریتم های اساسی را پیکربندی کنند. توجه داشته باشید که با این تغییرات از پیش‌فرض‌های API، در حال حاضر هیچ مسیر پشتیبانی شده برای استقرار به یک باطن وجود ندارد. به عنوان مثال، تبدیل TFLite و پیاده سازی هسته فقط از کوانتیزاسیون 8 بیتی پشتیبانی می کند.

APIهای مخصوص این پیکربندی آزمایشی هستند و مشمول سازگاری با عقب نیستند.

سازگاری API

کاربران می توانند کوانتیزاسیون را با API های زیر اعمال کنند:

  • ساختمان مدل: keras تنها با مدل های ترتیبی و کاربردی.
  • نسخه های TensorFlow: TF 2.x برای tf-شب.
    • tf.compat.v1 با بسته TF 2.X پشتیبانی نمی شود.
  • حالت اجرای TensorFlow: اجرای مشتاقانه

در نقشه راه ما افزودن پشتیبانی در زمینه های زیر است:

  • ساخت مدل: توضیح دهید که چگونه مدل‌های زیرکلاسی به عدم پشتیبانی محدود شده‌اند
  • آموزش توزیع شده: tf.distribute

ماتریس پشتیبانی عمومی

پشتیبانی در زمینه های زیر در دسترس است:

  • پوشش مدل: مدل هایی با استفاده از لایه های مجاز ، BatchNormalization زمانی که از لایه های Conv2D و DepthwiseConv2D پیروی می کند، و در موارد محدود، Concat .
  • شتاب سخت‌افزاری: پیش‌فرض‌های API ما با شتاب در باطن‌های EdgeTPU، NNAPI، و TFLite و غیره سازگار هستند. هشدار را در نقشه راه ببینید.
  • استقرار با کوانتیزه کردن: در حال حاضر فقط کوانتیزاسیون هر محور برای لایه‌های کانولوشن پشتیبانی می‌شود، نه کوانتیزاسیون هر تانسور.

در نقشه راه ما افزودن پشتیبانی در زمینه های زیر است:

  • پوشش مدل: شامل RNN/LSTMs و پشتیبانی عمومی Concat گسترش یافته است.
  • شتاب سخت‌افزاری: اطمینان حاصل کنید که مبدل TFLite می‌تواند مدل‌های عدد صحیح کامل تولید کند. برای جزئیات به این شماره مراجعه کنید.
  • آزمایش با موارد استفاده کوانتیزاسیون:
    • با الگوریتم‌های کوانتیزاسیون که لایه‌های Keras را در بر می‌گیرند یا به مرحله آموزش نیاز دارند، آزمایش کنید.
    • API ها را تثبیت کنید.

نتایج

طبقه بندی تصاویر با ابزار

مدل دقت بالا-1 غیر کوانتیزه شده دقت کوانتیزه 8 بیتی
MobilenetV1 224 71.03٪ 71.06٪
Resnet نسخه 1 50 76.3٪ 76.1٪
MobilenetV2 224 70.77٪ 70.01٪

مدل‌ها روی Imagenet آزمایش شدند و در هر دو TensorFlow و TFLite ارزیابی شدند.

طبقه بندی تصویر برای تکنیک

مدل دقت بالا-1 غیر کوانتیزه شده دقت کوانتیزه 8 بیتی
Nasnet-Mobile 74% 73%
Resnet-v2 50 75.6٪ 75%

مدل‌ها روی Imagenet آزمایش شدند و در هر دو TensorFlow و TFLite ارزیابی شدند.

مثال ها

علاوه بر مثال آموزش آگاهی از کوانتیزاسیون ، نمونه های زیر را ببینید:

  • مدل CNN در تکلیف دسته‌بندی رقمی دست‌نویس MNIST با کوانتیزاسیون: کد

برای پیشینه چیزی مشابه، به مقاله Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference مقاله مراجعه کنید. این مقاله به معرفی مفاهیمی می پردازد که این ابزار از آنها استفاده می کند. پیاده سازی دقیقاً یکسان نیست و مفاهیم اضافی در این ابزار استفاده می شود (مثلاً کوانتیزاسیون هر محور).