はじめに
だんないよ、nikkieです。
「Chainer x Azure ML Hackathon CV編」に参加してきました。
nikkieのレベル感
- Azure ML Studioで機械学習(特にレコメンド)は業務で数ヶ月の経験あり
- 深層学習について、用語は聞いたことがあるが、手を動かしたことがない
深層学習に踏み出したかったので参加しました。
勉強会の概要
いよいよ、ディープラーニングをエンジニアが使いこなす時代がやってきています。柔軟性が高く直感的な記述が可能なDeep Learning Framework Chainerと機械学習プロジェクトをEnd to EndでサポートするAzure Machine Learningを使って、画像認識、画像分類のExampleを作るハッカソンを行います。様々なデータセット(CIFAR10/100, ImageNet, MNIST, ResNet, YOLO)を使って、データ準備、モデル構築、モデルデプロイまでを行います。ExampleはDLLABのGitHubで公開します。今後も継続的にやっていきますよ!
取り組んだこと
AzureにGPUインスタンスを立てる:DSVM
(Data Science Virtual Machine - Windows 2016のNC6。月9万円程度)
Azure での Windows データ サイエンス仮想マシンのプロビジョニング | Microsoft Docs
(Linux OSの方が慣れているのですが、UbuntuもCentOSもドキュメント中にChainerの文字がありませんでした。そのため、Chainerが構築時から入っているWindows OSを使うことにしました)
Azure ML Workbenchからアクセスを試みる
サインインすると、Workbench によって Azure サブスクリプション内で検出された最初の実験アカウントが使用され、
Workbench側が全然関係ないディレクトリの認証情報入力を求めてきたので
虱潰しに検出するものなのかと入力したのですが、それ以降進まなくなりました。
後述のRDPという代替手段を見つけたので、深入りしませんでしたが、
トラブルシューティングのドキュメントを参考に、キャッシュファイルをクリアするとWorkbenchを復旧できるそうです。
DSVMにアクセスする
チュートリアルのための環境設定
DSVMにRDPしてJupyterでチュートリアルを進めることにしました。
- pip uninstall chainer
- pip uninstall cupy
- pip install chainer
- pip install cupy-cuda90
DSVMはハッカソン後に消えるので、仮想環境は使わず、OSデフォルトのPython3.6.3とpipで進めています。
MNIST
ビギナー向けチュートリアル(上記リンク)のMNISTを進めました。
▼成果物
https://gist.github.com/ftnext/cd763fc4cec9f44373ad330443cad5aa
「全結合層のみからなる多層パーセプトロン」のGPUを使った学習まで進めたところで時間切れとなりました。
MacからRDP接続するとUSキーボードになったので苦労しました。
時間が限られていたので、以下のサイトをもとに読み替えて進めました。
()はShift+9,0だったり、:はshift+;だったり、=はShift+^だったりとだいぶ混乱したので、設定をしたほうが作業が進んだかもしれません。
成果物のダウンロード
ファイル共有設定をすることで、DSVMで作成したnotebookがmacにダウンロードできました。
MacからWindowsにリモート接続する際のファイル共有 | ITBeginner
「ファイル共有」ということは、事前にmacでnotebookを用意することで
お高いDSVMの稼働時間を削減できそうです。(ファイルを送るか、コピペをする想定)
感想
深層学習に一歩踏み出しました!
今回進めたチュートリアルはわかりやすく、「エポック」や「ミニバッチ」などの用語をつかめた感触があります。
ただ、chainerのコードは呪文状態なので、勉強することはまだまだたくさんあります。
dllabさんからは手を動かす機会を定期的にいただけそうなので、今後もチェックしたいと思います。
chainerはscikit-learnみたいな書き方をするんだなと気づきました。
(機械学習フレームワークはどれもオブジェクト指向で書いているのかも)
RDPははじめて触ったのですが、驚くほど使いやすかったです。
平日ハードワークのためか寝過ごしてしまい、午後からの参加でした(お恥ずかしい限りです)。
遅刻対応していただけて本当にありがたがったです。
「かたじけない、この御恩は必ず」という思いです。
あと、以下の質問をしたところ、バラバラだったAzureのサービスがつながり、
Azureを触っている身として進むべき方向が見えた気がします。
咀嚼しきれていないところもありますが、Azureについて学習するモチベーションが上がりました!
質問:Azure ML StudioとAzure ML Serviceの違いはなにか?
Azure ML Studioは触ったことがある。(ブラウザでGUIで機械学習できるツール)
Azure ML Serviceは言葉だけ聞いているが、Studioとの違いが今ひとつわからなかった。
回答:
- StudioはJupyterと同等
- ServiceはJupyterの限界を取り払った(IoTやHololensまで広がる世界 & 自動化)
Studioは大量データの扱いに限界がある
StudioにはDeep Neural Networkがない
StudioはCPUで動く
StudioはAPIのデプロイが数クリックでできる
WorkbenchはPython + Dockerでできている。(※Serviceの主要構成要素としてWorkbenchがあると理解しました)
日付や文字データであればpandasのdatasetとしてデータ加工してくれる
トレーニング環境の使い分けができる(ローカル、GPU(DSVM)、Azure Batch(GPUインスタンスが複数立ち上がる)、Spark)
WorkbenchはモデルをBlob Storageに保存。モデルのマトリックス(ハイパーパラメタ × エポック数)からモデルを選抜すればよい
データ加工、学習、デプロイ全てでCLIを提供→自動化を見据えている
IoTHubからデバイス(ラズパイ)を指定して、モデルを流せる。(Dockerを使う。Azure Container Registoryに保存)
buildではデバイスのツールキットを発表。今は1000円程度だが、このコストは今後激減すると見込まれる
Windows間ではモデルはONNX形式でやり取りできる。→Hololensに渡せる
以上です。
ハッカソン関係者と参加者の皆さま、どうもありがとうございました。1日お疲れ様でした。