Tous les produits
Search
Centre de documentation

Container Compute Service:training-nv-pytorch 25.08

Dernière mise à jour :Aug 12, 2026

Ce document présente les notes de version de training-nv-pytorch 25.08.

Fonctionnalités principales et corrections de bugs

Fonctionnalités principales

  • Mise à niveau de transformers vers la version 4.53.3+ali.

  • Mise à niveau de vllm vers la version 0.10.0 et de ray vers la version 2.48.0.

Corrections de bugs

Aucune correction de bug dans cette version.

Contenu

Cas d'utilisation

Entraînement/inférence

Framework

PyTorch

Prérequis

Version du pilote NVIDIA >= 575

Composants principaux

  • Ubuntu : 24.04

  • Python : 3.12.7+gc

  • CUDA : 12.8

  • perf : 5.4.30

  • gdb : 15.0.50.20240403-git

  • torch : 2.7.1.8+nv25.3

  • triton : 3.3.0

  • transformer_engine : 2.3.0+5de3e14

  • deepspeed : 0.16.9+ali

  • flash_attn : 2.7.2

  • flashattn-hopper : 3.0.0b1

  • transformers : 4.53.3+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.19

  • vllm : 0.10.0

  • flashinfer-python : 0.2.5

  • pytorch-dynamic-profiler : 0.24.11

  • peft : 0.16.0

  • ray : 2.48.0

  • accl-n : 2.27.5.14

  • megatron-core : 0.12.1

Ressources

25.08

  • egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-nv-pytorch:25.08-serverless

Image VPC

acs-registry-vpc.{region-id}.cr.aliyuncs.com/egslingjun/{image:tag}
Remplacez {region-id} par l'ID de la région où votre service Alibaba Cloud Container Compute Service (ACS) est activé (par exemple, cn-beijing ou cn-wulanchabu ).
Remplacez {image:tag} par le nom et le tag de l'image.
Remarque

Les images inference-nv-pytorch:25.03-vllm0.8.2-pytorch2.6-cu124-20250328-serverless et inference-nv-pytorch:25.03-sglang0.4.4.post1-pytorch2.5-cu124-20250327-serverless sont compatibles uniquement avec les déploiements ACS et Lingjun multi-locataires. Elles ne sont pas compatibles avec les déploiements Lingjun mono-locataire.

Remarque

L'image egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-nv-pytorch:25.08-serverless est conçue pour les produits ACS et les environnements Lingjun multi-locataires. Cette image n'est pas compatible avec les déploiements Lingjun mono-locataire ; ne l'utilisez pas dans ce contexte.

Prérequis relatifs aux pilotes

  • La version 25.08 repose sur CUDA 12.8.0 et nécessite un pilote NVIDIA version 575 ou ultérieure. Toutefois, si vous utilisez un GPU de centre de données, tel qu'un T4, vous pouvez utiliser le pilote NVIDIA version 470.57 (ou une version R470 ultérieure), 525.85 (ou une version R525 ultérieure), 535.86 (ou une version R535 ultérieure), ou 545.23 (ou une version R545 ultérieure).

  • Le package de compatibilité du pilote CUDA ne prend en charge que des pilotes spécifiques. Vous devez donc mettre à niveau les pilotes R418, R440, R450, R460, R510, R520, R530, R545, R555 ou R560, car ils ne sont pas compatibles avec CUDA 12.8. Pour consulter la liste complète des pilotes pris en charge, reportez-vous à la rubrique Compatibilité des applications CUDA. Pour plus d'informations, consultez 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 de performance significatifs pour les charges de travail mono-GPU à petite échelle. Cependant, l'entraînement de LLM reposant sur l'optimisation de la mémoire GPU et des frameworks distribués tels que FSDP ou DeepSpeed, torch.compile() peut apporter des avantages limités, voire dégrader les performances.

  • Contrôlez la granularité de la communication dans le framework DeepSpeed. Cela permet au compilateur de capturer un graphe de calcul plus complet et d'appliquer des optimisations de compilation plus larges.

  • 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 lors du calcul.

    • La correspondance 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 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 mémoire GPU recommande le nombre optimal de couches de recalcul d'activation. Il s'appuie sur des 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 de benchmarks. Cette approche est intégrée à PyTorch, ce qui 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 inclut des améliorations de performance et de stabilité.

Évaluation du gain de performance E2E

Nous avons utilisé l'outil d'analyse des performances IA cloud-native CNP pour comparer les performances de bout en bout de cette image par rapport aux images de base standard, en utilisant des modèles open source et des configurations de framework courants. Grâce à des études d'ablation, nous avons également évalué la contribution de chaque composant d'optimisation à la performance globale d'entraînement du modèle.

Analyse de la contribution des composants GPU principaux à la performance E2E

Les tests suivants, réalisés sur un cluster GPU multi-nœuds, comparent les performances d'entraînement E2E de ces configurations :

  1. Base : Image NGC PyTorch.

  2. Image IA ACS : Base+ACCL : L'image utilise la bibliothèque de communication ACCL.

  3. Image IA ACS : AC2+ACCL : Image basée sur AC2 BaseOS avec ACCL et sans autre optimisation.

  4. Image IA ACS : AC2+ACCL+CompilerOpt : Image basée sur AC2 BaseOS avec uniquement l'optimisation torch.compile() activée.

  5. Image IA ACS : AC2+ACCL+CompilerOpt+CkptOpt : Image basée sur AC2 BaseOS avec les optimisations torch.compile() et checkpointing sélectif du gradient activées.

image.png

Prise en main

La procédure suivante explique comment récupérer l'image training-nv-pytorch à l'aide de Docker.

Remarque

Pour utiliser l'image training-nv-pytorch dans ACS, sélectionnez-la depuis la page du registre de conteneurs lors de la création d'une charge de travail dans la console, ou spécifiez-la dans un fichier YAML.

1. Récupérer l'image

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

2. Activer les optimisations

  • Activer l'optimisation de compilation

    Dans l'API Trainer de transformers :

    training_args = TrainingArguments(
        bf16=True,
        gradient_checkpointing=True,
        torch_compile=True
    )
  • Activer l'optimisation de checkpointing sélectif du gradient

    export CHECKPOINT_OPTIMIZATION=true

3. Démarrer le conteneur

L'exemple suivant utilise l'outil inclus ljperf pour démarrer un conteneur et exécuter une tâche d'entraînement.

Pour les LLM

# Start the container and enter 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 

4. Recommandations

  • L'image contient des versions modifiées de bibliothèques telles que PyTorch et DeepSpeed. Ne les réinstallez pas.

  • Dans la configuration DeepSpeed, laissez zero_optimization.stage3_prefetch_bucket_size vide ou définissez-le sur auto.

  • L'image inclut la variable d'environnement intégrée NCCL_SOCKET_IFNAME. Configurez-la selon votre scénario :

    • Si un Pod unique demande seulement 1, 2, 4 ou 8 GPU pour des tâches d'entraînement ou d'inférence, définissez NCCL_SOCKET_IFNAME=eth0 (configuration par défaut de cette image).

    • Si un Pod unique demande l'ensemble des 16 GPU d'une machine entière pour des tâches d'entraînement ou d'inférence, définissez NCCL_SOCKET_IFNAME=hpn0 pour utiliser le réseau haute performance HPN.

Problèmes connus

Aucun pour le moment.