明田守正

Microsoft様からBizSpark Plusいただきました!

 昨年、「無言の圧力インターフェイス」という作品がMashup Awards 2016の「Microsoft Cognitive Servicesアプリ賞」 を受賞いたしましたが、その副賞としてMicrosoftさんからBizSpark Plusをいただくことができました!

 BizSparkとはMicrosoftさんが 提供しているスタートアップ向けの支援プログラムでMicrosoftのさまざまなソフトウェアや、クラウドサービスのMicrosoft Azureを1年間一定の範囲で利用できます。BizSpark Plusは、BizSparkに加えて、12万ドル分のMicrosoft Azureの利用クレジットを設定するものです。

 12万ドル...ご連絡いただいた際には数字の桁を認識するのに時間がかかりました。すごい価値の賞をいただきまして、日本マイクロソフトの久手堅様、津隈様、誠にありがとうございました!できる限り活用させていただきます!

AzureでGPGPUマシンの料金を見積もる

 クラウドサービスであるMicrosoft Azureは知っていましたが、利用料金がかさむのではないのか。。と思って手つかずでしたが、今回せっかくの利用枠をいただいたので調べてみました。基本的には従量課金で、料金計算ツールで見積もることができます。

 個人的にGPU(グラフィックス用プロセッサ)を使った計算処理に興味があります。GPUは3Dグラフィックスを描画するための計算処理装置で、画面に見えるすべての頂点やポリゴン、ピクセルを並列に処理した方が効率が良いので、並列処理が高度に発展しています。CPUの並列処理は一般向けのCPUでは4コアから8コアですが、GPUでは500コアから4000コアと桁違いです。この並列計算能力をグラフィックス描画以外の一般的な目的(General Purpose)に使うGPUをGPGPUと呼びます。

 GPGPUのためのツールとしてはNVIDIA社が自社のGPU向けに用意しているCUDAという環境があります。CUDAは使い勝手がよく、利用が広がっています。AMDのGPUでも使用できるOpenCLという環境もあるのですが、利用に難しい部分があり、GPGPUを使うにはNVIDIA社のGPUが良いようです。

 AzureにはNVIDIA社のGPUを積んだ仮想マシンとしてNシリーズ、NCとNVがあり、それぞれに松竹梅があります。 CPUのコア数が6コア、12コア、24コア、メモリーが56GB、112GB、224GB、GPUが1基、2基、4基の違いです。

 AzureでGPUを載せたコンピューターを作るといくらになるのか計算してみます。まず「梅」のCPU6コア、メモリー56GB、ディスク 340GB、GPU K80 1基のマシンを1ヶ月動かす想定で、データ保存、ネットワーク転送を含めて月額71,619円と出ました。

 結構価格がかさむように見えます。しかし、ここで設定したコンピューターは GPUだけで80万円ほどするもので、実体のコンピューターを買うとおおよそ150万円以上はかかります。また、上記の金額は1ヶ月ずっと動かした価格ですが、仮想マシンの課金は時間単位ですので、使わない時は停止しておけば料金は発生しません。使う時間を、お試しに使ってみる期間3日分、72時間と想定して見積もってみますと、月額9,930円になりました。

01_azure_3days

 150万円のマシンを試しに使ってみるためのコストが1万円しない、というのは相当魅力的ではないでしょうか。初回登録時に月2万円のクレジットがついてきますので、GPUマシンを使うのに十分足ります。有償プランでも月あたりの上限を越えたらリミットがかかる設定や、一定の金額を超えたら通知メールが飛ぶ設定もあり、仮想マシン稼働で大きな負担が発生することは避けることができます。

GPGPU仮想マシン、Nシリーズを作る

 Azureで仮想サーバを立てるには、以下の手順を進みます。

  • 1. Azureポータルにログインする
  • 2. 仮想マシン追加の「+」ボタンを押す
  • 3. OSの種類を選ぶ
  • 4. OSのバージョンを選ぶ
  • 5. 仮想マシンの名前と初期ユーザ名他設定する

 20クリックほどで作成手順が進み、5分ほどでサーバが立ち上がってきて大変簡単です。調整済みのLinuxの初期イメージがありますので、OSの有償ライセンスや、OSの環境に合わせた設定は必要ありません。

 GPGPU仮想マシンは昨年の2016年後半に正式リリースになったばかりで、設定に少々手間取りました。2017年1月現在、CUDAを動かすためのNシリーズサーバを作るには以下の設定がよいです。

  • OSは「Ubuntu 16.04 LTS」を選択する。
  • 仮想マシンのVMディスクには「HDD」を選ぶ。
  • 「場所」(リージョン)には米国東部を選択する。

