MicrosoftのDeep Learningライブラリ「CNTK」チュートリアル

  • 51
    いいね
  • 0
    コメント

CNTKってご存知でしょうか?CNTKは、Microsoftが主導して開発しているオープンソースのDeep Learningライブラリです。正直なところ僕も最近使い始めたのですが、このCNTK、良い意味でMicrosoftらしくなく、なかなかイケているんじゃないかと思っています。今回は、まずCNTKの特徴をざっと紹介し、後半でコード例をJupyter Notebookを使って見ていきます

チュートリアルはこちら

cntk.png

"Microsoft"にこだわらない、オープンな開発方針

Open Source

https://github.com/Microsoft/CNTK

GitHub上で開発が進んでいます。社内版はありません。

公式wiki

Python と C++ API

.Net APIは(まだ)ありません。Brainscriptもサポートされています。

LinuxとWindowsで利用可能

"Both Linux and Windows are first citizens of CNTK" と開発チームは言っていました。多少の時間差は出るかもしれませんが、両プラットフォームで同じ機能がサポートされるようです。Linux向けにはDockerも用意されているので、もしかしたらLinuxの方が利用しやすいかもしれません。

ms_loves_linux.png

高速&スケール

複数のGPUでスケールする

Therano、 TensorFlow、 Torch 7、 Caffeと性能を比較した図です。Fully connectedな4層ニューラルネットワークを、一秒あたり何フレーム処理できるかが比較したものです(minibatchサイズは8192)。青とオレンジの設定は、それぞれGPU(Nvidia K40)が1つまたは4つのLinuxマシン、緑は2台のLinuxマシン(2 x 4 GPU)のクラスタです。GPUが1つの場合は各ライブラリでほとんど変わらない速度 (TensorFlowよりはCNTKが速い?)ですが、複数のGPUを効率的に活用できているのはCNTKだけです。4 GPUの時に、CNTKはほぼ4倍にスケールしていますが、Torch 7とCaffeは2倍程度に収まっています。TensorFlowはほとんど変わりません。

speed-comparison.PNG
Microsoft Research ブログ

2016年10月: CNTKによって、音声認識精度が人間レベルに到達

2016年10月の実験で、Microsoftのチームが開発した音声認識エンジンがエラー率 (word error rate) 5.9%を記録しました。これは同じ音声ファイルをプロの文字起こしサービスに依頼した場合と同等でした。しかも、今回の文字起こしサービスでは、二段階処理をしており、一人目が1から文字起こしをし、二人目が修正を加えています。

手法の詳しい部分は論文が出ていますが、非常にレイヤー数が多いニューラルネットワークを使っています。ここでもCNTKがパワーを発揮していて、CNTKの高速な処理が不可欠だったと論文でも述べられています。

speech-graphic.jpg
- Historic Achievement: Microsoft researchers reach human parity in conversational speech recognition

- Microsoft researchers achieve speech recognition milestone

PythonでCNTKを使ってみる

CNTK入門 (Python)

同僚が良いチュートリアルを作っていたので、翻訳させてもらいました。Jupyter Notebookになっているので、環境整備することなくその場でコードを編集・実行できます。順次、追加していく予定です。

Jupyter Notebook (Azure Notebook)

Microsoftアカウントでログインすると、ノートをクローンして、編集・実行できるようになります。
azure_notebook.png

その場でコードを変更して実行できるのはとても便利なので、是非チュートリアル上のコードを変更して遊んでみてください。

jupyter_run_cell.png

参考