پرش به محتوا
← همهٔ یادداشت‌ها

Fine-tune مدل زبانی با Unsloth Studio روی GPU ابری

·۸ دقیقه مطالعه·تیم جی‌پی‌یو

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

اگر می‌خواهید یک مدل زبانی باز مثل Qwen یا Llama لحن، اصطلاحات یا قالب پاسخ کسب‌وکار خودتان را یاد بگیرد، ساده‌ترین راه Fine-tune با Unsloth Studio روی GPU ابری است. در این آموزش یک کارت گرافیک ۲۴ گیگ اجاره می‌کنید، با قالب آمادهٔ Unsloth Studio یک مدل ۸ میلیارد پارامتری را با دیتاست خودتان آموزش می‌دهید و خروجی را برای اجرا در Ollama می‌گیرید؛ همه در مرورگر و بدون نوشتن کد آموزش.

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

پیش‌نیازها

  • یک حساب جی‌پی‌یو. اگر ندارید، از صفحهٔ ثبت‌نام بسازید.
  • یک کلید SSH ثبت‌شده در حساب. اگر تا حالا ماشینی بالا نیاورده‌اید، اول شروع اجاره GPU: اولین ماشین در ۱۰ دقیقه را بخوانید.
  • موجودی کیف پول برای حدود دو ساعت از نرخ ماشینی که انتخاب می‌کنید. برای شروع اجاره، حداقل موجودیِ یک ساعت لازم است؛ ساعت دوم حاشیهٔ امن برای تکرار آموزش است.
  • یک فایل دیتاست با فرمت JSONL. پایین‌تر نشان می‌دهیم چه شکلی باید باشد.

Fine-tune چیست و کی به دردتان می‌خورد؟

Fine-tune یعنی یک مدل آماده را با چند صد یا چند هزار نمونهٔ «پرسش و پاسخ درست» کمی بیشتر آموزش بدهید تا رفتارش به سمت نیاز شما برود. مدل دانش تازهٔ زیادی یاد نمی‌گیرد؛ بیشتر سبک، قالب خروجی و واژگان تخصصی را یاد می‌گیرد.

چند کاربرد رایج: پاسخ دادن به تیکت‌های پشتیبانی با لحن ثابت شرکت، تبدیل متن آزاد به JSON با ساختار مشخص، یا خلاصه‌نویسی به سبک خاص. اگر فقط می‌خواهید مدل از روی اسناد شما جواب بدهد، Fine-tune لازم نیست؛ پست Open WebUI: چت‌بات هوش مصنوعی خصوصی روی GPU ابری برای آن کار مناسب‌تر است.

انتخاب ماشین مناسب برای Fine-tune روی GPU ابری

Unsloth دو روش اصلی دارد. QLoRA مدل پایه را ۴ بیتی در حافظه نگه می‌دارد و فقط لایه‌های کوچک LoRA را آموزش می‌دهد؛ LoRA همان کار را با مدل ۱۶ بیتی می‌کند. طبق جدول رسمی Unsloth، حداقل VRAM لازم تقریباً این است:

اندازهٔ مدل QLoRA (۴ بیتی) LoRA (۱۶ بیتی)
8B ۶ گیگ ۲۲ گیگ
14B ۸٫۵ گیگ ۳۳ گیگ
32B ۲۶ گیگ ۷۶ گیگ

این‌ها حداقل مطلق‌اند. با طول متن بیشتر و batch بزرگ‌تر، مصرف بالا می‌رود. برای همین یک کارت ۲۴ گیگ انتخاب راحتی است: مدل 8B و 14B را با QLoRA و جای خالی کافی آموزش می‌دهد. برای مقایسهٔ کلی کارت‌ها، انتخاب کارت گرافیک هوش مصنوعی: راهنمای VRAM هر کار را ببینید.

  • پیشنهاد اقتصادی: RTX 3090 با ۲۴ گیگ VRAM؛ از حدود ۴۱ هزار تومان در ساعت، در زمان نوشتن این مطلب.
  • پیشنهاد سریع: RTX 4090 با ۲۴ گیگ VRAM؛ از حدود ۱۰۱ هزار تومان در ساعت، در زمان نوشتن این مطلب. همان حافظه را دارد ولی آموزش را محسوس سریع‌تر تمام می‌کند.
  • فقط برای آزمایش مدل کوچک: RTX A4000 با ۱۶ گیگ از حدود ۲۷ هزار تومان در ساعت، در زمان نوشتن این مطلب، برای QLoRA روی مدل 8B کافی است.

ماشین‌ها را در بازار GPU با فیلتر مدل کارت و حافظه پیدا کنید. چون قیمت ساعتی موقع اجاره قفل می‌شود، نوسان بازار وسط آموزش روی هزینهٔ شما اثری ندارد.

