لوگوی CloudRUX
    Datacenter 1
    Datacenter 2
    Datacenter 3
    استراتژی

    انتخاب GPU و VRAM برای Fine-Tuning مدل‌های LLM: LoRA، QLoRA و آموزش کامل

    تیم مهندسی CloudRUX
    8 دقیقه

    پیش از fine-tune کردن یک مدل زبانی روی داده‌های خودتان، پرسش اصلی این است که روی کدام GPU جا می‌شود. توضیح می‌دهیم چه چیزی VRAM را مصرف می‌کند، LoRA، QLoRA و آموزش کامل چه تفاوتی دارند، نیاز تقریبی به حافظه بر اساس اندازه مدل چقدر است و چگونه هزینه‌ها را کنترل کنید.

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

    حدس اشتباه از دو جهت گران تمام می‌شود. اگر کارتی با حافظه ناکافی انتخاب کنید، آموزش با خطای «out of memory» متوقف می‌شود و ساعت‌ها هدر می‌رود. اگر کارتی بزرگ‌تر از نیاز انتخاب کنید، هزینه ظرفیتی را می‌پردازید که از آن استفاده نمی‌کنید.

    در این مقاله توضیح می‌دهیم چه چیزی VRAM را مصرف می‌کند، LoRA، QLoRA و آموزش کامل از نظر حافظه چه تفاوتی دارند و کدام GPUها تقریباً برای هر اندازه مدل مناسب‌اند.

    چه چیزی در طول آموزش VRAM را مصرف می‌کند؟

    در طول آموزش، حافظه GPU چیزی بسیار بیشتر از وزن‌های مدل را در خود نگه می‌دارد. نیاز حافظه مجموع چند جزء است:

    • وزن‌های مدل: در دقت 16 بیتی (FP16 یا BF16)، 2 بایت به ازای هر پارامتر. با کوانتیزاسیون 4 بیتی، تقریباً 0.5 تا 0.6 بایت به ازای هر پارامتر.
    • گرادیان‌ها: برای هر پارامتر آموزش‌دیده یک گرادیان نگهداری می‌شود. در آموزش کامل، این یعنی حافظه اضافی به اندازه خود وزن‌ها.
    • وضعیت‌های بهینه‌ساز: بهینه‌سازهای رایجی مانند Adam و AdamW برای هر پارامتر دو مقدار اضافی نگه می‌دارند. این مقادیر معمولاً 32 بیتی ذخیره می‌شوند، بنابراین ممکن است بزرگ‌ترین بخش مصرف حافظه باشند.
    • اکتیویشن‌ها: مقادیر میانی که در گذر رو به جلو محاسبه می‌شوند. این مقادیر با اندازه بچ و طول توالی بزرگ‌تر می‌شوند. Gradient checkpointing آن‌ها را کاهش می‌دهد، به بهای اینکه آموزش کمی کندتر شود.
    • سربار فریم‌ورک و CUDA: فضای اضافی که کتابخانه‌ها و تکه‌تکه شدن حافظه مصرف می‌کنند؛ معمولاً چند GB.

    یک قاعده سرانگشتی رایج این است که آموزش کامل با دقت ترکیبی و بهینه‌ساز Adam تقریباً به 16 بایت یا بیشتر به ازای هر پارامتر نیاز دارد، و اکتیویشن‌ها هم به آن اضافه می‌شوند. بنابراین حتی آموزش کامل یک مدل 7 میلیارد پارامتری، پیش از احتساب اکتیویشن‌ها، به بیش از 110 GB حافظه نیاز دارد.

    مقایسه LoRA، QLoRA و آموزش کامل

    فاین‌تیونینگ کامل

    همه پارامترهای مدل به‌روزرسانی می‌شوند. این انعطاف‌پذیرترین روش است، اما از نظر حافظه و زمان پرهزینه‌ترین هم هست. مدل‌های بزرگ تقریباً همیشه به چند GPU و تکنیک‌های تقسیم حافظه‌ای مانند FSDP یا DeepSpeed ZeRO نیاز دارند.

    LoRA

    LoRA (Low-Rank Adaptation) وزن‌های مدل پایه را ثابت نگه می‌دارد و فقط ماتریس‌های آداپتور کوچک را آموزش می‌دهد. تعداد پارامترهای آموزش‌دیده معمولاً درصد بسیار کوچکی از کل است. این کار حافظه لازم برای گرادیان‌ها و وضعیت‌های بهینه‌ساز را به‌شدت کاهش می‌دهد. مدل پایه در دقت 16 بیتی باقی می‌ماند، پس وزن‌ها همچنان حدود 2 بایت به ازای هر پارامتر فضا می‌گیرند.

    QLoRA

    QLoRA رویکرد LoRA را با یک مدل پایه کوانتیزه‌شده 4 بیتی ترکیب می‌کند. وزن‌های پایه به حدود یک‌چهارم کاهش می‌یابند، در حالی که آداپتورها با دقت بالاتری آموزش می‌بینند. در بسیاری از کارها نتایجی نزدیک به LoRA ارائه می‌دهد و روی کارت‌های بسیار کوچک‌تری اجرا می‌شود. در عوض، آموزش به دلیل سربار کوانتیزاسیون معمولاً کمی کندتر است.

    نیاز تقریبی VRAM بر اساس اندازه مدل

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

    اندازه مدلQLoRA (پایه 4 بیتی)LoRA (پایه 16 بیتی)آموزش کامل (16 بیتی، Adam)
    7B / 8Bحدود 8-16 GB؛ L4 24 GB، RTX 4090 24 GBحدود 18-30 GB؛ A40 48 GB، L40S 48 GBحدود 120 GB یا بیشتر؛ چند GPU (برای مثال چند A100 / H100 80 GB) یا H200 141 GB
    13B / 14Bحدود 12-24 GB؛ RTX 4090 24 GB (به‌سختی)، A40 48 GBحدود 32-48 GB؛ A40 / L40S 48 GB (به‌سختی)، A100 80 GBحدود 220 GB یا بیشتر؛ چند GPU
    32B / 34Bحدود 24-40 GB؛ A40 48 GB، L40S 48 GBحدود 70-100 GB؛ RTX PRO 6000 96 GB، H200 141 GBحدود 520 GB یا بیشتر؛ چند GPU
    70Bحدود 45-70 GB؛ A100 / H100 80 GB، RTX PRO 6000 96 GBحدود 150-180 GB؛ B200 180 GB (به‌سختی) یا چند GPUحدود 1.1 TB یا بیشتر؛ کلاستر بزرگ چند GPU

    نتیجه روشن است: اگر می‌خواهید روی یک GPU کار کنید، QLoRA برای مدل‌های تا 70B و LoRA برای مدل‌های کوچک و متوسط عملی‌ترین مسیرها هستند. آموزش کامل، به جز برای مدل‌های کوچک، به یک پیکربندی جدی چند GPU نیاز دارد و در بیشتر سناریوهای کسب‌وکار، روش‌های مبتنی بر LoRA کاملاً کافی‌اند.

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

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

    GPUVRAMقیمت شروع (ساعتی، بدون مالیات بر ارزش افزوده)کاربرد معمول در فاین‌تیونینگ
    L424 GB$0.74آزمایش‌های QLoRA روی مدل‌های کوچک
    RTX 409024 GB$1.11QLoRA برای 7B-13B، آزمایش‌های سریع
    A4048 GB$0.74LoRA برای 7B، QLoRA برای 32B، اجراهای طولانی و مقرون‌به‌صرفه
    L40S48 GB$1.36LoRA برای 7B-13B، QLoRA برای 32B
    RTX PRO 600096 GB$3.11LoRA برای 32B، QLoRA برای 70B
    A10080 GB$2.24LoRA برای 13B، QLoRA برای 70B، پشتیبانی نرم‌افزاری پخته
    H10080 GB$4.99آموزش‌های طولانی که سرعت در آن‌ها مهم است
    H200141 GB$6.61LoRA روی مدل‌های بزرگ، آموزش کامل مدل‌های کوچک
    B200180 GB$9.99سنگین‌ترین کارهای آموزشی، جدیدترین نسل

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

    آماده‌سازی داده: نیمه پنهان آموزش

    ساعت‌های GPU گران‌اند، پس پیش از راه‌اندازی سرور GPU تا جای ممکن آماده‌سازی داده را تمام کنید.

    • قالب را مشخص کنید: جفت‌های دستور-پاسخ، قالب گفت‌وگو یا متن ساده؛ قالب باید با الگویی که کتابخانه آموزشی شما انتظار دارد مطابقت داشته باشد.
    • داده را پاک‌سازی کنید: نمونه‌های تکراری، خراب یا بسیار کوتاه را حذف کنید. داده کمتر اما تمیز اغلب از داده بیشتر اما نامرتب بهتر عمل می‌کند.
    • طول توالی را بررسی کنید: حداکثر طول معقولی انتخاب کنید که بیشتر نمونه‌ها را پوشش دهد. توالی‌های بی‌دلیل طولانی، حافظه اکتیویشن و زمان را افزایش می‌دهند.
    • مجموعه اعتبارسنجی کنار بگذارید: بخشی از داده را از آموزش جدا نگه دارید تا ببینید آیا مدل واقعاً بهتر می‌شود.
    • داده‌های شخصی را حذف کنید: نام‌ها، شماره تلفن‌ها، شماره‌های شناسایی و جزئیات مشابه را از داده‌های آموزشی حذف یا ناشناس کنید.

    چک‌پوینت‌ها و S3

    در سرورهای GPU شرکت CloudRUX، دیسک موقت با خاموش شدن سرور پاک می‌شود. برای اینکه نتایج ساعت‌ها آموزش را از دست ندهید، چک‌پوینت‌ها و آداپتورهای LoRA را مرتب روی یک ولوم ماندگار یا در ذخیره‌سازی شیء S3 ذخیره کنید.

    یک چیدمان عملی به این شکل است: اسکریپت آموزش پس از هر تعداد مشخص گام یک چک‌پوینت ذخیره می‌کند، چک‌پوینت‌ها در یک باکت سازگار با S3 کپی می‌شوند و در پایان آموزش فقط بهترین آداپتور و گزارش ارزیابی را نگه می‌دارید. آداپتورهای LoRA معمولاً بسیار کوچک‌تر از مدل پایه‌اند، پس نگهداری آن‌ها ارزان است.

    این رویکرد انعطاف هم می‌افزاید: می‌توانید آموزش را روی یک کارت شروع کنید و در صورت نیاز، از یک چک‌پوینت روی کارت دیگری ادامه دهید.

    کنترل هزینه‌ها

    1. ابتدا یک مدل کوچک را امتحان کنید: خط لوله داده و ابرپارامترها را روی یک مدل 7B-8B با یک کارت ارزان اعتبارسنجی کنید.
    2. با QLoRA شروع کنید: اگر نتایج به اندازه کافی خوب باشد، به کارت‌های بزرگ‌تر نیازی ندارید.
    3. یک اندازه‌گیری کوتاه انجام دهید: تعداد توکن در ثانیه را اندازه بگیرید و زمان و هزینه کل را محاسبه کنید.
    4. سرورهای بیکار را خاموش کنید: تا زمانی که داده‌هایتان روی فضای ذخیره‌سازی ماندگار است، خاموش کردن سرور بی‌خطر است.
    5. از قالب‌های آماده استفاده کنید: قالب‌های PyTorch و CUDA ساعت‌های پولی صرف‌شده برای درایورها و کتابخانه‌ها را کاهش می‌دهند. ایمیج کانتینر اختصاصی شما می‌تواند محیط را به‌طور کامل ثابت نگه دارد.

    برای مثال، فرض کنید آموزش QLoRA یک مدل 8B را روی A40 در 20 ساعت به پایان برسانید: 20 x 0.74 = $14.80 + مالیات بر ارزش افزوده. انجام همین کار با LoRA روی A100 به دلیل قیمت ساعتی بالاتر معمولاً گران‌تر است، اما چون زودتر تمام می‌شود، ممکن است اختلاف کمتر از انتظارتان باشد.

    محل داده‌ها و KVKK

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

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

    آیا مدلی که با LoRA آموزش دیده به خوبی مدلی است که آموزش کامل دیده؟

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

    آیا می‌توانم یک مدل 13B را روی کارت 24 GB آموزش دهم؟

    با QLoRA، gradient checkpointing و طول توالی معقول اغلب امکان‌پذیر است، اما به‌سختی. برای توالی‌های طولانی‌تر یا بچ‌های بزرگ‌تر، یک کارت 48 GB فضای راحت‌تری فراهم می‌کند.

    آیا ارقام VRAM در جدول دقیق‌اند؟

    خیر، این‌ها مقادیر تقریبی برای برنامه‌ریزی اولیه‌اند. مصرف واقعی با طول توالی، اندازه بچ، رنک LoRA و نسخه کتابخانه‌ها تغییر می‌کند.

    پس از آموزش، مدل را کجا ذخیره کنم؟

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

    فاین‌تیونینگ روی سرورهای GPU شرکت CloudRUX

    سرویس GPU شرکت CloudRUX در مرحله دسترسی زودهنگام است و کارت‌هایی از L4 تا B200، قالب‌های آماده PyTorch/CUDA، دسترسی SSH و Jupyter، صدور فاکتور الکترونیکی در ترکیه و پشتیبانی مهندسان به زبان فارسی و ترکی را ارائه می‌دهد. برای انتخاب کارت متناسب با اندازه مدل و روش خود به صفحه GPU ابری ما سر بزنید، یا برای بررسی مشترک برنامه آموزشی و دریافت پیش‌فاکتور با ما تماس بگیرید.

    بیایید راهکار مناسب کسب‌وکار شما را پیدا کنیم

    خدمات مهندسی بوتیکی متناسب با کسب‌وکارهای کوچک و متوسط. با یک ارزیابی رایگان شروع کنید.

    دریافت مشاوره رایگان