メイン コンテンツへスキップ 施設一覧 Saga Aomori Akita Yokote Sendai Fukushima Seaside Toranomon Ningyocho Hamamatsucho Shibuya Gumma-Takasaki Utsunomiya Niigata-Kamo Joetsu-Myoko Kanazawa Nagano Nagoya-Motoyama Yokkaichi (Temporary Closed) Fukui Ritsumeikan Nishi-Umeda Hiroshima Fukuoka Kagoshima Naha イベント / セミナー ブログ コンテンツ ポータル 外部サイトリンク 利用規約 Office Windows Surface Xbox セール サポート Windows アプリ OneDrive Outlook Skype から Teams への移行 OneNote アクセサリ Xbox ゲーム (ダウンロード) Windows ゲーム 映画とテレビ番組 Azure Dynamics 365 Microsoft 365 データ プラットフォーム 法人向け .NET Visual Studio Windows Server Microsoft 開発者 ドキュメント Microsoft Store Microsoft Rewards 無料ダウンロード & セキュリティ プリペイド カード サイトマップの表示
同僚と会話しながらデジタルタブレットを操作する男性
Microsoft Base ロゴ

技術ブログ

Azureに関する技術情報

PyTorch トレーニングを torch-ort で高速化する

2021.10.18 Open Source

Share this page on

本ポストは以下の記事の翻訳です。
2021 年 7 月 13 日

Natalie Kershaw

Senior Program Manager

PyTorch トレーニング スクリプトにシンプルな変更を加えるだけで、自由に選択したターゲット ハードウェア上で torch_ort.ORTModule を実行し、大規模な言語モデルのトレーニングを高速化できるようになりました。

ディープ ラーニング モデルのトレーニングに必要なコンピューティングおよびメモリ リソースが増え続ける中、本日マイクロソフトは torch_ort.ORTModule をリリースしました。これによって PyTorch モデルの分散トレーニングはさらに加速し、トレーニングに要する時間とリソースを削減できるようになります。また torch-ort は NVIDIA と AMD 両方の GPU に対応し、開発者に柔軟性を提供します。さらに、torch-ort パッケージを DeepSpeed などその他のディープ ラーニング オプティマイザーと組み合わせて使用することで、トレーニング タスクのパフォーマンスはさらに高まります。

https://github.com/pytorch/ort の torch-ort パッケージから提供される ORTModule クラスは、torch.nn.Module のシンプルなラッパーです。ORTModule は GPT や BERT などのトランスフォーマー モデルをサポートしますが、その他のモダリティのサポートにも今後対応していく予定です。現時点では、ターゲット タスクのラベル付きデータセットで多くの人気言語モデルを微調整したり、モデルの自己教師あり学習に特定のコーパスを追加したり、新しいモデルの事前トレーニングをゼロから実験したりすることができます。

パフォーマンス

マイクロソフトでは、社内の複数の大規模ワークロードで既に torch-ort を使用しています。さらに、最も広く使用されている Hugging Face モデルのいくつかに対する微調整をベンチマーク調査したところ、ORTModule 単体で最大 37%、DeepSpeed との組み合わせで最大 86% のスループット向上が確認されました。

これらの実験は、Azure の世界最高水準のインフラストラクチャ Azure ND A100 v4 で実行されました。さらに、マシン内部およびマシン間では、GPU 間の帯域幅が最適化されています。

上記のグラフは、トレーニング サンプルの毎秒スループットを示しています。実際のトレーニング ジョブに要する時間は、トレーニング サンプルの数および使用する CPU/GPU の種類に応じて変化します。ORTModule は、トレーニング処理を開始する前にモデルの最適化を 1 回だけ実行します。これは回避できないコストですが、実行全体を通して相殺されます。

また AskHereFirst では、ORTModule と DeepSpeed の組み合わせを使用して、カスタム自然言語タスクの 27 億パラメーター GPT-Neo モデルをトレーニングすることに成功しています。以前は、これほどの規模のモデルを、現存するハードウェア上でトレーニングするのは不可能でした。コロンビア大学の外部組織である AskHereFirst では、構造化データ ストア向けの強力な AI ベース自然言語クエリ ソリューションを運用しています。このソリューションを活用することで、金融、メディア、マーケティング、スポーツといった幅広い業界の検索処理が大幅に効率化されます。

「ORTModule と DeepSpeed を採用するまでは、私たちのカスタム自然言語タスク用に GPT-NEO をトレーニングすることは不可能でした。現在では、微調整された 27 億パラメーター GPT-NEO モデルを生成し、自然言語入力を構造化クエリにマッピングして、さまざまな用途に利用しています」—Vishal Misra 氏、コロンビア大学教授兼 AskHereFirst 創設者

ハードウェアの移植性

分散トレーニング ワークロードを実行するハードウェア プラットフォームには、さまざまな選択肢があります。torch_ort.ORTModule は NVIDIA と AMD の GPU で動作します。

マイクロソフトでは、CUDA 10.2 または CUDA 11.1 を使用して、NVIDIA 用 torch-ort パッケージをリリースしています。これを使用することで、Azure の NVIDIA GPU またはユーザーのオンプレミス環境の両方で PyTorch トレーニングの実行を高速化できます。

また AMD GPU 向けには、ROCm 4.2 を使用した torch-ort のプレビュー パッケージをリリースしています。

シンプルな開発者エクスペリエンス

ORTModule は簡単に使い始められます。torch-ort パッケージをダウンロード、インストールして、以下に示したコード サンプルに従って ORTModule でモデルをラップするだけです。

ORTModule で torch.nn.Module をラップする部分を除き、PyTorch トレーニング ループは変更されていません。

PyTorch トレーニング ループは変更されないため、torch.autocast や NVIDIA apex など、PyTorch エコシステムのその他のライブラリに ORTModule をシームレスに統合できます。

動作のメカニズム

最初の forward 呼び出しで、前方予測パス用および後方勾配計算パス用の 2 つの最適化済み計算グラフが生成されます。トレーニング ループのその他の部分はすべてネイティブの PyTorch により実行されます。カーネルの最適化、サブグラフ演算の融合、CPU と GPU 間におけるメモリ コピーの削減といった最適化がこれらのグラフで行われることで、高速化が実現されます。

詳細情報

ORTModule の技術に関する詳細情報についてはこちらで、マイクロソフトと AMD のパートナーシップについてはこちらでご確認いただけます。その他のドキュメント、サンプル、チームへのご連絡については、こちらをご覧ください。

トップに戻る
日本語 (日本)
プライバシーに関する選択のオプトアウト アイコン プライバシーに関する選択
コンシューマーの正常性のプライバシー Microsoft に問い合わせ プライバシー 特定商取引法に基づく表示 Cookie の管理 使用条件 商標 広告について