Rescaleでの深層学習

ディープラーニングは、多数のパラメータを持つ予測モデルに焦点を当てた機械学習のサブフィールドであり、通常、層状の計算グラフとして構成されている。多くの特徴を持つサンプルを含む大規模なデータセットに適したモデルとして急速に普及しつつある。

Rescaleは、クラウド上で深層学習モデルをトレーニングするためのGPUベースのHPCノードとクラスターを提供します。Rescaleは、モデルのバッチトレーニングだけでなく、Rescale Desktopsによるインタラクティブなデータ解析にも対応しています。GPUは、低価格の前世代K80から、NVLinkインターコネクトを搭載した最新のマルチGPU P100まで、さまざまな構成が用意されています。クラスターは、最も一般的なディープラーニングフレームワークから選択して事前に設定することができます。

このページでは、4つの異なるアプリケーションのための異なるRescaleジョブの例を紹介します。インポートジョブセットアップボタンをクリックすると、サンプルジョブをあなたのアカウントにクローンし、送信できます。ジョブ結果の取得]ボタンをクリックすると、完了した例のセットアップと結果を確認できます。

ベーシックジョブの設定と投入方法については、こちらのチュートリアルをご参照ください。

デスクトップセッションの設定と起動方法の詳細については、こちらのチュートリアルを参照してください。

対応するフレームワークとアプリケーション

TensorFlowは、データフローグラフ上で高性能な計算を行うための、オープンソースのC++とPythonのフレームワークとして人気があります。一般的には、ディープニューラルネットワークモデルを学習し、それを用いて推論を行うために使用されます。

RescaleのNVLinked P100システム(Rescale Amethyst)と高性能な深層学習サーバDGX-1を比較したベンチマーク結果を紹介します。RescaleはハイエンドのオンプレミスGPUサーバーに匹敵する性能を実現できることがわかります。

TensorFlow Amethyst InceptionV3 Benchmark Results

MNISTソフトマックス回帰の例題

最初の例は、古典的なMNIST手書き数字データセットで分類モデルを学習するものである。ここでは、単純なソフトマックス回帰モデルを学習する。入力学習スクリプトはここにある。

Inception V3 の例題

2つ目の例は、Tensorflowの画像認識モデル「Inception V3」です。このジョブは、4台のP100を使用した上表のベンチマーク結果に相当するものです。

Kerasは、TensorFlow、CNTK、Theanoの上に構築された高水準のニューラルネットワークPythonフレームワークです。特に畳み込みニューラルネットワークとリカレントニューラルネットワークのための高次プリミティブをサポートしています。

ここでは、古典的なMNIST手書き数字データセットで分類モデルを学習する例を示します。この入力学習スクリプトを用いて、単純な多層パーセプトロンモデルを学習させます。

PyTorchは、深層学習フレームワークTorchのPython移植版です。PyTorchは、動的なニューラルネットワークの構築や強化学習のための優れたサポートで知られています。

超解像の例題

最初の例は、学習したモデルを用いて、ノイズを最小限に抑えながら画像を拡大する「超解像」を行うものです。

オリジナル画像

超解像画像Scaled super resolution image

DCGAN 例題

次に、入力された学習画像に類似した新しいリアルな偽画像を生成する、深層畳み込み生成逆説ネットワーク(DCGAN)の学習例を紹介します。この例は、Rescale社のNVLink接続P100システム「Amethyst」を用いて、LSUN bedroom image datasetで学習させたものです。

オリジナル画像
DCGAN synthesized fake image

合成されたフェイク画像

LSTM DOE 例題

これまでの例では、モデルを構築するユーザが選択したパラメータのセットで、タスクに対する単一のモデルをトレーニングすることに重点を置いてきました。今回の例は、1つまたは複数のパラメータに対する感度分析である実験計画法(DOE)です。ここでは、Rescale DOEフレームワークを使用して、モデルを定義するハイパーパラメータをランダムにサンプリングし、多数のモデルを構築する例を示します。この例では、単語レベルのモデリングを行うためにLSTMモデルを構築しています。

今回は、以下のLSTMモデルパラメータのモンテカルロサンプリングを行っています。


LSTM DOE Parallel Settings

embed _size と n_hidden パラメータは、ネットワークに含まれるノードの数に影響を与える。dropout パラメータは、入力データへのオーバーフィットを制御するために使用される。最後に、batch_sizeは一度に学習する例数を決定する。

LSTM DOE Chart Results

Singularityコンテナは、アプリケーションをパッケージングし、様々なホストシステム上で再現性高く実行するためのツールです。SingularityはほとんどのDockerコンテナを問題なくインポートでき、管理者権限なしで実行できるユーザーアプリケーションとして簡単にデプロイすることができます。

バージョン2.3では、SingularityはCUDAアプリケーションを実行するGPUも使用したコンテナの実行をサポートしており、パッケージ化された深層学習ジョブの実行に有用な選択肢となっています。


Singularity Software Settings

上記のコマンドラインの「–nv」フラグは、ホストGPUインターフェースをコンテナに渡すようSingularityに指示し、内部でCUDAアプリケーションを実行できるようにするものである。この例では、TensorFlow CNNベンチマークを1つまたは複数のGPU上のコンテナで実行します。