Ce document présente les notes de version de training-nv-pytorch 25.08.
Fonctionnalités principales et corrections de bugs
Fonctionnalités principales
Mise à niveau de transformers vers la version 4.53.3+ali.
Mise à niveau de vllm vers la version 0.10.0 et de ray vers la version 2.48.0.
Corrections de bugs
Aucune correction de bug dans cette version.
Contenu
|
Cas d'utilisation |
Entraînement/inférence |
|
Framework |
PyTorch |
|
Prérequis |
Version du pilote NVIDIA >= 575 |
|
Composants principaux |
|
Ressources
25.08
egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-nv-pytorch:25.08-serverless
Image VPC
acs-registry-vpc.{region-id}.cr.aliyuncs.com/egslingjun/{image:tag}
Remplacez{region-id}par l'ID de la région où votre service Alibaba Cloud Container Compute Service (ACS) est activé (par exemple,cn-beijingoucn-wulanchabu).
Remplacez {image:tag} par le nom et le tag de l'image.
Les images inference-nv-pytorch:25.03-vllm0.8.2-pytorch2.6-cu124-20250328-serverless et inference-nv-pytorch:25.03-sglang0.4.4.post1-pytorch2.5-cu124-20250327-serverless sont compatibles uniquement avec les déploiements ACS et Lingjun multi-locataires. Elles ne sont pas compatibles avec les déploiements Lingjun mono-locataire.
L'image egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-nv-pytorch:25.08-serverless est conçue pour les produits ACS et les environnements Lingjun multi-locataires. Cette image n'est pas compatible avec les déploiements Lingjun mono-locataire ; ne l'utilisez pas dans ce contexte.
Prérequis relatifs aux pilotes
La version 25.08 repose sur CUDA 12.8.0 et nécessite un pilote NVIDIA version 575 ou ultérieure. Toutefois, si vous utilisez un GPU de centre de données, tel qu'un T4, vous pouvez utiliser le pilote NVIDIA version 470.57 (ou une version R470 ultérieure), 525.85 (ou une version R525 ultérieure), 535.86 (ou une version R535 ultérieure), ou 545.23 (ou une version R545 ultérieure).
Le package de compatibilité du pilote CUDA ne prend en charge que des pilotes spécifiques. Vous devez donc mettre à niveau les pilotes R418, R440, R450, R460, R510, R520, R530, R545, R555 ou R560, car ils ne sont pas compatibles avec CUDA 12.8. Pour consulter la liste complète des pilotes pris en charge, reportez-vous à la rubrique Compatibilité des applications CUDA. Pour plus d'informations, consultez Compatibilité et mises à niveau CUDA.
Fonctionnalités clés et améliorations
Optimisation de la compilation PyTorch
Introduite dans PyTorch 2.0, la fonction torch.compile() offre souvent des gains de performance significatifs pour les charges de travail mono-GPU à petite échelle. Cependant, l'entraînement de LLM reposant sur l'optimisation de la mémoire GPU et des frameworks distribués tels que FSDP ou DeepSpeed, torch.compile() peut apporter des avantages limités, voire dégrader les performances.
Contrôlez la granularité de la communication dans le framework DeepSpeed. Cela permet au compilateur de capturer un graphe de calcul plus complet et d'appliquer des optimisations de compilation plus larges.
-
Utilisez une version optimisée de PyTorch :
Le frontend du compilateur PyTorch a été amélioré pour garantir la réussite de la compilation même en cas de rupture de graphe lors du calcul.
La correspondance de motifs et la prise en charge des formes dynamiques ont été renforcées afin d'améliorer les performances post-compilation.
Grâce à ces optimisations, l'entraînement de LLM à 8 milliards de paramètres atteint généralement un gain de débit de bout en bout d'environ 20 %.
Optimisation de la mémoire GPU pour le recalcul
Un modèle prédictif de la surcharge mémoire GPU recommande le nombre optimal de couches de recalcul d'activation. Il s'appuie sur des données de performance à grande échelle, incluant différents modèles, clusters et paramètres d'entraînement, ainsi que des métriques système telles que l'utilisation de la mémoire GPU collectées lors de benchmarks. Cette approche est intégrée à PyTorch, ce qui vous permet de bénéficier des gains de performance liés à l'optimisation de la mémoire GPU avec un effort minimal. Cette fonctionnalité est désormais prise en charge dans le framework DeepSpeed.
ACCL
ACCL est la bibliothèque de communication haute performance d'Alibaba Cloud conçue pour Lingjun. ACCL-N en est la version dédiée aux GPU. Personnalisée à partir de NVIDIA NCCL, cette bibliothèque de communication haute performance est entièrement compatible avec NCCL. Elle corrige des problèmes présents dans la version upstream de NCCL et inclut des améliorations de performance et de stabilité.
Évaluation du gain de performance E2E
Nous avons utilisé l'outil d'analyse des performances IA cloud-native CNP pour comparer les performances de bout en bout de cette image par rapport aux images de base standard, en utilisant des modèles open source et des configurations de framework courants. Grâce à des études d'ablation, nous avons également évalué la contribution de chaque composant d'optimisation à la performance globale d'entraînement du modèle.
Analyse de la contribution des composants GPU principaux à la performance E2E
Les tests suivants, réalisés sur un cluster GPU multi-nœuds, comparent les performances d'entraînement E2E de ces configurations :
Base : Image NGC PyTorch.
Image IA ACS : Base+ACCL : L'image utilise la bibliothèque de communication ACCL.
Image IA ACS : AC2+ACCL : Image basée sur AC2 BaseOS avec ACCL et sans autre optimisation.
Image IA ACS : AC2+ACCL+CompilerOpt : Image basée sur AC2 BaseOS avec uniquement l'optimisation
torch.compile()activée.Image IA ACS : AC2+ACCL+CompilerOpt+CkptOpt : Image basée sur AC2 BaseOS avec les optimisations
torch.compile()et checkpointing sélectif du gradient activées.

