Quantization چیست؟ اجرای مدل‌های بزرگ با VRAM کمتر

Quantization چیست؟ اجرای مدل‌های بزرگ با VRAM کمتر

جدول محتوا 👇

یک مدل زبانی ۷۰ میلیاردی در دقت کامل حدود ۱۴۰ گیگابایت حافظه کارت گرافیک لازم دارد؛ یعنی دست‌کم دو کارت دیتاسنتری گران‌قیمت. Quantization یا کوانتایز این عدد را به حدود ۴۰ گیگابایت می‌رساند و همان مدل را روی یک کارت اجرا می‌کند. در این مقاله توضیح می‌دهیم Quantization چیست، چطور کار می‌کند، چه اثری روی کیفیت و سرعت دارد و کدام فرمت (GGUF، AWQ، GPTQ یا FP8) برای پروژه شما مناسب است.

Quantization چیست؟

وزن‌های یک شبکه عصبی اعدادی هستند که معمولاً با دقت ۱۶ بیتی ذخیره می‌شوند. Quantization فرایند تبدیل این اعداد به دقت پایین‌تر، مثلاً ۸ یا ۴ بیت، است. نتیجه، مدلی با حجم بسیار کمتر است که در حافظه کوچک‌تر جا می‌شود و معمولاً سریع‌تر اجرا می‌شود، با کمی افت کیفیت که در بیشتر کاربردها قابل چشم‌پوشی است.

دقت‌های عددی: FP32 تا INT4

دقت بیت به‌ازای هر وزن کاربرد رایج
FP32 ۳۲ بخش‌هایی از آموزش؛ برای اجرا هدر دادن حافظه است
FP16 / BF16 ۱۶ استاندارد انتشار و اجرای مدل‌ها؛ کیفیت مرجع
FP8 / INT8 ۸ کاهش نصف حافظه با افت کیفیت ناچیز
INT4 و ۴ بیتی ۴ کاهش حدود ۷۰ تا ۷۵ درصدی حافظه با افت اندک
۳ و ۲ بیتی ۲ تا ۳ فقط وقتی چاره دیگری نیست؛ افت کیفیت محسوس

کوانتایز چطور کار می‌کند؟

ساده‌ترین روش این است که بازه اعداد یک گروه از وزن‌ها پیدا و به تعداد محدودی سطح تقسیم شود؛ هر وزن با نزدیک‌ترین سطح جایگزین می‌شود و فقط شماره آن سطح ذخیره می‌شود. برای اینکه دقت حفظ شود، روش‌های امروزی:

  • وزن‌ها را در گروه‌های کوچک (مثلاً ۳۲ یا ۱۲۸ تایی) کوانتایز می‌کنند و برای هر گروه ضریب مقیاس جداگانه نگه می‌دارند.
  • وزن‌های مهم‌تر را شناسایی و با دقت بیشتر حفظ می‌کنند. روش AWQ بر اساس اثر وزن‌ها روی خروجی (Activation) این کار را انجام می‌دهد.
  • خطای ناشی از گرد کردن را با داده نمونه (Calibration) جبران می‌کنند، مثل روش GPTQ.

این تکنیک‌ها باعث شده‌اند که کوانتایز ۴ بیتی امروز کیفیتی بسیار نزدیک به مدل اصلی داشته باشد.

صرفه‌جویی در حافظه

مدل FP16 ۸ بیتی ۴ بیتی
Llama 3.1 8B حدود ۱۶ گیگابایت حدود ۸٫۵ گیگابایت حدود ۵ گیگابایت
Qwen 2.5 14B حدود ۲۹ گیگابایت حدود ۱۵ گیگابایت حدود ۹ گیگابایت
Qwen 2.5 32B حدود ۶۵ گیگابایت حدود ۳۴ گیگابایت حدود ۲۰ گیگابایت
Llama 3.3 70B حدود ۱۴۰ گیگابایت حدود ۷۵ گیگابایت حدود ۴۳ گیگابایت

این اعداد فقط وزن‌ها هستند. KV Cache و سربار نرم‌افزار هم باید اضافه شوند؛ محاسبه کامل در VRAM برای هوش مصنوعی.

اثر روی کیفیت

معیار رایج سنجش افت کیفیت، Perplexity است: هرچه کمتر، مدل در پیش‌بینی متن مطمئن‌تر است. در کنار آن، بنچمارک‌های وظیفه‌محور (استدلال، ریاضی، کدنویسی) هم بررسی می‌شوند. الگوی کلی نتایج منتشرشده:

  • ۸ بیتی: تقریباً غیرقابل تشخیص از مدل اصلی.
  • ۵ و ۶ بیتی: افت بسیار جزئی.
  • ۴ بیتی (Q4_K_M، AWQ): افت اندک؛ در گفتگو، خلاصه‌سازی و پاسخ به سوال معمولاً محسوس نیست، اما در ریاضی، کدنویسی دقیق و زبان‌های کم‌منبع‌تر مثل فارسی ممکن است بیشتر دیده شود.
  • ۳ بیتی و کمتر: افت محسوس، به‌خصوص در مدل‌های کوچک.

یک قاعده مفید: مدل‌های بزرگ‌تر در برابر کوانتایز مقاوم‌ترند. یک مدل ۳۲ میلیاردی ۴ بیتی معمولاً از یک مدل ۱۴ میلیاردی ۸ بیتی با حافظه مشابه، نتیجه بهتری می‌دهد.

