Amazon Web Services ブログ

AWS 深層学習 AMI が、最適化された TensorFlow 1.9 および Keras 2 サポートの Apache MXNet 1.2 で、Amazon EC2 インスタンスでの深層学習を高速化

Ubuntu および Amazon Linux 用の AWS Deep Learning AMI には、ソースから直接構築され、Amazon EC2 インスタンス全体で高性能のトレーニングが可能となるように微調整されている、最適化された TensorFlow 1.9 のカスタムビルドが付属しています。さらに、この AMI には、パフォーマンスとユーザビリティが何点か改善されている最新の Apache MXNet 1.2、高性能のマルチ GPU トレーニングをサポートする新しい Keras 2-MXNet バックエンド、MXNet モデルのトレーニング向けにデバッグと可視化が改善された新しい MXBoard ツールが搭載されています。

最適化された TensorFlow 1.9 と Horovod によるより高速なトレーニング

Amazon Machine Images (AMI) には、ソースから直接構築され、インテル Xeon Platinum プロセッサ搭載の Amazon EC2 C5 インスタンスでのトレーニングを高速化できる、コンピューティングに最適化された TensorFlow 1.9 のカスタムビルドが付属しています。C5.18xlarge インスタンスタイプ上で、合成 ImageNet データセットに対し、当社の TensorFlow 1.9 カスタムビルドを使用して ResNet-50 ベンチマークをトレーニングしたところ、元の TensorFlow 1.9 バイナリの 7 倍の速度を達成できました。また、この AMI には NVIDIA CUDA 9 および cuDNN 7 で設定された TensorFlow 1.9 の GPU 最適化ビルドも追加され、Volta V100 GPU 搭載の Amazon EC2 P3 インスタンスでの混合精度トレーニングを活用することができます。ディープラーニング AMI は、初めて TensorFlow 仮想環境を有効にするときに、選択した EC2 インスタンスに合わせて最適化された TensorFlow の高性能ビルドを自動的にデプロイします。

TensorFlow トレーニングを単一の GPU から複数の GPU に拡張したい開発者にとっては、AWS 深層学習 AMI に、Amazon EC2 P3 インスタンスで構成される分散型トレーニングクラスタートポロジを効率的に活用できるように完全に最適化された Horovod が付属しています。Horovod は、Message Passing Interface (MPI) モデルに基づいたオープンソースの分散トレーニングフレームワークです。これは、高性能分散コンピューティング環境において、ノード間でメッセージを渡したり通信を管理するための標準です。AWS 深層学習 AMI で Horovod を最適化するため、それぞれの物理 CPU ソケットを対応する GPU に最も近い Amazon EC2 P3 クラスターに配置するように MPI ランクの配置パターンを微調整することで、頻繁な I/O およびメモリコピー操作によるオーバーヘッドを最小限に抑えました。さらに、分散トレーニング中に個々のノードによって生成されたテンソルを組み合わせる際に使用される allreduce 操作を最適化しました。テンソルのバッチを減らすために使用されるメモリバッファのサイズを制御する fusion threshold パラメーターを微調整しました。バッファサイズが小さいと、1 回のバッチで組み合わせることができる削減操作の数が制限されますが、バッファサイズが大きいと追加の待機時間が発生する可能性があります。AWS 深層学習 AMI で EC2 P3 に最適化された Horovod を使用して、8 つの Amazon EC2 P3.16xlarge インスタンス (64 Volta V100 GPU) によるクラスターで ImageNet データセットを使用して ResNet-50 ネットワークをトレーニングする ResNet-50 分散トレーニングスクリプトを実行することができます。

パフォーマンスおよび Apache MXNet 1.2 との相互運用性の強化

深層学習 AMI には、使いやすさ、パフォーマンスの向上、相互運用性の向上をもたらす最新リリースの Apache MXNet 1.2 が付属しています。MXNet 1.2 には、MXNet でトレーニングされた深層学習モデルで予測を実行するための、スレッドセーフな高水準 API を提供する新しいスカラベースの推論 API が追加されています。MXNet 1.2 での新しいインテル MKL-DNN との統合により、コンボリューション、デコンボリューション、コンピューティングに最適化された C5 インスタンスのプールなどのニューラルネットワーク演算が高速化されます。拡張 FP16 のサポートにより、NVIDIA Volta V100 GPU 搭載の Amazon EC2 P3 インスタンスでの Tensor Core の混合精度トレーニングが高速化されます。さらに、MXNet 1.2 には、ONNX モデルを MXNet シンボリックインターフェイスに簡単にインポートするための新しい Open Neural Network Exchange Format (ONNX) モジュールが付属しています。

Keras 2 向け MXNet バックエンドによる高性能マルチ GPU トレーニング

深層学習 AMI には、新しい Keras-MXNet 深層学習バックエンドがプリインストールされています。Keras は、Python で書かれた高水準のニューラルネットワーク API であり、畳み込みニューラルネットワーク (CNN) や再帰型ニューラルネットワーク (RNN) の迅速で簡単なプロトタイプで人気があります。Keras 開発者は、CNN や RNN の分散トレーニングのバックエンドとして、高性能な MXNet 深層学習エンジンを使用できるようになりました。開発者は、Keras での設計、Keras-MXNet によるトレーニング、本番環境での推論の実行が大規模な MXNet で可能です。

Keras MXNet ベンチマークを使用して、複数の GPU でのより高速のトレーニングと効率的なスケーリングをテストすることができます。p3.16xlarge EC2 インスタンスで ImageNet データセットを使用して ResNet50 ネットワークをトレーニングすると、スループットが 1 GPU から 8 GPU へとほぼリニアにスケーリングされました。ステップバイステップガイドに従って、Keras2-MXNet を使い始めてください 

MXBoard によるデバッグサポートの改善

AMI には、TensorBoard の可視化のために MXNet データを記録するための API を提供する Python パッケージである MXBoard がプリインストールされています。MXBoard を使用すると、ヒストグラム、畳み込みフィルタ、ビジュアル埋め込みなど、さまざまな可視化のサポートによって、開発者は MXNet モデルのトレーニングを簡単にデバッグし視覚化することができます。ステップバイステップガイドに従って、MXBoard を使い始めてください

深層学習 AMI の開始方法

AWS 深層学習 AMI のご利用を開始するには、スタートチュートリアル、および開発者ガイドを参考にしてください。他にもチュートリアル、リソース、リリースノートがあります。最新の AMI が AWS Marketplace で利用可能になりました。また、フォーラムをサブスクライブして、新しい開始の通知を受け取ったり、質問を投稿したりすることもできます。


今回のブログの投稿者について

Sumit Thakur は AWS 深層学習のシニアプロダクトマネージャーです。特に深層学習 AMI のエンジンを使いやすくすることに焦点を当て、ユーザーがクラウドでディープラーニングを開始しやすくする製品を担当しています。自然に触れたり、SF の TV シリーズ鑑賞が趣味です。