Azure Machine Learning Services ハンズオン& CNTK を活用した Deep Learning による画像認識入門ハンズオンに参加してきました

こんにちは。テクノロジー本部の平野です。

11/13、11/14に開催された、Azure Machine Learning Servicesのハンズオンに参加してきました。
場所はTECH PLAY SHIBUYAで、お昼とお菓子、飲み物を用意していただきました。
自習形式でガリガリ作業するハンズオンでしたのでかなり助かりました。

ハンズオンで使用された資料はGitHubで公開されています。

github.com

復習も簡単にできるのでありがたい限りです。
普段の業務ではAzureをあまり触らない人間なので特に……

1日目 Azure Machine Learning Services ハンズオン

初日は最近新しくなったAzure Machine Learning Servicesのハンズオンでした。
新生Azure Machine Learning Servicesに関してはこちらのスライドがよく分かると思います。
当日も講師をしていただいた藤本様のスライドです。

www.slideshare.net

新生Azure Machine Learning Servicesのポイント

ポイントは、「3つの要望に応えました!」ということかと思っています(コピペですが)。

  1. もっと早いマシンを使いたい⇒どの環境でも学習
  2. Web Servicesにしかデプロイできない⇒どこでもデプロイ
  3. Deep Learningできない⇒コードでゴリゴリ全フレームワーク(が使えるよ!)

当日は早速1番目のポイントが役に立ちました。ハンズオン中でGPUで動くコードを試す場面があったのですが、自分の手持ちの無料試用版のサブスクリプションだとハンズオンに組み込まれているDeep Learning Virtual Machineが立ち上げられなかったのです。 幸い、自分が持ち込んだノートPCはGPUを積んでるものだったのでそこでGPUコードを動かしてみることができました。速度的に10倍以上違ってくるので、GPUの重要さがよく分かります。Tesla欲しい。

データの前処理が楽にできてすごい

1日目については特に印象に残ったデータの前処理に関することを書こうと思います。
ハンズオンでは基本的にローカルのAzure Machine Learning Work Benchを操作します。
下記のハンズオンの内容でデータの前処理をしました。

https://docs.microsoft.com/en-us/azure/machine-learning/preview/tutorial-classifying-iris-part-1docs.microsoft.com https://docs.microsoft.com/en-us/azure/machine-learning/preview/tutorial-bikeshare-dataprepdocs.microsoft.com

個人的にとてもいいなぁと感じた点が3つあります。

  1. データ列に対してこれやりたいなぁという処理が大体ある。Nullのデータを除去したり等。
  2. STEPS paneでデータに対する処理が1ステップずつ登録されるので、後から微調整したり、特定の処理をやめたりできる。
  3. Derive column by exampleで、変換パターンを指定すれば既存のデータを簡単に加工できる。

github.com

Derive column by exampleについては、proseというものが使われているようです。
どこまで出来るかは検証できてませんが、パターンを一つ組めば残りの全データに変換を適用してくれるというのは非常にありがたいです。

2日目 CNTK を活用した Deep Learning による画像認識入門ハンズオン

2日目はDeep LearningフレームワークであるMicrosoft Cognitive Toolkit(CNTK)を活用するハンズオンでした。
CNTKに関してはこちらのスライドが分かりやすいです。

www.slideshare.net

前日のデプロイ編が押して午前に若干食い込みましたが、個人的にはそこが問題にならないくらいスムーズにできる内容になっていたと思います。 指定されたVMを立ち上げるとJupyterが起動していて、すぐにコーディングに取り掛かることができましたので。
個人的に普段からTensorflowやその手のサンプルに手を出していて良かったなと思いました。

CNTKのポイント

  1. 速いし、複数GPUでスケールする
  2. 効率的にニューラルネットのモデルを構築できる

ハンズオンは主に2の内容を体感するものでした。 コード上ではSequential()やFor()関数で実感できるのではないかと思います。

2日目の感想

一通りのハンズオンコードを触ってみた感想ですが、実際に使うにはもっと時間をかけて学習しなければならないと感じました。
テンプレな分類問題や、よくサンプルになる例題であればこのハンズオンから実働まで作れると思いますが、少しそこから離れるとなると各種の基礎知識とCNTKの細かい勉強は必要になると思います。 これは他のフレームワークでも同様なことではありますが。

おわりに

2日間通して非常に有意義な時間でした。
講師の藤本様ともランチタイムにPCの話題で盛り上がりましたし、各種の質問にも真摯に答えていただけました。またこのようなハンズオンの機会があれば是非とも参加したいと思います。