- Eine Bibliothek zur effizienten Ausführung von FP8-Matrixmultiplikation (GEMM), die die in DeepSeek-V3 vorgeschlagene Methode des feingranularen Skalierens (fine-grained scaling) unterstützt
- Unterstützt sowohl allgemeines GEMM als auch gruppiertes GEMM für Mix-of-Experts (MoE)
- Auf CUDA basierend implementiert; bei der Installation ist keine separate Kompilierung erforderlich, da ein leichtgewichtiges Just-In-Time-(JIT)-Modul verwendet wird, das die Kernel zur Laufzeit kompiliert
- Derzeit ausschließlich für NVIDIA-Hopper-Tensor-Cores unterstützt
- Verwendet CUDA-Core-basiertes doppeltes Akkumulieren (promotion), um ungenaue Akkumulationsoperationen der FP8-Tensor-Cores auszugleichen
- Nutzt einige Konzepte aus CUTLASS und CuTe, reduziert jedoch die Abhängigkeit von komplexen Templates und verfolgt ein einfaches Design mit nur etwa 300 Zeilen Kernel-Code
- Gut geeignet, um Hopper-FP8-Matrixoperationen und Optimierungstechniken zu erlernen
- Trotz des leichtgewichtigen Designs zeigt es bei verschiedenen Matrixgrößen eine Leistung auf dem Niveau von professionell getunten Bibliotheken oder sogar darüber
Leistungsbewertung
Allgemeine GEMM-Leistung (Dense-Modelle)
- Für verschiedene Matrixgrößen wurde eine Leistungsbewertung in der DeepSeek-V3/R1-Inferenzumgebung durchgeführt
- Getestet in einer NVIDIA-H800-GPU-(NVCC-12.8)-Umgebung
- Der Speedup-Wert wurde im Vergleich zu einer intern optimierten Version auf Basis von CUTLASS 3.6 berechnet
- Wichtigste Leistungsübersicht
- Bei kleinen Matrixgrößen bis zu 2,7-fache Beschleunigung
- Bei einigen großen Matrixgrößen konstante Leistung auf dem Niveau von 1,0x bis 1,2x
- Durch Optimierung von Speicherbandbreite und Rechenleistung auf die Hopper-Architektur abgestimmte Performance
Gruppierte GEMM-Leistung für MoE-Modelle
- Gruppiertes GEMM mit zusammenhängendem (contiguous) Layout
- Gruppierung entlang der M-Achse, während N und K unverändert bleiben
- Zeigt bis zu 1,2-fache Beschleunigung und hält in bestimmten Konfigurationen etwa 1,1x
- Gruppiertes GEMM mit maskiertem (masked) Layout
- Entworfen für Fälle bei Verwendung von CUDA Graphs, in denen die CPU die Token-Anzahl je Experte nicht kennen kann
- Übergibt einen Mask-Tensor als Eingabe, um nur die erforderlichen Berechnungen auszuführen
- Leistungsverbesserung im Bereich von 1,1x bis 1,2x
Noch keine Kommentare.