تیم PyTorch نسخهی ۲.۱۴ رو منتشر کرد، اینبار با یه چرخهی انتشار کوتاهتر از معمول (حدود سه هفته از branch-cut تا release). این نسخه بیشتر روی محاسبات توزیعشده، سازگاری با شتابدهندههای بیشتر، و چند تا بهبود performance تمرکز داره تا یه تغییر بنیادی توی API.
توزیعشدگی و fault tolerance
یکی از بخشهای اصلی این نسخه، یه backend جدید برای PyTorch Distributed به اسم nccl2 هست که از torchcomms پورت شده و کل قرارداد collective رو با communicator های nonblocking و قابلیت eager splitting پیادهسازی میکنه. کنار اون، fault tolerance حالا به یه مفهوم اولدرجه توی c10d تبدیل شده: امکان reconfigure کردن process group بهصورت in-place، پشتیبانی از one-sided RMA window، و یه Flight Recorder که برخلاف قبل فقط مخصوص NCCL نیست و برای هر backend ای کار میکنه.
یه ویژگی جالب دیگه، compile-on-one-rank هست. توی یه job توزیعشده، قبلاً هر rank مدل رو جداگانه compile میکرد، یعنی یه compile چند دقیقهای N بار پرداخت میشد. حالا با این تغییر، artifact کامپایلشده روی یه device قابل استفاده روی device های دیگه هم هست — یعنی یه کرنل که روی cuda:0 کامپایل شده، میتونه مستقیم روی cuda:3 هم لود و اجرا بشه.
پلتفرمها و سختافزار بیشتر
پشتیبانی از پایتون ۳.۱۵ و نسخهی free-threaded (بدون GIL) آن، یعنی 3.15t، حالا به ویندوز و مکاواس هم گسترش پیدا کرده و پوشش کامل ماتریس انتشار PyTorch رو تکمیل میکنه. این پشتیبانی فعلاً فقط در سطح binary و eager runtime هست؛ torch.compile هنوز روی پایتون ۳.۱۵ کار نمیکنه.
روی سختافزار هم چند تا خبر هست: اپل سیلیکون جبر خطی native گرفته، شامل SVD مبتنی بر Jacobi kernel، eigh، QR و Cholesky، بههمراه بازنویسی پنجبخشی عملیات reduction. سمت AMD، wheel های ROCm 7.14 حالا از طریق TheRock pip SDK ساخته میشن. اینتل XPU هم قابلیت native graph capture گرفته، و Inductor حالا از معماری Rubin (sm_107) انویدیا هم پشتیبانی میکنه.
کرنلهای سریعتر و بهبودهای دیگه
یه ویژگی به اسم NVGEMM هم اضافه شده که کرنلهای CUTLASS تولیدشده با CuTeDSL رو به Inductor میاره، با epilogue fusion، پشتیبانی از GEMM مقیاسشده و NVFP4، و autotuning این کرنلها کنار Triton و ATen. علاوه بر این، پشتیبانی آزمایشی torch.compile از تانسورهای complex-valued هم اضافه شده که عملیات پیچیده رو به عملیات پشتیبانیشدهی موجود decompose میکنه.