このトピックでは、training-nv-pytorch バージョン 25.09 のリリースノートについて説明します。
主な特徴とバグ修正
主な特徴
PyTorch とその関連コンポーネントは 2.8.0 にアップグレードされました。
Transformers は 4.56.1+ali にアップグレードされました。このバージョンには、対応するオープンソースバージョンからの特徴とバグ修正が組み込まれています。
バグ修正
Qwen2-VL 上のオープンソース Transformers で torch.compile() を有効にしたときに発生したエラーを修正しました。
内容
シナリオ | トレーニング/推論 |
フレームワーク | PyTorch |
要件 | NVIDIA ドライバーリリース >= 575 |
コアコンポーネント |
|
アセット
25.09
egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-nv-pytorch:25.09-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.09-serverless イメージは、ACS プロダクトおよび Lingjun マルチテナントプロダクトに適しています。このイメージは Lingjun シングルテナントプロダクトには適していません。Lingjun シングルテナントシナリオでは使用しないでください。
ドライバー要件
25.09 リリースは CUDA 12.8.0 に基づいており、NVIDIA ドライバーバージョン 575 以降が必要です。ただし、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 アプリケーションの互換性」トピックをご参照ください。詳細については、「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 を使用して、主流のオープンソースモデルとフレームワーク構成を使用して、標準のベースイメージに対する包括的な E2E パフォーマンス比較を実施しました。また、各最適化コンポーネントがモデル全体のトレーニングパフォーマンスに与える貢献をさらに評価するために、アブレーション実験も実施しました。
ベースイメージとのイメージおよび反復の比較

コア GPU コンポーネントの E2E パフォーマンス貢献度分析
バージョン 25.09 に基づく以下のテストは、マルチノード GPU クラスターで実施され、E2E トレーニングパフォーマンスを評価および比較しました。比較項目は次のとおりです。
Base: NGC PyTorch イメージ。
ACS AI Image: Base+ACCL: イメージは ACCL 通信ライブラリを使用します。
ACS AI Image: AC2+ACCL: Golden イメージは、最適化を有効にせずに AC2 BaseOS を使用します。
ACS AI Image: AC2+ACCL+CompilerOpt: Golden イメージは、torch コンパイル最適化のみを有効にして AC2 BaseOS を使用します。
ACS AI Image: AC2+ACCL+CompilerOpt+CkptOpt: Golden イメージは、torch コンパイルと選択的勾配チェックポイント最適化の両方を有効にして AC2 BaseOS を使用します。

クイックスタート
次の例は、Docker を使用して training-nv-pytorch イメージをプルする方法を示しています。
ACS で training-nv-pytorch イメージを使用するには、コンソールでワークロードを作成するときに [Artifacts] ページから選択するか、YAML ファイルでイメージリファレンスを指定します。
1. イメージの選択
docker pull egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/training-nv-pytorch:[tag]2. API を呼び出してコンパイラと GPU メモリ最適化のための再計算を有効にする
コンパイル最適化を有効にする
Transformers Trainer API を使用します:

GPU メモリ最適化のための再計算を有効にする
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 枚のカードをリクエストする場合、High-Performance Network (HPN) を使用できます。この場合、
NCCL_SOCKET_IFNAME=hpn0を設定します。