اجاره و راه‌اندازی

۱. در بازار، ماشین را انتخاب کنید و در بخش قالب، Unsloth Studio را بزنید. ۲. دکمهٔ اجاره را بزنید و صبر کنید وضعیت ماشین «آماده» شود. چند دقیقه طول می‌کشد. ۳. در صفحهٔ ماشین، دکمهٔ «پنل ماشین» رابط وب Unsloth Studio را باز می‌کند. اگر ترجیح می‌دهید از مسیر SSH وصل شوید، دستور «تونل امن» هم همان‌جا آماده و یک‌کلیک کپی است.

قبل از هر چیز، با دستور SSH صفحهٔ ماشین وارد شوید و ببینید کارت درست شناخته شده است:

nvidia-smi

باید نام کارت و حدود ۲۴ گیگ حافظه را ببینید. اگر رابط وب در اولین بار رمز خواست، طبق مستندات Unsloth رمز اولیه در این فایل است و بعد از ورود می‌توانید عوضش کنید:

cat ~/.unsloth/studio/auth/.bootstrap_password

آماده کردن دیتاست

Unsloth Studio فایل JSONL با فرمت Alpaca را مستقیم می‌شناسد. هر خط یک نمونه است با سه فیلد instruction (دستور)، input (ورودی اختیاری) و output (پاسخ درست):

{"instruction": "این پیام مشتری را در یک جمله خلاصه کن.", "input": "سلام، سفارشم سه روز است ارسال نشده و پیگیری هم جواب نمی‌دهد.", "output": "سفارش مشتری سه روز تأخیر دارد و پیگیری بی‌نتیجه بوده است."}
{"instruction": "این پیام مشتری را در یک جمله خلاصه کن.", "input": "رمز ورودم را فراموش کرده‌ام و ایمیل بازیابی نمی‌رسد.", "output": "مشتری به حسابش دسترسی ندارد و ایمیل بازیابی دریافت نمی‌کند."}

چند نکتهٔ عملی:

  • کیفیت از تعداد مهم‌تر است. ۳۰۰ نمونهٔ تمیز و یکدست بهتر از ۳۰۰۰ نمونهٔ شلوغ جواب می‌دهد.
  • فایل را با UTF-8 ذخیره کنید تا متن فارسی خراب نشود.
  • اگر داده‌تان PDF یا CSV است، بخش Recipes در خود Studio می‌تواند از روی این فایل‌ها دیتاست بسازد.

Fine-tune قدم‌به‌قدم در Unsloth Studio

انتخاب مدل و روش

در بخش Studio، شناسهٔ مدل را از Hugging Face وارد کنید؛ مثلاً unsloth/Qwen3-8B یا unsloth/Meta-Llama-3.1-8B-Instruct. روش را QLoRA بگذارید. دانلود مدل روی خود ماشین انجام می‌شود و چون ماشین‌ها خارج از ایران‌اند، چند گیگابایت در چند دقیقه پایین می‌آید و به سرعت اینترنت شما ربطی ندارد.

بارگذاری دیتاست

فایل JSONL را در بخش Dataset آپلود کنید. Studio فیلدهای instruction، input و output را خودش تشخیص می‌دهد و اگر نام ستون‌ها فرق داشت، می‌توانید دستی نگاشتشان کنید.

تنظیمات آموزش

برای اولین اجرا به پیش‌فرض‌ها دست نزنید و فقط این‌ها را بشناسید:

  • Max Steps: برای یک اجرای آزمایشی عدد کوچکی بگذارید تا مطمئن شوید همه‌چیز کار می‌کند؛ بعد سراغ اجرای کامل بروید.
  • Context Length: طول متن هر نمونه. اگر نمونه‌هایتان کوتاه‌اند، ۲۰۴۸ کافی است و VRAM کمتری مصرف می‌کند.
  • Learning Rate: مقدار رایج برای LoRA همان 0.0002 است.
  • LoRA Rank و Alpha: هرچه بزرگ‌تر، ظرفیت یادگیری بیشتر و حافظهٔ بیشتر.

دکمهٔ Start Training را بزنید. Studio پیشرفت آموزش را زنده نشان می‌دهد. اگر عدد loss به‌تدریج پایین می‌آید، مسیر درست است.

مقایسه در چت

بعد از پایان آموزش، گزینهٔ Compare in Chat مدل پایه و مدل آموزش‌دیده را کنار هم بالا می‌آورد. چند ورودی تازه که در دیتاست نبوده بدهید و پاسخ‌ها را مقایسه کنید. خروجی آموزش (آداپتور LoRA) در این مسیر ذخیره می‌شود:

ls ~/.unsloth/studio/outputs/

