Nouvelle étape franchie dans l’univers des technologies d’intelligence artificielle.
Comment accélérer la formation des transformateurs à l’aide de NVIDIA Apex (FusedAdam, FusedLayerNorm) et Native torch.amp
Dans ce didacticiel, nous travaillons sur une implémentation de NVIDIA Apex, en nous concentrant sur les composants qui comptent toujours dans les flux de travail de formation GPU modernes. Au lieu de traiter Apex comme une bibliothèque générale à précision mixte, nous séparons les parties les plus anciennes de celles encore utiles et les testons directement. Nous commençons par vérifier le runtime CUDA, construire Apex avec les extensions CUDA et C++ requises et détecter quels noyaux fusionnés sont réellement disponibles dans l’environnement. Cela est important car une installation Apex uniquement en Python peut sembler réussie tout en manquant silencieusement les noyaux hautes résultats qui rendent Apex utile. Après la configuration, nous comparons FusedAdam à PyTorch AdamW, comparons FusedLayerNorm et FusedRMSNorm avec des couches de normalisation standard et exécutons des exemples apex.amp hérités et torch.amp modernes. Nous rassemblons ensuite le tout dans une petite expérience de formation Transformer, où nous comparons un chemin PyTorch FP32 vanille avec un chemin Apex-plus-AMP fusionné pour évaluer l’effet réel sur le débit.
Nous commençons par préparer l’environnement CUDA, vérifier la disponibilité du GPU et imprimer les détails actifs de PyTorch, CUDA et GPU. Nous construisons ensuite NVIDIA Apex à partir des sources avec les extensions CUDA et C++ afin que les noyaux fusionnés puissent être utilisés directement plutôt que de compter sur une installation limitée uniquement à Python. Nous détectons également si FusedAdam, FusedLayerNorm, FusedRMSNorm et l’ancien AMP sont disponibles et définissons un assistant d’analyse comparative réutilisable pour les tests ultérieurs.
Dans la foulée, nous comparons PyTorch AdamW à Apex FusedAdam en utilisant un modèle d’IA avec de nombreuses couches linéaires pour rendre visible la surcharge de l’optimiseur. Nous exécutons le même modèle d’étape d’optimisation pour les deux méthodes, de sorte que la comparaison se concentre sur la vitesse de mise à jour plutôt que sur les différences de système. Nous rapportons ensuite le temps de pas et l’accélération pour évaluer si l’optimiseur multi-tenseur fusionné offre un avantage pratique dans le temps d’exécution actuel du GPU.
Il faut souligner, nous comparons le PyTorch LayerNorm standard avec Apex FusedLayerNorm sur un grand tenseur ressemblant aux états cachés du transformateur. Nous vérifions d’abord l’exactitude numérique en copiant les mêmes paramètres affines et en mesurant la différence maximale entre les sorties fusionnées et standard. Nous évaluons ensuite les passes avant et arrière et, le cas échéant, testons FusedRMSNorm pour démontrer comment Apex prend en charge les couches de normalisation utilisées dans les modèles de style LLaMA.
Il faut souligner, nous démontrons l’ancien flux de travail à précision mixte apex.amp en exécutant de petites boucles de formation sur différents niveaux d’option, tels que O0, O1 et O2. Nous utilisons amp.initialize et amp.scale_loss pour montrer comment Apex gère le conditionnement du modèle et la mise à l’échelle des pertes dans l’ancienne API. Nous exécutons ensuite le même type de formation de précision mixte avec torch.amp moderne, qui est l’approche recommandée pour le récent code PyTorch.
Nous construisons un petit Transformer avec des blocs d’attention, des couches de rétroaction, des intégrations et une normalisation pour tester Apex dans une charge de travail de formation de bout en bout. Nous l’entraînons une fois avec vanilla FP32 PyTorch en utilisant AdamW et le standard LayerNorm, puis l’entraînons à nouveau avec des composants Apex fusionnés et un PyTorch AMP natif lorsque les noyaux sont disponibles. Nous comparons enfin le temps d’exécution, le débit des jetons, la perte finale et l’accélération pour comprendre comment les noyaux fusionnés affectent les performances réelles de formation.
Les mois à venir apporteront sans doute plus de précisions.
À lire également :
- Nvidia poursuit un marché des processeurs de 200 milliards de dollars avec les PC agents IA de Microsoft, Dell et HP | TechCrunch
- L’IA coûte combien ? Les usagers de GitHub Copilot réagissent au nouveau système de tarification basé sur l’utilisation.
- MiniMax lance MiniMax M3 avec une architecture MSA prenant en charge le contexte 1M-Token, la multimodalité native et le codage agentique
Couverture originale : MarkTechPost : MarkTechPost