- Bibliothèque permettant d’exécuter efficacement la multiplication de matrices FP8 (GEMM), avec prise en charge de la méthode de mise à l’échelle fine (fine-grained scaling) proposée dans DeepSeek-V3
- Prend en charge à la fois le GEMM classique et le GEMM groupé pour Mix-of-Experts (MoE)
- Implémentée sur CUDA, elle compile les kernels à l’exécution via un module léger de Just-In-Time (JIT), sans compilation séparée à l’installation
- Prise en charge actuellement réservée aux tensor cores NVIDIA Hopper
- Utilise une double accumulation (promotion) basée sur les cœurs CUDA pour compenser l’imprécision des opérations d’accumulation des tensor cores FP8
- Reprend certains concepts de CUTLASS et CuTe, mais avec une conception simple réduisant la dépendance à des templates complexes, au point de ne contenir qu’environ 300 lignes de code de kernel
- Bien adaptée à l’apprentissage des opérations matricielles FP8 sur Hopper et des techniques d’optimisation
- Malgré cette conception légère, elle affiche, sur différentes tailles de matrices, des performances comparables ou supérieures à celles de bibliothèques optimisées par des experts
Évaluation des performances
Performances GEMM classiques (modèles denses)
- Évaluation des performances dans l’environnement d’inférence DeepSeek-V3/R1 sur différentes tailles de matrices
- Tests réalisés sur un GPU NVIDIA H800 (NVCC 12.8)
- L’indicateur de gain de vitesse (speedup) est calculé par comparaison avec une version optimisée en interne basée sur CUTLASS 3.6
- Principaux résultats
- Sur les petites tailles de matrices, jusqu’à 2,7x d’accélération
- Sur certaines grandes tailles de matrices, performances maintenues entre 1,0x et 1,2x
- Grâce à l’optimisation de la bande passante mémoire et des performances de calcul, excellente adaptation à l’architecture Hopper
Performances du GEMM groupé pour les modèles MoE
- GEMM groupé avec disposition contiguë (contiguous)
- Groupement selon l’axe M, avec N et K conservés identiques
- Jusqu’à 1,2x d’accélération, avec environ 1,1x dans certaines configurations
- GEMM groupé avec disposition masquée (masked)
- Conçu pour les cas où, lors de l’utilisation de CUDA Graph, le CPU ne peut pas connaître le nombre de tokens de chaque expert
- Un tenseur de masque est fourni en entrée afin de n’exécuter que les calculs nécessaires
- Le gain de performance se situe entre 1,1x et 1,2x
Aucun commentaire pour le moment.