Tous les produits
Search
Centre de documentation

Container Compute Service:training-nv-pytorch 25.12

Dernière mise à jour :Aug 28, 2026

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.

Important

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.

  • {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

image.png

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.

    image.png

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.

Remarque

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_size vide ou définissez-la sur auto.

  • Interface réseau — Ajustez la variable d'environnement intégrée NCCL_SOCKET_IFNAME de 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.