کوانتایز کردن مدل، تکنیکی برای کاهش حجم و توان مورد نیاز برای اجرای مدلهاست. در حین این تکنیک، پارامترهای مدل به نوعی فشرده میشوند و در قالب کوچکتری قرار میگیرند. به عنوان مثال، اگر پارامترهای مدل را اعدادی اعشاری در نظر بگیریم، در حالت عادی برای هر پارامتر ۳۲ بیت حافظه (یعنی ۳۲ خانه که میتوانند ۰ یا ۱ باشند) اختصاص پیدا میکند. مثلاً عدد ۰٫۱۵۶۲۵ به این شکل در کامپیوتر ذخیره میشود:

فرآیند تبدیل عدد به فرمت float32
برای تبدیل عدد ۰٫۱۵۶۲۵ به متغیر
float32، به ترتیب مراحل زیر طی میشود:
- اول از همه عدد باید به مبنای دو برده شود. عدد ۰٫۱۵۶۲۵ در مبنای دو برابر
0.00101است.- عدد حاصل شده باید به صورت ترکیبی از توان و عدد علمی نوشته شود: بخش علمی آن برابر
1.01و توان آن برابر-3است.- بعد از این دیگر نوبت به جاگذاری مقادیر در قالب
float32میرسد.- چون عدد مثبت است، مقدار
signبرابر0میشود.- مقدار توان به دلیل بایاس ۱۲۷1 قالب
float32برابر ۱۲۴ است که در مبنای دو برابر01111100است.- مقدار اعشار هم برابر
010است. باقی خانههای حافظه بعد از آن هم برابر0میشود.- پس عدد ۰٫۱۵۶۲۵ در قالب
float32برابر00111110001000000000000000000000خواهد بود.
اما float32تنها راه ذخیرهسازی اعداد در حافظه نیست. فرمتهای دیگری مثل float16(FP16) یا حتی int هم برای این کار وجود دارند. این فرمتها به نسبت FP32 حجم کمتری برای ذخیرهٔ متغیرها میگیرند. مثلاً مقدار ۰٫۱۵۶۲۵ در فرمت FP16برابر 0011000100000000 خواهد بود که نصف فرمت FP32 حجم میگیرد.
در نتیجهٔ کوانتایز کردن مدل، حجم مدل به شکل قابل توجهی کاهش پیدا میکند. به دلیل سادهتر شدن ضرب و جمع ماتریسی، سرعت آن هم افزایش پیدا میکند. البته که همهٔ اینها با ریسک کاهش دقت مدل مواجه است. با این وجود، تجربه نشان داده که دقت مدلهای کوانتایز شده تفاوتی اساسی با مدلهای اصلی ندارد. در پایین به عنوان نمونه، جدولی از تفاوت نسخههای کوانتایزشدهٔ مدل ۱۲ میلیارد پارامتری Flux Schnell آمده است:
| مدل | حجم |
|---|---|
| Original | 23.8 GB |
| F16 | 23.8 GB |
| Q8 | 12.6 GB |
| Q5 | 8.18 GB |
| Q4 | 6.69 GB |
| Q2 | 3.9 GB |
![]() |
|---|
Footnotes
-
دلیل وجود بایاس این است که از اعداد منفی هم پشتیبانی کند. ↩
