NVIDIA cuBLAS 12.9 : Accélération et Flexibilité des Multiplications Matricielles sur les Architectures Hopper et Blackwell
Accélérer les Multiplications de Matrices et Augmenter la Flexibilité avec NVIDIA cuBLAS 12.9 Introduction Les bibliothèques mathématiques CUDA-X d'NVIDIA permettent aux développeurs de créer des applications accélérées pour l'intelligence artificielle (IA), les calculs scientifiques, le traitement de données et autres domaines. Deux des applications les plus importantes de ces bibliothèques sont l'entraînement et la mise en œuvre des grands modèles linguistiques (LLMs) dans des scénarios variés, allant des applications grand public aux domaines scientifiques spécialisés comme la découverte de médicaments. Une des bibliothèques cruciales pour ces tâches est cuBLAS, qui fournit des noyaux fortement optimisés pour les opérations algébriques linéaires essentielles, notamment les multiplications de matrices (matmuls). Nouveautés de cuBLAS 12.9 La version 12.9 de cuBLAS, disponible dans le toolkit CUDA 12.9, introduit de nouvelles fonctionnalités qui optimisent encore davantage les performances des matmuls. Elle offre également une plus grande flexibilité pour équilibrer des besoins comme la précision et l'efficacité énergétique en ajustant la précision en virgule flottante et en utilisant les concepts de l'émulation. Scaling Avancé pour les Matmuls FP8 sur NVIDIA Hopper Le scaling est crucial pour maintenir la précision lors des opérations d'entraînement et de déduction des LLMs, surtout quand les matmuls sont effectuées avec des types de données étroits, tels que FP8. Les versions précédentes de cuBLAS permettaient unscaling tensor-wide (facteur d'échelle unique) sur les GPU NVIDIA Hopper et Ada. CuBLAS 12.9 introduit plusieurs nouveaux schémas de scaling sur les GPU Hopper. Scaling par Canal ou par Vecteur Externe : Un facteur d'échelle unique est appliqué à chaque ligne de la matrice A[MxK] ou chaque colonne de la matrice B[KxN]. Scaling par Bloc : Un facteur d'échelle est appliqué à chaque bloc 1D de 128 éléments dans la dimension K ou à chaque bloc 2D de 128x128 éléments des matrices A et B. L'utilisation de blocs 1D permet une meilleure précision, tandis que les blocs 2D offrent de meilleures performances. CuBLAS supporte différentes combinaisons de modes de scaling pour A et B (1D x 1D, 1D x 2D et 2D x 1D). Des benchmarks présentés montrent que les différents schémas de scaling FP8 peuvent offrir jusqu'à 1.75 fois plus de vitesse, et dans tous les cas sauf un, ils fournissent au moins 1.25 fois plus de vitesse par rapport à la base BF16. Scaling Fin Plus Raffiné sur NVIDIA Blackwell Les noyaux tensoriels de Blackwell introduisent un support natif pour le scaling 1D fin-grain avec des types de données FP4 et FP8. Cette méthode permet une représentation plus précise des valeurs au sein de chaque bloc, améliorant ainsi la précision globale par rapport à l'utilisation d'un facteur d'échelle unique global. CuBLAS 12.9 peut utiliser ces nouvelles précisions via les API cuBLASLt, où E désigne l'exposant définissant la gamme dynamique du nombre et M désigne la précision de la mantisse. Avec la taille de bloc réduite, les noyaux matmul de cuBLAS peuvent calculer les facteurs d'échelle pour le tenseur D (scaleD) lorsque la sortie est en FP4 ou FP8. Cela élimine le besoin d'estimer les facteurs d'échelle ou de faire des passes supplémentaires sur les données avant la conversion, ce qui est nécessaire pour le scaling tensor-wide. Performances des Matmuls sur NVIDIA Blackwell Grâce aux nouveaux types de données, aux heuristiques de temps d'exécution et aux optimisations des noyaux disponibles dans cuBLAS 12.9, les utilisateurs peuvent tirer parti des performances impressionnantes des GPU Blackwell. Les benchmarks synthétiques comparent les GPU B200 et GB200 aux GPU H200 en termes de tailles de matrices computationally bound (gauche) et d'une variété de formes et tailles de matrices aléatoires (droite) couvrant des cas de latence, de bande passante et computational. Pour les cas computationally bound, le FP4 par bloc est 4.6 fois plus rapide sur le GB200 par rapport à la base FP8 H200, atteignant une performance absolue de 6787 TFLOPS/s. Sur des ensembles de données réels composés de tailles et formes de matmul dominantes dans les charges de travail d'entraînement et de déduction des LLMs, les architectures Blackwell (B200 et GB200) réalisent au moins 1.7 fois plus de vitesse et jusqu'à 2.2 fois plus de vitesse par rapport aux bases H200 obtenues avec les types de données BF16 et FP8. Amélioration des Performances des Matmuls FP32 via l'Émulation sur Blackwell En plus des performances exceptionnelles que cuBLAS offre déjà sur les GPU Blackwell, cette version introduit une fonctionnalité d'émulation qui permet aux utilisateurs d'opter pour des matmuls FP32 potentiellellement plus rapides et une meilleure efficacité énergétique. Des tests de performances montrent que l'émulation FP32 sur les GPU B200atteint entre 3 et 4 fois plus de TFLOPS que le FP32 natif sur B200 ou H200 pour les plus grandes matrices carrées (M=N=K=32,768). L'émulation des matmuls pour des applications de calcul scientifique est maintenant bien maîtrisée, et plusieurs algorithmes et implémentations permettant de profiter de l'émulation pour booster les performances et l'efficacité énergétique sont disponibles. Par exemple, lors de la conférence NVIDIA GTC 2025, il a été démontré que l'émulation permettait une amélioration de 1.4 fois de la performance et de 1.3 fois de l'efficacité énergétique dans un composant clé d'une application de prévision météorologique. Implémentation Actuelle L'implémentation actuelle de l'émulation FP32 dans cuBLAS utilise les noyaux tensoriels BF16. Des exemples d'utilisation se trouvent dans les exemples d'API cuBLASLt. L'émulation des matmuls en FP64 est actuellement en développement. Comment Commencer avec cuBLAS 12.9 Pour commencer à accélérer vos applications avec les techniques abordées dans ce billet de blog, téléchargez cuBLAS 12.9. Référez-vous à la documentation cuBLAS pour obtenir des informations complémentaires sur les nouveaux schémas de scaling pour Hopper, les nouveaux types de données par bloc sur Blackwell, et l'émulation FP32 sur Blackwell. Documentation et Exemples Télécharger cuBLAS 12.9. Consulter la documentation cuBLAS pour plus d'informations. Se référer aux exemples d'API cuBLASLt pour des usages pratiques des nouvelles fonctionnalités. Évaluation de l'Événement par des Professionnels de l'Industrie Les mises à jour de cuBLAS 12.9 sont largement saluées par les professionnels de l'industrie. Elles apportent des améliorations significatives en termes de performance et de flexibilité, ce qui est particulièrement bénéfique pour le développement et l'optimisation des modèles de deep learning et des applications de calcul haute performance. Profil de l'Entreprise NVIDIA continue de se positionner en leader de l'accélération GPU, offrant des outils et des technologies de pointe pour faciliter le développement et l'exécution d'applications exigeantes en calcul. Avec cuBLAS 12.9, l'entreprise renforce son engagement envers les communautés de recherche et d'IA, en fournissant des fonctionnalités qui répondent aux défis actuels de l'industrie tout en anticipant les futures avancées technologiques.