青いセーターを着た人がコンピュータで作業している
Microsoft Base ロゴ

技術ブログ

Azureに関する技術情報

ONNX Runtime 1.8.1 がリリース。AMD ROCm™ オープン ソフトウェア プラットフォームを活用した、AMD GPU によるトレーニング高速化のサポートをプレビュー提供

Open Source

本ポストは以下の記事の翻訳です。

ONNX Runtime release 1.8.1 previews support for accelerated training on AMD GPUs with the AMD ROCm™ Open Software Platform – Microsoft Open Source Blog

2021 年 7 月 13 日

Principal Software Engineer, AI Frameworks at Microsoft
Software Engineer, AI Frameworks at Microsoft

AI + 機械学習, プロジェクト更新情報, マイクロソフト

この投稿は、AMD ディープ ラーニング ソフトウェア担当テクニカル スタッフ プリンシパル メンバー Jeff Daily 氏との共同執筆記事です。
ONNX Runtime は、多種多様なフレームワーク、オペレーティング システム、ハードウェア プラットフォームの境界を越えた機械学習の高速化に取り組むオープンソース プロジェクトです。本日は、ONNX Runtime リリース 1.8.1 のプレビュー版が提供開始されたことを発表いたします。今回の目玉は、AMD ROCm™ オープン ソフトウェア プラットフォームの活用による、AMD Instinct™ GPU のサポートが追加されたことです。これによりユーザーは、AMD Instinct™ GPU と ONNX Runtime を組み合わせて使用し、DNN モデルの分散トレーニングを高速化できるようになります。AMD ROCm™ が最新の ONNX Runtime 実行プロバイダーとして追加されたことで、さまざまなコンピューティング デバイスとサーバー プラットフォームを対象に選択肢と汎用性をさらに広げていくというマイクロソフトのミッションが、さらに一歩前進することになりました。
図 1: AMD GPU のサポートが表示された選択用インターフェイス
ROCm オープン ソフトウェア プラットフォーム
ROCm は、ハイパフォーマンス コンピューティングおよび機械学習ワークロードの GPU アクセラレーションを実現する、AMD のオープン ソフトウェア プラットフォームです。ROCm プラットフォームは 2016 年の ROCm 初リリース以来、追加の演算処理、AI と機械学習、コミュニケーション ライブラリとツール、幅広い Linux® ディストリビューション、各種の最新 GPU など、サポートの幅を広げ進化してきました。サポート対象の GPU には、コンピューティングに最適化された AMD CDNA™ アーキテクチャを基盤とする、AMD 初のデータセンター アクセラレーター AMD Instinct™ MI100 GPU も含まれています。
ROCm の最大の目的は、大規模なハイパフォーマンス コンピューティングを実現することです。ROCm と AMD Instinct データセンター アクセラレーター ファミリの機能の組み合わせは、ONNX Runtime を使用した AI/ML トレーニングの高速化に非常に適しています。
AMD GPU 上の ONNX Runtime でトレーニングを高速化する
GPT-2 などの大規模トランスフォーマー モデルは、理解、生成、翻訳といった自然言語処理 (NLP) タスクにおいて最高水準のモデルであることが証明されています。さらに、時系列予測やコンピューター ビジョンといった用途における有効性も証明されています。これらのモデルは、その大きさから大規模な分散 GPU 環境でトレーニングする必要がありますが、ONNX Runtime および AMD (rocBLAS、MIOpen、hipRAND、RCCL) ライブラリのサポートを使用することで、大規模トランスフォーマー モデルの混合精度トレーニングを、分散 AMD GPU 環境で行えるようになります。つまり ROCm を基盤とする ONNX Runtime は、BERT、GPT-2、T5、BART その他の最先端モデルの、AMD Instinct™ GPU によるトレーニングをサポートします。これにより、このコミュニティに参加するデータ サイエンティスト、リサーチャー、学生などの方々に、AMD GPU 上の ONNX Runtime を活用してワークロードを高速化する選択肢が提供されることになります。この GPU には、AMD Instinct™ MI100、AMD Radeon Instinct™ MI50、AMD Radeon™ Pro VII が含まれます。
また本日は、ROCm 上の ONNX Runtime をサポートする Python™ パッケージのプレビュー版が提供開始されたことも発表いたします。このパッケージを使うことで、ROCm と ONNX Runtime をより簡単にお使いいただけるようになります。
高速化されたトレーニング パフォーマンス
このプレビュー版では、8 基の AMD Instinct™ MI100 GPU 上で Hugging Face を実行し GPT-2 を微調整した結果、ONNX Runtime で AMD GPU を使用することで、パフォーマンスを向上可能なことが実証されています。この実験では、スタンドアロンの PyTorch との比較で 18% のパフォーマンス向上が確認され、損失曲線にも同様の傾向が確認されました。
図 2: ONNX Runtime を使用すると、スタンドアロンの PyTorch と比較してパフォーマンスが 18% 向上する。詳しい構成については以下を参照。

