Japan Azure NV シリーズ ローンチイベントに参加しました

#Azure#Deep Learning#GPU#MicroSoft#NVIDIA#機械学習

概要

先日からAzureのGPUインスタンスを利用して画像認識を行なっています。 http://roy29fuku.com/azure-tensorflow-keras%E3%81%A7%E7%94%BB%E5%83%8F%E8%AA%8D%E8%AD%98%E3%82%84%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F/ ただ上記記事でも触れましたが、「機械学習にはNVシリーズではなくてNCシリーズ推奨」みたいな情報があって、少しモヤモヤしていました。 果たしてこのままNVシリーズを使って良いのか。。。 そんな感じで不安になっていたとこにNVIDIA主催の「NV シリーズ ローンチイベント」を知り、ちょうど疑問に思っていたことを聞けたらなとの思いで参加しました。 イベント詳細についてはconnpassのリンクを貼っておきます。 Japan Azure NV シリーズ ローンチイベント GPUについても全然理解していないことがわかったので、そこらへんもまとめます。 先に結論を述べると、「(ものすごく複雑でない限り)NVシリーズもディープラーニングに利用できる。」とのことでした。 本記事では特にエヌビディア合同会社 佐々木様の講演「NV でディープラーニング! 」についてまとめます。

基本知識

僕自身諸々の基礎的な知識を知らずに使い始めてしまっていたので、そういったことも整理してくださりとても勉強になりました。備忘録として残しておきます。

そもそもGPUって何か

GPU: Graphics Processing Unitはその名の通り、画像処理を行うのに特化したコンピュータの部品です。 CPUはよくコンピュータの頭脳と表現されますよね。 CPUがシーケンシャルな処理を得意とするのに対して、GPUは並列処理を得意とします。 画像や3Dデータなど同時に計算するべきことがたくさんあるものを快適に扱うために、たくさんコアを積んだGPUが開発されたという感じでしょうか。   僕がGPUについて初めて知ったのは、多分シヴィライゼーション5というシミュレーションゲームをSteamで購入した際だった気がします。 手持ちのノートPCでは全然動かなくて、推奨環境とか調べてるうちに「なんかグラフィックたくさん使う処理にはGPUだかグラボだかよくわからんけどそういうのが要る」って認識をした記憶があります。 名前も相まってグラフィックの印象が強すぎたため、機械学習の文脈でGPUが出てくることが不可解でした。 GPUの本質は並列処理にあるということが以降大事になるので覚えておきます。

GPGPUとは何か

さて、名付けられた通りGPUは主に画像処理で活躍していましたが、並列処理ってもっといろんなことに使えるよねって考え方が生まれてきました。 それがGPGPU: General-purpose computing on graphics processing unitsという技術です。和訳すると「GPUによる汎用計算」となります。 例えば、まさに機械学習の領域などで力を発揮します。 機械学習では大量のデータを扱います。でも、よくよく分解すれば一つ一つの仕事は単純な計算でしかないわけです。 並列処理で複数のコアに仕事を振り分けたらその分早く済むよねってことで機械学習にGPUが使われます。というか業務でやってるところはGPU必須なんじゃないでしょうか。     まとめると、 並列処理が得意な部品として生まれ、画像処理で主に使われることを想定されてGPUという名前がつけられました。 そして再びその本質的な部分に目が向けられGPGPUと、GPU本来の機能を様々な領域で応用しよう、ということです。 なんか、遠回り感がしますね。。。 トゲアリトゲナシトゲトゲみたいです。   さて、そうなると本来の画像処理に特化したGPUを開発する本流から別のこと、例えば計算に特化したGPUを開発する支流が生まれました。 そして前者をGRID GPU、後者をHPC GPUと呼称するようになりました。   以上GPU、GPGPUに関して基礎知識でした。名称なんかはNVIDIAで使われているものなので、もしかしたらもっと汎用的な語句があるかもしれません。  


NVIDIA

先日日経にて「謎の半導体メーカー」と称されたことで話題になりました。 20年以上前から存在する半導体メーカーで、2年前まで全くITやらパソコンやらに興味のなかった僕でも名前だけは知っているぐらいの大手老舗です。 まぁGPUについて調べるまで名前しか知らなかったんですが。   今回のイベント「Japan Azure NV シリーズ ローンチイベント」は、 AzureのVirtual Machineの東日本リージョンにてNVIDIAのGPUを使ったNVシリーズが使えるようになったことのローンチイベントです。   で、このNVシリーズとかNCシリーズとかもややこしいので、その前にNVIDIAのGPU開発の歴史をまとめます。

