Tous les produits
Search
Centre de documentation

Container Compute Service:training-nv-pytorch 25.09

Dernière mise à jour :Aug 12, 2026

Notes de version pour training-nv-pytorch 25.09. Cette mise à jour fait passer PyTorch en version 2.8.0 et Transformers en version 4.56.1+ali. Elle introduit également deux nouvelles optimisations — l'amélioration du débit au niveau de la compilation et le recalcul automatique des activations — qui simplifient l'entraînement des LLM sur l'infrastructure GPU d'Alibaba Cloud.

Nouveautés

Composants mis à jour

  • PyTorch et ses composants associés passent en version 2.8.0.

  • Transformers passe en version 4.56.1+ali, intégrant les fonctionnalités et correctifs de la version open source correspondante.

Corrections de bugs

  • Correction d'une erreur survenant lors de l'activation de torch.compile() pour Transformers open source sur Qwen2-VL.

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. Cependant, l'entraînement des LLM repose sur l'optimisation de la mémoire GPU et des frameworks distribués tels que FSDP ou DeepSpeed. Par conséquent, 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 :

    • Le frontend du compilateur PyTorch a été amélioré pour garantir la réussite de la compilation même en cas de rupture de graphe (graph break) dans le graphe de calcul.

    • La reconnaissance de motifs et la prise en charge des formes dynamiques ont été 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 des activations. Ce modèle s'appuie sur des données de performance à grande échelle (différents modèles, clusters, 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 des benchmarks. Intégrée directement à 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 est entièrement compatible avec NCCL. Elle corrige des problèmes présents dans la version upstream de NCCL et apporte des améliorations en matière de performance et de stabilité.

Évaluation des performances de bout en bout

La comparaison de performances suivante a été réalisée sur un cluster GPU multi-nœuds à l'aide de CNP, l'outil natif cloud d'évaluation et d'analyse des performances de l'IA. La base de référence est l'image NGC PyTorch.

Comparaison des images et des itérations par rapport à l'image de base

image.png

Contribution de chaque composant aux performances de bout en bout

Les tests mesurent l'impact cumulatif de chaque couche d'optimisation :

Configuration

Description

Base

Image NGC PyTorch

Image ACS AI : Base + ACCL

Ajout de la bibliothèque de communication ACCL

Image ACS AI : AC2 + ACCL

Image de référence utilisant le système d'exploitation de base AC2, sans optimisations supplémentaires

Image ACS AI : AC2 + ACCL + CompilerOpt

Image de référence utilisant le système d'exploitation de base AC2 avec l'optimisation torch.compile()

Image ACS AI : AC2 + ACCL + CompilerOpt + CkptOpt

Image de référence utilisant le système d'exploitation de base AC2 avec l'optimisation torch.compile() et le checkpointing sélectif des gradients

image.png

Configuration requise

Élément

Détails

Cas d'utilisation

Entraînement / Inférence

Framework

PyTorch

Pilote NVIDIA

Version 575 ou ultérieure

Compatibilité des pilotes

La version 25.09 repose sur CUDA 12.8.0 et nécessite un pilote NVIDIA version 575 ou ultérieure. Pour les GPU de centre de données tels que le T4, les versions de pilote suivantes sont également prises en charge :

  • 470,57 ou ultérieure (R470)

  • 525,85 ou ultérieure (R525)

  • 535,86 ou ultérieure (R535)

  • 545,23 ou ultérieure (R545)

Les versions de pilote suivantes ne sont pas compatibles ascendamment avec CUDA 12.8 et doivent être mises à niveau avant d'utiliser cette image : R418, R440, R450, R460, R510, R520, R530, R545, R555 et R560. Pour consulter la liste complète des pilotes pris en charge, reportez-vous à Compatibilité des applications CUDA. Pour obtenir des instructions de mise à niveau, consultez Compatibilité et mises à niveau CUDA.

Composants principaux

Composant

Version

Ubuntu

24.04

Python

3.12.7+gc

CUDA

12.8

perf

5.4.30

gdb

15.0.50.20240403-git

torch

2.8.0.9+nv25.3

triton

3.4.0

transformer_engine

2.3.0+5de3e148

deepspeed

0.16.9+ali

flash_attn

2.8.3

flash_attn_3

3.0.0b1

transformers

4.56.1+ali

grouped_gemm

1.1.4

accelerate

1.7.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.20

vllm

0.10.1.1

flashinfer-python

0.2.5

pytorch-dynamic-profiler

0.24.11

peft

0.16.0

ray

2.49.2

megatron-core

0.12.1

Ressources d'image

Image publique

egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-nv-pytorch:25.09-serverless
Remarque

Cette image convient aux produits Alibaba Cloud Container Compute Service (ACS) et aux scénarios multi-locataires Lingjun. Ne l'utilisez pas dans des scénarios Lingjun mono-locataire.

Image VPC

acs-registry-vpc.{region-id}.cr.aliyuncs.com/egslingjun/{image:tag}

Remplacez les espaces réservés par les valeurs suivantes :

Espace réservé

Description

Exemple

{region-id}

Région où votre service ACS est activé

cn-beijing, cn-wulanchabu

{image:tag}

Nom et tag de l'image

Voir l'image publique ci-dessus

Prise en main rapide

L'exemple suivant montre comment récupérer et exécuter l'image training-nv-pytorch avec Docker.

Remarque

Pour utiliser cette image dans ACS, sélectionnez-la depuis la page Artifacts 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. N'utilisez pas Docker directement.

Étape 1 : Récupérer l'image

docker pull egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-nv-pytorch:[tag]

Étape 2 : Activer les optimisations de compilation et de recalcul

Activer l'optimisation de compilation

Utilisez l'API Trainer de Transformers :

image.png

Activer le recalcul des activations pour l'optimisation de la mémoire GPU

export CHECKPOINT_OPTIMIZATION=true

Étape 3 : Démarrer le conteneur et exécuter une tâche d'entraînement

L'image inclut un outil intégré d'entraînement de modèles nommé ljperf. L'exemple suivant démarre un conteneur et exécute une tâche d'entraînement de LLM :

# 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

Remarques d'utilisation

  • Ne réinstallez pas les versions personnalisées des bibliothèques fournies avec cette image, telles que PyTorch et DeepSpeed. Leur réinstallation écraserait les optimisations d'Alibaba Cloud.

  • Dans votre configuration DeepSpeed, laissez le paramètre zero_optimization.stage3_prefetch_bucket_size vide ou définissez-le sur auto.

  • Définissez NCCL_SOCKET_IFNAME en fonction du nombre de GPU demandés par pod :

    GPU par pod

    Valeur de NCCL_SOCKET_IFNAME

    1, 2, 4 ou 8

    eth0 (par défaut)

    16 (nœud complet, avec HPN)

    hpn0