Açık Kaynak Haftası'nın üçüncü gününde DeepSeek, V3/R1 eğitim çıkarımının arkasındaki "gücü" ortaya çıkardı -
DeepGEMM: Bir FP8 GEMM (Genel Matris Çarpımı) kütüphanesi, yoğun (dense) ve karma uzman (MoE) matris çarpımı işlemlerini destekler.
Öncelikle GEMM'i kısaca anlayalım.
GEMM, yani Genel Matris Çarpımı, lineer cebirde temel bir işlemdir, bilimsel hesaplama, makine öğrenimi, derin öğrenme vb. alanlarda "sık sık" karşılaşılan bir işlemdir ve birçok yüksek performanslı hesaplama görevinin merkezidir.
Ancak genellikle hesaplama miktarı oldukça büyük olduğundan, GEMM'in performans optimizasyonu son derece önemlidir.
Ve DeepSeek'in bu seferki açık kaynaklı DeepGEMM'i, hala "yüksek performans + düşük maliyet" özelliklerini koruyor, vurgular aşağıda:
Basitlik : Temel mantık sadece yaklaşık 300 satır kodla sınırlıdır, ancak performans uzman ayarlı çekirdekten daha iyidir.
Just-in-time compilation (JIT): Tamamen just-in-time derleme yöntemini kullanan, bu da çalışma zamanında dinamik olarak optimize edilmiş kod üretebileceği anlamına gelir, böylece farklı donanım ve matris boyutlarına uyum sağlar.
No Heavy Dependencies: Bu kütüphane çok hafif tasarlanmıştır, karmaşık bağımlılıkları yoktur, bu da dağıtımı ve kullanımı basitleştirir.
Çeşitli Matris Düzenlerini Destekleme : Yoğun matris düzenini ve iki tür MoE düzenini destekleme, bu da farklı uygulama senaryolarına uyum sağlamasını sağlar, bu da derin öğrenme içinde karışık uzman modelleri gibi uygulamaları içerir, ancak bunlarla sınırlı olmamak üzere.
Basitçe söylemek gerekirse, DeepGEMM esas olarak derin öğrenmede, özellikle büyük ölçekli model eğitimi ve çıkarımında matris işlemlerini hızlandırmak için kullanılır.
Birçok netizen bu açık kaynak için daha fazla "satın alıyor" ve bazı insanlar DeepGEMM'i matematik dünyasındaki bir süper kahramanla karşılaştırıyor, hızlı bir hesap makinesinden daha hızlı ve bir polinom denkleminden daha güçlü olduğuna inanıyor.
!
Diğerleri, DeepGEMM'in piyasaya sürülmesini kuantum durumlarının yeni bir gerçekliğe sabitlenmesine benzetti ve anında derlemedeki temizliğini övdü.
Tabii ki... Bazıları artık ellerindeki NVIDIA hisseleri hakkında endişelenmeye başladı...
!
DeepGEMM'yi Derinlemesine Anlama
DeepGEMM, DeepSeek V3'ten türetilen, ince taneli ölçeklendirme ile basit ve verimli FP8 Evrensel Matris Çarpımı (GEMM'ler) için özel olarak oluşturulmuş bir kitaplıktır.
MoE gruplaması için hem yaygın genel matris çarpımını hem de genel matris çarpımını işleyebilir.
Bu kitaplık CUDA ile yazılmıştır, kurulum sırasında derlemeye gerek yoktur, çünkü çalışma zamanında tüm çekirdek programları derlemek için hafif bir just-in-time (JIT) derleme modülü kullanır.
Şu anda, DeepGEMM yalnızca NVIDIA'nın Hopper tensor çekirdeğini destekliyor.
FP8 tensör çekirdeğinin kümülatif hesaplama sırasında yeterince hassas olmaması sorununu çözmek için, CUDA çekirdeğinin iki seviyeli kümülatif (yükseltme) yöntemi benimsenmiştir.
DeepGEMM, CUTLASS ve CuTe'den bazı kavramları ödünç alsalar da, onların şablonlarına veya cebirsel işlemlerine aşırı bağımlı değildir.
Tersine, bu kütüphane oldukça sade bir şekilde tasarlanmıştır, sadece bir temel çekirdek işlevi vardır, yaklaşık olarak 300 satır kod içerir.
Bu, Hopper mimarisi altındaki FP8 matris çarpımı ve optimizasyon tekniklerini öğrenmek için anlaşılması kolay bir kaynak haline getiriyor.
Hafif tasarımına rağmen, DeepGEMM'in performansı, çeşitli matris şekilleri için uzman ayar kitaplıklarıyla eşleşir veya aşar.
Peki ya performans?
Ekip, DeepSeek-V3/R1 çıkarımı için olası tüm şekilleri (tensor paralelizasyonu olmadan, ancak önceden doldurma ve çözme dahil) test etmek için H800 üzerinde NVCC 12.8'i kullandı.
Aşağıdaki diyagram, yoğun bir model için normal bir DeepGEMM'nin performansını göstermektedir:
Test sonuçlarına göre, DeepGEMM** hesaplama performansı ** en yüksek 1358 TFLOPS'a ulaşabilir, ** bellek bant genişliği** en yüksek 2668 GB/s'a ulaşabilir.
Hızlandırma oranı açısından, CUTLASS 3.6 tabanlı optimize uygulamaya göre en fazla 2.7 kat daha yüksek olabilir.
Şimdi DeepGEMM'in MoE modelinin ardışık düzen (contiguous layout) desteğine bakalım ve performansını inceleyelim:
!
Ve MoE modelini destekleyen maske düzeni performansı şöyledir:
!
Nasıl kullanılır?
DeepGEMM'yi kullanmak istiyorsanız, öncelikle aşağıdaki bağımlılıklara dikkat etmelisiniz, bunlar şunları içerir:
Hopper mimarisi GPU'su olan sm_90a desteklenmelidir.
Python 3.8 ve üstü.
CUDA 12.3 ve üzeri (önerilen 12.8).
PyTorch 2.1 ve üzeri.
CUTLASS 3.6 VE ÜZERI
Geliştirme kodu aşağıdaki gibidir:
# Submodule must be clonedgit clone --recursive [email protected]:deepseek-ai/DeepGEMM.git# Üçüncü taraf (CUTLASS ve CuTe) içinde dizinler için sembolik bağlantılar oluşturunpython setup.py develop# Test JIT compilationpython tests/test_jit.py# Tüm GEMM uygulamalarını test edin (normal, ardışık gruplu ve maskeli gruplu)python tests/test_core.py
Kurulum kodu aşağıdaki gibidir:
python setup.py yükleme
Yukarıdaki adımlardan sonra deep_gemm'i Python projenize aktarabilirsiniz.
Arayüz açısından, normal DeepGEMM için deep_gemm.gemm_fp8_fp8_bf16_nt işlevi çağrılabilir, NT formatını destekler (LHS'nin transpoze olmayan ve RHS'nin transpoze)
Gruplandırılmış DeepGEMM'ler için, sürekli düzen durumunda m_grouped_gemm_fp8_fp8_bf16_nt_contiguous. Maske düzeni söz konusu olduğunda, m_grouped_gemm_fp8_fp8_bf16_nt_masked'dir.
DeepGEMM ayrıca maksimum SM sayısını ayarlama, TMA hizalaması boyutunu alma gibi araç işlevleri sağlar; DG_NVCC_COMPILER, DG_JIT_DEBUG gibi ortam değişkenlerini destekler.
Buna ek olarak, DeepSeek ekibi, aşağıdakiler de dahil olmak üzere optimize etmek için çeşitli yollar sunar:
JIT Tasarımı: Tüm çekirdekler çalışma zamanında derlenir, kurulum sırasında derlemeye gerek yoktur; Optimum blok boyutunun ve boru hattı aşamasının dinamik seçimini destekler.
İnce taneli ölçeklendirme: CUDA çekirdeğinin iki katmanının birikmesiyle FP8 doğruluk problemini çözün; SM kullanımını optimize etmek için 2 blok boyutunun güçsüzlüğünü destekler.
FFMA SASS Interleaved: SASS yönergelerinin verim ve yeniden kullanım bitlerini değiştirerek performansı artırır.
İlgilenen arkadaşlar ayrıca sonundaki GitHub bağlantısına tıklayarak ayrıntılara bakabilirler~
Bir Şey Daha
Nvidia'nın hisse senedi bugünlerde ...... Kuyu...... Tekrar düşmeye devam et:
!
Ancak 27 Haziran Pekin saatiyle sabahında, Nvidia'nın 2025 mali yılı dördüncü çeyrek performans raporu da yayınlanacak, performansını gözlemleyebiliriz~
The content is for reference only, not a solicitation or offer. No investment, tax, or legal advice provided. See Disclaimer for more risks disclosure.
Deep Seek Açık Kaynak 3rd Bullet: V3/R1 Training Inference Anahtar Hileleri
Kaynak: Quantum Hub
Açık Kaynak Haftası'nın üçüncü gününde DeepSeek, V3/R1 eğitim çıkarımının arkasındaki "gücü" ortaya çıkardı -
DeepGEMM: Bir FP8 GEMM (Genel Matris Çarpımı) kütüphanesi, yoğun (dense) ve karma uzman (MoE) matris çarpımı işlemlerini destekler.
Öncelikle GEMM'i kısaca anlayalım.
GEMM, yani Genel Matris Çarpımı, lineer cebirde temel bir işlemdir, bilimsel hesaplama, makine öğrenimi, derin öğrenme vb. alanlarda "sık sık" karşılaşılan bir işlemdir ve birçok yüksek performanslı hesaplama görevinin merkezidir.
Ancak genellikle hesaplama miktarı oldukça büyük olduğundan, GEMM'in performans optimizasyonu son derece önemlidir.
Ve DeepSeek'in bu seferki açık kaynaklı DeepGEMM'i, hala "yüksek performans + düşük maliyet" özelliklerini koruyor, vurgular aşağıda:
Basitçe söylemek gerekirse, DeepGEMM esas olarak derin öğrenmede, özellikle büyük ölçekli model eğitimi ve çıkarımında matris işlemlerini hızlandırmak için kullanılır.
Birçok netizen bu açık kaynak için daha fazla "satın alıyor" ve bazı insanlar DeepGEMM'i matematik dünyasındaki bir süper kahramanla karşılaştırıyor, hızlı bir hesap makinesinden daha hızlı ve bir polinom denkleminden daha güçlü olduğuna inanıyor.
!
Diğerleri, DeepGEMM'in piyasaya sürülmesini kuantum durumlarının yeni bir gerçekliğe sabitlenmesine benzetti ve anında derlemedeki temizliğini övdü.
Tabii ki... Bazıları artık ellerindeki NVIDIA hisseleri hakkında endişelenmeye başladı...
!
DeepGEMM'yi Derinlemesine Anlama
DeepGEMM, DeepSeek V3'ten türetilen, ince taneli ölçeklendirme ile basit ve verimli FP8 Evrensel Matris Çarpımı (GEMM'ler) için özel olarak oluşturulmuş bir kitaplıktır.
MoE gruplaması için hem yaygın genel matris çarpımını hem de genel matris çarpımını işleyebilir.
Bu kitaplık CUDA ile yazılmıştır, kurulum sırasında derlemeye gerek yoktur, çünkü çalışma zamanında tüm çekirdek programları derlemek için hafif bir just-in-time (JIT) derleme modülü kullanır.
Şu anda, DeepGEMM yalnızca NVIDIA'nın Hopper tensor çekirdeğini destekliyor.
FP8 tensör çekirdeğinin kümülatif hesaplama sırasında yeterince hassas olmaması sorununu çözmek için, CUDA çekirdeğinin iki seviyeli kümülatif (yükseltme) yöntemi benimsenmiştir.
DeepGEMM, CUTLASS ve CuTe'den bazı kavramları ödünç alsalar da, onların şablonlarına veya cebirsel işlemlerine aşırı bağımlı değildir.
Tersine, bu kütüphane oldukça sade bir şekilde tasarlanmıştır, sadece bir temel çekirdek işlevi vardır, yaklaşık olarak 300 satır kod içerir.
Bu, Hopper mimarisi altındaki FP8 matris çarpımı ve optimizasyon tekniklerini öğrenmek için anlaşılması kolay bir kaynak haline getiriyor.
Hafif tasarımına rağmen, DeepGEMM'in performansı, çeşitli matris şekilleri için uzman ayar kitaplıklarıyla eşleşir veya aşar.
Peki ya performans?
Ekip, DeepSeek-V3/R1 çıkarımı için olası tüm şekilleri (tensor paralelizasyonu olmadan, ancak önceden doldurma ve çözme dahil) test etmek için H800 üzerinde NVCC 12.8'i kullandı.
Aşağıdaki diyagram, yoğun bir model için normal bir DeepGEMM'nin performansını göstermektedir:
Test sonuçlarına göre, DeepGEMM** hesaplama performansı ** en yüksek 1358 TFLOPS'a ulaşabilir, ** bellek bant genişliği** en yüksek 2668 GB/s'a ulaşabilir.
Hızlandırma oranı açısından, CUTLASS 3.6 tabanlı optimize uygulamaya göre en fazla 2.7 kat daha yüksek olabilir.
Şimdi DeepGEMM'in MoE modelinin ardışık düzen (contiguous layout) desteğine bakalım ve performansını inceleyelim:
!
Ve MoE modelini destekleyen maske düzeni performansı şöyledir:
!
Nasıl kullanılır?
DeepGEMM'yi kullanmak istiyorsanız, öncelikle aşağıdaki bağımlılıklara dikkat etmelisiniz, bunlar şunları içerir:
Geliştirme kodu aşağıdaki gibidir:
Kurulum kodu aşağıdaki gibidir:
Yukarıdaki adımlardan sonra deep_gemm'i Python projenize aktarabilirsiniz.
Arayüz açısından, normal DeepGEMM için deep_gemm.gemm_fp8_fp8_bf16_nt işlevi çağrılabilir, NT formatını destekler (LHS'nin transpoze olmayan ve RHS'nin transpoze)
Gruplandırılmış DeepGEMM'ler için, sürekli düzen durumunda m_grouped_gemm_fp8_fp8_bf16_nt_contiguous. Maske düzeni söz konusu olduğunda, m_grouped_gemm_fp8_fp8_bf16_nt_masked'dir.
DeepGEMM ayrıca maksimum SM sayısını ayarlama, TMA hizalaması boyutunu alma gibi araç işlevleri sağlar; DG_NVCC_COMPILER, DG_JIT_DEBUG gibi ortam değişkenlerini destekler.
Buna ek olarak, DeepSeek ekibi, aşağıdakiler de dahil olmak üzere optimize etmek için çeşitli yollar sunar:
JIT Tasarımı: Tüm çekirdekler çalışma zamanında derlenir, kurulum sırasında derlemeye gerek yoktur; Optimum blok boyutunun ve boru hattı aşamasının dinamik seçimini destekler. İnce taneli ölçeklendirme: CUDA çekirdeğinin iki katmanının birikmesiyle FP8 doğruluk problemini çözün; SM kullanımını optimize etmek için 2 blok boyutunun güçsüzlüğünü destekler. FFMA SASS Interleaved: SASS yönergelerinin verim ve yeniden kullanım bitlerini değiştirerek performansı artırır.
İlgilenen arkadaşlar ayrıca sonundaki GitHub bağlantısına tıklayarak ayrıntılara bakabilirler~
Bir Şey Daha
Nvidia'nın hisse senedi bugünlerde ...... Kuyu...... Tekrar düşmeye devam et:
!
Ancak 27 Haziran Pekin saatiyle sabahında, Nvidia'nın 2025 mali yılı dördüncü çeyrek performans raporu da yayınlanacak, performansını gözlemleyebiliriz~