Amazon Web Services ブログ

Amazon EC2でのDeep Learningのためのダイナミックトレーニングの紹介

本日(2018/11/27)、Deep Learningモデルのためのダイナミックトレーニング(Dynamic Training: DT)を発表することに興奮しています。DTを使用すると、Deep Learningの実務者は、クラウドの弾力性と規模の経済性を活用して、モデルトレーニングのコストと時間を削減できます。DTの最初のリファレンス実装は、Apache MXNetに基づいており、オープンソースで Dynamic Training with Apache MXNet に公開されています。このブログ記事は、DTの概念、実現したトレーニングの結果やトレーニングへの活用方法を紹介します。

Deep Learningモデルの分散トレーニング

ニューラルネットワークのトレーニングは、そのネットワークにトレーニングデータのバッチが供給され、損失と勾配が計算され、十分な精度が達成されるまでモデルパラメータが繰り返し更新される反復プロセスです。最先端のDeep Learningモデルでは、モデルパラメータの数とトレーニングサンプルの数が非常に大きくなるため、このプロセスは非常に計算量が多くなります。例えば、現代の画像分類モデルであるResNet-50 [1]には約2,500万のパラメータが含まれており、ResNet-50などのモデルをトレーニングするためによく使用されるIMAGENETラベル付きデータセットには1,400万枚を超える画像が含まれています。産業のデータセットはしばしば10倍も大きくなります。実際、単一のホスト上のIMAGENETデータセットでResNet-50などのネットワークをトレーニングするには数日かかることがあります。深いネットワークのトレーニング時間を短縮するために、実務者は通常、分散トレーニングを使用します。分散トレーニングは、トレーニングジョブを複数のホストに分散するため、トレーニング時間全体を短縮します。分散マルチホストトレーニングは、Apache MXNetやTensorFlowなどの最新のDeep Learningフレームワークでサポートされています。SONYのチームは、2176 Nvidia Tesla V100 GPUを使用して224秒でResNet50をIMAGENETでトレーニングしたことを最近実証しました。

ダイナミックトレーニングの紹介

これまでの分散型トレーニングでは、トレーニングプロセス全体を通してトレーニングジョブに活発に参加しているホストの数は固定されている必要がありました。DTでは、この要件が緩和されます。つまり、トレーニングクラスタ内のホストの数は、トレーニングプロセス全体を通じて変動し、拡大し、縮小することが可能です。DTのこの緩和した特性により、クラウドの主な利点である計算能力の弾力性とコスト削減の恩恵を、トレーニングジョブは受けることができます。AWSクラウドはコンピューティングなどの柔軟で低コストのITリソースへの迅速なアクセスを提供し、Amazon Elastic Compute Cloud(EC2)スポットインスタンスなどの製品を通じて、クラウドの膨大な規模の経済から利益を得ることができます。スポットインスタンスは、標準のオンデマンドインスタンスに比べて、90パーセントまでの割引価格で、AWSクラウド内の予備計算能力を提供します。

DTを使用すると、コンピューティングを中心としたトレーニングジョブを行っている実務者は、トレーニングジョブを停止することなく、可能な場合はスポットインスタンスを取得し、中断した場合に解放することにより、実務者は、モデルトレーニングコストを大幅に削減し、トレーニングクラスタのサイズを可能な限り拡大することでトレーニング時間を短縮することができます。

さらに、DTにより、実務者は組織のAmazon EC2リザーブドインスタンスのプールをより有効に活用することができます。実務者は、リザーブドインスタンスを使用可能な場合はトレーニングジョブに引き出し、他の重要なアプリケーションにインスタンスが必要な場合はインスタンスをリザーブドインスタンスプールに戻し、トレーニングジョブを中断することなく継続できます。次の図は、リザーブドインスタンスプールを使用するDTプロセスを示しています。

Apache MXNetを使用したResNet-50のダイナミックトレーニング

