training-nv-pytorch 25.04 est une image de conteneur d'entraînement IA pour Alibaba Cloud Container Compute Service (ACS). Basée sur NGC PyTorch 25.03, elle intègre des optimisations Alibaba Cloud pour l'entraînement et l'inférence de LLM à grande échelle sur des clusters GPU.
Nouveautés
Image de base alignée sur NGC 25.03. CUDA mis à jour vers la version 12.8.1 et TransformerEngine vers la version 2.1.
Triton adapté à la version 3.2.0 et Accelerate mis à jour vers 1.6.0+ali, avec intégration des fonctionnalités et correctifs correspondants.
vLLM mis à jour vers la version 0.8.5, flashinfer-python vers 0.2.5 et Transformers vers 4.51.2+ali, avec ajout de la prise en charge de Qwen3.
Correctifs : Aucun
Avis importants
Cette image contient des bibliothèques PyTorch et DeepSpeed modifiées. Ne les réinstallez pas.
Dans votre configuration DeepSpeed, laissez le paramètre
zero_optimization.stage3_prefetch_bucket_sizevide ou définissez-le surauto.
Composants
|
Scénarios |
Entraînement, inférence |
|
Framework |
PyTorch |
|
Pilote NVIDIA |
≥ 570 |
Composants principaux :
|
Composant |
Version |
|
Ubuntu |
|
|
Python |
3.12.7+gc |
|
Torch |
2.6.0.7 |
|
CUDA |
|
|
ACCL-N |
2.23.4.12 |
|
Triton |
|
|
TransformerEngine |
|
|
DeepSpeed |
0.15.4+ali |
|
flash-attn |
|
|
flashattn-hopper |
3.0.0b1 |
|
Transformers |
4.51.2+ali |
|
megatron-core |
|
|
grouped_gemm |
1.1.4 |
|
Accelerate |
1.6.0+ali |
|
diffusers |
|
|
openmim |
0.3.9 |
|
mmengine |
|
|
mmcv |
|
|
mmdet |
|
|
opencv-python-headless |
4.10.0.84 |
|
ultralytics |
|
|
timm |
|
|
vLLM |
0.8.5+cu128 |
|
flashinfer |
|
|
pytorch-dynamic-profiler |
0.24.11 |
|
perf |
5.4.30 |
|
gdb |
15.0.50 |
|
peft |
|
|
ray |
Ressources d'image
25.04
Image publique :
egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-nv-pytorch:25.04-serverless
Image VPC :
acs-registry-vpc.{region-id}.cr.aliyuncs.com/egslingjun/{image:tag}
{region-id}: la région où votre service ACS est activé, par exemplecn-beijingoucn-wulanchabu.{image:tag}: le nom et le tag de l'image.
L'image training-nv-pytorch:25.04-serverless est compatible avec les scénarios ACS et Lingjun multi-tenant. Elle n'est pas compatible avec les scénarios Lingjun single-tenant.
L'image training-nv-pytorch:25.04 (sans suffixe) est destinée aux scénarios Lingjun single-tenant.
Prérequis relatifs aux pilotes
Cette version repose sur CUDA 12.8.1.012.
|
Scénario |
Version minimale du pilote |
|
GPU standard |
570 ou ultérieure |
|
GPU pour centres de données (T4 et similaires) |
470,57 (R470), 525,85 (R525), 535,86 (R535) ou 545,23 (R545) |
Pilotes non compatibles ascendamment avec CUDA 12.8 : mettez à niveau votre pilote si vous utilisez l'une des versions suivantes : R418, R440, R450, R460, R510, R520, R530, R545, R555, R560.
Pour consulter la liste complète des pilotes pris en charge, reportez-vous à la section Compatibilité des applications CUDA. Pour plus d'informations sur la compatibilité et les mises à niveau, consultez la section 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 significatifs pour les charges de travail mono-GPU à petite échelle. Toutefois, 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é 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 qui apporte les améliorations suivantes :
Le frontend du compilateur PyTorch est 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 sont 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 d'activation. Ce modèle s'appuie sur des données de performances à grande échelle incluant divers modèles, clusters et 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 de benchmarks. Intégrée directement dans 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 reste entièrement compatible avec NCCL tout en corrigeant les problèmes présents dans la version upstream et en apportant des améliorations de performance et de stabilité.
Analyse de la contribution aux performances de bout en bout
Les tests suivants utilisent Golden-25.04 sur des clusters GPU multi-nœuds afin de comparer la contribution de chaque composant d'optimisation au débit de bout en bout. L'outil de performance IA cloud-native CNP exécute des évaluations avec des modèles et frameworks open source courants, en parallèle des images de base standard.
Configurations de test :
Base : Image NGC PyTorch
Image IA ACS : Base + ACCL : image intégrant la bibliothèque de communication ACCL
Image IA ACS : AC2 + ACCL : image golden avec AC2 BaseOS, sans aucune optimisation activée
Image IA ACS : AC2 + ACCL + CompilerOpt : image golden avec AC2 BaseOS et optimisation de la compilation PyTorch activée
Image IA ACS : AC2 + ACCL + CompilerOpt + CkptOpt : image golden avec AC2 BaseOS, combinant l'optimisation de la compilation et le checkpointing sélectif des activations

Prise en main rapide
Les étapes suivantes utilisent Docker pour récupérer et exécuter l'image training-nv-pytorch.
Pour utiliser training-nv-pytorch dans ACS, récupérez l'image depuis la page du centre d'artefacts dans la console lors de la création de charges de travail, ou spécifiez l'image dans un fichier YAML.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Docker installé sur votre machine hôte
Un pilote NVIDIA répondant aux prérequis relatifs aux pilotes
Un accès au registre d'images (image publique ou image VPC, selon votre réseau)
1. Récupérer l'image
docker pull egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-nv-pytorch:[tag]
2. Activer l'optimisation de la compilation et l'optimisation de la mémoire GPU pour le recalcul
Activer l'optimisation de la compilation : utilisez l'API Trainer de Transformers.

Activer l'optimisation de la mémoire GPU pour le recalcul :
export CHECKPOINT_OPTIMIZATION=true
3. Lancer un conteneur et exécuter une tâche d'entraînement
L'image inclut un outil intégré d'entraînement de modèles, ljperf, permettant de lancer des conteneurs et d'exécuter des tâches d'entraînement.
# Launch a container and log in.
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
Problèmes connus
Depuis la mise à niveau vers PyTorch 2.6, le gain de performance apporté par l'optimisation mémoire de recalcul pour les modèles de type LLM est inférieur à celui des versions précédentes. Des travaux d'optimisation sont en cours.