هوش مصنوعی

Fine-tuning چیست؟

Fine-tuning چیست؟ — راهنمای فارسی از مجموعهٔ «هوش مصنوعی» در وبلاگ آیرا. بازنویسی‌شده با تمرکز روی کاربر ایرانی و روایت شناخت پیوسته.

نوشتهٔ به‌روزرسانی: ۴ دقیقه مطالعه
تصویر مقالهٔ Fine-tuning چیست؟

Fine-tuning — یا همون «تنظیم دقیق» — یکی از مفاهیم بنیادیه که خیلی‌ها اسمش رو شنیدن ولی دقیقاً نمی‌دونن چیه و کِی لازم می‌شه. این مقاله می‌خواد این مفهوم رو با مثال‌های ملموس توضیح بده — نه با جملات کتاب‌درسی.

شروع از یه تشبیه

تصور کن یه فارغ‌التحصیل مهندسی داری که همه‌چیز می‌دونه — ریاضی، فیزیک، الکترونیک. ولی اگه بخواد توی شرکت برق بشینه و روی تجهیزات خاص اون شرکت کار کنه، باید چند ماه آموزش تخصصی ببینه. این آموزش تخصصی همون fine-tuning‌ه.

یه مدل زبانی مثل GPT یا Claude از روی میلیاردها صفحه متن عمومی آموزش می‌بینه. این «pre-training» یا پیش‌آموزشه. بعد از این مرحله، مدل خیلی چیزها می‌دونه — ولی برای یه وظیفهٔ خاص شاید هنوز بهینه نباشه. Fine-tuning مرحله‌ایه که مدل رو روی داده‌های تخصصی‌تر آموزش می‌دی تا در اون حوزهٔ خاص بهتر بشه.

فنی‌اش چطوریه؟

در pre-training، مدل روی حجم عظیمی از داده (صدها تا هزاران میلیارد توکن) آموزش می‌بینه — با هدف پیش‌بینی کلمهٔ بعدی. این مرحله هفته‌ها یا ماه‌ها طول می‌کشه و میلیون‌ها دلار هزینه داره.

Fine-tuning از پارامترهای اون مدل از پیش آموزش‌دیده شروع می‌کنه و روی یه مجموعهٔ داده کوچک‌تر (معمولاً صدها تا چند هزار نمونه) یه بار دیگه آموزش می‌ده — این بار با هدف خاص. هزینه و زمانش هم خیلی کمتره چون از صفر شروع نمی‌کنی.

برای مثال:

  • می‌خوای مدل بتونه در سبک نوشتاری خاص تو بنویسه؟ → fine-tuning روی نوشته‌های خودت
  • می‌خوای مدل به سؤالات پزشکی با دقت بالا جواب بده؟ → fine-tuning روی متون پزشکی
  • می‌خوای مدل خدمات مشتری شرکتت رو انجام بده؟ → fine-tuning روی FAQ و تاریخچهٔ چت

fine-tuning چه مشکلی رو حل می‌کنه که prompt نمی‌کنه؟

سؤال مهمیه. چون برای خیلی از کارها، یه prompt خوب کافیه. پس fine-tuning واقعاً کِی معنی داره؟

اول: وقتی context window کافی نیست. اگه باید صدها صفحه از اسناد شرکتت رو توی هر prompt بذاری تا مدل بدونه چطور جواب بده، fine-tuning می‌تونه این دانش رو «داخل» مدل بکنه.

دوم: وقتی هزینهٔ token مهمه. Few-shot prompting هر بار چند مثال توکن مصرف می‌کنه. با fine-tuning، مدل الگو رو بلده و دیگه نیازی به مثال‌های تکراری نیست.

سوم: وقتی به ثبات بالا نیاز داری. یه مدل fine-tuned شده روی وظیفهٔ خاصت، قابل پیش‌بینی‌تره از یه مدل عمومی که هر بار باید راهنماییش کنی.

چهارم: وقتی سبک یا لحن خیلی مهمه. تقلید دقیق از سبک نوشتاری با prompt تنها سخته؛ با fine-tuning طبیعی‌تر درمیاد.