اثر روی سرعت

در تولید متن، گلوگاه اصلی سرعت خواندن وزن‌ها از حافظه است. وزن‌های کوچک‌تر سریع‌تر خوانده می‌شوند؛ پس کوانتایز معمولاً سرعت تولید توکن را افزایش می‌دهد، به شرط اینکه موتور اجرا کرنل‌های بهینه برای آن فرمت داشته باشد. کارت‌های جدید NVIDIA (Ada، Hopper و Blackwell) از FP8 به‌صورت سخت‌افزاری پشتیبانی می‌کنند و Blackwell از FP4 هم پشتیبانی می‌کند.

مقایسه فرمت‌ها

فرمت موتورهای اصلی ویژگی مناسب برای
GGUF llama.cpp، Ollama، LM Studio تک‌فایل، سطوح متنوع، اجرای ترکیبی CPU و GPU توسعه، استفاده شخصی، سرورهای کوچک
AWQ vLLM، SGLang، Transformers حفظ وزن‌های مهم؛ کیفیت خوب در ۴ بیت سرویس‌دهی عملیاتی روی GPU
GPTQ vLLM، Transformers کالیبراسیون با داده؛ پشتیبانی گسترده سرویس‌دهی روی GPU
FP8 vLLM، TensorRT-LLM، SGLang پشتیبانی سخت‌افزاری روی کارت‌های جدید؛ کیفیت نزدیک به FP16 H100، L40S و کارت‌های جدیدتر
EXL2 ExLlamaV2 بیت‌ریت قابل تنظیم با دقت بالا کاربران حرفه‌ای روی کارت‌های NVIDIA

سطوح کوانتایز GGUF

در Ollama و llama.cpp نام‌هایی مثل Q4_K_M می‌بینید. عدد، تعداد بیت تقریبی و حروف بعدی، نسخه روش و اندازه را نشان می‌دهند:

  • Q8_0: بالاترین کیفیت، حجم حدود نصف FP16.
  • Q6_K و Q5_K_M: تعادل بسیار خوب؛ اگر حافظه اجازه می‌دهد، انتخاب امنی است.
  • Q4_K_M: پیش‌فرض رایج و نقطه تعادل حجم و کیفیت.
  • Q3_K و Q2_K: فقط برای جا دادن مدل‌های بزرگ در حافظه بسیار کم.

در Ollama می‌توانید سطح را در نام مدل مشخص کنید؛ مثلاً ollama pull qwen2.5:14b-instruct-q5_K_M.

کدام فرمت را انتخاب کنیم؟

  • Ollama یا استفاده شخصی: GGUF با Q4_K_M، یا Q5_K_M و Q8_0 اگر حافظه کافی دارید.
  • سرویس‌دهی با vLLM روی H100 یا L40S: FP8 اگر حافظه کافی است؛ AWQ ۴ بیتی اگر باید مدل بزرگ‌تری جا شود.
  • کاربردهای حساس به دقت (کد، ریاضی، استخراج اطلاعات دقیق): ۸ بیت یا FP8.

همیشه نسخه کوانتایزشده را روی نمونه‌ای از داده‌ها و سوال‌های واقعی خودتان، به‌خصوص به زبان فارسی، با مدل اصلی مقایسه کنید. تفاوت دو موتور اصلی را هم در Ollama یا vLLM ببینید.

سوالات متداول

آیا کوانتایز سرعت تولید متن را افزایش می‌دهد؟

معمولاً بله، چون وزن‌های کوچک‌تر سریع‌تر از حافظه خوانده می‌شوند و گلوگاه اصلی تولید متن همین است. شرط آن پشتیبانی موتور اجرا از کرنل‌های بهینه آن فرمت است.

آیا می‌توان مدل کوانتایزشده را Fine-Tune کرد؟

بله، با روش QLoRA مدل پایه با دقت ۴ بیتی بارگذاری و فقط آداپتورهای کوچک آموزش داده می‌شوند. جزئیات در Inference و Fine-Tuning.

کوانتایز KV Cache با کوانتایز مدل چه فرقی دارد؟

کوانتایز مدل حجم وزن‌ها را کم می‌کند؛ کوانتایز KV Cache حافظه‌ای را که برای متن ورودی و کاربران همزمان مصرف می‌شود. هر دو را می‌توان همزمان استفاده کرد. توضیح بیشتر در KV Cache چیست.

آیا خودم باید مدل را کوانتایز کنم؟

معمولاً نه. نسخه‌های کوانتایزشده مدل‌های محبوب در کتابخانه Ollama و Hugging Face آماده‌اند. فقط برای مدل‌های Fine-Tune‌شده خودتان باید کوانتایز را انجام دهید.

اجرای مدل‌های بزرگ با سخت‌افزار مناسب

در سرورهای GPU تراست هاست با کارت‌های L40S و H100 که از FP8 پشتیبانی می‌کنند، مدل‌های کوانتایزشده را با سرعت بالا اجرا کنید.

Ollama چیست و چگونه مدل هوش مصنوعی را روی سرور شخصی اجرا کنیم؟

مشاوره تراست‌هاست​

با متخصصان و کارشناسان به صورت رایگان!

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *