7 points par GN⁺ 2025-02-07 | 1 commentaires | Partager sur WhatsApp
  • Optimiser les performances du deep learning à grande échelle peut sembler relever de « l’alchimie », mais en pratique, des principes simples et compréhensibles permettent d’améliorer l’efficacité des modèles
  • Des principes relativement simples s’appliquent partout, d’un seul accélérateur à des dizaines de milliers, et les comprendre permet notamment de :
    • estimer grossièrement à quel point chaque partie du modèle se rapproche de son optimum théorique
    • disposer de bases pour choisir entre différentes techniques de parallélisation selon l’échelle
    • estimer le coût et le temps nécessaires à l’entraînement et à l’exécution de grands modèles Transformer
    • concevoir des algorithmes qui exploitent les caractéristiques d’un matériel donné
    • concevoir le matériel en comprenant clairement les limites des performances algorithmiques actuelles
  • Connaissances préalables requises
    • Une compréhension de base des LLM et de l’architecture Transformer est nécessaire
    • Une compréhension du fonctionnement à grande échelle n’est pas indispensable
    • Des bases sur l’entraînement des LLM et une expérience avec JAX sont un plus
    • Il est recommandé de consulter un billet de blog sur l’architecture Transformer et des slides sur le passage à l’échelle des LLM avec JAX
  • Objectifs
    • Développer la capacité à estimer comment paralléliser un modèle sur le matériel disponible
    • Développer la capacité à calculer approximativement le temps et le coût de l’entraînement et de l’inférence

Pourquoi s’y intéresser

  • Il y a encore 3 à 4 ans, la plupart des chercheurs en ML n’avaient pas besoin de bien connaître ces optimisations à grande échelle
    • Aujourd’hui, même les modèles « petits » fonctionnent près des limites du matériel, ce qui rend indispensable la compréhension d’un travail efficace à grande échelle
    • L’histoire du ML peut être vue comme une évolution croisée entre innovations systèmes et améliorations logicielles
    • Comme les modèles Transformer récents exploitent le matériel jusqu’à ses limites, ne pas comprendre l’efficacité des modèles augmente fortement le risque qu’une nouvelle architecture ou recherche échoue en conditions réelles
    • Même si l’on obtient 20 % de gain sur un benchmark, si l’efficacité matérielle chute de 20 %, l’intérêt pratique reste faible
  • L’objectif central du passage à l’échelle des modèles est d’obtenir une augmentation linéaire du débit quand on augmente le nombre de puces (accélérateurs)
    • On parle alors de « strong scaling »
    • Ajouter des puces réduit le temps de calcul, mais introduit un coût de communication entre puces
    • Si la communication prend plus de temps que le calcul, on entre dans un régime « communication bound », et le strong scaling devient impossible
    • Si l’on comprend suffisamment bien le matériel pour prévoir où ces goulets d’étranglement apparaîtront, on peut concevoir ou restructurer le modèle pour les éviter
  • L’objectif de ce livre est d’expliquer comment fonctionne le matériel TPU (et GPU), et comment l’architecture Transformer a évolué pour bien fonctionner sur le matériel actuel
    • Il devrait être utile autant aux chercheurs qui conçoivent de nouvelles architectures qu’aux ingénieurs qui cherchent à exécuter rapidement les LLM de la génération actuelle

Vue d’ensemble

  • Cet article est organisé comme suit
  • La section 1 explique, via l’analyse roofline, les facteurs qui déterminent les limites de performance d’un modèle (communication, calcul, mémoire)
  • Les sections 2 et 3 traitent de la structure interne des TPU et GPU ainsi que des modes d’interconnexion entre puces
    • Elles répondent notamment aux questions suivantes
      • À quelle vitesse une multiplication de matrices d’une taille donnée peut-elle théoriquement être exécutée ?
      • À partir de quel point un calcul devient-il limité par la bande passante mémoire ou par la bande passante de communication ?
      • Comment un cluster TPU est-il connecté, et combien de temps faut-il approximativement pour déplacer des données d’une puce à une autre ?
      • Comment multiplier efficacement des matrices distribuées ?
  • La section 4 détaille les formules de l’architecture Transformer (tailles de matrices, nombre de paramètres, FLOPs)
  • Les sections 5 et 7 constituent le cœur du contenu et présentent différentes façons de paralléliser un modèle sur plusieurs puces
    • Data parallel, Tensor parallel, Pipeline parallel, Expert parallel
    • Des techniques d’économie mémoire comme ZeRO, Rematerialisation, Host offload, Gradient accumulation sont également abordées
  • Les sections 6 et 8 prennent l’exemple du modèle LLaMA-3 entraîné et utilisé en inférence sur TPU, avec des estimations concrètes de coût, de temps et de configuration
  • Enfin, les sections 9 et 10 expliquent comment profiler un modèle dans JAX, le déboguer et appliquer concrètement le traitement parallèle

Détails : résumé des principales sections du livre

1 commentaires

 
GN⁺ 2025-02-07
Commentaires sur Hacker News
  • Certains s’attendent à ce que JAX remplace pytorch/cuda dans les prochaines années. Le problème PTX avec l’équipe de Deepseek montre la valeur d’investir dans une approche de plus bas niveau pour exploiter au maximum les performances du matériel
    • Ce document aurait été utilisé en interne chez Google comme guide de référence pour le travail de performance. Il est surprenant qu’il ait été rendu public, mais les détails liés à Gemini semblent avoir été retirés
    • Ce guide a l’avantage de pouvoir être directement transposé aux GPU grâce à JAX/XLA
    • Un commentaire se demande pourquoi JAX utilise le tracing plutôt qu’un AST
    • Le lien vers le fil de tweets de l’auteur est partagé
    • Quelqu’un cherche un moyen de convertir un site Jekyll en PDF
    • Des éloges sur la qualité de l’article et des remerciements sont exprimés
    • Un commentaire se demande comment ces superbes animations sont réalisées