Skip to content
NVIDIA NeMo-RL Megatron-Core : Débit d'entraînement optimisé
Source: developer.nvidia.com

NVIDIA NeMo-RL Megatron-Core : Débit d'entraînement optimisé

Sources: https://developer.nvidia.com/blog/reinforcement-learning-with-nvidia-nemo-rl-megatron-core-support-for-optimized-training-throughput, https://developer.nvidia.com/blog/reinforcement-learning-with-nvidia-nemo-rl-megatron-core-support-for-optimized-training-throughput/, NVIDIA Dev Blog

Aperçu

Le projet NVIDIA NeMo-RL (NeMo Reinforcement Learning) a initialement publié le support de l’entraînement via PyTorch DTensor (aussi appelé FSDP2), permettant une intégration native avec HuggingFace et une montée en charge avec les parallélismes natifs de PyTorch tels que FSDP2, le parallélisme tensoriel, le parallélisme de séquences et le parallélisme de contexte. À mesure que les modèles atteignent des centaines de milliards de paramètres, le chemin DTensor devient insuffisant en raison de la mémoire d’activation et des coûts de recomputation, entraînant des temps d’étape prohibitifs et l’absence de kernels CUDA optimisés et d’autres améliorations de performance. Cela a mis en évidence le besoin d’un backend plus efficace, et Megatron-Core répond à ce besoin. Dans la version NeMo-RL v0.3, NVIDIA ajoute le support du backend Megatron-Core, avec une documentation détaillée, des scripts d’exemple et des fichiers de configuration pour post-entraîner efficacement de grands modèles. Megatron-Core propose des techniques optimisées pour les GPUs et des améliorations de débit élevées, basées sur une stratégie de parallélisme en 6D qui optimise les schémas de communication et de calcul et qui prend en charge une large gamme d’architectures de modèles. NeMo-RL permet désormais aux développeurs d’utiliser ces optimisations lors du post-entrainement. NeMo-RL rationalise l’utilisation de Megatron-Core en automatisant une grande partie du réglage complexe et en exposant une surface de configuration plus simple et plus intuitive. Activer l’entraînement basé sur Megatron est simple : ajoutez la section policy.megatron_cfg dans votre configuration YAML et mettez enabled: true. Un exemple complet est fourni dans la documentation, et tous les arguments du config seront transmis à Megatron pendant l’entraînement. Après avoir ajouté la section Megatron et l’avoir activée, vous êtes prêt à entraîner un modèle. Le lancement de l’entraînement se fait de la même manière que pour DTensor, comme décrit dans le README ou le guide de reproduction DeepScaleR. L’entraînement basé sur Megatron-Core prend en charge les modèles denses et les modèles Mixture-of-Experts (MoE). Les résultats présentent une répartition du temps par étape pour GRPO (Group Relative Policy Optimization) sur plusieurs modèles, démontrant des performances supérieures à DTensor tout en conservant les propriétés de convergence. Les démonstrations mettent en évidence des noyaux optimisés par GPU, le parallélisme 4D, le packing de séquences et l’échantillonnage d’importance comme facteurs d’amélioration de débit, avec un support du contexte long jusqu’à 16K longueurs de séquences. Le parallélisme de contexte entre Megatron-Core et DTensor est également possible pour les entraînements de contexte long, comme dans les résultats pour Llama 3.3 70B. Le message clé est que l’entraînement basé sur Megatron-Core améliore substantiellement le débit d’entraînement en RL pour des modèles extrêmement importants, tout en conservant les propriétés de convergence. Pour les chercheurs et les décideurs techniques qui ciblent le post-entraînement en RL sur des modèles très volumineux, Megatron-Core offre une voie vers un débit plus élevé, un contexte plus long et une couverture de modèles plus large, soutenu par la documentation, des configurations d’exemple et des scripts facilitant l’adoption. La documentation de NeMo RL, les configurations d’exemple et les scripts aident à lancer le post-entraînement des grands modèles avec les optimisations Megatron-Core.

Caractéristiques clés

  • Support du backend Megatron-Core dans NeMo-RL v0.3, permettant des optimisations de post-entraînement pour grands modèles.
  • Noyaux optimisés pour GPU et améliorations de débit élevées.
  • Stratégie de parallélisme 6D pour optimiser la communication et le calcul; supporte une grande variété d’architectures de modèles.
  • Parallélisme 4D en combinaison avec Megatron-Core, plus des fonctionnalités comme le packing de séquences et l’échantillonnage d’importance.
  • Support du contexte long, avec démonstrations jusqu’à 16K longueurs de séquences.
  • Parallélisme de contexte avec Megatron-Core et DTensor pour les entraînements de contexte long.
  • Support des modèles denses et MoE (Mixture-of-Experts).
  • Configuration simplifiée via policy.megatron_cfg; réglage automatique d’une grande partie des paramètres.
  • Compatible avec les flux DTensor existants; le lancement d’entraînement suit le chemin DTensor.
  • Documentation, exemples complets et scripts pour aider à reproduire des résultats tels que ceux montrés pour Llama 3.3 70B.