02_deploy1

 OSのバージョンUbuntu 16.04 LTSは、NVIDIAのGPUカードドライバーが公式対応しているバージョンです。なぜかVMディスクをディフォルトのSSDにするとNシリーズが出てきませんのでHDDを指定します。またNシリーズのあるリージョンも一部になっていて、米国東部が確実のようです。

 上記設定で「サイズの選択」画面に進み、「★オススメ」を「すべて表示」に切り替えると、Nシリーズがでてきます。

03_deploy2

 ここでは、NC12 Standardを選択します。月13万6千円かかるとありますが、10時間で止めれば3500円で済むはずです。なお、Azure サブスクリプションの初期状態ではCPU20コア制限があり、手続きをしなければNC24は選択できないようです。

 しばらく待つとサーバの使用準備が完了し、sshで接続してコマンドラインで通常どおり使うことができます。sudoも実行できます。サーバのありかが合衆国東海岸と遠いのですが、インターネット接続環境が速ければターミナル接続においてストレスはありません。

 調整済みのOSイメージがあらかじめ用意してあり、メニューから選択するだけでサーバを立てられるのは大変便利だと思います。

caffe-rtposeでGPU姿勢検出

 人間の姿勢検知のためのツールとして、Microsoft Kinectがあります。深度カメラで立体として捉えた人体のシルエットから、頭、胴体、手足がどういう姿勢なのかをリアルタイムに検出することができます。オープンソースで公開しているツールもあり、Kinectに映るシーンから人体の姿勢変化を検知することは一般的な手法です。

 最近、openFrameworksを作ったZachary Liebermanさんが、通常の2次元動画からボーンを検出した作品を公開しています。Elevenplay circle study などです。

 これは姿勢検知してるんだけど元の映像は2Dで、2Dからボーン検知するのは困難なはず...どうやってるんだろう...と思って見ていて、つい直接「何のツール使ってるんですか」と聞いてみたところ、

Zhe Cao, Tomas Simon, Shih-En Wei, Yaser Sheikh: 'Realtime Multi-Person Pose Estimation'

 とのことでした。映像から大量の人体の姿勢を検知してボーン推定してます。すごい技術です。Caffeという深層学習ライブラリを使い、リアルタイム10fpsで動くようです。Linux上ですぐ動くアプリケーション、caffe_rtposeのソースコードはGPL3で公開になっています。

CMU-Perceptual-Computing-Lab/caffe-rtpose

 caffe_rtposeを動かすにはGPGPUライブラリのCUDA、CUDAを使った深層学習ライブラリのcuDNNが必要ですが、ここでAzure NC12の出番です。

 NC12にNVIDIA driver, CUDA, cuDNN, caffe-rtposeをインストールし、ダンスカバーユニットminimamさんのフリコピ動画を分析にかけて姿勢検出のテストを行いました。caffe-rtposeは姿勢を元の画像にオーバーレイしたものと、jsonに記述した座標情報データを同時に出力します。姿勢をオーバーレイした動画です。

 caffe_rtposeが実現している処理はトラッキング、すなわち一度認識した対象の追跡ではなく、フレームごとに処理する姿勢推定です。 トラッキングではそれまでに検知してきた姿勢の情報を次のフレームの検知に使えるのですが、caffe-rtposeではフレームごとに独立して処理ができています。フレームごとの処理なのですが、もともと素晴らしいminimamさんの動きの鋭さ、いわゆる「キレ」がボーンの連続的な変化として見事に検出できているのがわかります。

 caffe-rtposeについては先月Liebermanさんに伺っていて、ぜひやってみたい。。と思っていたのですが手元にまともなNVIDIA GPUのコンピューターがなく断念していました。たまたまBizSpark PlusをいただいてAzureで実験できることに気づいたのですが、姿勢推定を実行するまでNC12の稼働時間は6時間ほどで4,400円程度、もちろん初期登録時2万円分のクレジットに収まっています。Microsoft AzureでGPGPU計算を実行するのは大変手軽かつリーズナブルで、BizSpark Plusをいただく前に気づいていればよかったと思います。

参考

謝辞

 すばらしいAzure使用枠をご提供していただいた日本マイクロソフト様、お手続きいただいた久手堅様、先進の画像分析技術を快く教えていただいたZachary Liebermanさん、すばらしいツールを公開しているCarさん他CMUのみなさん、そして姿勢検出テストに動画の使用をご許諾いただいたminimamさん、みなさま本当にありがとうございました!