دلتای وزنها: آموزش مدلهای غولپیکر بدون کلاستر
خلاصهٔ کاملتر
یکی از گلوگاههای پنهان آموزش یادگیری تقویتی (RL) ناهمگام، همگامسازی وزنهاست: بعد از هر قدم بهینهسازی، مربی باید وزنهای تازه را به موتور استنتاج بفرسته تا از سیاست فعلی عقب نمونه. برای یک مدل ۷ میلیاردی این یعنی ۱۴ گیگابایت و برای یک مدل یکتریلیونی حدود یک ترابایت، هر قدم. این انتقال روی مسیر بحرانی میشینه و GPUها را بیکار نگه میداره.
نکتهی کلیدی اینه که لازم نیست همهچیز را بفرستی. بین دو قدم متوالی، تقریباً ۹۹٪ وزنهای bf16 دقیقاً بیتبهبیت یکسان میمونن. دلیلش ریاضیات bf16 است: این فرمت فقط ۷ بیت مانتیس داره و وقتی نرخ یادگیری RL پایینه، تغییر هر وزن از آستانهی گردکردن کوچکتره و عملاً جذب میشه. پس بایت آن وزن تغییر نمیکنه و از دید موتور استنتاج اصلاً تکونی نخورده.
راهکار هاگینگفیس اینه که فقط عناصر تغییریافته را بهصورت یک فایل sparse safetensors کد میکنه، در یک باکت هاگینگفیس آپلود میکنه و به vLLM میگه اون را بگیره. برای Qwen3-0.6B حجم هر قدم از ۱.۲ گیگابایت به ۲۰ تا ۳۵ مگابایت افتاد. مربی فقط عناصر changed را تشخیص میده (با مقایسهی بایتها قبل و بعد از قدم بهینهساز) و دلتا را میفرسته.
زیبایی کار در معماریست: مربی و سرور استنتاج هیچوقت مستقیم دربارهی وزنها با هم حرف نمیزنن، فقط یک پیام کوچک با مختصات فایل ردوبدل میکنن و خود بایتها از طریق باکت جابهجا میشن. رابط برنامهنویسی باکت هم فقط دو تابع داره:
from huggingface_hub import batch_bucket_files, download_bucket_files
batch_bucket_files("my-org/wordle-deltas", add=[(buffer, "deltas/step_000042.safetensors")])
download_bucket_files("my-org/wordle-deltas", files=[("deltas/step_000042.safetensors", local_path)])نتیجهی عملی اینه که میشه یک آموزش کاملاً توزیعشده راه انداخت بدون کلاستر مشترک: مربی روی یک باکس، vLLM داخل یک Space و محیط در Space دیگه، و وزنها از طریق یک باکت جریان پیدا میکنن. در این روش پنجرهی توقف استنتاج به حدود یک ثانیه میرسه، چون آپلود در پسزمینه و همزمان با تولید توکن انجام میشه.
نکات کلیدی:
- بیش از ۹۸٪ وزنهای bf16 بین دو قدم RL بیتبهبیت ثابت میمونن
- ارسال فقط دلتای تغییریافته حجم انتقال را حدود دو مرتبهی بزرگی کم میکنه
- باکت اشتراکی نیاز به شبکهی مشترک بین مربی و موتور استنتاج را حذف میکنه
- توقف استنتاج در هر همگامسازی به حدود یک ثانیه کاهش پیدا کرد