Prise en main
La procédure suivante explique comment récupérer l'image training-nv-pytorch à l'aide de Docker.
Pour utiliser l'image training-nv-pytorch dans ACS, sélectionnez-la depuis la page du registre de conteneurs lors de la création d'une charge de travail dans la console, ou spécifiez-la dans un fichier YAML.
1. Récupérer l'image
docker pull egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-nv-pytorch:[tag]
2. Activer les optimisations
-
Activer l'optimisation de compilation
Dans l'API Trainer de transformers :
training_args = TrainingArguments( bf16=True, gradient_checkpointing=True, torch_compile=True ) -
Activer l'optimisation de checkpointing sélectif du gradient
export CHECKPOINT_OPTIMIZATION=true
3. Démarrer le conteneur
L'exemple suivant utilise l'outil inclus ljperf pour démarrer un conteneur et exécuter une tâche d'entraînement.
Pour les LLM
# Start the container and enter it
docker run --rm -it --ipc=host --net=host --privileged egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-nv-pytorch:[tag]
# Run the training demo
ljperf benchmark --model deepspeed/llama3-8b
4. Recommandations
L'image contient des versions modifiées de bibliothèques telles que PyTorch et DeepSpeed. Ne les réinstallez pas.
Dans la configuration DeepSpeed, laissez
zero_optimization.stage3_prefetch_bucket_sizevide ou définissez-le surauto.-
L'image inclut la variable d'environnement intégrée
NCCL_SOCKET_IFNAME. Configurez-la selon votre scénario :Si un Pod unique demande seulement 1, 2, 4 ou 8 GPU pour des tâches d'entraînement ou d'inférence, définissez
NCCL_SOCKET_IFNAME=eth0(configuration par défaut de cette image).Si un Pod unique demande l'ensemble des 16 GPU d'une machine entière pour des tâches d'entraînement ou d'inférence, définissez
NCCL_SOCKET_IFNAME=hpn0pour utiliser le réseau haute performance HPN.
Problèmes connus
Aucun pour le moment.