تصور کنید میخواهید یک مدل ۷ میلیارد پارامتری را آموزش دهید اما تنها یک کارت گرافیک معمولی (Consumer GPU) در اختیار دارید. بدون استفاده از تنظیم کارآمد با پارامتر اندک (Parameter-Efficient Fine-Tuning یا PEFT)، پاسخ به این سوال در اکثر مواقع «خیر» است. توسعهدهندگان با منجمد کردن اکثریت وزنهای مدل و بهروزرسانی تنها مجموعهای کوچک از آداپتورها (Adapters)، میتوانند از سربار عظیم حافظه که با تنظیم دقیق سنتی همراه است، عبور کنند.
اصطلاح PEFT هم به یک خانواده کلی از روشهای تطبیقی اشاره دارد — که شامل LoRA، IA³ و تنظیم پرامپت (Prompt Tuning) میشود — و هم به کتابخانه متنباز PEFT متعلق به Hugging Face اشاره میکند که با ابزارهایی چون Transformers، Diffusers و Accelerate ادغام شده است.
در دنیای امروز، استقرار اکثر مدلهای زبانی بزرگ (LLM) شامل انتخابی بین تغییر کامل وزنها (Full Weight Modification) و تطبیق سبکوزن است. تنظیم دقیق کامل (Full Fine-Tuning) مستلزم ذخیرهسازی گرادیانها و وضعیتهای بهینهساز (Optimizer States) برای تکتک پارامترها است. در یک فرآیند آموزش با دقت ترکیبی (Mixed Precision) و استفاده از بهینهساز AdamW، این وضعیتها ممکن است چندین برابرِ خودِ وزنهای مدل حافظه VRAM مصرف کنند. این هزینه عملیاتی باعث میشود که استقرار برای هر تسک مجزا، بهخصوص با افزایش اندازه مدلها، بهشدت گران شود؛ چرا که ذخیره یک نقطه بازرسی (Checkpoint) کامل برای هر وظیفه فردی، از نظر فنی و اقتصادی ناپایدار است.
روش PEFT این مشکل را با متمرکز کردن تغییرات خاصِ هر تسک در یک بودجه پارامترهای حداقلی حل میکند و در عین حال، بازنماییهای کلی (General Representations) آموخته شده در مرحله پیشآموزش (Pretraining) را حفظ میکند. این رویکرد بهویژه در جلوگیری از تخریب مهارتهای پیشین مدل مؤثر است، موضوعی که در تحلیل مقابله با اثر فراموشی در مدلهای زبانی هنگام تنظیم دقیق به تفصیل بررسی شده است. طبق مستندات کتابخانه PEFT در Hugging Face، این متد نیازمندیهای محاسباتی و هزینههای ذخیرهسازی را بهطور قابلتوجهی کاهش میدهد، در حالی که در بسیاری از تسکها به نتایجی «نزدیک» به تنظیم دقیق کامل دست مییابد. اگرچه PEFT نمیتواند جایگزین دادههای آموزشی باکیفیت شود، اما امکان ایجاد آداپتورهای قابلحمل و خاصِ هر تسک را فراهم میکند که همگی از یک مدل پایه واحد استفاده میکنند.

