پیاده‌سازی کدنویسی در مقدمه‌ای بر کوانتیزاسیون وزن: جنبه کلیدی در افزایش کارایی در یادگیری عمیق و مدل‌های زبانی بزرگ

در چشم‌انداز امروزی یادگیری عمیق، بهینه‌سازی مدل‌ها برای استقرار در محیط‌های با منابع محدود از هر زمان دیگری مهم‌تر است. کوانتیزاسیون وزن این نیاز را با کاهش دقت پارامترهای مدل، معمولاً از مقادیر ممیز شناور 32 بیتی به نمایش‌های کم‌عرض‌تر، برطرف می‌کند و در نتیجه مدل‌های کوچک‌تری تولید می‌کند که می‌توانند سریع‌تر روی سخت‌افزار با منابع محدود اجرا شوند. این آموزش مفهوم کوانتیزاسیون وزن را با استفاده از تکنیک کوانتیزاسیون پویای PyTorch بر روی یک مدل ResNet18 از پیش آموزش‌دیده معرفی می‌کند. این آموزش بررسی خواهد کرد که چگونه توزیع وزن‌ها را بررسی کنیم، کوانتیزاسیون پویا را در لایه‌های کلیدی (مانند لایه‌های کاملاً متصل) اعمال کنیم، اندازه‌های مدل را مقایسه کنیم و تغییرات حاصل را تجسم کنیم. این آموزش شما را با پیشینه نظری و مهارت‌های عملی مورد نیاز برای استقرار مدل‌های یادگیری عمیق مجهز می‌کند.

ما کتابخانه‌های مورد نیاز مانند PyTorch، torchvision و matplotlib را وارد می‌کنیم و نسخه PyTorch را چاپ می‌کنیم و اطمینان می‌دهیم که همه ماژول‌های لازم برای دستکاری و تجسم مدل آماده هستند.

یک مدل ResNet18 از پیش آموزش‌دیده با دقت FP32 (ممیز شناور) بارگذاری می‌شود و در حالت ارزیابی قرار می‌گیرد و آن را برای پردازش و کوانتیزاسیون بیشتر آماده می‌کند.

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

خروجی بلوک بالا
خروجی بلوک بالا

ما کوانتیزاسیون پویا را در مدل اعمال می‌کنیم، به‌طور خاص لایه‌های خطی را هدف قرار می‌دهیم—تا آن‌ها را به فرمت‌های کم‌دقت‌تر تبدیل کنیم، و یک تکنیک کلیدی برای کاهش اندازه مدل و تأخیر استنتاج را نشان می‌دهیم.

یک تابع کمکی برای ذخیره و بررسی اندازه مدل روی دیسک تعریف شده است. سپس، از آن برای اندازه‌گیری و مقایسه اندازه‌های مدل اصلی FP32 و مدل کوانتیزه‌شده استفاده می‌شود و تأثیر فشرده‌سازی کوانتیزاسیون را نشان می‌دهد.

یک تانسور ورودی ساختگی برای شبیه‌سازی یک تصویر ایجاد می‌شود و هر دو مدل FP32 و کوانتیزه‌شده روی این ورودی اجرا می‌شوند تا بتوانید خروجی‌های آن‌ها را مقایسه کنید و تأیید کنید که کوانتیزاسیون پیش‌بینی‌ها را به شدت تغییر نمی‌دهد.

خروجی بلوک بالا
خروجی بلوک بالا

در این بلوک، وزن‌های کوانتیزه‌شده (پس از غیرکوانتیزه‌سازی) از لایه کاملاً متصل استخراج می‌شوند و از طریق هیستوگرام‌ها در برابر وزن‌های FP32 اصلی مقایسه می‌شوند تا تغییرات در توزیع وزن ناشی از کوانتیزاسیون نشان داده شود.

در پایان، این آموزش یک راهنمای گام به گام برای درک و پیاده‌سازی کوانتیزاسیون وزن ارائه کرده است و تأثیر آن بر اندازه و عملکرد مدل را برجسته می‌کند. با کوانتیزه‌کردن یک مدل ResNet18 از پیش آموزش‌دیده، ما تغییرات در توزیع وزن‌ها، مزایای ملموس در فشرده‌سازی مدل و بهبودهای بالقوه در سرعت استنتاج را مشاهده کردیم. این بررسی زمینه را برای آزمایش‌های بیشتر، مانند پیاده‌سازی آموزش آگاه از کوانتیزاسیون (QAT) فراهم می‌کند، که می‌تواند عملکرد را در مدل‌های کوانتیزه‌شده بیشتر بهینه کند.

در اینجا نوت‌بوک Colab آمده است. همچنین، فراموش نکنید که ما را در توییتر دنبال کنید و به کانال تلگرام و گروه لینکدین ما بپیوندید. فراموش نکنید که به SubReddit با بیش از 85 هزار عضو ما بپیوندید.

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

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