Cas d’utilisation courants

  • Post-entraînement RL pour des grands modèles de langage (taille allant jusqu’à des centaines de milliards de paramètres).
  • Scénarios nécessitant un entraînement de contexte long (testé jusqu’à 16K longueurs de séquences) afin de maintenir le contexte sur des flux d’entrée étendus.
  • Expérimentations et flux de travail en production impliquant des modèles denses et des architectures MoE.
  • Expérimentation rapide et intégration avec l’écosystème HuggingFace, en tirant parti des optimisations Megatron-Core pour le débit.

Configuration & installation

Pour activer Megatron-Core dans NeMo-RL, ajoutez la configuration Megatron à votre YAML :

policy.megatron_cfg:
enabled: true

Cela suit l’orientation selon laquelle l’entraînement Megatron est activé en ajoutant la section megatron au config et en définissant enabled: true. Tous les arguments du config seront transférés à Megatron pendant l’entraînement. Une fois la section megatron ajoutée et activée, vous êtes prêt à lancer l’entraînement. Le lancement se fait de la même manière que pour DTensor, comme décrit dans le README ou le guide de reproduction DeepScaleR. L’entraînement Megatron-Core prend également en charge les modèles denses et MoE. Pour un démarrage minimal, assurez-vous que la section Megatron est présente et activée dans le config, puis suivez le flux d’entraînement DTensor documenté dans le README du projet.

Quick start

  • Assurez-vous que Megatron est activé dans votre configuration NeMo-RL :
policy.megatron_cfg:
enabled: true
  • Lancez l’entraînement via le même chemin d’entrée DTensor que celui décrit dans le guide DTensor. Reportez-vous au guide DTensor et au README de NeMo-RL pour les commandes exactes et les scripts permettant de reproduire DeepScaleR.
  • Pour un exemple minimal d’initiation, utilisez l’extrait YAML ci-dessus et, à partir de là, référez-vous à la documentation pour l’exemple de configuration et les scripts fournis.

Avantages et limites

  • Avantages
  • Débit d’entraînement nettement supérieur pour les grands modèles par rapport au chemin PyTorch DTensor.
  • Noyaux optimisés pour GPU et parallélisme 4D/6D afin de réduire les goulets d’étranglement de communication et d’améliorer l’efficacité du calcul.
  • Support du contexte long (décrit jusqu’à 16K) et des grands architectures comme Llama 3.3 70B.
  • Support des modèles denses et MoE.
  • Configuration simplifiée via policy.megatron_cfg; réglage automatique facilite l’adoption pour les nouveaux utilisateurs.
  • Parallélisme de contexte avec Megatron-Core et DTensor pour les scénarios de contexte long.
  • Inconvénients
  • Megatron-Core introduit de nombreuses options de bas niveau; bien que NeMo-RL automatise une grande partie du réglage, certains utilisateurs avancés peuvent ajuster les paramètres pour des charges de travail spécifiques.
  • La configuration nécessite d’ajouter et d’activer des paramètres Megatron spécifiques dans YAML, ce qui représente une étape supplémentaire par rapport au flux DTensor de base.

Alternatives (brève comparaison)

| Aspect | PyTorch DTensor (FSDP2) | Megatron-Core (NeMo-RL) |---|---|---| | Débit pour très gros modèles | Temps d’étape plus lents en raison de la mémoire d’activation et de l’overhead de recomputation | Débit plus élevé grâce à des kernels GPU optimisés et une parallélisation 6D |Propriétés de convergence | Conserve les propriétés de convergence standard | Conserve les propriétés de convergence, optimisé pour le débit |Complexité / réglage | Configuration de surface plus simple; peut nécessiter une tuning manuelle pour l’échelle | Automatisation importante par NeMo-RL; configuration plus simple via policy.megatron_cfg |Support modèle | Large support via parallélismes PyTorch | Supporte densos et MoE; contexte long supporté |Longueur de contexte | Dépend des capacités DTensor | Démontré jusqu’à 16K longueurs de séquences; améliorations en contexte long en cours |

Prix ou Licence

Non spécifié dans la source.

Références

More resources