تکنیک اصلی که اضافه شده Uncontaminated Packing هست. توی حالت استاندارد وقتی Batch Size رو بالا میبرید، چون طول Sequenceهای دیتاست متفاوته، GPU مجبور میشه کلی Padding (صفر) اضافه کنه تا ماتریسها هماندازه بشن. این یعنی پردازشِ هیچی.
مکانیزم Packing میاد Sequenceهای کوتاه رو هوشمندانه میچسبونه کنار هم توی یک Tensor واحد، بدون اینکه Attention Mask بین نمونهها نشت کنه (Leakage). نتیجه؟ دور ریز محاسباتی تقریباً صفر میشه.
کرنلهای Triton هم بازنویسی شدن. مخصوصاً کرنل RoPE و MLP.
قبلاً توی Contextهای خیلی طولانی (مثلاً 500K) ارورهای عجیب CUDA Out of Bounds میگرفتیم. دلیلش این بود که Indexing پیشفرض روی Int32 بود. الان Unsloth اومده از Int64 Indexing استفاده کرده که این گلوگاه رو برای Long Context Training باز میکنه.
علاوه بر این، عملیات RoPE الان کاملاً In-place انجام میشه و کپیهای اضافی حافظه حذف شده.
توی بنچمارکهای واقعی روی مدلهایی مثل Qwen3 و Llama 3:
کاهش مصرف VRAM بین ۳۰ تا ۹۰ درصد (بسته به کانفیگ) دیده میشه.
سرعت آموزش بطور متوسط ۳ برابر شده. اگر دیتای شما شامل جملات کوتاه و بلندِ میکس باشه، این سرعت تا ۵ برابر هم میرسه (چون تاثیر Packing بیشتر میشه).
نکته مهم اینه که حتی اگر Packing رو فعال نکنید، حالت پیشفرض جدید (Padding-free) خودش حدود ۱.۵ تا ۲ برابر سریعتر از نسخه قبلیه.
به نظر من این آپدیت برای کسایی که محدودیت GPU دارن (اکثر ماها) حیاتیه. الان میشه روی یه کارت T4 توی Colab مدلهای 8B یا حتی 14B رو با سرعت خیلی معقولتری Fine-tune کرد. دقت مدل هم طبق بنچمارکها هیچ تغییری نمیکنه و Loss Curve دقیقاً منطبق بر حالت استاندارده.
برای استفاده کافیه کتابخونه رو آپدیت کنید و توی
SFTConfig آرگومان packing = True رو ست کنید. بکاندهای Flash Attention 3 و xFormers هم ساپورت میشن.📃 داکیومنت و بنچمارکهای کامل:
https://docs.unsloth.ai/new/3x-faster-training-packing
🛠 Join @LLMEngineers Community