L'image training-nv-pytorch regroupe PyTorch et les bibliothèques associées pour l'entraînement et l'inférence, destinées aux charges de travail dans Container Compute Service (ACS). La version 26.02 met à jour plusieurs de ces bibliothèques et propose des variantes CUDA adaptées à différentes versions de pilotes NVIDIA et architectures CPU, afin d'adapter l'image à vos nœuds.
Principales fonctionnalités et corrections de bugs
Principales fonctionnalités
Mise à niveau de DeepSpeed vers la version 0.18.5 et de Transformers vers la version 4.57.6.
Mise à niveau de vLLM vers la version 0.15.0 et de flashinfer-python vers la version 0.6.1.
Corrections de bugs
Aucune.
Problèmes connus
Aucun.
Contenu
Le tableau suivant répertorie les tags de l'image training-nv-pytorch 26,02 ainsi que les exigences associées à chaque tag.
|
Élément |
26,02-cu130-serverless |
26,02-cu128-serverless |
|
Nom de l'image |
training-nv-pytorch |
training-nv-pytorch |
|
Cas d'utilisation |
Entraînement et inférence |
Entraînement/Inférence |
|
Framework |
pytorch |
pytorch |
|
Version CUDA |
13.0.2 |
12.8.0 |
|
Exigences |
Pilote NVIDIA 580 ou version ultérieure |
Pilote NVIDIA 575 ou version ultérieure |
|
Architectures prises en charge |
amd64 et aarch64 |
amd64 |
Composants principaux
26,02-cu130-serverless
Ubuntu : 24,04
Python : 3.12.7+gc
CUDA : 13,0
perf : 5.4.30
gdb : 15.0.50.20240403-git
torch : 2.9.0+ali.10.nv25.10
triton : 3.5.0
transformer_engine : 2.11.0+c188b533
deepspeed : 0.18.5+ali
flash_attn : 2.8.3
transformers : 4.57.6+ali
grouped_gemm : 1.1.4
accelerate : 1.11.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.24
vllm : 0.15.0+cu130
flashinfer-python : 0.6.1
pytorch-dynamic-profiler : 0.24.11
peft : 0.16.0
ray : 2.53.0
megatron-core : 0.15.0
26,02-cu128-serverless
Ubuntu : 24,04
Python : 3.12.7+gc
CUDA : 12,8
perf : 5.4.30
gdb : 15.0.50.20240403-git
torch : 2.9.0+ali.10.nv25.3
triton : 3.5.0
transformer_engine : 2.10.0+769ed778
deepspeed : 0.18.5+ali
flash_attn : 2.8.3
flash_attn_3 : 3.0.0b1
transformers : 4.57.6+ali
grouped_gemm : 1.1.4
accelerate : 1.11.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.24
vllm : 0.15.0+cu128
flashinfer-python : 0.6.1
pytorch-dynamic-profiler : 0.24.11
peft : 0.16.0
ray : 2.53.0
megatron-core : 0.15.0
Exigences relatives aux pilotes
La version 26.02 prend en charge CUDA 12.8.0 et CUDA 13.0.2 ; chaque version de CUDA requiert une version minimale différente du pilote NVIDIA. La section Contenu indique l'exigence relative au pilote pour chaque tag. Pour obtenir la liste complète des pilotes pris en charge, consultez Compatibilité des applications CUDA. Pour plus d'informations, voir Compatibilité et mises à niveau CUDA.
Ressources
Tirez l'image training-nv-pytorch 26,02 depuis l'une des adresses suivantes. Sélectionnez le tag correspondant à la version du pilote NVIDIA et à l'architecture CPU de vos nœuds, comme indiqué dans la section Contenu.
Images publiques
CUDA 13.0.2
egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-nv-pytorch:26.02-cu130-serverless
CUDA 12.8.0
egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-nv-pytorch:26.02-cu128-serverless
Images VPC
Remplacez l'hôte du registre sur le réseau public dans l'URI de votre image par le point de terminaison VPC spécifique à la région.
|
Composant URI |
Réseau public |
IN-VPC |
|
Hôte du registre |
|
|
|
Dépôt |
|
|
|
Image et tag |
|
|
Remplacez {region-id} par l'ID de la région où s'exécute votre service ACS. Par exemple :
|
Région |
ID de région |
|
Chine (Pékin) |
|
|
Chine (Ulanqab) |
|
Pour la liste complète des régions prises en charge, consultez Régions.
Exemples de valeurs {image:tag} :
inference-nv-pytorch:25.10-vllm0.11.0-pytorch2.8-cu128-20251028-serverlesstraining-nv-pytorch:25.10-serverless
Cette image s'applique aux formes de produit multilocataire ACS et Lingjun. N'utilisez pas cette image dans les scénarios monolocataire Lingjun.
Démarrage rapide
L'exemple suivant montre comment tirer l'image training-nv-pytorch et démarrer un conteneur à l'aide de Docker.
Pour utiliser l'image training-nv-pytorch dans ACS, sélectionnez l'image sur la page Artifact Center lors de la création d'une charge de travail dans la console. Vous pouvez également spécifier la référence de l'image dans un fichier YAML.
Remarques d'utilisation
Vérifiez les exigences suivantes avant d'exécuter l'image training-nv-pytorch :
L'image contient des modifications apportées à des bibliothèques telles que PyTorch et DeepSpeed. Ne réinstallez pas ces bibliothèques.
Dans la configuration DeepSpeed, laissez
zero_optimization.stage3_prefetch_bucket_sizevide ou définissez-le surauto.-
Ajustez la variable d'environnement intégrée
NCCL_SOCKET_IFNAMEde cette image en fonction de votre scénario :Si un seul pod demande 1, 2, 4 ou 8 GPU pour une tâche d'entraînement ou d'inférence, vous devez définir
NCCL_SOCKET_IFNAME=eth0. Il s'agit de la configuration par défaut de cette image.Si un seul pod demande les 16 GPU d'un nœud pour une tâche d'entraînement ou d'inférence, vous pouvez utiliser le réseau haute performance HPN. Dans ce cas, vous devez définir
NCCL_SOCKET_IFNAME=hpn0.
Étape 1 : Tirer l'image
Remplacez [tag] par le tag correspondant à la version du pilote NVIDIA et à l'architecture CPU de vos nœuds, comme indiqué dans la section Contenu.
docker pull egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-nv-pytorch:[tag]
Étape 2 : Démarrer le conteneur et exécuter une tâche d'entraînement
L'image training-nv-pytorch inclut un outil intégré d'entraînement de modèles nommé ljperf. L'exemple suivant utilise cet outil pour démarrer un conteneur et exécuter une tâche d'entraînement.
Définissez NCCL_SOCKET_IFNAME en fonction du nombre de GPU demandés par un seul pod, comme décrit dans la section Remarques d'utilisation de cette rubrique.
LLMs
# Start the container and connect to 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
Étape 3 : Activer la compilation et l'optimisation de la mémoire GPU
Activez les optimisations suivantes de l'image training-nv-pytorch :
-
Activer l'optimisation de la compilation : Utilisez l'API Transformers Trainer.
training_args = TrainingArguments( bf16=True, gradient_checkpointing=True, torch_compile=True ) -
Activer l'optimisation de la mémoire GPU pour le recalcul : Définissez la variable d'environnement suivante.
export CHECKPOINT_OPTIMIZATION=true
Fonctionnalités clés et améliorations
L'image training-nv-pytorch offre les optimisations suivantes pour l'entraînement PyTorch. Pour connaître les modifications apportées aux bibliothèques dans la version 26.02, consultez la section Principales fonctionnalités et corrections de bugs.
Optimisation de la compilation PyTorch
torch.compile(), introduit dans PyTorch 2.0, offre souvent des gains significatifs pour les charges de travail à petite échelle sur un seul GPU. Toutefois, l'entraînement des LLM repose sur l'optimisation de la mémoire GPU et sur des frameworks distribués tels que FSDP ou DeepSpeed ; par conséquent, torch.compile() peut offrir des avantages limités, voire dégrader les performances.
Contrôlez la granularité de la communication dans le framework DeepSpeed. Cela aide le compilateur à capturer un graphe de calcul plus complet et à appliquer des optimisations de compilation plus larges.
-
Utilisez une version optimisée de PyTorch :
Le frontend du compilateur PyTorch est amélioré pour garantir que la compilation réussisse même si une rupture de graphe se produit dans le graphe de calcul.
La correspondance de motifs et la prise en charge des formes dynamiques sont renforcées pour améliorer les performances après compilation.
Grâce à ces optimisations, l'entraînement des LLM de 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 de mémoire GPU, construit à partir de données de performances à 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 des tests de référence — recommande le nombre optimal de couches de recalcul d'activation. Cette approche est intégrée à PyTorch, vous permettant d'obtenir les 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.
Évaluation des performances de bout en bout
Les performances de bout en bout de l'image training-nv-pytorch ont été comparées à celles de l'image de base standard à l'aide de CNP, un outil d'évaluation et d'analyse des performances de l'IA cloud-native. Les tests ont utilisé des modèles open source grand public et des configurations de framework. Des expériences d'ablation ont également été menées pour mesurer la contribution de chaque composant d'optimisation aux performances globales de l'entraînement des modèles.
Comparaison des images par rapport à l'image de base et évaluation itérative

Analyse de la contribution des performances de bout en bout des composants GPU principaux
Les tests suivants sont basés sur l'image 26,02 et évaluent et comparent les performances d'entraînement de bout en bout sur un cluster GPU multinœud. Les éléments de comparaison incluent :
Base : L'image NGC PyTorch, qui sert de référence.
ACS AI Image : Base+ACCL : L'image de base avec la bibliothèque de communication ACCL.
ACS AI Image : AC2+ACCL : L'image golden sur AC2 BaseOS avec la bibliothèque de communication ACCL et aucune optimisation activée.
ACS AI Image : AC2+ACCL+CompilerOpt : L'image golden sur AC2 BaseOS avec la bibliothèque de communication ACCL et l'optimisation torch compile activée.
ACS AI Image : AC2+ACCL+CompilerOpt+CkptOpt : L'image golden sur AC2 BaseOS avec la bibliothèque de communication ACCL, l'optimisation torch compile et l'optimisation sélective du point de contrôle des gradients activées.
