پایتورچ ۲.۱۲ منتشر شد
خلاصهٔ کاملتر
پایتورچ ۲.۱۲ با ۲۹۲۶ کامیت از ۴۵۷ مشارکتکننده رسماً منتشر شد. این نسخه ادامهی مسیر تبدیل PyTorch از یک فریمورک تحقیقاتی به یک پلتفرم یکپارچه و مستقل از سختافزار برای آموزش و استنتاج در مقیاس تولیده.
بزرگترین خبر این نسخه از نظر عملکرد، بهبود تا ۱۰۰ برابری در عملیات linalg.eigh روی CUDA هست. این تابع برای حل مسئلهی مقادیر ویژه (eigenvalue decomposition) در دستههای بزرگ از ماتریسهای متقارن استفاده میشه — یک عملیات رایج در محاسبات علمی و یادگیری ماشین. قبلاً PyTorch هر ماتریس رو جداگانه حل میکرد؛ حالا از کرنل syevj_batched در کتابخانهی cuSolver استفاده میکنه که همه ماتریسها رو به صورت یک عملیات موازی روی GPU پردازش میکنه.
یک API جدید به اسم torch.accelerator.Graph اضافه شده که کار ثبت (capture) و پخش دوباره (replay) گراف محاسباتی رو روی CUDA، XPU (اینتل)، و بکاندهای خارج از درخت رسمی یکپارچه میکنه. تا حالا هر بکاند API مجزای خودش رو داشت؛ حالا یک رابط مشترک وجود داره که هر بکاند میتونه پیادهسازی خودش رو پشتش قرار بده.
import torch
g = torch.accelerator.Graph()
with torch.accelerator.graph(g):
# کد محاسباتی که باید ضبط بشه
static_output = model(static_input)
g.replay()Microscaling (MX) یک تکنیک کوانتیزاسیون (فشردهسازی مدل) پیشرفتهست که برای استقرار مدلهای بزرگ در محیطهای محدود از نظر منابع استفاده میشه. قبلاً torch.export.save نمیتونست مدلهایی که از فرمتهای MXFP4/MXFP6/MXFP8 استفاده میکردن رو ذخیره کنه؛ حالا این مشکل برطرف شده و چرخهی کامل export-to-deployment برای این مدلها باز شده.
در بخش اپتیمایزرها، Adagrad حالا از fused=True پشتیبانی میکنه — یعنی تمام مرحلهی بهروزرسانی وزنها در یک کرنل CUDA انجام میشه به جای اینکه چندین کرنل جداگانه اجرا بشن. این کار overhead اجرا و ترافیک حافظه رو کم میکنه. با این تغییر، Adagrad به Adam، AdamW و SGD که قبلاً از این قابلیت برخوردار بودن، ملحق شد. همچنین torch.cond (برای کنترلفلوی دادهمحور) حالا میتونه داخل CUDA Graph ضبط و پخش بشه.
کاربران ROCm (AMD) هم بهبودهای قابل توجهی دریافت کردن: پشتیبانی از expandable memory segments برای کاهش تکهتکه شدن حافظه، اضافه شدن rocSHMEM برای ارتباطات توزیعشده روی GPU، و پنج تا ۲۶ درصد سرعت بیشتر در FlexAttention با pipelining دو مرحلهای. کاربران Apple Silicon هم از این نسخه شیدرهای Metal-4 رو از قبل کامپایلشده دریافت میکنن که زمان شروع اولیه رو کاهش میده.
از نظر تغییرات breaking، TorchScript که از نسخهی ۲.۱۰ deprecated شده بود رسماً کنار گذاشته میشه و torch.export جایگزین توصیهشدهست. همچنین wheel مربوط به CUDA 12.8 دیگه منتشر نمیشه و پیشفرض CUDA 13.0 هست.
نکات کلیدی:
linalg.eighروی CUDA تا ۱۰۰ برابر سریعتر شدtorch.accelerator.Graphیک API یکپارچه برای گرافکپچر روی همه بکاندهاست- مدلهای کوانتیزهشده با فرمت MX حالا کاملاً قابل export هستن
- Adagrad حالا از
fused=Trueپشتیبانی میکنه - کاربران ROCm بهبودهای حافظه، ارتباطات توزیعشده و FlexAttention دریافت کردن
- TorchScript deprecated و CUDA 12.8 wheel حذف شد




