نگهداری شده توسط Arm ML Tooling
این سند یک نمای کلی از API های آزمایشی برای ترکیب تکنیک های مختلف برای بهینه سازی مدل های یادگیری ماشین برای استقرار ارائه می دهد.
بررسی اجمالی
بهینهسازی مشارکتی یک فرآیند فراگیر است که شامل تکنیکهای مختلفی برای تولید مدلی است که در هنگام استقرار، بهترین توازن ویژگیهای هدف مانند سرعت استنتاج، اندازه مدل و دقت را نشان میدهد.
ایده بهینهسازیهای مشارکتی این است که تکنیکهای فردی را با استفاده از آنها یکی پس از دیگری برای دستیابی به اثر بهینهسازی انباشته ایجاد کنیم. ترکیب های مختلفی از بهینه سازی های زیر امکان پذیر است:
- هرس وزنی
- دسته بندی وزن
کوانتیزاسیون
موضوعی که هنگام تلاش برای زنجیرهای کردن این تکنیکها به یکدیگر مطرح میشود این است که بهکارگیری یکی از آنها معمولاً نتایج تکنیک قبلی را از بین میبرد و مزیت کلی استفاده همزمان از همه آنها را از بین میبرد. به عنوان مثال، خوشه بندی پراکندگی معرفی شده توسط Pruning API را حفظ نمی کند. برای حل این مشکل، تکنیکهای بهینهسازی مشارکتی تجربی زیر را معرفی میکنیم:
- خوشه بندی حفظ پراکندگی
- آموزش آگاهی کوانتیزاسیون حفظ پراکندگی (PQAT)
- آموزش هوشیاری کوانتیزاسیون حفظ خوشه (CQAT)
- آموزش آگاهی از پراکندگی و حفظ خوشه
اینها چندین مسیر استقرار را ارائه می دهند که می توانند برای فشرده سازی یک مدل یادگیری ماشین و استفاده از شتاب سخت افزاری در زمان استنتاج استفاده شوند. نمودار زیر چندین مسیر استقرار را نشان میدهد که میتوان در جستجوی مدلی با ویژگیهای استقرار مورد نظر جستجو کرد، جایی که گرههای برگ مدلهای آماده استقرار هستند، به این معنی که به طور جزئی یا کامل کمی و در قالب tflite هستند. پر سبز نشان دهنده مراحلی است که در آن بازآموزی/تنظیم دقیق مورد نیاز است و یک مرز قرمز چین، مراحل بهینه سازی مشارکتی را برجسته می کند. تکنیک مورد استفاده برای به دست آوردن یک مدل در یک گره معین در برچسب مربوطه نشان داده شده است.
مسیر استقرار مستقیم، فقط کمی (پس از آموزش یا QAT) در شکل بالا حذف شده است.
ایده رسیدن به مدل کاملاً بهینه شده در سطح سوم درخت استقرار فوق است. با این حال، هر یک از سطوح دیگر بهینهسازی میتواند رضایتبخش باشد و به معاوضه تأخیر/دقت استنتاج مورد نیاز دست یابد، در این صورت به بهینهسازی بیشتری نیاز نیست. فرآیند آموزشی توصیه شده این است که به طور مکرر از سطوح درخت استقرار قابل اعمال برای سناریوی استقرار هدف عبور کنید و ببینید که آیا مدل الزامات تأخیر استنتاج را برآورده می کند یا خیر و در غیر این صورت، از تکنیک بهینه سازی مشارکتی مربوطه برای فشرده سازی بیشتر مدل و تکرار استفاده می شود. در صورت نیاز تا زمانی که مدل به طور کامل بهینه شود (هرس، خوشه بندی و کوانتیزه شود).
شکل زیر نمودارهای چگالی هسته وزن نمونه را نشان می دهد که از خط لوله بهینه سازی مشارکتی عبور می کند.
نتیجه یک مدل استقرار کوانتیزه شده با کاهش تعداد مقادیر منحصر به فرد و همچنین تعداد قابل توجهی وزن کم، بسته به پراکندگی هدف مشخص شده در زمان آموزش است. به غیر از مزایای قابل توجه فشرده سازی مدل، پشتیبانی سخت افزاری خاص می تواند از این مدل های پراکنده و خوشه ای برای کاهش قابل توجه تأخیر استنتاج استفاده کند.
نتایج
در زیر برخی از نتایج دقت و فشردهسازی وجود دارد که هنگام آزمایش مسیرهای بهینهسازی مشترک PQAT و CQAT به دست آوردیم.
آموزش آگاهی از کوانتیزاسیون حفظ پراکندگی (PQAT)
مدل | موارد | پایه | مدل هرس شده (50% پراکندگی) | مدل QAT | مدل PQAT |
---|---|---|---|---|---|
DS-CNN-L | FP32 Top1 دقت | 95.23٪ | 94.80٪ | (INT8 جعلی) 94.721% | (INT8 جعلی) 94.128٪ |
کوانتیزاسیون کامل عدد صحیح INT8 | 94.48٪ | 93.80٪ | 94.72٪ | 94.13٪ | |
فشرده سازی | 528,128 → 434,879 (17.66%) | 528,128 → 334,154 (36.73%) | 512,224 → 403,261 (21.27%) | 512,032 → 303,997 (40.63%) | |
Mobilenet_v1-224 | FP32 Top 1 دقت | 70.99٪ | 70.11٪ | (INT8 جعلی) 70.67% | (INT8 جعلی) 70.29% |
کوانتیزاسیون کامل عدد صحیح INT8 | 69.37٪ | 67.82% | 70.67٪ | 70.29٪ | |
فشرده سازی | 4,665,520 → 3,880,331 (16.83%) | 4,665,520 → 2,939,734 (37.00%) | 4,569,416 → 3,808,781 (16.65%) | 4,569,416 → 2,869,600 (37.20%) |
آموزش هوشیاری کوانتیزاسیون با حفظ خوشه (CQAT)
مدل | موارد | پایه | مدل خوشه ای | مدل QAT | مدل CQAT |
---|---|---|---|---|---|
Mobilenet_v1 در CIFAR-10 | FP32 Top1 دقت | 94.88٪ | 94.48٪ | (INT8 جعلی) 94.80% | (INT8 جعلی) 94.60% |
کوانتیزاسیون کامل عدد صحیح INT8 | 94.65٪ | 94.41٪ | 94.77٪ | 94.52٪ | |
اندازه | 3.00 مگابایت | 2.00 مگابایت | 2.84 مگابایت | 1.94 مگابایت | |
Mobilenet_v1 در ImageNet | FP32 Top 1 دقت | 71.07٪ | 65.30٪ | (INT8 جعلی) 70.39% | (INT8 جعلی) 65.35٪ |
کوانتیزاسیون کامل عدد صحیح INT8 | 69.34٪ | 60.60٪ | 70.35٪ | 65.42٪ | |
فشرده سازی | 4,665,568 → 3,886,277 (16.7%) | 4,665,568 → 3,035,752 (34.9%) | 4,569,416 → 3,804,871 (16.7%) | 4,569,472 → 2,912,655 (36.25%) |
نتایج CQAT و PCQAT برای مدلهای خوشهبندی شده در هر کانال
نتایج زیر با تکنیک خوشه بندی در هر کانال به دست می آید. آنها نشان میدهند که اگر لایههای کانولوشنال مدل در هر کانال خوشهبندی شوند، دقت مدل بالاتر است. اگر مدل شما دارای لایه های کانولوشن زیادی است، توصیه می کنیم در هر کانال خوشه بندی کنید. نسبت تراکم ثابت باقی می ماند، اما دقت مدل بالاتر خواهد بود. خط لوله بهینهسازی مدل در آزمایشهای ما "خوشهبندی شده -> Cluster Reserving QAT -> Quantization Post آموزش، int8" است. مدل Clustered -> CQAT، int8 کوانتیزه شده دسته بندی شده در هر کانال -> CQAT، int8 کوانتیزه شده است DS-CNN-L 95.949٪ 96.44٪ MobileNet-V2 71.538٪ 72.638٪ MobileNet-V2 (هرس شده) 71.45٪ 71.901%
مثال ها
برای مثالهای سرتاسر تکنیکهای بهینهسازی مشارکتی که در اینجا توضیح داده شدهاند، لطفاً به نوتبوکهای نمونه CQAT ، PQAT ، خوشهبندی حفظ پراکندگی و PCQAT مراجعه کنید.