Ces notes de version concernent l'image training-nv-pytorch 25,12, un environnement PyTorch destiné aux tâches d'entraînement et d'inférence dans les environnements multi-locataires ACS et Lingjun. Cette version met à niveau vLLM et flashinfer-python, et est publiée en deux variantes ciblant différentes versions de CUDA et des pilotes NVIDIA.
Environnements pris en charge
Les images training-nv-pytorch 25,12 sont prises en charge dans les environnements multi-locataires ACS et Lingjun.
Cette image n'est pas prise en charge dans les déploiements mono-locataire Lingjun.
Principales fonctionnalités et corrections de bugs
Principales fonctionnalités
Mise à niveau de vLLM vers la version 0.12.0 et de flashinfer-python vers la version 0.5.3.
Corrections de bugs
Aucune.
Spécifications de l'image
Le tableau suivant répertorie les spécifications des deux images training-nv-pytorch 25,12. Utilisez-le comme référence pour connaître la version du pilote et les architectures CPU requises par chaque tag.
|
Élément |
25,12-cu130-serverless |
25,12-cu128-serverless |
|
Nom de l'image |
training-nv-pytorch |
training-nv-pytorch |
|
Cas d'utilisation |
Entraînement/inférence |
Entraînement/inférence |
|
Framework |
PyTorch |
PyTorch |
|
Prérequis |
Pilote NVIDIA 580 ou ultérieur |
Pilote NVIDIA 575 ou ultérieur |
|
Architectures prises en charge |
amd64 et aarch64 |
amd64 |
Composants principaux
Le tableau suivant liste les composants principaux et leurs versions pour chaque image.
|
Composant |
25,12-cu130-serverless |
25,12-cu128-serverless |
|
Ubuntu |
24,04 |
24,04 |
|
Python |
3.12.7+gc |
3.12.7+gc |
|
CUDA |
13.0.2 |
12.8.0 |
|
perf |
5.4.30 |
5.4.30 |
|
gdb |
15.0.50.20240403-git |
15.0.50.20240403-git |
|
torch |
2.9.0+ali.10.nv25.10 |
2.8.0.9+nv25.3 |
|
triton |
3.5.0 |
3.4.0 |
|
transformer_engine |
2.9.0+70f53666 |
2.9.0+70f53666 |
|
deepspeed |
0.18.1+ali |
0.18.1+ali |
|
flash_attn |
2.8.3 |
2.8.3 |
|
flash_attn_3 |
not found |
3.0.0b1 |
|
transformers |
4.57.1+ali |
4.57.1+ali |
|
grouped_gemm |
1.1.4 |
1.1.4 |
|
accelerate |
1.11.0+ali |
1.11.0+ali |
|
diffusers |
0.34.0 |
0.34.0 |
|
mmengine |
0.10.3 |
0.10.3 |
|
mmcv |
2.1.0 |
2.1.0 |
|
mmdet |
3.3.0 |
3.3.0 |
|
opencv-python-headless |
4.11.0.86 |
4.11.0.86 |
|
ultralytics |
8.3.96 |
8.3.96 |
|
timm |
1.0.22 |
1.0.22 |
|
vllm |
0.12.0+cu130 |
0.12.0+cu128 |
|
flashinfer-python |
0.5.3 |
0.5.3 |
|
pytorch-dynamic-profiler |
0.24.11 |
0.24.11 |
|
peft |
0.16.0 |
0.16.0 |
|
ray |
2.52.1 |
2.52.1 |
|
megatron-core |
0.14.0 |
0.14.0 |
Ressources
Images publiques
Chaque version CUDA de training-nv-pytorch 25,12 est publiée à sa propre adresse d'image. Pour connaître la version du pilote et les architectures CPU requises par chaque image, consultez la section Spécifications de l'image.
|
Version CUDA |
Adresse de l'image |
|
13.0.2 |
egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-nv-pytorch:25.12-cu130-serverless |
|
12.8.0 |
egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-nv-pytorch:25.12-cu128-serverless |
Images VPC
Remplacez l'URI de ressource d'image de conteneur AI 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 récupérer rapidement les images de conteneur AI PG1 via le VPC.
Où
{region-id}correspond à la région disponible dans laquelle votre 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
training-nv-pytorch 25,12 prend en charge deux versions de CUDA, chacune ayant sa propre version minimale de pilote NVIDIA. CUDA 13.0.2 nécessite un pilote NVIDIA 580 ou ultérieur, tandis que CUDA 12.8.0 nécessite un pilote NVIDIA 575 ou ultérieur. Pour obtenir la liste complète des pilotes pris en charge, consultez la rubrique Compatibilité des applications CUDA. Pour plus d'informations sur la compatibilité des pilotes, reportez-vous à 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 à petite échelle sur un seul GPU. Cependant, 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 apporter des bénéfices 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 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 post-compilation.
Grâce à ces optimisations, l'entraînement de 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 consommation 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 benchmarks), 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 gains de performance E2E
Une comparaison complète des performances de bout en bout (E2E) par rapport à une image de base standard a été réalisée à l'aide de l'outil d'évaluation et d'analyse des performances AI cloud-native (CNP), avec des modèles open source mainstream et des configurations de framework. Une étude d'ablation a également permis d'évaluer la contribution de chaque composant optimisé aux performances globales de l'entraînement du modèle.
Comparaison de cette image avec l'image de base across les itérations

