DGX-1@AI・人工知能EXPO
弊社にてDGX-2を取り扱うことになりました。それに伴い、弊社でDGX-1を購入しました。AI・人工知能EXPOでも展示してました(動作させるのに200V環境が必要なので、もちろん静態展示です)。弊社のブースでは、DGX-1の他に、OpenPoseなどを展示していました。
弊社のブース来て下さった方々、本当にありがとうございました。
MLPerf
せっかくDGX-1を手に入れたので、MLPerfというベンチマークを行うことにしました。
MLPerfとは、既定のモデルを、既定の性能まで、既定の方法で学習して、その時間を競うベンチマークです。機械学習の中でも、分散学習は、計算機の規模を大きくするとともに、バッチサイズを上げなければ、処理速度が上がらないのですが、バッチサイズを上げると、学習が不安定になる傾向があり、肝心のモデルの性能向上に結び付きません。そういった背景もあり、機械学習における計算性能に関して、単なる計算機の処理速度のみを誇示するのは、いかがなものかと、ということで、MLPerfは創られました。
MLPerfは、現在、v0.5.0(1回目)が終了しています。いつも計算規模の指標となる画像認識については、2017年にFacebookが出した論文を元にルールが作られているように見えます。この論文は、大きいバッチサイズにおいて、学習が安定するためには、バッチサイズを大きくした分、学習率も大きくすること、また、学習の始めは学習率を少しずつ上げていく、Warm-upを、5 epochs ほど導入することが、効果があるとしています。また、この方法で8kまでのバッチサイズで学習が安定したと報告されています。最近では、Preferred Networksが、学習中にOptimizerを変更することで、バッチサイズ32kまで学習を安定させたという発表がありました。
MLPerf v0.5.0 の画像認識におけるルールは、ざっくり言うと下記のような感じです。
- 画像データは、Imagenetのデータ
- モデルは、Resnet-50 v1.5
- 目標性能は、正答率74.9% (画像認識でよく使用するTop-5 正答率ではなく、Top-1正答率)
- ベンチマーク結果は5回試行し、最高値と最低値を除いた平均値を採用
- Optimizerは、SGD
- 学習率は、0.1または0.128 ただし、整数倍すること、Warm-up期間を設けること、段階的に下げることを許す。
- その他、損失関数を学習中に変えないなど、細かいルールがあります。
学習させてみた
MLPerfには、NVIDIAがベンチマークした環境が公開されているので、それを使用して試すことができます。MLPerfの説明が長くなりましたが、DGX-1を使って学習してみました。下はその時の様子です。
処理速度10,000 samples/sec という、Resnet-50では見たことない数値です。Imagenetのデータ(約120万の画像データ)を60 epochs (120万 × 60回)学習するのに2時間ちょっとでした(データのダウンロードの方が長かった。。。)
あとがき
4月から、持ち回りで書くことになり、私は1回目の投稿です。こんな粗末な文章を読んでいただき、有難うございます。ついでっぽくなりましたが、DGX-2 も、よろしくお願いします。