GPU開発の歴史 in NVIDIA

NVIDIAのGPU製品は以下のような時系列で世代が分かれます。 引用元: GeForce GTX 1080を6月に発表か NVIDIA GPUロードマップ それぞれ物理学者の名を冠しています。   世代とは別軸で、製品の切り分けもあります。 ここではNVIDIAが昔から開発していた画像や3Dに特化したGeForceやQuadroと、GPGPUを取り入れたTeslaに大まかに分けます。   ざっくり、世代と製品グループの2軸で商品を表現できることになります。 Tesla K80はKepler世代のGPUということになります。   TeslaはGPGPUということですが、世代によってHPCが得意だったり、GRIDが得意だったりするみたいです。

Azure NCシリーズ & NVシリーズ

話をAzureに戻します。 AzureのVirtual Machineではコア数やメモリ、ディスク容量からインスタンスを選ぶことができます。 このAzure VMの中で、NVIDIAのGPUを利用しているものがNシリーズです。   Nシリーズはさらに細かく区分けすると、

  • Tesla K80を利用するNCシリーズ
  • Tesla M60を利用するNVシリーズ

になります。   先にTeslaは世代によって得意なことが違うと書きましたが、 KeplerがHPCが得意で、MaxwellがGRIDが得意となっているとのことです。   このことから、「NCシリーズが機械学習に適している。NVシリーズは機械学習にお勧めできない」となったのだと思われます。

Regarding the question of running GPU compute for deep learning on NV-Series, the GPU team has indicated that is not recommended. Bottom line is: Big GPU Computes (like deep learning) should only be done on NC-Series. NV is for visualization and graphics. See this blog for more details on NV vs NC series

引用元: Azure GPU Tensorflow Step-by-Step Setup   いやぁ、ここまで紐解くのに長かった。。   気を取り直して。 これまでNシリーズは欧米のリージョンでしか利用できませんでした。 今回のイベントは、NVシリーズが東日本でも利用できるようになったのでそれを記念してのものでした。 道理で調べても情報がなかなか出ないわけですね。 意図せず、ローンチイベントの前に一通り触ることになっていたようです。   こうして、GPUは高価ですが、クラウドを利用することで初学者が気軽に機械学習に手を出すことが可能になりました(AzureのVMは1分単位の課金)。 めでたし。

NVシリーズは機械学習に使えるのか

このことを質問するためだけにイベントに参加したと言っても過言ではないのですが、聞くまでもなく公演中に説明してくださいました。 実際にNVシリーズを使ってディープラーニングを実装した結果を見せていただきました。 驚きだったのは、HPC特化のTesla K80を使ったNCよりも早くなったことでした。   ものすごく複雑な計算処理を要求するものはNVシリーズで対応できないかもしれないが、 ちょっとディープラーニングを試してみたり、研究開発に使う分には問題ないとの言をいただきました。   初歩的なことは既に試してありますが、 http://roy29fuku.com/azure-tensorflow-keras%E3%81%A7%E7%94%BB%E5%83%8F%E8%AA%8D%E8%AD%98%E3%82%84%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F/ これで安心してこれからもNVシリーズを使って機械学習に没頭できます。

Nシリーズのこれから

NCシリーズ、NVシリーズについて理解したところですが、 実は既に次のNシリーズの到来が決定しているらしいです。

  • Tesla P100を利用するNCv2シリーズ
  • Tesla P40を利用するNDシリーズ

  Kepler、Maxwellに続くPascal世代のGPUを使うのでより性能が高まることに期待できますね。   最後に、東日本リージョンではNCシリーズは提供されていません。またNVシリーズの提供も欧米に遅れての形となりました。 佐々木さんの言ですが。 是非是非みなさんNシリーズを使って、次のNCv2シリーズやNDシリーズが日本リージョンでも早く使えるように需要をアピールしましょう、とのことでした。

参考

ディープラーニングに必須のGPUって何なの?NVIDIAでいろいろ聞いてきた CPUとGPUの違い、例えていえば? Azure N シリーズの一般提供を 12 月 1 日から開始 Azure GPU Tensorflow Step-by-Step Setup Azure VM、GPU能力を活かした「ND」「NCv2」シリーズを追加