چه زمانی fine-tuning انتخاب درستی نیست؟

Fine-tuning ابزار قدرتمندیه، ولی نه همیشه بهترین انتخاب:

وقتی داده‌ات کم یا کم‌کیفیته: مدل روی همون اشتباهات یاد می‌گیره. داده‌های بد نتیجهٔ بد می‌ده.

وقتی نیازت مدام عوض می‌شه: fine-tuning یه اسنپ‌شات از دانشته. اگه اطلاعاتت سریع آپدیت می‌شه، RAG (بازیابی اطلاعات) بهتره.

وقتی هنوز prompt درستی نداری: خیلی‌ها برای چیزی که یه prompt خوب حلش می‌کنه سراغ fine-tuning می‌رن. اول few-shot prompting و chain-of-thought رو امتحان کن.

وقتی بودجه محدوده: fine-tuning هم هزینهٔ آموزش داره هم هزینهٔ inference (چون مدل fine-tuned رو باید جداگانه هاست کنی یا با نرخ بالاتر استفاده کنی).

ابزارهای fine-tuning

OpenAI Fine-tuning API: پرکاربردترین گزینه برای GPT-3.5 و GPT-4o mini. از طریق API کار می‌کنه، داده‌ها رو به فرمت JSONL آپلود می‌کنی، هزینه‌اش به تعداد توکن‌های آموزشی بستگی داره.

Google Vertex AI (Gemini): Gemini رو هم می‌شه fine-tune کرد از طریق Vertex AI — مناسب‌تر برای تیم‌هایی که روی Google Cloud هستن.

HuggingFace + LoRA: برای مدل‌های اوپن‌سورس مثل LLaMA، روش‌هایی مثل LoRA (Low-Rank Adaptation) وجود داره که هزینهٔ آموزش رو خیلی کاهش می‌ده. اگه می‌خوای روی مدلی مثل LLaMA رو برای فارسی fine-tune کنی، این مسیره.

fine-tuning برای فارسی — چه چالش‌هایی داریم؟

اینجاست که کار جالب‌تر می‌شه. برای زبان فارسی چند مشکل خاص وجود داره:

توکنیزیشن ضعیف: اکثر مدل‌های غربی روی فارسی tokenizer خوبی ندارن. این یعنی «می‌رفتم» ممکنه به چند توکن تبدیل بشه که معنی درستی نده. Fine-tuning این رو کمی بهبود می‌ده ولی کاملاً حلش نمی‌کنه.

کمبود دیتاست با کیفیت: مهم‌ترین چالشه. دیتاست‌های متن فارسی در مقایسه با انگلیسی محدودن. برای fine-tuning باید داده‌های تمیز و برچسب‌گذاری‌شده داشته باشی.

پشتیبانی از راست به چپ: اگه خروجی مدل باید در رابط کاربری درست نشون داده بشه، بخش نمایش هم مهمه — نه فقط مدل.

یه نکتهٔ مهم درباره fine-tuning vs دانش پیوسته

Fine-tuning دانش عمومی رو به مدل می‌ده — مثل اینکه یه شغل خاص رو بلد باشه. ولی شخص تو رو نمی‌شناسه. نمی‌دونه زمینهٔ کارت چیه، ترجیحاتت چیه، توی گفتگوهای قبلی چی گفتی.

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

جمع‌بندی

Fine-tuning یعنی برگرفتن یه مدل از پیش آموزش‌دیده و تخصصی‌کردنش برای یه وظیفهٔ خاص — با داده‌های محدودتر و با هزینهٔ خیلی کمتر از آموزش از صفر.

بهترین کاربردش: وقتی نیاز به ثبات بالا، سبک خاص، یا دانش تخصصی داری که نمی‌شه با prompt منتقلش کرد. بدترین کاربردش: وقتی داده کم داری، نیازت متغیره، یا هنوز prompt بهینه رو امتحان نکردی.

همچنین بخوان

#هوش مصنوعی#fine-tuning

ادامهٔ مسیر

همهٔ مقاله‌ها ←

بیشتر در «هوش مصنوعی»