PyTorch-da MPS 2.15
Əgər siz Mac-da modellər işlədirsinizsə və ya hesablama üçün əsas sürətləndirmə alətiniz kimi MPS-dən istifadə edirsinizsə, PyTorch 2.15-də çox şey gözləyirsiniz! FP8 MPS-ə çatır, dil modelinin dekodlanması xətti təbəqələr və softmax vasitəsilə daha sürətli yollar əldə edir və yeni Metal ləpələr audio, video və təlim iş yüklərinin bəzi təəccüblü dərəcədə bahalı hissələrini həll edir.
Kim olduğumuz haqqında qısa söz: biz Hugging Face-də PyTorch komandasıyıq. Biz PyTorch-da öz töhfəmizi veririk və diqqət mərkəzində saxladığımız sahələrdən biri MPS backend-dir, burada məqsəd Mac-inizi PyTorch modellərini idarə etmək və öyrətmək üçün birinci dərəcəli yerə çevirməkdir. 2026-cı ilin əvvəlində MPS-də hətta kiçik modelləri idarə etmək çox vaxt dəstəklənməyən əməliyyatlar, performans uçurumları və gözlənilməz yaddaş artımı ətrafında işləmək demək idi. Beləliklə, biz Hugging Face Hub-dan dil, şəkil və video üzrə real modellər işlədirik, MPS-nin harada qısa olduğunu tapırıq və MPSGraph-ı xüsusi Metal ləpələri ilə əvəz etməklə getdikcə daha çox PyTorch-da onu yuxarıya doğru düzəldirik. Bu yazının çoxu PyTorch-un dəstəkçiləri və icma töhfəçiləri ilə birlikdə görülən işin nəticəsidir.
Sizə macOS 15 və ya daha yeni və Python 3.11 və ya daha yeni versiyaları olan Apple silikon Mac lazımdır (2.15 uyğunluq matrisinə baxın). ƏS-iniz çox köhnədirsə və ya heç bir Metal GPU yoxdursa, MPS mövcudluğu yoxlanışı bunun səbəbini sizə izah edir.
uv pip install torch==2.15.0 --index-url https://download.pytorch.org/whl/test/cpu FP8 MPS-ə gəlir FP8 sizə Mac-da yaddaşa qənaət etməyin başqa yolunu təqdim edir. PyTorch 2.15 MPS-də torch.float8_e4m3fn tensorlarını əlavə edir: hər dəyər üçün bir bayt, FP16 və ya BF16 yaddaşının yarısı.
MPS-də 2.14-dən bəri torch.mm üçün GEMV nüvələri var, lakin F.linear hələ də MPSGraph-dan keçdi. PyTorch 2.15 onları F.linear ilə əlaqələndirir, ona görə də ümumi [1, 1, gizli_ölçüsü] deşifrə girişi onları uyğun qərəzli əlavələr ilə birbaşa istifadə edir. Həqiqi modellərdən 96 BF16 təbəqə forması arasında bu, 1,23× həndəsi orta sürətlənmədir. Ən böyük uduşlar kiçik proyeksiyalara, məsələn, TN modellərindəki qapılar kimi, köhnə yolun yaddaş bant genişliyinin çox hissəsini istifadə olunmadığı yerə düşür. Böyük təbəqələr və LM başlıqları artıq bant genişliyinə yaxın idi, ona görə də onlar 1× yaxınlığında qalırlar.
Mütəxəssislərin qarışığı təbəqəsi hər bir ekspertə müxtəlif sayda işarələr göndərir. Qruplaşdırılmış matmul bu qeyri-bərabər qrupları bir əməliyyatda idarə edir və 2.15 MPS-ə yerli tətbiq verir.
2.14-də qruplaşdırılmış matmul qrup ofsetlərini CPU-ya köçürdü və qruplar üzərində dövrə vurdu. Yeni Metal ləpələr mövcud olduğu yerlərdə Metal Performans Primitivlərindən və başqa yerlərdə ayrıca Metal yolundan istifadə edərək ofsetləri birbaşa GPU-da oxuyur. Kiçik qruplar, dekodlaşdırma zamanı ümumi hal, öz nüvəsini də əldə edirlər.
idxal məşəli a = məşəl.randn( 8 , 8 , cihaz= "mps" , dtype=torch.complex64) a = a + 8 * məşəl.göz( 8 , cihaz= "mps" , dtype=torch.complex64) b = məşəl.randn( ,8 ="mp dtype=torch.complex64) lu, pivots = torch.linalg.lu_factor(a) x = torch.linalg.lu_solve(lu, pivotlar, b) çap edin ((a @ x - b). abs (). max ().item()) Kiçik matrislər və daha böyük həll edir Kiçik matrislər çox tez olur.ker Kamera həndəsəsi və təsvirin çevrilməsi üçün 4 × 4-ə qədər FP32 matrislərinin dəstləri faktorizasiya və həlli birləşdirən tək Metal nüvəyə çevrilir. Daha böyük problemlər də diqqəti cəlb edir: QR bloklanmış yeniləmələrdən istifadə edir və üçbucaqlı həllər işlərinin çoxunu səmərəli matris çarpımına çevirir.
Gated DeltaNet iş yükləri ən azı səkkiz sağ tərəfi olan 16 × 16, 32 × 32 və 64 × 64 FP32 üçbucaqlı sistemlər üçün xüsusi sürətli yol əldə edir.
SVD də ədədi ifratlarda daha möhkəmdir. İndi o, çox kiçik sinqulyar dəyərləri , çox böyük və ya çox kiçik daxiletmə böyüklüklərini və full_matrices=True ilə əsas tamamlamanı düzgün idarə edir, bu da öz növbəsində yalançı tərs və ən kiçik kvadratların nəticələrini daha etibarlı edir.
İndi hansı MPS axınının işinizi idarə edəcəyini birbaşa Python-dan seçə bilərsiniz. torch.mps.Stream və torch.mps.stream kontekst meneceri interfeysi təmin edir və Tensor.record_stream ayırıcıya tensorun başqa axında istifadəsini izləməyə imkan verir.
Diqqət də düzgünlüyü həll edir: miqyaslı nöqtə-məhsul diqqətinin MPS riyaziyyat tətbiqi indi toplu və baş yayımı düzgün idarə edir.
2.16-da işlər artıq yaxşı gedir. Aşağıdakı dəyişikliklərdən bəziləri əsas rejimdə olub və gecə saatlarında mövcuddur; digərləri hələ də nəzərdən keçirilir, ona görə də təfərrüatlar buraxılışdan əvvəl dəyişə bilər.
Ölçülmüş nöqtə-məhsul diqqəti MPSGraph-ı tamamilə azaldır: hər bir forma deşifrə üçün ayrılmış vektor ləpələri və Metal Performans Primitivləri ilə Metal ləpələr üzərində işləyəcək.
Xəbərdən Foto Qalereya (4 foto)
Böyütmək üçün şəklin üzərinə klikləyinİlkin Mənbə və İstinad
- Orijinal Mənbə →Hugging Face BlogHugging Face Blog — Orijinal xəbər lenti (20.10.2026).


