12.3.5 : AI
Thursday, Mar 23-1:00 AM - 1:50 AM CET Colossal-AI: Scaling AI Models in the Big Model Era [S51482]
Slides
Colossael AI : scaling AI models
Les modèles grossissent de plus en plus vite
TFlops / \$ => 40x depuis 2015
La taille des modèles et un défis pourl l'entrainement et l'utilisation
Les gros btachs permettent d'accélérer le calcul mais dégradent la précision.
Ils ont une méthode qui permet d'augmenter la taille des batchs sans dégrader l'appentissage
Ils ont réinventé les tiles de la MKL pour la multiplication de matrice dans leur parallélisation 2.5 D (et en plus ils disent que c'est nouveau)
1.55x sur BERT
Monday, Mar 20-8:00 PM - 10:00 PM CET Colossal-AI: Scaling AI Models in the Big Model Era* [DLIT51545]
Pas de vidéo et pas de slide
Reliable HPC and ML through Advances in Floating-Point Exception Elimination [PS51942]
Overcoming IO Bottlenecks in GPU-Accelerated HPC and AI Applications by Bypassing System Memory [PS51246]
Thursday, Mar 23-3:00 PM - 3:25 PM CET Understanding Matter under Extreme Conditions with Machine Learning Interatomic Potentials [S51840]
Slides
From 10s to 100M Atoms
Ils simulents une réation qui produit de la Glycine sur une A100
Puis ils entrainent un modèle pour faire la même chose mais il va 2000 fois plus vite
MLIAP-Kokkos pour LAMMPS, ~3x comparé au CPU
Les Modèles peuvent se tromper, car ils sont entrainés sur des données simulées et simplifiées.
Pour résoudre ce problème, ils utilisent des mesures aux rayons X pour completer l'entrainement de leur modèles
Wednesday, Mar 22-7:00 AM - 7:50 AM CET Improving Dense Text Retrieval Accuracy with Approximate Nearest Neighbor Search [S51945]
Slides
ANNS : Aproximate Nearest Neigbour Search, trouver des vecteur dans le dataset qui sont prochent du vecteur d'entré
On peut créer un index en avance pour accélérer la recherche
IVF-PQ : Space Partition (avec des K-means) et Data Compression (Product Quantization)
On ne peut pas utilise de FAISS car les Performances ne sont pas bonnes pour les GPU récents, et pour les petits batchs
Indexing : O(N^2)
K-Means : O(RCD) :
R : nombre de records
C : nombred e clusters
D : nombre de dimensions
Indexing on CPU => 1 day, on GPU : 90 Minutes, on 8 GPUs : less than 20 minutes
Distane calculation : cuBLAS, pas de FP16
Top-K : with 4 probes
Radix Based GPU Top-K : 11 bit digits for Radix select
Distance calculation après décodage (Quantization)
Look Up Table (LUT) : in shared memory (from 8 to 4 bits data types for PQ code)
IVF-PQ : entre 6.8x et 8.0x plus rapide que FAISS
Single query vector limité par Top-K
Large batch performance 1.3x à 2.4x plus rapide que FAISS
5-Bit PQ : est entre 1.2x et 1.7x plus rapide que sur 8-bits, mais moins précis
5-Bit PQ avec rafinement est plus rapide et meilleur que sur 8-bits
ANNS : 8x par rapport à FAISS avec un plus de mémoire
Fourni dans RAPIDS-RAFT
Wednesday, Mar 22-6:00 PM - 6:50 PM CET FasterTransformer v6.0: New Features and Beyond [S51196]
Slides
Padding removal from GPT
SmoothQuant
Beaucoup de choses sont bien mieux expliquées dans S51422 et S51226.
Pas mal de benchmarks
Int8 optimisation, PTQ et QAT
SmothQuant garde la précision mais améliore l'utilisation du hardware
Tuesday, Mar 21-9:00 PM - 9:50 PM CET Scaling Deep Learning Training: Fast Inter-GPU Communication with NCCL [S51111]
Slides
Multi GPU Computing
NCCL : NVidia Collective Communication Library
https://github.com/nvidia/nccl
NCCL change très vite, donc il n'y a pas vraiment de doc pour le moment
NCCL AllReduce : envoie les gradients sur tous les GPU de l'entrainement
Chaque GPU peut avoir une couche, et ne calculer le gradien que de cette couche (ça permet d'utiliser des modèles qui ne tiennent pas dans la mémoire, Mais la taille du batch doit être assez grande pour que les GPU soient utilisés efficacement.
On peut aussi séparer les opérations sur les tenseurs par GPU, et communiquer pour renvoyer les résultats
Et on peut tout faire en même temps pour entrainer un Modèle de 1 T paramètres
Les appels collectifs sont très dépendant du hardware utilisé
Ring algorithme : les GPU envoyent leur résultats cycliquement au prochain, puis on recolle les morceaux qui manquent. Ça permet de réduire les communications
Les channels de NCCL sont un peut les Cuda Stream, mais pour plusieurs GPU
Tree Algorithm : Les parents échangent les gradiens avec leur enfants. La scalabilité est meilleure, et les communications sont logarithmiques
Collnet : Network Collective : proche des arbres mais c'est le réseau qui fait la réduction (Bluefield présenté en 2022)
Ces algos sont très synchrones, mais ça doit être difficile de faire autrement.
Le problème de ces algos est qu'ils sont basés sur une connaisance fine de la topologie du réseau.
Tout doit être calculé à la même fréquence, sinon la vitesse sera limité par le noeud le plus lent
Donc ce n'est pas vraiment du calcul hétérogène
Ils ont du point-to-Point communication, comme NVShmem et OpenShmem
Tolérance aux fautes
Futur : Plus d'algo pour les H100
Wednesday, Mar 22-6:00 AM - 6:50 AM CET SwinTransformer and its Training Acceleration [S51422]
Slides
Tranformers : 2017
Encoding, decoding, multi head attention,
Swin Transformer for computer vision : 2021, ok pour les images plus hautes résolution, segmentation d'image, localité
Traditionnelement les fenêtres se chevauchent dans les images, mais pas dans le cas des SwinTransformer
Les partitions n'ont pas forcément toutes la même taille
On introduit un biais de position pour repérer les objets similaires dans une même image
SwinTransformer V2 : taches plus complexes, ViT-G, CoAtNet-7
Masked Image Modiling : On entraine un modèle à prédire ce qu'il manque dans une image donnée
On peut préentrainer les modèles avec de faibles résolutions et les spadialiser plus tard avec des images plus grandes
Nsight, cuBLAS, cuDNN, TensorRT
Bonne occupation en FP32 (98%)
Mixed Precision (torch.cuda.amp) => GEMM cost divided by 3
Fusion de Kernel, reduit le lancement des kernel, réduit la mémoire utiliser et les I/O (réduit les lectures et les écritures de données)
NVidia Apex
Ils mélangent le calcul du premier batch avec le chargement des données du deuxième
L'entrainement en précision mixte avec d'autres optimisations permet de gagner à peu près un facteur 3 sur l'entrainement avec la même taille de batch
On pourrait n'utiliser que des FP16 mais cela n'optimise pas beaucoup les SwinTransformer
Tuesday, Mar 21-10:00 PM - 10:50 PM CET FP8 for Deep Learning [S52166]
Slides
Tensor Core très efficaces (8-64x sur les instructions scalaires)
FP8 tensor core are 2x faster than FP16 tensor core
Les instructions supportent les combinaisons (E4M3 et E5M2)
Sur les GEMM, on est au max à un speed up de 2
3x sur entrainement GPT-40B
Entrainement en précision mixte
La précision est suffisante pour la reconnaissance du langage
Il utilise une échelle (différente approche de la présentation S51226)
Les FP8 peuvent être utilisés dans CUDA, cuBLAS, cuTLASS
Monday, Mar 20-5:00 PM - 5:50 PM CET Accelerating Large Language Models via Low-Bit Quantization [S51226]
Slides
Large Model problem
Compute one token at a time
Quantization (after computing model weights distribution)
Diminue la taille des matrices à stocker mais augmente les calculs et le transfert de données à cause de la matrice temporaire de Quantization
On résout ça avec CUTLASS et la mémoire partagée
Ils arrivent à faire des calculs sur 2 ou 3 bits sans dégrader leur résultats (ou très peu), mais il faut ajuster en fonction des couches, pas sur la projection du vocabulaire)
Pruning
Knoledge Distillation
Conditionnal Computation (Mixture-of-expert)
Tuesday, Mar 21-6:00 PM - 6:50 PM CET Accelerate ML Performance and Simplify Development with OpenXLA [S51689]
Slides
Il parle de génération de code avec OpenXLA
Le nombre de type augmente et le nombre de combinaison explose
Ils utilisent MLIR (de LLVM)
StableHLO 1.0 : more functionnalities : Quantization,
Tuesday, Mar 21-7:00 PM - 7:50 PM CET CUDA: New Features and Beyond [S51225]
Slides
On ne pouvait plus augmenter la fréquence à cause des effets de fuite quantique
Et on a augmenter le nombre de coeurs
Small transistor : high frequency light : harder to focus
HBM : High Bandwidth Memory
Grace SUpership : co design hardware and software
Le CPU cache peut cahcher les données CPU et GPU
ATS : Adresse Translation Service
On n'est pas sensé avoir de cache trashing
Prefetch automatique des données si le GPU lit beaucoup les données du CPU
Le NVlink Network peut connecter 256 ships ensemble
CUDA est basé sur la Représentation intermédiaire de LLVM
Un kernel écrit en Fortran va pouvoir utliser des données allouées en Python, car CUDA est un écosysteme
Cunumeric et legate : implcicit parallelism
NVShmem : explicit parallelism
Legate : Task based model with dependencies between them
Cunumeric : parallelisation durring runtime
cuTLASS : call directly tensor cores
CuTe : Robust Representation for Thread and Data Layout
Confidential coputing : Trusted route execution, invisible for the application, even with the NVLink