さあ、結果を見てみましょう。Apache MXNetによるダイナミックトレーニングの実装により、IMAGENETデータセットで、画像分類の深い畳み込みモデルであるResNet-50 v1 [1]を精度を損なうことなくトレーニングすることができました。弾力性のあるトレーニングジョブはP3.16xlargeインスタンスのプールを使用しました。各インスタンスは8つのTesla V100 GPUで構成されていました。90エポックのトレーニングプロセスを通して、トレーニングクラスタ内のホストの数は、8 GPUと96 GPUの間で上下に変動しました。

トレーニングエポックでホストの数が変更される可能性があるため、DTはバッチサイズの合計を固定し、特定のエポックに参加しているホストの数に基づいてGPUあたりのミニバッチサイズを動的に調整します。次の図は、DTプロセスがダイナミックトレーニングクラスタをどのように活用し、ベースラインの固定クラスタートレーニングと比較してどのように実行されたかを示しています。両方のトレーニングセッションは、90番目のエポックで同じターゲットの検証精度に収束することに注意してください。

この例では、実行した他の実験と並んで、DTがトレーニングコストを15〜50%削減し、トレーニング時間を15〜30%短縮します。実際の時間とコストの削減は、モデルのアーキテクチャー、トレーニングクラスタの設定、および使用されるインスタンスのタイプによって異なるため、さまざまです。

「私たちは、MXNetで開発されたコンピュータビジョンモデルを実行して、waffle friesの鮮度を測定しています。ニューラルネットワークのトレーニング時間を短縮するために、分散トレーニングを使用したいと考えていました」とChick-Fil-Aの経営コンサルタント、Jay Duff氏は述べています。AWS上のApache MXNetを使用したダイナミックトレーニングにより、EC2スポットおよびリザーブドインスタンスをトレーニングジョブに弾力的に追加することで、AWSインフラストラクチャをより有効に活用できます。トレーニングコストを最大20%削減することを期待しています。

ダイナミックトレーニングの始め方

Apache MXNetでDTを使い始めるには、GitHubリポジトリにアクセスし、その例に従ってください。 現在の実装ではApache MXNetとEC2リザーブドインスタンスのみがサポートされています。 私たちは、今後、スポットインスタンスのサポートと、Deep Learningフレームワークの追加を計画しています。

私たちは、あなたのモデルをトレーニングするためにDTを使用して、あなたのフィードバックや経験を聞くことを楽しみにしています。GitHubリポジトリでの問題や寄稿へのあなたのフィードバックを歓迎します!

[1] He, Kaiming, et al. “Deep residual learning for image recognition.” Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.

著者について

Vikas Kumar – VikasはAWS Deep Learningのシニアソフトウェアエンジニアです。スケーラブルなDeep Learningシステムを構築することに重点を置いています。それ以前は、マイクロサービスやデータベースのサービスディスカバリーシステムの構築に携わってきました。彼は暇な時間に読書や音楽を楽しんでいます。

 

 

 

Haibin Lin – HaibinはAWS Deep Learningのソフトウェア開発エンジニアです。分散最適化と自然言語処理にフォーカスしています。彼は暇な時間にハイキングや旅行を楽しんでいます。

 

 

 

 

Andrea Olgiati – AndreaはAWS Deep Learningの主任エンジニアであり、スケーラブルな機械学習システムの構築に重点を置いています。それ以前は、データベース、コンパイラ、マイクロチップを扱っていました。彼は暇な時間にピアノを弾くことと、重いものを持ち上げることを楽しんでいます。

 

 

 

Mu Li – Mu LiはAWSでの機械学習のプリンシパルサイエンティストです。AWSに入社する前は、AIのスタートアップであるMarianas LabsのCTOでした。彼はまた、Baiduのディープ・ラーニング研究所でプリンシパルリサーチアーキテクトを務めました。彼はカーネギーメロン大学でコンピュータサイエンスの博士号を取得しました。彼は家族と過ごす時間を楽しんでいます。

 

 

Hagay Lupesko – HagayはAWS Deep Learningのエンジニアリングリーダーです。彼は、開発者や科学者がインテリジェントなアプリケーションを構築できるようにするDeep Learningシステムの構築に重点を置いています。彼は暇な時間に、読書、ハイキング、家族との時間を楽しんでいます。

 

 

 

この記事はSA桶谷が翻訳しました。原文はこちら