Notes de version pour training-nv-pytorch 25.09. Cette mise à jour fait passer PyTorch en version 2.8.0 et Transformers en version 4.56.1+ali. Elle introduit également deux nouvelles optimisations — l'amélioration du débit au niveau de la compilation et le recalcul automatique des activations — qui simplifient l'entraînement des LLM sur l'infrastructure GPU d'Alibaba Cloud.
Nouveautés
Composants mis à jour
PyTorch et ses composants associés passent en version 2.8.0.
Transformers passe en version 4.56.1+ali, intégrant les fonctionnalités et correctifs de la version open source correspondante.
Corrections de bugs
Correction d'une erreur survenant lors de l'activation de
torch.compile()pour Transformers open source sur Qwen2-VL.
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 significatifs pour les charges de travail mono-GPU à petite échelle. Cependant, l'entraînement des LLM repose sur l'optimisation de la mémoire GPU et des frameworks distribués tels que FSDP ou DeepSpeed. Par conséquent, torch.compile() peut apporter des avantages limités, voire dégrader les performances.
Contrôlez la granularité des communications dans le framework DeepSpeed. Cela permet au compilateur de capturer un graphe de calcul plus complet et d'appliquer des optimisations de compilation plus étendues.
-
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 (graph break) dans le graphe de calcul.
La reconnaissance 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 obtient 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 des activations. Ce modèle s'appuie sur des données de performance à grande échelle (différents modèles, clusters, paramètres d'entraînement) ainsi que sur des métriques système telles que l'utilisation de la mémoire GPU collectées lors des benchmarks. Intégrée directement à PyTorch, cette approche 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 apporte des améliorations en matière de performance et de stabilité.
Évaluation des performances de bout en bout
La comparaison de performances suivante a été réalisée sur un cluster GPU multi-nœuds à l'aide de CNP, l'outil natif cloud d'évaluation et d'analyse des performances de l'IA. La base de référence est l'image NGC PyTorch.
Comparaison des images et des itérations par rapport à l'image de base

Contribution de chaque composant aux performances de bout en bout
Les tests mesurent l'impact cumulatif de chaque couche d'optimisation :
|
Configuration |
Description |
|
Base |
Image NGC PyTorch |
|
Image ACS AI : Base + ACCL |
Ajout de la bibliothèque de communication ACCL |
|
Image ACS AI : AC2 + ACCL |
Image de référence utilisant le système d'exploitation de base AC2, sans optimisations supplémentaires |
|
Image ACS AI : AC2 + ACCL + CompilerOpt |
Image de référence utilisant le système d'exploitation de base AC2 avec l'optimisation |
|
Image ACS AI : AC2 + ACCL + CompilerOpt + CkptOpt |
Image de référence utilisant le système d'exploitation de base AC2 avec l'optimisation |

Configuration requise
|
Élément |
Détails |
|
Cas d'utilisation |
Entraînement / Inférence |
|
Framework |
PyTorch |
|
Pilote NVIDIA |
Version 575 ou ultérieure |
Compatibilité des pilotes
La version 25.09 repose sur CUDA 12.8.0 et nécessite un pilote NVIDIA version 575 ou ultérieure. Pour les GPU de centre de données tels que le T4, les versions de pilote suivantes sont également prises en charge :
470,57 ou ultérieure (R470)
525,85 ou ultérieure (R525)
535,86 ou ultérieure (R535)
545,23 ou ultérieure (R545)
Les versions de pilote suivantes ne sont pas compatibles ascendamment avec CUDA 12.8 et doivent être mises à niveau avant d'utiliser cette image : R418, R440, R450, R460, R510, R520, R530, R545, R555 et R560. Pour consulter la liste complète des pilotes pris en charge, reportez-vous à Compatibilité des applications CUDA. Pour obtenir des instructions de mise à niveau, consultez Compatibilité et mises à niveau CUDA.
Composants principaux
|
Composant |
Version |
|
Ubuntu |
24.04 |
|
Python |
3.12.7+gc |
|
CUDA |
12.8 |
|
perf |
5.4.30 |
|
gdb |
15.0.50.20240403-git |
|
torch |
2.8.0.9+nv25.3 |
|
triton |
3.4.0 |
|
transformer_engine |
2.3.0+5de3e148 |
|
deepspeed |
0.16.9+ali |
|
flash_attn |
2.8.3 |
|
flash_attn_3 |
3.0.0b1 |
|
transformers |
4.56.1+ali |
|
grouped_gemm |
1.1.4 |
|
accelerate |
1.7.0+ali |
|
diffusers |
0.34.0 |
|
mmengine |
0.10.3 |
|
mmcv |
2.1.0 |
|
mmdet |
3.3.0 |
|
opencv-python-headless |
4.11.0.86 |
|
ultralytics |
8.3.96 |
|
timm |
1.0.20 |
|
vllm |
0.10.1.1 |
|
flashinfer-python |
0.2.5 |
|
pytorch-dynamic-profiler |
0.24.11 |
|
peft |
0.16.0 |
|
ray |
2.49.2 |
|
megatron-core |
0.12.1 |
Ressources d'image
Image publique
egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-nv-pytorch:25.09-serverless
Cette image convient aux produits Alibaba Cloud Container Compute Service (ACS) et aux scénarios multi-locataires Lingjun. Ne l'utilisez pas dans des scénarios Lingjun mono-locataire.
Image VPC
acs-registry-vpc.{region-id}.cr.aliyuncs.com/egslingjun/{image:tag}
Remplacez les espaces réservés par les valeurs suivantes :
|
Espace réservé |
Description |
Exemple |
|
|
Région où votre service ACS est activé |
|
|
|
Nom et tag de l'image |
Voir l'image publique ci-dessus |
Prise en main rapide
L'exemple suivant montre comment récupérer et exécuter l'image training-nv-pytorch avec Docker.
Pour utiliser cette image dans ACS, sélectionnez-la depuis la page Artifacts lors de la création d'une charge de travail dans la console, ou spécifiez la référence de l'image dans un fichier YAML. N'utilisez pas Docker directement.
Étape 1 : Récupérer l'image
docker pull egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-nv-pytorch:[tag]
Étape 2 : Activer les optimisations de compilation et de recalcul
Activer l'optimisation de compilation
Utilisez l'API Trainer de Transformers :

Activer le recalcul des activations pour l'optimisation de la mémoire GPU
export CHECKPOINT_OPTIMIZATION=true
Étape 3 : Démarrer le conteneur et exécuter une tâche d'entraînement
L'image inclut un outil intégré d'entraînement de modèles nommé ljperf. L'exemple suivant démarre un conteneur et exécute une tâche d'entraînement de LLM :
# Start and enter the container
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
Remarques d'utilisation
Ne réinstallez pas les versions personnalisées des bibliothèques fournies avec cette image, telles que PyTorch et DeepSpeed. Leur réinstallation écraserait les optimisations d'Alibaba Cloud.
Dans votre configuration DeepSpeed, laissez le paramètre
zero_optimization.stage3_prefetch_bucket_sizevide ou définissez-le surauto.-
Définissez
NCCL_SOCKET_IFNAMEen fonction du nombre de GPU demandés par pod :GPU par pod
Valeur de NCCL_SOCKET_IFNAME
1, 2, 4 ou 8
eth0(par défaut)16 (nœud complet, avec HPN)
hpn0