Ana Səhifə/Xəbərlər/Texnologiya və Süni İntellekt
Texnologiya və Süni İntellekt

NVIDIA CUDA Plitələrində Yüksək Performanslı İrəli Keçirmə nüvələri ilə Mamba-2-nin sürətləndirilməsi

20.10.2026
•
5 dəq oxu
NVIDIA CUDA Plitələrində Yüksək Performanslı İrəli Keçirmə nüvələri ilə Mamba-2-nin sürətləndirilməsi

NVIDIA CUDA Tile (cuTile) NVIDIA GPU-lar üçün Python əsaslı DSL və paralel proqramlaşdırma modelidir və plitələr səviyyəsində GPU proqramlaşdırması üçün ən yüksək performansı təmin etmək üçün qabaqcıl aparat imkanlarından avtomatik istifadə edir. Yüksək səviyyəli, kafel mərkəzli primitivlərin arxasında iplik və əyilmə səviyyəli planlaşdırmanı mücərrəd etməklə, cuTile sizə Python-da GPU ləpələrini yazmağa imkan verir, eyni zamanda kompilyator optimallaşdırmaları Tensor Cores kimi qabaqcıl aparat xüsusiyyətlərini avtomatik hədəfləyir.

CuTile-nin erkən tətbiqi kimi, Jane Street-də maşın öyrənmə mühəndisləri cuTile-də ən müasir ardıcıllıq modeli olan Mamba-2-ni tətbiq etdilər və nüvələri optimallaşdırmaq üçün NVIDIA ilə əməkdaşlıq etdilər. Jane Street qabaqcıl kəmiyyət tədqiqatlarında innovasiyaları idarə etmək üçün dərin öyrənmədən istifadə edən dərin texniki qlobal ticarət firmasıdır. Bu yazı sizi Mamba-2 irəli keçidini gücləndirən üç xüsusi nüvədən və onların arxasındakı cuTile optimallaşdırmalarından keçir.

CuTile-dən istifadə etmək üçün mühitinizin cuTile Python Quickstart təlimatında qeyd olunan tələblərə cavab verdiyinə əmin olun. Paketi cuda.tile kimi idxal edin və bu yazıda göstərilən kernel tətbiqləri boyunca onu ct kimi ifşa edin.

Ardıcıllığın modelləşdirilməsi arxitekturaları hesablama dəyişikliyi ilə üzləşirlər: ənənəvi softmax diqqəti Tensor nüvələri tərəfindən sürətləndirilmiş matris çarpmalarından istifadə edərək sürətlə məşq edir, lakin nəticə çıxararkən hesablama və yaddaş tələbləri ardıcıllığın uzunluğu ilə xətti olaraq artır. Bunun əksinə olaraq, təkrarlanan neyron şəbəkələri (RNN) yavaş, paralel olmayan təlimdən əziyyət çəkir, lakin ardıcıllığın uzunluğundan asılı olmayaraq daimi hesablama və sabit yaddaş izi tələb edir.

Mamba-2 memarlığı hər iki dünyanın ən yaxşısını hədəfləyən modellər ailəsindən gəlir. RNN kimi, sabit ölçülü gizli vəziyyətə və Tensor nüvələrindən istifadə edərək hesablama baxımından səmərəli şəkildə hissə-hissə hesablana bilən təkrarlanan yeniləməyə malikdir.

Bu təkrarlanan formulasiya ardıcıl nəticə çıxarmaq üçün idealdır. Bununla belə, təlim və əvvəlcədən doldurma for-loopdan daha sürətli bir şey tələb edir. Xətti vəziyyət yeniləməsi paralel skan alqoritminə imkan versə də, bu yanaşma nəhəng gizli vəziyyət tensorunun reallaşdırılmasını tələb edir ki, onu əsasən yaddaşa bağlayır və Tensor nüvələrindən istifadə edə bilmir.

