このドキュメントでは、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 イメージは、Alibaba Cloud Container Compute Service (ACS) および 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 互換性パッケージは特定のドライバーシリーズのみをサポートします。したがって、R418、R440、R450、R460、R510、R520、R530、R545、R555、および R560 からはアップグレードする必要があります。これらのドライバーシリーズには CUDA 12.8 との上位互換性がないためです。サポートされているドライバーの完全なリストについては、CUDA Application Compatibility をご参照ください。詳細については、「CUDA Compatibility and Upgrades」をご参照ください。
主な機能と拡張機能
PyTorch コンパイルの最適化
PyTorch 2.0 で導入された torch.compile() は、小規模なシングル GPU のワークロードで大きな効果を発揮することがよくあります。しかし、LLM のトレーニングは GPU メモリの最適化と FSDP や DeepSpeed などの分散フレームワークに依存するため、torch.compile() では限定的な利点しか得られないか、パフォーマンスを低下させる可能性があります。
-
DeepSpeed フレームワークでの通信粒度の制御。これにより、コンパイラがより完全な計算グラフをキャプチャし、より広範なコンパイル最適化を適用できます。
-
最適化された PyTorch ビルドの使用:
-
PyTorch コンパイラのフロントエンドが改善され、計算グラフでグラフブレークが発生した場合でもコンパイルが成功するようになりました。
-
パターンマッチングと動的シェイプのサポートが強化され、コンパイル後のパフォーマンスが向上しました。
-
これらの最適化により、8B パラメーターの LLM トレーニングでは、通常、エンドツーエンドのスループットが約 20% 向上します。
再計算のための GPU メモリの最適化
大規模なパフォーマンスデータ (さまざまなモデル、クラスター、トレーニングパラメーター設定、ベンチマーク中に収集された GPU メモリ使用率などのシステムメトリクスを含む) に基づいて構築された GPU メモリオーバーヘッドの予測モデルは、最適なアクティベーション再計算レイヤー数を推奨します。このアプローチは PyTorch に統合されており、最小限の労力で GPU メモリの最適化によるパフォーマンス向上を実現できます。この機能は、DeepSpeed フレームワークでサポートされるようになりました。
ACCL
ACCL は、Lingjun 向けに構築された Alibaba Cloud の高性能な通信ライブラリです。ACCL-N は GPU に特化したバージョンです。ACCL-N は、NVIDIA NCCL をカスタマイズした高性能な通信ライブラリです。NCCL と完全に互換性があり、アップストリームの NCCL リリースの問題を修正し、パフォーマンスと安定性を向上させています。
エンドツーエンドのパフォーマンス評価
Cloud Native Platform (CNP) の AI パフォーマンス分析ツールを使用して、このイメージと標準的なベースイメージとの間で、主流のオープンソースモデルとフレームワーク構成を用いた包括的なエンドツーエンドのパフォーマンス比較を実施しました。また、アブレーションスタディを通じて、各最適化コンポーネントがモデル全体のトレーニングにどの程度貢献しているかを評価しました。
GPU コアコンポーネントの E2E パフォーマンス貢献度分析
バージョン 25.07 に基づいて、マルチノード GPU クラスター上で以下のテストを実施し、エンドツーエンドのトレーニングパフォーマンスを評価・比較しました。比較構成は以下の通りです。
-
ベース: NGC PyTorch イメージ。
-
ACS AI イメージ: Base+ACCL: ベースイメージに ACCL 通信ライブラリを適用。
-
ACS AI イメージ: AC2+ACCL: AC2 ベース OS を使用したゴールデンイメージで、最適化は有効化されていません。
-
ACS AI イメージ: AC2+ACCL+CompilerOpt: AC2 ベース OS を使用したゴールデンイメージで、torch コンパイルの最適化のみが有効化されています。
-
ACS AI イメージ: AC2+ACCL+CompilerOpt+CkptOpt: AC2 ベース OS を使用したゴールデンイメージで、torch コンパイルと選択的勾配チェックポイントの最適化の両方が有効化されています。

クイックスタート
以下の例では、Docker を使用して training-nv-pytorch イメージをプルする方法を示します。
Alibaba Cloud Container Compute Service (ACS) で training-nv-pytorch イメージを使用するには、コンソールのワークロード作成ページで Artifact Center から選択するか、YAML ファイルでイメージ参照を指定します。
1. イメージのプル
docker pull egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-nv-pytorch:[tag]
2. コンパイルの最適化と勾配チェックポイントの最適化の有効化 (任意)
-
コンパイルの最適化の有効化
Transformers Trainer API を使用する場合:
training_args = TrainingArguments( bf16=True, gradient_checkpointing=True, torch_compile=True ) -
勾配チェックポイントの最適化の有効化
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 個の GPU を要求する場合、
NCCL_SOCKET_IFNAME=eth0を設定します。これはデフォルト設定です。 -
単一の Pod がホスト上の全 16 GPU を要求し、トレーニング/推論タスクのために高性能ネットワーク (HPN) を使用する場合、
NCCL_SOCKET_IFNAME=hpn0を設定します。
-
既知の問題
このリリースでは既知の問題はありません。