Alibaba Cloudが2018 DAWNBenchでダブルチャンピオンを獲得

皆さん、新年明けましておめでとうございます。CJNANです。

年末年始にノンビリしながら、懐旧の気持ちになって、昔集めたNIPS論文を巡ったりしていた中で、偶然DAWNBenchコンペの最新ランキングを見たら、なんとこれを発見!

Submitは確かに2018年12月25日のクリスマス、スタンフォード大学から2018年DAWNBench成績を発表しましたが、Alibaba CloudがDAWNBenchのImageNetのInference LatencyとInference Costでダブルチャンピオンを取りましたね。めでたしめでたし!機械翻訳や音声系コンペでのチャンピオンは何回も実績ありましたが、画像系のコンペでは、確かに珍しい成績ですね。今年のDAWNBenchのランカーはほぼ米国と中国、やはり深層学習は米中がほぼ制圧でした。

DAWNBenchって何?

こちら公式ホームページ。 まずは、英語が大丈夫な方は、下記の論文を読んでください。

https://cs.stanford.edu/~deepakn/assets/papers/dawnbench-sosp17.pdf

ImageNetやCIFARなどのコンペはおもに精度に注目し、なるべく高い推論結果を出せるためのコンペです。参加者はあくまでも「精度」のみ、それに至るまでのコストと汎用性、実用性には考えなくてよかったです。

逆にDAWNBenchは一定の精度を達成するのに、どれくらい時間/コストがかかるかを検証するコンペになります。このGPU、このライブラリ(TensorFlowなど)の実装でこれくらい時間がかかる、というように、モデルだけでなくそれを走らせるハードまで含めたEnd to Endのコストを検証するのにフォーカスしています。

DAWNBenchは2017年NIPSにスタンフォード大学からプロジェクトを企画しまし、現在データセットは画像認識用のImageNetとCIFAR10、画像QA用のSQuADがあり、各セットに学習時間とコスト、推論時間とコスト、の4つのコンペセッションがあります。下に幾つか、Benchmarkに乗った資料を共有します。

1.Batch sizeの影響

当たり前に、サイズが小さいほど収束が良く、大きいほど計算速度が速いというトレードオフですね。(CIFAR10/ResNet56)。

2. optimizerの影響

収束のSGDと速度のAdam(CIFAR10/ResNet56)、SGDの方が収束良いが、Adamの方が精度早く安定する

3. ハードウェアと実装ライブラリによる影響

個人の経験になりますが、CPUではTensorFlowの方が早いが、GPUではPyTorchの方が早い傾向ですね。でも使いやすさとしては、TensofFlowの方が好みですね。

今年の結果はどうなってるの

今回DAWNBenchに参加したのは、Alibaba CloudのPerseusアーキテクチャ(GPU加速プラットフォーム)を開発するチームでした。結果からみますと、今回AlibabaチームはImageNetのInference LatencyとInference Cost、2つのセッションに参加しました。ecs.gn5i-c8g1.2xlarge(NVIDIA Tesla P4 GPU)のインスタンスを利用して、Inference Latencyが4.218ms(2位の2.36倍)、Inference costが 0.00000154ドル(2位より6.1%安い)の成績を出しました。

Inference Latency:ImageNetの50000枚画像に対して、推論を実行し、Top5の精度が93%以上を確保しづつ、かつ一枚の処理時間が短いほど、ランクが高いコンペです。Alibabaチームは4.218msで一位。

Inference Cost:一枚ずつ処理し、かつ5万枚を完成するのにかかる平均コスト(お金)が安いほど、ランクが高いコンペです。こちらもAlibabaチームは0.00000154ドルで一位。

パフォーマンスを維持する一方、コストを限界まで下げるのはこのコンペのポイントですが、Alibabaチームは一体どんな工夫をしたのでしょうか。

Alibaba Cloudが貢献したこと

さっき言ったように、このコンペはパフォーマンスとコストのバランスの戦いになりますね。そこでAlibabaが選んだOPT(最適化)道は、この3つ:

  1. Deep Learningモデルの選択
  2. 8bit Quantification
  3. Alibaba CloudのGPUインスタンスの選択。

1,Deep Learningモデルの選択

Alibaba Cloudがコンペに参加する前には、一位はFacebookのResnet50/AWS EC2[c5.18xlarge]でLatency 9.96ms/Cost 1.64E-06ドルでした。ここで、ResNet50 v2と略します。詳細はこちらの論文をご覧ください。

“Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour”

ResNet50 v2はオリジンのResNet50 v1と比べて、学習の収束が早くなりましたが、学習演算が12%ほど、推論演算が6%以上上がることが判明されましたので、Alibabaチームが選んだのはv2ベースの開発ではなく、演算消費量がもっと低いv1のベースを選びました。しかし、ResNet50 v1のままだと、ImageNetで安定したTop5 93%の精度に満足できなかったです。Inference Latency/Costコンペの前提条件は93%の精度でのパフォーマンスになりますので、ResNet50 v1が安定な精度を出すためには、学習レートを早期に高い、そしてIterationが増えると、学習レートが下がるように設定することで、比較的安定な精度を出せることができました。

↑こんな感じです。

2,8bit Quantification(低ビット量子化)

低ビット量子化は深層学習のパフォーマンスを上げるためによく使われる手段です。低ビット量子化によって、もっと軽い、速いモデルを持つことで、モバイル端末やエッジ端末でも実用できるようになります。しかし低ビット量子化によって、モデルの表現力が激減し、結果的に精度が下がるリスクが同時に存在します。

Alibabaチームは今後一般ユーザにも使えるようになるために、独自プラットフォームではなく、TensorFlowを選び、この上で、コードを修正し、8bit Quantificationを実現しました。

  1. TensorFlow モデルからTensorFlow RTの8bitモデルに量子化
  2. 各レイアのカルバック・ライブラー情報量のダイナミック変動値の調整
  3. 調整されたモデルの精度チェックとInference側とのマッチングテストなど

上記の最適化はResNet、Inceptionなどに適応できるように、Alibaba CloudのGPU加速プラットフォーム(Perseus)に反映され、ECSのイメージとしてマーケットプレイスに出ていますので、もし今後日本に展開できたら、ご興味ある方はぜひ試してください。

3,Alibaba CloudのGPUインスタンスの選択

8bit演算をするため、コンペではNVIDIA Tesla P4 GPUを搭載した、Alibaba Cloud ECS(ecs.gn5i-c8g1.2xlarge)インスタンスをつかいました。下記に今回コンペに使ったECSインスタンスのレイテンシと精度の結果になります。インスタンスコストはオフィシャルサイトから確認できますので、Inference Costの説明は割愛させていただきます。

日本にはgn5iシリーズはまだリリースしていませんでしたが、NVIDIAのP100シリーズが搭載したgn5シリーズがありますので、ご興味ある方はこちらもぜひ試してください。

最後に

以上はAlibaba CloudのDAWNBenchでの話でした。画像認識系以外にも、最近QAや音声、翻訳系でAlibaba Cloudの最先端研究が発表されした。ちなみにAI研究界のメジャー学会AAAIで今年に11枚収録したようですね。(自分もここに出すために、レビュアにさんざん虐められた時期があったな〜w)面白い内容が会ったら、また皆さんにご紹介しますので、ぜひ楽しんでください。