図 3: PyTorch での実験と、PyTorch および ONNX Runtime での実験のトレーニング損失を比較
一般に、プレビュー版の ONNX Runtime-ROCm ライブラリは、高速インターコネクトによる GPU 間通信を備えたマルチノード MI100 AMD GPU 構成で使用できます。これからの正式リリースに向け、より多くのトランスフォーマー モデルと ML/AI ワークロードで飛躍的なパフォーマンス向上が確認され、データセンター用途で高パフォーマンスを得るための有力な選択肢になることが期待されます。
AMD GPU 上の ONNX Runtime の利用を開始する
Python パッケージの場合
ROCm 対応の環境では、pip install を実行することで簡単に開始できます。
  1. pip install onnxruntime-training -f
Pytorch スクリプトの ONNX Runtime への接続では、以下によるモデルのラップのみ*必要です。
  1. model = ORTModule(model)
*ONNX へのエクスポートをサポートするため、PyTorch モデルには標準の PyTorch を使用する必要があります。
Dockerfile の場合
また、シンプルな Dockerfile を使用して、ROCm ライブラリ、Pytorch、ONNX Runtime の事前構成済みパッケージを取得することもできます。
現在、安定版の ONNX Runtime 1.8.1 リリースは、メイン pytorch/ort の ort/Dockerfile.ort-torch181-onnxruntime-stable-rocm4.2-ubuntu18.04 より入手できます。
詳しくは、pytorch/ort を参照してください。
ONNX Runtime の詳細情報
ROCm™ オープン ソフトウェア プラットフォームの詳細情報
構成とパフォーマンス ベンチマーク調査に関する情報
ハードウェア設定
  • サーバーの種類: HPE Apollo 6500 Gen10 Plus
  • 8 基の AMD Instinct MI100 に 2nd Gen Infinity Fabric Link (4 GPU/リング) および PCIe Gen4 (リング全体) を設定
  • GPU メモリ: 32 GB
  • メイン メモリ: 512 GB (HPE 32GB 2Rx4 PC4-3200AA-R)
  • SSD: HPE 1.92TB NVMe Read-Intensive Smart Carrier U.3 PE8010 SSD
  • イーサネット: Intel I350 1GbE 4-port BASE-T
Hugging Face の構成
リポジトリ
Dockerfile
Hugging Face GPT-2

python -m torch.distributed.launch –nproc_per_node 8 huggingface-transformers/examples/pytorch/language-modeling/run_clm.py –model_name_or_path gpt2 –dataset_name wikitext –dataset_config_name wikitext-2-raw-v1 –do_train –label_smoothing 0.1 –max_steps 260 –logging_steps 1 –overwrite_output_dir –output_dir /tmp/test-clm –per_device_train_batch_size 8 –fp16 –dataloader_num_workers 1 –ort –skip_memory_metrics

以下のフラグにより ONNX Runtime によるラップが有効化されます。
  1. –ort

執筆者について: Jeff Daily 氏は、AMD ディープ ラーニング ソフトウェア担当テクニカル スタッフ プリンシパル メンバーです。Weixing Zhang は、マイクロソフト AI フレームワーク担当プリンシパル ソフトウェア エンジニアです。Suffian Khan は、マイクロソフト AI フレームワーク担当ソフトウェア エンジニアです。

3 氏による投稿は彼ら独自の意見であり、AMD またはマイクロソフトの見解、戦略、意見を表明するものではありません。サードパーティ サイトへのリンクは利便性のために提供するものであり、別途明示されている場合を除き、AMD にもマイクロソフトにも、リンク先サイトの内容に関する責任やそれらを推奨する意図はありません。

< 前の記事

> 次の記事

トップに戻る