با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
نگهداری شده توسط Arm ML Tooling
این سند یک نمای کلی از API های آزمایشی برای ترکیب تکنیک های مختلف برای بهینه سازی مدل های یادگیری ماشین برای استقرار ارائه می دهد.
بررسی اجمالی
بهینهسازی مشارکتی یک فرآیند فراگیر است که شامل تکنیکهای مختلفی برای تولید مدلی است که در هنگام استقرار، بهترین توازن ویژگیهای هدف مانند سرعت استنتاج، اندازه مدل و دقت را نشان میدهد.
ایده بهینهسازیهای مشارکتی این است که تکنیکهای فردی را با استفاده از آنها یکی پس از دیگری برای دستیابی به اثر بهینهسازی انباشته ایجاد کنیم. ترکیب های مختلفی از بهینه سازی های زیر امکان پذیر است:
موضوعی که هنگام تلاش برای زنجیرهای کردن این تکنیکها به یکدیگر مطرح میشود این است که بهکارگیری یکی از آنها معمولاً نتایج تکنیک قبلی را از بین میبرد و مزیت کلی استفاده همزمان از همه آنها را از بین میبرد. به عنوان مثال، خوشه بندی پراکندگی معرفی شده توسط Pruning API را حفظ نمی کند. برای حل این مشکل، تکنیکهای بهینهسازی مشارکتی تجربی زیر را معرفی میکنیم:
اینها چندین مسیر استقرار را ارائه می دهند که می توانند برای فشرده سازی یک مدل یادگیری ماشین و استفاده از شتاب سخت افزاری در زمان استنتاج استفاده شوند. نمودار زیر چندین مسیر استقرار را نشان میدهد که میتوان در جستجوی مدلی با ویژگیهای استقرار مورد نظر جستجو کرد، جایی که گرههای برگ مدلهای آماده استقرار هستند، به این معنی که به طور جزئی یا کامل کمی و در قالب 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 مراجعه کنید.
تاریخ آخرین بهروزرسانی 2025-07-25 بهوقت ساعت هماهنگ جهانی.
[null,null,["تاریخ آخرین بهروزرسانی 2025-07-25 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Collaborative Optimization\n\n\u003cbr /\u003e\n\n~Maintained by Arm ML Tooling~\n\nThis document provides an overview of experimental APIs for combining various\ntechniques to optimize machine learning models for deployment.\n\nOverview\n--------\n\nCollaborative optimization is an overarching process that encompasses various\ntechniques to produce a model that, at deployment, exhibits the best balance of\ntarget characteristics such as inference speed, model size and accuracy.\n\nThe idea of collaborative optimizations is to build on individual techniques by\napplying them one after another to achieve the accumulated optimization effect.\nVarious combinations of the following optimizations are possible:\n\n- [Weight pruning](https://medium.com/tensorflow/tensorflow-model-optimization-toolkit-pruning-api-42cac9157a6a)\n- [Weight clustering](https://blog.tensorflow.org/2020/08/tensorflow-model-optimization-toolkit-weight-clustering-api.html)\n- Quantization\n\n - [Post-training quantization](https://medium.com/tensorflow/tensorflow-model-optimization-toolkit-post-training-integer-quantization-b4964a1ea9ba)\n - [Quantization aware training](https://blog.tensorflow.org/2020/04/quantization-aware-training-with-tensorflow-model-optimization-toolkit.html) (QAT)\n\nThe issue that arises when attempting to chain these techniques together is that\napplying one typically destroys the results of the preceding technique, spoiling\nthe overall benefit of simultaneously applying all of them; for example,\nclustering doesn't preserve the sparsity introduced by the pruning API. To solve\nthis problem, we introduce the following experimental collaborative optimization\ntechniques:\n\n- [Sparsity preserving clustering](https://www.tensorflow.org/model_optimization/guide/combine/sparse_clustering_example)\n- [Sparsity preserving quantization aware training](https://www.tensorflow.org/model_optimization/guide/combine/pqat_example) (PQAT)\n- [Cluster preserving quantization aware training](https://www.tensorflow.org/model_optimization/guide/combine/cqat_example) (CQAT)\n- [Sparsity and cluster preserving quantization aware training](https://www.tensorflow.org/model_optimization/guide/combine/pcqat_example)\n\nThese provide several deployment paths that could be used to compress a machine\nlearning model and to take advantage of hardware acceleration at inference time.\nThe diagram below demonstrates several deployment paths that can be explored in\nsearch for the model with desired deployment characteristics, where the leaf\nnodes are deployment-ready models, meaning they are partially or fully quantized\nand in tflite format. The green fill indicates steps where\nretraining/fine-tuning is required and a dashed red border highlights the\ncollaborative optimization steps. The technique used to obtain a model at a\ngiven node is indicated in the corresponding label.\n\nThe direct, quantization-only (post-training or QAT) deployment path is omitted\nin the figure above.\n\nThe idea is to reach the fully optimized model at the third level of the above\ndeployment tree; however, any of the other levels of optimization could prove\nsatisfactory and achieve the required inference latency/accuracy trade-off, in\nwhich case no further optimization is needed. The recommended training process\nwould be to iteratively go through the levels of the deployment tree applicable\nto the target deployment scenario and see if the model fulfils the inference\nlatency requirements and, if not, use the corresponding collaborative\noptimization technique to compress the model further and repeat until the model\nis fully optimized (pruned, clustered, and quantized), if needed.\n\nThe figure below shows the density plots of sample weight kernel going through\nthe collaborative optimization pipeline.\n\nThe result is a quantized deployment model with a reduced number of unique\nvalues as well as a significant number of sparse weights, depending on the\ntarget sparsity specified at training time. Other than the significant model\ncompression advantages, specific hardware support can take advantage of these\nsparse, clustered models to significantly reduce inference latency.\n\nResults\n-------\n\nBelow are some accuracy and compression results we obtained when experimenting\nwith PQAT and CQAT collaborative optimization paths.\n\n### Sparsity-preserving Quantization aware training (PQAT)\n\n| Model | Items | Baseline | Pruned Model (50% sparsity) | QAT Model | PQAT Model |\n|------------------|--------------------------------|--------------------------------|--------------------------------|--------------------------------|--------------------------------|\n| DS-CNN-L | FP32 Top1 Accuracy | **95.23%** | 94.80% | (Fake INT8) 94.721% | (Fake INT8) 94.128% |\n| | INT8 full integer quantization | 94.48% | **93.80%** | 94.72% | **94.13%** |\n| | Compression | 528,128 → 434,879 (17.66%) | 528,128 → 334,154 (36.73%) | 512,224 → 403,261 (21.27%) | 512,032 → 303,997 (40.63%) |\n| Mobilenet_v1-224 | FP32 Top 1 Accuracy | **70.99%** | 70.11% | (Fake INT8) 70.67% | (Fake INT8) 70.29% |\n| | INT8 full integer quantization | 69.37% | **67.82%** | 70.67% | **70.29%** |\n| | Compression | 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%) |\n\n### Cluster-preserving Quantization aware training (CQAT)\n\n| Model | Items | Baseline | Clustered Model | QAT Model | CQAT Model |\n|--------------------------|--------------------------------|-------------------------------|-------------------------------|-------------------------------|--------------------------------|\n| Mobilenet_v1 on CIFAR-10 | FP32 Top1 Accuracy | **94.88%** | 94.48% | (Fake INT8) 94.80% | (Fake INT8) 94.60% |\n| | INT8 full integer quantization | 94.65% | **94.41%** | 94.77% | **94.52%** |\n| | Size | 3.00 MB | 2.00 MB | 2.84 MB | 1.94 MB |\n| Mobilenet_v1 on ImageNet | FP32 Top 1 Accuracy | **71.07%** | 65.30% | (Fake INT8) 70.39% | (Fake INT8) 65.35% |\n| | INT8 full integer quantization | 69.34% | **60.60%** | 70.35% | **65.42%** |\n| | Compression | 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%) |\n\n### CQAT and PCQAT results for models clustered per channel\n\nResults below are obtained with the technique [clustering per channel](https://www.tensorflow.org/model_optimization/guide/clustering).\nThey illustrate that if convolutional layers of the model are clustered per channel, then the model accuracy is higher. If your model has many convolutional layers, then we recommend to cluster per channel. The compression ratio remains the same, but the model accuracy will be higher. The model optimization pipeline is 'clustered -\\\u003e cluster preserving QAT -\\\u003e post training quantization, int8' in our experiments.\n\n| Model | Clustered -\\\u003e CQAT, int8 quantized | Clustered per channel -\\\u003e CQAT, int8 quantized |\n|-----------------------|------------------------------------|------------------------------------------------|\n| DS-CNN-L | 95.949% | 96.44% |\n| MobileNet-V2 | 71.538% | 72.638% |\n| MobileNet-V2 (pruned) | 71.45% | 71.901% |\n\n\u003cbr /\u003e\n\nExamples\n--------\n\nFor end-to-end examples of the collaborative optimization techniques described\nhere, please refer to the\n[CQAT](https://www.tensorflow.org/model_optimization/guide/combine/cqat_example),\n[PQAT](https://www.tensorflow.org/model_optimization/guide/combine/pqat_example),\n[sparsity-preserving clustering](https://www.tensorflow.org/model_optimization/guide/combine/sparse_clustering_example),\nand\n[PCQAT](https://www.tensorflow.org/model_optimization/guide/combine/pcqat_example)\nexample notebooks."]]