Bu sıçrayış düsturu ilə siz ardıcıllıqla müxtəlif yığın “nəzarət nöqtələrində” gizli vəziyyəti səmərəli şəkildə hesablaya bilərsiniz. Növbəti addım yalnız \(h_0\) verilmiş \(y_1\), \(y_2\), \(y_3\), \(y_4\) çıxışlarını hesablamaq üçün bir yol tapmaqdır. \(h_1\), \(h_2\), \(h_3\), \(h_4\), … hesablamaq olarsa, bu asan olardı, lakin bu, atlama düsturunun nöqtəsini məğlub edərdi.

Yenə \(x_t\), \(b_t\), \(c_t\) və \(y_t\) parçasını matrislərdə qruplaşdırmaq bunu Tensor Core-a uyğun matris məhsulları ilə yenidən ifadə etməyə imkan verir (Şəkil 3), burada \(\mathit{C}\)-dəki üçbucaq \(\mathit{C}\) ilə \(\\math) məs. softmax diqqəti).

burada \(\exp(G – G^{\mathsf{T}})\) \((i, j)\) nöqtəsində \(\exp(g_i – g_j)\) terminini ehtiva edir. Nəzərə alın ki, \(i < j\) səbəb maskası ilə maskalanacaq bütün şərtlər, buna görə də yalnız \(g_t\) \(a_t\) \(g_j\)-dən çoxunun cəmi olduğu şərtləri saxlayın. Quruluşuna görə, bütün \(a_t\) dəyərlər mənfidir, bu da \(g_i – g_j\) mənfi edir. Müsbət ədədlərin hər hansı eksponensiyası heç vaxt saxlanılmır, ədədi sabitliyə zəmanət verir.

\(a_t = Adt_t\) (əvvəlki riyaziyyatdakı \(G\)) hər iki Addım 2 və 3-də tələb olunur. Bir neçə dəfə təkrar hesablamanın qarşısını almaq üçün bu ilk nüvə \(a_t\)-u bir dəfə hesablayacaq və onu saxlayacaq. Nəzərə alın ki, bu qlobal məcmu məbləğ deyil, sadəcə olaraq hər bir hissənin məcmu məbləğidir.

Bu ləpəyə girişlər baş başına skalyar tənəzzül a və hər işarə üçün zaman addımı dt dir. h başı üçün t işarəsində effektiv tənəzzül a[h] * dt[t, h] təşkil edir və ləpə həmin məhsulu parça ölçüsü boyunca toplayır. Bu məcmu məbləğlərin hamısı log-fəzadadır və onların eksponensiyası həmişə alınır (yaxud onların bəzi xətti kombinasiyası). exp əvəzinə exp2 hesablamaq daha ucuz olduğundan nəticə log2(e) ilə ölçülür.

Bu ləpə hər üç nüvənin istifadə etdiyi cuTile primitivlərini təqdim edir: ct.bid , ct.load / ct.store , və ct.cumsum .

fwd_pass_state hər bir yığının ilkin gizli vəziyyətini və sonuncu yığından sonra son gizli vəziyyəti hesablayır. O, birbaşa çıxışı hesablamır. Bunun əvəzinə, o, hesablamanın daha sonra çıxışlara proyeksiya edəcəyi daşınan vəziyyəti hazırlayır. Özündə ləpə əvvəllər təsvir olunduğu kimi parçalar üzərində ardıcıl dövrədir. Hər bir nüvənin işə salınması gizli vəziyyətin bir dilimini (top, baş, baş_çini, vəziyyət_çini) yükləyir

Xəbərdən Foto Qalereya (5 foto)

Böyütmək üçün şəklin üzərinə klikləyin

İlkin Mənbə və İstinad

📬 Həftəlik bülletenimizə abunə olun, heç bir xəbəri qaçırmayın!

Süni intellekt, qlobal iqtisadiyyat, maliyyə bazarları və texnologiya dünyasındakı ən mühüm yeniliklər birbaşa e-poçtunuzda.

Spam göndərilmir • İstənilən vaxt 1 kliklə abunəlikdən çıxa bilərsiniz.

Mövzu üzrə Digər Xəbərlər

Bütün xəbərlərə qayıt