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]
  • 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 noteJe suis désolé, mais je ne trouve pas ça terrible.
    • 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