کوانتیزهسازی مدل، نمایش عددی وزنها و گاهی محاسبات را کمدقتتر میکند تا مدل کوچکتر یا اجرای آن روی سختافزار هدف کارآمدتر شود. این تبدیل میتواند مصرف حافظه و زمان اجرا را کاهش دهد، اما نتیجه تضمینشده نیست: دقت ممکن است افت کند یا برخی عملگرها روی شتابدهنده هدف پشتیبانی نشوند. به همین دلیل quantization بخشی از چرخه آزمون است، نه دکمه جادویی بهینهسازی.
از FP32 تا INT8 به زبان ساده
مدل آموزشدیده ممکن است وزنها را با اعداد شناور 32بیتی نگه دارد. فرمتهایی مانند INT8 بازهای کوچکتر و نمایش فشردهتری دارند. برای نگاشت مقادیر حقیقی به اعداد صحیح، مقیاس و نقطه صفر به کار میرود. برخی runtimeها کوانتیزهسازی پس از آموزش را انجام میدهند و برخی امکان آموزش آگاه از کوانتیزهسازی دارند. جزئیات بسته به چارچوب و accelerator متفاوت است.
داده کالیبراسیون چرا لازم است؟
در روشهای post-training، نمونههایی از داده نماینده میتوانند دامنه فعالسازی لایهها را برآورد کنند. اگر داده کالیبراسیون با محیط واقعی تفاوت زیادی داشته باشد، مقادیر خارج از دامنه بریده میشوند و دقت کاهش مییابد. مجموعهای متنوع از شرایط نوری، نویز حسگر و حالتهای کلاس را انتخاب کنید؛ داده آزمون نهایی را برای کالیبراسیون مصرف نکنید تا ارزیابی مستقل بماند.
چه چیزهایی را بعد از تبدیل بسنجیم؟
دقت کلی بهتنهایی کافی نیست؛ recall کلاسهای نادر، ماتریس درهمریختگی، نرخ هشدار اشتباه، زمان استنباط، حجم مدل، RAM و انرژی هر پیشبینی را ثبت کنید. در مسئله صنعتی، خطای یک کلاس ممکن است هزینه بیشتری داشته باشد. اجرای مدل را روی همان برد و runtime نهایی انجام دهید، چون خروجی شبیهساز یا رایانه میزبان لزوماً عملکرد NPU را پیشبینی نمیکند.
روند امن تبدیل
نسخه مدل اصلی و دادهها را حفظ کنید. یک خروجی quantized بسازید و آن را با آزمون یکسان مقایسه کنید. اگر افت عمده در چند کلاس خاص رخ داد، داده، پیشپردازش، عملگرهای ناسازگار یا لایههای حساس را بررسی کنید. گاهی quantization ترکیبی یا حفظ دقت بالاتر در لایههای خاص راهحل است. اگر محدودیت سختافزار اجازه نمیدهد، کوچککردن ورودی یا معماری هم باید با آزمون دقت انجام شود.
- baseline مدل و معیارها را ثبت کنید.
- داده کالیبراسیون نماینده و جدا از test آماده کنید.
- مدل را با ابزار هدف تبدیل و گزارش پشتیبانی عملگرها را بخوانید.
- دقت، latency، RAM و انرژی را روی دستگاه بسنجید.
- نسخه نهایی مدل و پارامترهای تبدیل را نسخهبندی کنید.
مقایسهای که باید با داده خود کامل شود
| معیار | مدل مرجع | مدل کمدقت |
|---|---|---|
| حجم فایل | معمولاً بیشتر | اغلب کمتر |
| دقت | خط مبنا | باید دوباره اندازهگیری شود |
| سرعت | وابسته به سختافزار | فقط در صورت پشتیبانی ممکن است بهتر شود |
| سازگاری | چارچوب آموزش | نیازمند runtime و عملگر سازگار |
چکلیست عملی
- مجموعه آزمون مستقل نگه داشته شده است.
- افت دقت برای هر کلاس بررسی شده است.
- runtime مدل تبدیلشده روی سختافزار هدف اجرا شده است.
- زمان، RAM و انرژی همراه دقت ثبت شدهاند.
- فایل مرجع و نسخه تبدیلشده جدا نگهداری میشوند.
پرسشهای پرتکرار
آیا INT8 همیشه مدل را چهار برابر کوچک میکند؟
نسبت نظری به نمایش FP32 چنین میتواند باشد، اما سربار، اپراتورها و فرمت فایل روی اندازه نهایی اثر میگذارند.
چرا پس از کوانتیزهسازی دقت افت میکند؟
دامنه داده کالیبراسیون، حساسیت لایهها، برش مقادیر و تفاوت preprocessing میتوانند مؤثر باشند.
آیا مدل quantized حتماً سریعتر است؟
خیر؛ باید سختافزار و runtime عملیات کمدقت را پشتیبانی کنند. روی دستگاه واقعی benchmark کنید.
