La version 26.03 de l'image training-nv-pytorch met à jour torch vers la version 2.10, vllm vers la version 0.17.0, megatron-core vers la version 0.16.0, deepspeed vers la version 0.18.8 et transformer_engine vers la version 2.12. Utilisez cette image pour l'entraînement et l'inférence sur GPU dans ACS, en tirant parti des optimisations de mémoire par compilation et recomputation.
Nouveautés
Points forts
Mise à jour de torch vers la version 2.10.
Mise à jour de vllm vers la version 0.17.0.
Mise à jour de megatron-core vers la version 0.16.0.
Mise à jour de deepspeed vers la version 0.18.8.
Mise à jour de transformer_engine vers la version 2.12.
Corrections de bugs
Aucune.
Contenu de l'image
Le tableau suivant répertorie les attributs de chaque tag d'image.
|
Élément |
26,03-cu130-serverless |
26,03-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 |
|
Prérequis |
NVIDIA Driver 580 ou version ultérieure |
NVIDIA Driver 575 ou version ultérieure |
|
Architectures prises en charge |
amd64 et aarch64 |
amd64 |
Composants principaux
26,03-cu130-serverless
Ubuntu : 24.04
Python : 3.12.7+gc
CUDA : 13,0
perf : 5.4.30
gdb : 15,1
torch : 2.10.0+ali.10.nv25.10
triton : 3.6.0
transformer_engine : 2.12.0+5671fd36
deepspeed : 0.18.8+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.26
vllm : 0.17.0+cu130
flashinfer-python : 0.6.4
pytorch-dynamic-profiler : 0.24.11
peft : 0.16.0
ray : 2.54.1
megatron-core : 0.16.0
26,03-cu128-serverless
Ubuntu : 24,04
Python : 3.12.7+gc
CUDA : 12,8
perf : 5.4.30
gdb : 15,1
torch : 2.10.0+ali.10.nv25.3.pgo
triton : 3.6.0
transformer_engine : 2.12.0+5671fd36
deepspeed : 0.18.8+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.26
vllm : 0.17.0+cu128
flashinfer-python : 0.6.4
pytorch-dynamic-profiler : 0.24.11
peft : 0.16.0
ray : 2.54.1
megatron-core : 0.16.0
Ressources
Cette image est compatible avec ACS et les environnements Lingjun multi-locataires, mais pas avec les environnements Lingjun mono-locataires.
Images publiques
CUDA 13.0.2 (NVIDIA Driver 580 ou version ultérieure, amd64 et aarch64)
egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-nv-pytorch:26.03-cu130-serverless
CUDA 12.8 (NVIDIA Driver 575 ou version ultérieure, amd64)
egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-nv-pytorch:26.03-cu128-serverless
Images VPC
Remplacez l'URI de ressource d'image de conteneur IA egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/{image:tag} spécifié dans le fichier YAML de la console ACS par acs-registry-vpc.{region-id}.cr.aliyuncs.com/egslingjun/{image:tag} afin de télécharger rapidement les images de conteneur IA PG1 via le VPC.
Où
{region-id}correspond à la région disponible dans laquelle votre service ACS est activé, par exemple cn-beijing et cn-wulanchabu.{image:tag}représente le nom et le tag de l'image.
Prérequis relatifs au pilote
La version 26.03 prend en charge deux versions de CUDA, chacune ayant sa propre version minimale de pilote :
CUDA 13.0.2 nécessite NVIDIA Driver 580 ou une version ultérieure.
CUDA 12.8.0 nécessite NVIDIA Driver 575 ou une version ultérieure.
Consultez la page Compatibilité des applications CUDA pour obtenir la liste complète des pilotes pris en charge, ainsi que la page Compatibilité et mises à niveau CUDA pour des conseils sur la mise à niveau.
Démarrage rapide
Les étapes suivantes utilisent Docker pour télécharger l'image et exécuter une démonstration d'entraînement sur un hôte local. Exécutez les commandes docker dans le shell de l'hôte et les commandes d'entraînement dans le shell du conteneur.
Pour utiliser cette image dans ACS, sélectionnez-la dans Artifact Center 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.
Étape 1 : Télécharger l'image
Exécutez la commande suivante dans le shell de l'hôte :
docker pull egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-nv-pytorch:[tag]
Remplacez [tag] par le tag correspondant à votre version de NVIDIA Driver et à l'architecture de votre processeur, soit 26.03-cu130-serverless soit 26.03-cu128-serverless. Pour connaître la version du pilote et les architectures prises en charge par chaque tag, consultez la section Contenu de l'image.
Étape 2 : Démarrer le conteneur
Exécutez la commande suivante dans le shell de l'hôte. Cette commande démarre le conteneur et ouvre un shell de conteneur, dans lequel vous effectuerez les étapes restantes.
# Start the container and open a shell
docker run --rm -it --ipc=host --net=host --privileged egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-nv-pytorch:[tag]
Étape 3 : Activer les optimisations
Activez les deux optimisations avant le début de l'entraînement. Définissez l'optimisation de compilation dans votre script d'entraînement et l'optimisation de mémoire par recomputation dans le shell du conteneur ouvert à l'étape 2.
Activer l'optimisation de compilation
Dans votre script d'entraînement, définissez les arguments suivants via l'API Trainer de transformers :
training_args = TrainingArguments(
bf16=True,
gradient_checkpointing=True,
torch_compile=True
)
Activer l'optimisation de mémoire par recomputation
Dans le shell du conteneur, définissez la variable d'environnement suivante :
export CHECKPOINT_OPTIMIZATION=true
Étape 4 : Exécuter la démonstration d'entraînement
L'image inclut ljperf, un outil intégré d'entraînement de modèles. Exécutez la démonstration dans le shell du conteneur.
Pour les LLM
# Run the training demo
ljperf benchmark --model deepspeed/llama3-8b
Recommandations d'utilisation
Cette image contient des bibliothèques modifiées, 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.
Fonctionnalités clés et améliorations
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ôle de 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.
-
Utilisation d'une build PyTorch optimisée :
Le frontend du compilateur PyTorch a été 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 ont été 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 la recomputation
Un modèle prédictif de la surcharge de mémoire GPU, construit à partir de 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 des tests de référence), recommande le nombre optimal de couches de recomputation d'activations. 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
Cette image a été évaluée par rapport à l'image de base standard à l'aide de CNP, un outil d'évaluation et d'analyse des performances de l'IA cloud-native, en utilisant des modèles open source mainstream et des configurations de framework. Des expériences d'ablation montrent la contribution de chaque composant d'optimisation aux performances globales de l'entraînement du modèle.
Comparaison des images par rapport à l'image de base et évaluation itération par itération

Analyse de la contribution des performances de bout en bout des composants GPU principaux
Les configurations suivantes de cette version ont été comparées en termes de performances d'entraînement de bout en bout sur un cluster GPU multi-nœuds :
Base : L'image officielle NGC PyTorch.
ACS AI Image (Base + ACCL) : L'image de base avec la bibliothèque de communication ACCL.
ACS AI Image (AC2 + ACCL) : L'image sur AC2 BaseOS avec ACCL, mais sans autres optimisations.
ACS AI Image (AC2 + ACCL + CompilerOpt) : L'image sur AC2 BaseOS avec ACCL et seule l'optimisation torch.compile activée.
torch.compileoptimisation activée.ACS AI Image (AC2 + ACCL + CompilerOpt + CkptOpt) : L'image sur AC2 BaseOS avec ACCL,
torch.compileet le checkpointing sélectif des gradients activé.

Problèmes connus
Aucun.