このトピックでは、training-nv-pytorch 25.07 のリリースノートについて説明します。
主な機能とバグ修正リスト
主な機能
vllm を v0.9.2 にアップグレードしました。
transformerEngine v2.3.0+5de3e14、peft v0.16.0、および diffusers v0.34.0 をサポートします。
バグ修正
(現時点ではありません)
内容
シナリオ | トレーニング/推論 |
フレーム | pytorch |
要件 | NVIDIA ドライバーリリース >= 575 |
コアコンポーネント |
|
アセット
25.07
egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-nv-pytorch:25.07-serverless
VPC イメージ
acs-registry-vpc.{region-id}.cr.aliyuncs.com/egslingjun/{image:tag}
{region-id}は、ACS がアクティブ化されているリージョン (cn-beijing や cn-wulanchabu など) を示します。{image:tag}は、イメージの名前とタグを示します。
現在、VPC 経由でプルできるのは、中国 (北京) リージョンのイメージのみです。
egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-nv-pytorch:25.07-serverless イメージは、ACS プロダクトフォームおよび Lingjun マルチテナントプロダクトフォームに適用できます。このイメージは、Lingjun シングルテナントプロダクトフォームには適用できません。Lingjun シングルテナントシナリオでは使用しないでください。
ドライバー要件
25.07 リリースは CUDA 12.8.0 に基づいており、NVIDIA ドライバーバージョン 575 以降が必要です。ただし、データセンター GPU (T4 またはその他のデータセンター GPU など) で実行している場合は、NVIDIA ドライバーバージョン 470.57 (またはそれ以降の R470)、525.85 (またはそれ以降の R525)、535.86 (またはそれ以降の R535)、または 545.23 (またはそれ以降の R545) を使用できます。
CUDA ドライバー互換性パッケージは、特定のドライバーのみをサポートします。したがって、ユーザーは、CUDA 12.8 と上位互換性のないすべての R418、R440、R450、R460、R510、R520、R530、R545、R555、および R560 ドライバーからアップグレードする必要があります。サポートされているドライバーの完全なリストについては、「CUDA アプリケーションの互換性」をご参照ください。詳細については、「CUDA の互換性とアップグレード」をご参照ください。
主な機能と拡張機能
PyTorch コンパイルの最適化
PyTorch 2.0 で導入されたコンパイル最適化機能は、1 つの GPU での小規模なトレーニングに適しています。ただし、LLM トレーニングには、GPU メモリの最適化と、FSDP や DeepSpeed などの分散フレームワークが必要です。その結果、torch.compile() はトレーニングにメリットをもたらさず、逆にデメリットをもたらす可能性があります。
DeepSpeed フレームワークで通信の粒度を制御することで、コンパイラはより広い範囲のコンパイル最適化のために完全な計算グラフを取得できます。
最適化された PyTorch:
PyTorch コンパイラのフロントエンドは、計算グラフでグラフの中断が発生した場合でもコンパイルを確実に行うように最適化されています。
モードマッチングと動的シェイプ機能が強化され、コンパイル済みコードが最適化されます。
上記最適化後、8B LLM のトレーニング時に E2E スループットが 20% 向上します。
再計算のための GPU メモリ最適化
さまざまなクラスターにデプロイされた、またはさまざまなパラメーターで構成されたモデルでパフォーマンステストを実行し、GPU メモリ使用率などのシステムメトリックを収集することで、モデルの GPU メモリ消費量を予測および分析します。その結果に基づいて、アクティベーション再計算レイヤーの最適な数を提案し、それを PyTorch に統合します。これにより、ユーザーは GPU メモリ最適化の恩恵を簡単に受けることができます。現在、この機能は DeepSpeed フレームワークで使用できます。
ACCL
ACCL は、Alibaba Cloud が Lingjun 向けに提供する社内 HPN 通信ライブラリです。GPU アクセラレーションシナリオ向けに ACCL-N を提供します。ACCL-N は NCCL に基づいてカスタマイズされた HPN ライブラリです。NCCL と完全に互換性があり、NCCL のいくつかのバグを修正しています。ACCL-N は、より高いパフォーマンスと安定性も提供します。
E2E パフォーマンスゲイン評価
クラウドネイティブ AI パフォーマンス評価・分析ツール CNP を使用して、主流のオープンソースモデルとフレームワーク構成を用いて、標準ベースイメージに対する包括的なエンドツーエンドのパフォーマンス比較分析を実施しました。アブレーション実験を通じて、各最適化コンポーネントがモデル全体のトレーニングパフォーマンスに与える貢献度をさらに評価しました。
GPU コアコンポーネントの E2E パフォーマンス貢献度分析。
以下のテストは 25.07 に基づいており、マルチノード GPU クラスターでトレーニング E2E パフォーマンス評価と比較分析を実施します。比較対象は次のとおりです。
Base: NGC PyTorch イメージ。
ACS AI Image: Base+ACCL: ACCL 通信ライブラリを使用したイメージ。
ACS AI Image: AC2+ACCL: AC2 Base OS を使用したゴールデンイメージ。最適化は有効になっていません。
ACS AI Image: AC2+ACCL+CompilerOpt: AC2 Base OS を使用したゴールデンイメージ。torch compile 最適化のみが有効になっています。
ACS AI Image: AC2+ACCL+CompilerOpt+CkptOpt: AC2 Base OS を使用したゴールデンイメージ。torch compile と選択的勾配チェックポイント最適化の両方が有効になっています。

クイックスタート
以下のサンプルコンテンツは、Docker を介して training-nv-pytorch イメージをプルするだけです。
ACS で training-nv-pytorch イメージを使用するには、コンソールのワークロード作成インターフェイスのアーティファクトセンターページから選択するか、YAML ファイルでイメージリファレンスを指定する必要があります。
1. イメージの選択
docker pull egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-nv-pytorch:[tag]2. API を呼び出してコンパイラ + 再計算メモリ最適化を有効にする
コンパイル最適化を有効にする
transformers Trainer API の使用:

再計算メモリ最適化を有効にする
export CHECKPOINT_OPTIMIZATION=true
3. コンテナーの開始
このイメージには、組み込みのモデルトレーニングツール ljperf が含まれており、コンテナーを起動してトレーニングタスクを実行する手順を説明するために使用されます。
LLM クラス
# コンテナーを起動して入力
docker run --rm -it --ipc=host --net=host --privileged egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-nv-pytorch:[tag]
# トレーニングデモを実行
ljperf benchmark --model deepspeed/llama3-8b 4. 使用上の推奨事項
イメージの変更には Pytorch や Deepspeed などのライブラリが含まれます。これらを再インストールしないでください。
deepspeed 構成では、zero_optimization.stage3_prefetch_bucket_size を空にするか、auto に設定します。
このイメージに組み込まれている環境変数
NCCL_SOCKET_IFNAMEは、使用シナリオに応じて動的に調整する必要があります。単一の Pod がトレーニング/推論タスクに 1/2/4/8 枚のカードのみをリクエストする場合:
NCCL_SOCKET_IFNAME=eth0(このイメージのデフォルト構成) を設定する必要があります。単一の Pod がマシンの全 16 枚のカードをリクエストする場合 (この時点で HPN 高性能ネットワークを使用できます) のトレーニング/推論タスク:
NCCL_SOCKET_IFNAME=hpn0を設定する必要があります。
既知の問題
(現時点ではありません)