Analyse de la contribution des composants GPU principaux aux performances E2E
Les performances d'entraînement E2E ont été évaluées sur un cluster GPU multi-nœuds exécutant la version 25.12 selon les configurations suivantes :
Base : L'image NGC PyTorch.
Image AI ACS (Base + ACCL) : L'image de base avec la bibliothèque de communication ACCL.
Image AI ACS (AC2 + ACCL) : AC2 BaseOS avec ACCL et aucune optimisation activée.
Image AI ACS (AC2 + ACCL + CompilerOpt) : AC2 BaseOS avec ACCL et seule l'optimisation torch compile activée.
-
Image AI ACS (AC2 + ACCL + CompilerOpt + CkptOpt) : AC2 BaseOS avec ACCL et les optimisations torch compile et selective gradient checkpoint activées.

Démarrage rapide
L'exemple suivant montre comment récupérer l'image training-nv-pytorch et exécuter une tâche d'entraînement à 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, ou référencez l'image dans un fichier YAML.
Recommandations d'utilisation
Les restrictions et paramètres suivants s'appliquent chaque fois que vous exécutez l'image training-nv-pytorch :
Bibliothèques incluses — Ne réinstallez pas les bibliothèques telles que PyTorch et DeepSpeed. Cette image contient des versions modifiées de ces bibliothèques.
Configuration DeepSpeed — Dans la configuration DeepSpeed, laissez
zero_optimization.stage3_prefetch_bucket_sizevide ou définissez-la surauto.-
Interface réseau — Ajustez la variable d'environnement intégrée
NCCL_SOCKET_IFNAMEde cette image en fonction de votre scénario :Lorsqu'un seul Pod demande 1, 2, 4 ou 8 GPU pour une tâche d'entraînement ou d'inférence, définissez
NCCL_SOCKET_IFNAME=eth0. Il s'agit de la configuration par défaut de cette image.Lorsqu'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 HPN (High Performance Network). Dans ce cas, définissez
NCCL_SOCKET_IFNAME=hpn0.
1. Récupérer l'image
Vérifiez la version du pilote NVIDIA et l'architecture CPU de votre environnement, puis exécutez la commande suivante pour récupérer l'image :
docker pull egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-nv-pytorch:[tag]
Remplacez [tag] par l'un des tags publiés :
25.12-cu130-serverless: CUDA 13.0.2, nécessite un pilote NVIDIA 580 ou ultérieur, et prend en charge amd64 et aarch64.25.12-cu128-serverless: CUDA 12.8.0, nécessite un pilote NVIDIA 575 ou ultérieur, et prend en charge uniquement amd64.
2. Activer les optimisations de compilation et de recomputation
Activer l'optimisation de la compilation
Définissez les champs suivants dans la classe transformers TrainingArguments :
training_args = TrainingArguments(
bf16=True,
gradient_checkpointing=True,
torch_compile=True
)
Activer l'optimisation de la mémoire GPU pour la recomputation
Définissez la variable d'environnement suivante :
export CHECKPOINT_OPTIMIZATION=true
3. Démarrer le conteneur
L'outil d'entraînement de modèle ljperf est intégré à l'image. Les commandes suivantes utilisent ljperf pour démarrer un conteneur et exécuter une tâche d'entraînement.
LLMs
# 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
Problèmes connus
La compilation directe de flash_attn_3 (fa3) dans l'image CUDA 13.0.2 de cette version renvoie une erreur. Il s'agit d'un problème communautaire connu. Dans le tableau des composants principaux, flash_attn_3 est indiqué comme introuvable pour l'image 25.12-cu130-serverless.