تفاوتهای کلیدی PEFT و تنظیم دقیق کامل
برای درک موازنه مهندسی، ضروری است که ردپای عملیاتی (Operational Footprint) هر دو رویکرد را با هم مقایسه کنیم:
- پارامترها: در تنظیم دقیق کامل، کل مدل یا بخشهای بزرگی از آن آموزش میبینند؛ در PEFT، تنها گروه کوچکی از پارامترهای افزوده شده یا انتخاب شده آموزش میبینند.
- حافظه بهینهساز: در حالت تنظیم کامل بسیار بالاست؛ در PEFT، این حافظه عمدتاً به پارامترهای قابل آموزش محدود میشود.
- حجم نقطه بازرسی: تنظیم کامل نیاز به ذخیره کامل وزنهای مدل دارد؛ PEFT معمولاً تنها یک فایل کوچک آداپتور تولید میکند.
- استقرار: تنظیم کامل ممکن است برای هر تسک به یک مدل کامل و مجزا نیاز داشته باشد؛ در PEFT، میتوان آداپتورهای مختلف را روی یک مدل پایه مشترک سوئیچ کرد.
- وابستگی: تنظیم کامل میتواند نقاط بازرسی مستقلی تولید کند؛ اما PEFT به مدل پایه درست و نسخه (Revision) خاص آن وابسته است.
یک باور غلط رایج این است که لایههای منجمد شده دیگر محاسبات انجام نمیدهند. در واقع، مسیر پیشرو (Forward Pass) همچنان از میان آنها اجرا میشود و بخش قابلتوجهی از گراف پسانتشار (Backward Graph) برای انتقال گرادیانها به آداپتورها ضروری است. فعالسازهای توالیهای بلند (Long-sequence activations)، عملیات توجه (Attention operations) و حافظه موقت کرنل همچنان مورد نیاز هستند. در نتیجه، اگرچه PEFT اجازه میدهد یک مدل ۷ میلیاردی روی GPU کوچکتر جای بگیرد، اما باعث نمیشود که حداکثر طول توالی (Maximum Sequence Length) نامحدود شود.
دستهبندی متدهای PEFT
باید توجه داشت که هر تکنیک PEFT لزوماً گونهای از LoRA نیست. این متدها بر اساس نحوه تغییر مدل به چهار گروه کاربردی تقسیم میشوند:
۱. مبتنی بر وزن یا آداپتور: این روشها بهروزرسانی وزنها را با استفاده از ساختارهای سبکوزن انجام میدهند (مانند LoRA، AdaLoRA و DoRA).
۲. مقیاسبندی فعالسازها: استفاده از بردارهای یادگیرنده (Learnable Vectors) برای مقیاسبندی فعالسازهای توجه و لایههای Feed-forward (مانند IA³).
۳. پرامپتهای نرم (Soft Prompting): افزودن بردارهای پیوسته یادگیرنده به یک مدل منجمد (مانند Prompt Tuning و Prefix Tuning).
۴. تنظیم گزینشی (Selective Tuning): آموزش تنها پارامترهای موجودِ انتخاب شده، مانند بایاسها (Biases)، پارامترهای LayerNorm، توکنهای خاص یا زیرمجموعههایی از لایههای مدل.
انتخاب متد به هدف شما بستگی دارد. پرامپتهای نرم برای هدایت قابلیتهایی که مدل از قبل دارد کافی هستند. استفاده از LoRA در لایههای خطی برای آموزش ساختارهای خروجی جدید یا تغییرات رفتاری شدید بهتر است. در حالی که IA³ زمانی که بودجه پارامتر و حافظه بسیار محدود است، ایدهآلترین گزینه است.
مکانیسم لورا (LoRA) و مشتقات آن
لورا (Low-Rank Adaptation) برجستهترین متد PEFT است. این روش بهروزرسانی یک ماتریس وزن منجمد $W$ را به صورت حاصلضرب دو ماتریس کوچکتر نمایش میدهد: $W' = W + sBA$. رتبه $r$ (Rank)، بُعد میانی و باریک این ماتریسها را تعیین میکند.
برای یک لایه خطی با ابعاد $d_{out} imes d_{in}$، تفاوت تعداد پارامترها چشمگیر است:
- بهروزرسانی کامل وزن: تعداد $d_{out} imes d_{in}$ پارامتر قابل آموزش.
- بهروزرسانی لورا: تقریباً $r imes (d_{in} + d_{out})$ پارامتر قابل آموزش.
مثال: در یک لایه خطی ۴۰۹۶ در ۴۰۹۶، تنظیم کامل به ۱۶,۷۷۷,۲۱۶ پارامتر نیاز دارد. اما لورا با رتبه $r=16$ تنها به ۱۳۱,۰۷۲ پارامتر نیاز دارد؛ یعنی تقریباً ۱۲۸ برابر کمتر از وزنهای قابل آموزش در آن لایه. تصمیمات کلیدی در پیکربندی شامل $r$، lora_alpha، target_modules و dropout است.
فراتر از لورای معمولی، چندین نسخه تخصصی برای رفع شکافهای پایداری و عملکرد ارائه شدهاند:
- rsLoRA (Rank-Stabilized LoRA): در لورای استاندارد، مشارکتها با استفاده از $\alpha / r$ مقیاسبندی میشوند. rsLoRA از $\alpha / \sqrt{r}$ استفاده میکند تا از کوچک شدن بیش از حد سیگنال یادگیری در رتبههای بالا جلوگیری کند. این قابلیت در کتابخانه PEFT با قرار دادن
use_rslora=Trueفعال میشود. - AdaLoRA: بهجای اختصاص بودجه رتبه یکسان به تمام ماتریسها، AdaLoRA اهمیت لایهها را در حین آموزش ارزیابی کرده و بودجه را بهصورت تطبیقی توزیع میکند و مقادیر تکین (Singular Values) مرتبط با بهروزرسانیهای کماهمیتتر را هرس (Prune) میکند.
- DoRA (Weight-Decomposed Low-Rank Adaptation): این روش وزنها را به دو مؤلفه «اندازه» (Magnitude) و «جهت» (Direction) تفکیک میکند. DoRA از لورا برای بهروزرسانی «جهت» استفاده کرده و «اندازه» را بهطور جداگانه یاد میگیرد. این کار شکاف دینامیک آموزش بین لورا و تنظیم دقیق کامل را کاهش میدهد، هرچند ممکن است مصرف محاسباتی و حافظه موقت آموزش را افزایش دهد.
کوانتیزاسیون و کارایی
QLoRA یک متد مجزای تنظیم دقیق نیست، بلکه ترکیبی از کوانتیزاسیون و لورا است. QLoRA تعیین میکند که مدل پایه چگونه در حافظه نمایش داده شود، در حالی که لورا تعیین میکند کدام پارامترها آموزش ببینند.
QLoRA مکانیزمهای فنی خاصی را پیاده میکند:
- NormalFloat 4-bit (NF4): وزنها در دقت ۴-بیتی بارگذاری میشوند.
- Dequantization: وزنها بهطور موقت برای انجام محاسبات به دقت اصلی بازگردانده میشوند.
- Double Quantization و Paged Optimizers: این دو تکنیک مصرف VRAM را باز هم کاهش میدهند.
نکته حیاتی این است که آموزش با یک مدل پایه ۴-بیتی به این معنا نیست که خودِ نقطه بازرسی (Checkpoint) آداپتور نیز با دقت ۴-بیتی ذخیره میشود؛ آداپتورها برای حفظ کیفیت یادگیری، دقت بالاتری را حفظ میکنند.
استراتژیهای جایگزین تطبیق
همه روشهای PEFT مبتنی بر ماتریس نیستند. دستههای دیگر مزایای متفاوتی دارند:
- مقیاسبندی فعالساز (IA³): روش IA³ بردارهای مقیاسبندی یادگیرنده را به فعالسازهای کلید (Key) و مقدار (Value) در مکانیزم توجه و همچنین فعالسازهای میانی Feed-forward اضافه میکند. مطالعه T-Few نشان داد که IA³ در برخی تسکهای Few-shot میتواند از نظر دقت و کارایی از یادگیری در-متن (In-context learning) پیشی بگیرد. این روش برای آداپتورهای بسیار کوچک و سوئیچ سریع بین تسکها بهترین انتخاب است.
- پرامپتهای نرم (Soft Prompting): این متدها بهجای کلمات قابل خواندن توسط انسان، بردارهای پیوستهای را در فضای جایگذاری (Embedding Space) از طریق پسانتشار یاد میگیرند.
- تنظیم پرامپت (Prompt Tuning): توکنهای مجازی یادگیرندهای را به ورودی اضافه میکند. تحقیقات نشان میدهد با افزایش مقیاس مدل، این روش میتواند شکاف عملکرد با تنظیم کامل را در برخی تسکهای T5 پر کند.
- تنظیم پیشوند (Prefix Tuning): بازنماییهای کلید و مقدار پیشوند یادگیرندهای را به مکانیزم توجه در هر لایه ترانسفورمر ارائه میدهد. این روش در تسکهای خلاصهسازی و تبدیل جدول به متن، نتایجی نزدیک به تنظیم کامل داشته است، در حالی که تنها حدود ۰.۱٪ پارامترها را آموزش میدهد.
- تنظیم گزینشی (Selective Tuning): تمرکز تنها بر پارامترهای خاص مانند LayerNorm یا بایاسها برای به حداقل رساندن ردپای حافظه.
پرامپتهای نرم و پیشوندها، پرامپتهای زبان طبیعی نیستند و نمیتوان آنها را بین توکنسازهای مختلف یا نسخههای متفاوت مدل پایه منتقل کرد. همچنین آنها بر روی KV-cache و مقدار متنی قابل استفاده تأثیر میگذارند.
استقرار و ریسکهای عملیاتی
استقرار PEFT در محیط تولید (Production) چالشهای فنی منحصربهفردی ایجاد میکند. یک نقطه بازرسی آداپتور معمولاً تنها شامل تغییرات یادگرفته شده و یک فایل پیکربندی است که هویت مدل پایه، متد PEFT و ماژولهای هدف را توصیف میکند.
برای تضمین پایداری تولید، موارد زیر باید بهطور همزمان ورژنبندی شوند:
- مخزن مدل پایه و کامیت/نسخه (Revision) دقیق آن.
- فایلهای توکنساز، قالبهای چت (Chat Templates) و توکنهای ویژه اضافی.
- نسخههای کتابخانه PEFT و Transformers.
- پیکربندی کوانتیزاسیون و نوع داده محاسباتی (Compute Data Type).
- نسخه دادههای آموزشی و گزارشهای ارزیابی.
اتصال یک آداپتور به نسخهای متفاوت از همان مدل پایه میتواند رفتار مدل را تخریب کند، حتی اگر هیچ خطای ابعاری در تانسورها رخ ندهد. اگر توکنهایی به توکنساز اضافه شده باشند، تغییرات لایه جایگذاری یا سر (Head) مدل زبانی نیز باید ذخیره شوند؛ فایل آداپتور به تنهایی کافی نیست.
توسعهدهندگان برای سرویسدهی دو مسیر اصلی دارند:
۱. ادغام (Merging): استفاده از تابع merge_and_unload() برای ادغام آداپتورها در وزنهای پایه. این کار سربار محاسباتی جداگانه را حذف کرده و یک مدل مستقل ایجاد میکند، اما مانع از سوئیچینگ پویای آداپتورها و اشتراک یک مدل پایه بین چندین تسک میشود.
۲. سوئیچینگ پویا (Dynamic Switching): بارگذاری آداپتورهای مختلف برای هر مشتری، زبان یا تسک روی یک مدل پایه مشترک. این روش ذخیرهسازی را بهینه میکند اما ریسکهایی در مورد کشینگ آداپتورها، احراز هویت مستاجر (جلوگیری از استفاده آداپتور یک مشتری توسط مشتری دیگر) و مدیریت بارگذاریهای همزمان ایجاد میکند.
برای ادغام چندین آداپتور، PEFT روشهای ادغام خطی، ادغام مبتنی بر SVD و TIES را ارائه میدهد. با این حال، جهتهای بهروزرسانی وزن ممکن است با هم تداخل داشته باشند و هر مدل ادغام شده باید بهطور مستقل برای هر تسک منبع مجدداً ارزیابی شود.
آنچه PEFT نمیتواند حل کند
روش PEFT یک موازنه مهندسی است، نه یک راهکار جادویی. این روش موارد زیر را اصلاح نمیکند:
- دادههای بیکیفیت: آموزش پارامترهای کمتر، دادههای نادرست، تکراری یا آلوده را اصلاح نمیکند.
- توهمات (Hallucinations): یک آداپتور دقت واقعی (Factual Accuracy) را تضمین نمیکند؛ اطلاعات مستند به منبع همچنان نیازمند سیستم بازیابی (Retrieval) هستند.
- متن بلند (Long Context): این روش بهطور خودکار پنجره متنی را افزایش نمیدهد و هزینههای توجه را کاهش نمیدهد.
- عدم تطابق توکنساز: لورا نمیتواند توکنسازی که اساساً برای یک زبان هدف نامناسب است را اصلاح کند.
- امنیت: دادههای آموزشی مخرب همچنان میتوانند درهای پشتی (Backdoors) ایجاد کنند.
- هزینه سرویسدهی: هزینه استنتاج مدل پایه اساساً بدون تغییر باقی میماند.
برای دانشهایی که بهطور مکرر تغییر میکنند، تولید بازیابیافزا (Retrieval-Augmented Generation یا RAG) انتخابی برتر برای تازگی اطلاعات و ارجاع به منابع است. PEFT و RAG میتوانند با هم استفاده شوند: آداپتور ساختار خروجی مطلوب را میآموزد و RAG شواهد را تامین میکند.
پیادهسازی و آزمایش
از دیدگاه توسعه، یک برنامه آزمایشی قوی باید با یک خط پایه Zero-shot شروع شود. یک گردشکار پایه لورا در Hugging Face شامل استفاده از LoraConfig با پارامترهایی مانند task_type="CAUSAL_LM" و target_modules (مانند q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj) است.
توسعهدهندگان باید از اشتباهات رایج اجتناب کنند:
- کپی کورکورانه ماژولها: نامهای
target_modulesبسته به معماری تغییر میکنند و باید بررسی شوند. - نادیده گرفتن تعداد پارامترها: از
print_trainable_parameters()برای تایید ماژولهای هدف استفاده کنید. اگر نسبت پارامترهای قابل آموزش خیلی زیاد باشد، ممکن است لایه جایگذاری یا Head بهطور ناخواسته فعال شده باشد؛ اگر خیلی کم باشد، ممکن است نامهای ماژولها اشتباه باشند. - مقیاسبندی نادرست: برخورد با رتبه (Rank) و آلفا (Alpha) به عنوان یک مفهوم واحد یا افزایش هر دو همزمان با نرخ یادگیری بدون کنترل.
- ماسکگذاری خطا (Loss Masking): محاسبه تصادفی خطا روی توکنهای پرامپت یا توکنهای کاربر.
یک گردشکار حرفهای شامل جستجوی سیستماتیک (Sweep) روی نرخهای یادگیری، رتبهها و ماژولهای هدف در یک توالی کنترلشده است. وقتی محدودیتهای لورای استاندارد فرا میرسند، توسعهدهندگان باید rsLoRA، DoRA یا AdaLoRA را تحت همان بودجه پارامتری مقایسه کنند. در نهایت، هر مدل باید با هر دو حالت فعال و غیرفعال بودن آداپتور بنچمارک شود تا تغییرات در ایمنی، قابلیتهای کلی و تأخیر (Latency) اندازهگیری شود.
این تغییر معماری، هدف را از «مدل چقدر بزرگ است» به «آداپتور چقدر کارآمد است» تغییر میدهد. انتخاب متد — چه LoRA باشد، چه DoRA یا IA³ — باید بر اساس پیچیدگی تسک هدف و زیرساخت سرویسدهی موجود باشد، نه صرفاً به دلیل به حداقل رساندن تعداد پارامترها.




گفتگو