خروجی گرفتن و اجرا در Ollama

در بخش Export می‌توانید مدل را به‌صورت safetensors یا GGUF بگیرید. GGUF همان فرمتی است که Ollama و llama.cpp اجرا می‌کنند. فایل را با scp روی سیستم خودتان بیاورید (جزئیاتش در دانلود مدل هوش مصنوعی روی سرور GPU: scp و rsync آمده است).

برای اجرا در Ollama، کنار فایل GGUF یک فایل به نام Modelfile با این یک خط بسازید (نام فایل GGUF را با نام واقعی عوض کنید):

FROM ./model.gguf

سپس:

ollama create my-model -f Modelfile
ollama run my-model

اگر می‌خواهید مدل را دوباره روی کارت ابری اجرا کنید، اجرای مدل زبانی با Ollama روی GPU ابری قدم‌به‌قدم توضیح داده است.

اگر به مشکل خوردید

  • CUDA out of memory: Context Length را کم کنید، Batch Size را پایین بیاورید یا مطمئن شوید روش روی QLoRA است. اگر باز جا نشد، مدل کوچک‌تر بردارید.
  • دانلود مدل گیر کرد یا خطای دسترسی داد: بعضی مدل‌ها در Hugging Face نیاز به پذیرفتن مجوز دارند. یا نسخهٔ unsloth/ همان مدل را بردارید یا توکن Hugging Face خودتان را در فیلد مربوط وارد کنید.
  • دیتاست شناخته نشد: هر خط باید یک JSON کامل باشد و فایل با UTF-8 ذخیره شده باشد. یک کاما یا گیومهٔ جاافتاده کل فایل را خراب می‌کند.
  • مدل بعد از آموزش فقط جملات دیتاست را تکرار می‌کند: بیش‌برازش است. تعداد step یا epoch را کم کنید و نمونه‌های متنوع‌تر بگذارید.

هزینه و صرفه‌جویی

برای یک دیتاست چند صد نمونه‌ای روی مدل 8B، دانلود مدل، یک اجرای آزمایشی کوتاه، آموزش اصلی و Export معمولاً در کمتر از یک ساعت تمام می‌شود. با RTX 3090 یعنی حدود ۴۱ هزار تومان، در زمان نوشتن این مطلب. دیتاست بزرگ‌تر یا مدل 14B زمان را بیشتر می‌کند.

هزینه دقیقه‌ای حساب می‌شود و فقط وقتی ماشین در حال اجراست. پس دیتاست را قبل از اجاره آماده کنید، نه وقتی ماشین روشن است. بعد از کار ماشین را متوقف یا حذف کنید. دیسک ماشین با حذف پاک می‌شود؛ پس فایل GGUF و آداپتور LoRA را قبل از حذف دانلود کنید.

قدم بعدی

اگر می‌خواهید مدل Fine-tune‌شده را به‌عنوان API در اپلیکیشن خودتان بگذارید، قالب vLLM مسیر بعدی است. اگر دیتاست بزرگ‌تر و کنترل بیشتری روی تنظیمات می‌خواهید، قالب Axolotl گزینهٔ بعدی برای آموزش مدل زبانی است.

پرسش‌های متداول

برای fine tune کردن مدل زبانی چقدر VRAM لازم است؟

با QLoRA، طبق جدول Unsloth، مدل 8B حداقل حدود ۶ گیگ و مدل 14B حدود ۸٫۵ گیگ می‌خواهد. در عمل یک کارت ۲۴ گیگ برای این دو اندازه جای راحتی می‌دهد. مدل 32B با QLoRA حداقل حدود ۲۶ گیگ لازم دارد و روی کارت ۲۴ گیگ جا نمی‌شود.

آیا Unsloth Studio نیاز به برنامه‌نویسی دارد؟

نه. انتخاب مدل، آپلود دیتاست، آموزش، مقایسه در چت و Export همه در رابط وب انجام می‌شود. فقط برای ساختن فایل JSONL و دانلود خروجی کمی کار با فایل و ترمینال لازم است.

چند نمونه برای Fine-tune کافی است؟

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

فرق LoRA و QLoRA چیست؟

هر دو فقط لایه‌های کوچک اضافه را آموزش می‌دهند. QLoRA مدل پایه را ۴ بیتی نگه می‌دارد و VRAM خیلی کمتری مصرف می‌کند؛ LoRA مدل را ۱۶ بیتی نگه می‌دارد و حافظهٔ بیشتری می‌خواهد. برای شروع روی کارت ۲۴ گیگ، QLoRA انتخاب منطقی است.


تصویر کاور: «Brown-throated sloth (Bradypus variegatus) female» اثر Charles J. Sharp، از ویکی‌مدیا کامنز، لایسنس CC BY-SA 4.0.