「de:code 2017」レポート:MSと協業した日本発の深層学習Chainer
「Chainer」をMicrosoft Azureに最適化、Windowsもサポート
2017年05月29日 07時30分更新
深層学習(ディープラーニング)フレームワーク「Chainer」や「Deep Intelligence in-Motion(DIMo)」を開発するPreferred Networks(PFN)は5月23日、米マイクロソフトとディープラーニング分野で戦略的協業をすると発表した。Microsoft AzureとChainerとの親和性を高めるための技術協力のほか、ディープラーニング分野の人材育成、ChainerとDIMoのマーケティングで協力する。
具体的には、2017年夏までに、ChainerをAzure IaaS上へワンクリックで展開するためのテンプレートの提供や、データサイエンス仮想マシン(ディープラーニングツールを構築済みのUbuntuベースのAzure仮想マシンイメージ)へのChainer搭載、SQL ServerのChainer対応、ChainerのWindows対応を行う。また、Azureのデータ収集分析サービス群とDIMoを組み合わせた特定のワークロードや業種向けソリューションを2017年中に提供するとしている。
人材育成の面では、大学の学生、企業のエンジニア・研究者向けのトレーニングプログラムを2017年中に共同で提供する。ニューラルネットワークの基礎を学ぶ初級クラスから、実際にディープラーニングの実ビジネス応用を学ぶ上級クラスまで用意し、3年間で5万人の人材育成を計画する。
マーケティングでは、AzureとChainer/DIMoを活用した実際の事例をもとに、各業種に向けたワークショップを2017年夏に開始する。さらに、ディープラーニングの開発・提供企業とユーザー企業をマッチングする国内コミュニティ「Deep Learning Lab」を発足し、ディープラーニングのビジネス利用の加速を図る。国内でのマーケティングやコミュニティの運営は日本マイクロソフトが全面協力する。
今回のマイクロソフトとの協業について、PFN 代表取締役の西川徹氏は、「Chainerは研究者向けだけでなく、産業向けにも活用が進んでいる深層学習フレームワークなので、パブリッククラウドのパートナーとして、エンタープライズグレードのクラウドであるAzureを選んだ。Azureの性能面というよりは、自動車業界など各産業への導入実績や、堅牢性、サポートを評価した」と説明した。
今後、PFNではマイクロソフトとグローバルで協力しながら、ChainerをAzure向けにチューニングし、Chainer構築済みのVMやテンプレートを提供していく。「ディープラーニングの技術がコモディティ化していく中、これから大事なのは使いやすさ。ChainerをAzureに最適化して使いやすくしていく」(西川氏)。
動的な計算グラフをPythonで記述
PFNのChainerとはどのようなものか。5月23日、日本マイクロソフトが開催した技術イベント「de:code 2017」のテクニカルセッション「深層学習フレームワークChainer×Microsoftで広がる応用」の内容を紹介する。PFNの齋藤俊太氏が登壇した。
Chainerは、ニューラルネットワークの設計・学習・評価など、深層学習を用いた研究開発に必要な一連の機能を提供するオープンソースの深層学習フレームワークだ。オープンソースの深層学習フレームワークには、Chainerのほかに、マイクロソフトの「CNTK(Microsoft Cognitive Toolkit)」、Googleの「TensorFlow」、Facebookの「Torch」などいくつかある。その中でChainerをはじめとしたPFNのテクノロジーのポジションについて、齋藤氏は次の4象限マトリックスを用いて「産業向け、自動車やロボットなどのデバイス向け」が注力分野だと説明した。
各深層学習フレームワークの違いは、大きくは「言語」と、ニューラルネットワークの計算を行う「計算グラフ」の構築方法にある。
Chainerの記述言語は「Python」で、「エラー箇所の特定が容易で、デバックしやすい」(齋藤氏)というメリットがある。ただ、CNTKやTensorFlowもPythonで記述可能であり、TorchもPythonで記述できるPyTorchをリリースするなど、深層学習フレームワークの言語としてPythonは主流になっており、Chainerを特徴づけるものとは言えない。Chainerの大きな特徴は、“動的に”計算グラフを構築する「Define-by-Run」を採用している点だ。
齋藤氏の解説によれば、静的な計算グラフ(Define-and-Run)では「まず計算グラフを構築し、構築した計算グラフにデータを流す2ステップから成る」という。プログラムの観点で言うと、計算グラフの定義と計算を実際に行うコードが別に存在している。
一方、Chainerが採用する動的な計算グラフ(Define-by-Run)は、実際に計算を行うコード自体が計算グラフの定義として扱われる。「実際に行われた計算がそのまま計算グラフのネットワークの定義になる。データ次第でネットワーク構造を動的に変化させることが簡単にでき、且つネットワークの構造をデータではなくプログラムで扱うことができる」(齋藤氏)。
ここで、動的にネットワークの構造を記述する言語としてPythonが使用できることがChainerの大きな利点だ。「データによって異なる処理をしたい場合などは、PythonのIF文を使った条件分岐を書いておけばよい」(齋藤氏)。
セットアップ済みVMをAzureから提供、Windowsもサポート
Chainerには、いくつかの追加パッケージやバックエンド用ライブラリがある。その1つ、PFNが5月9日にベータ版を公開した「ChainerMN」は、分散深層学習用の追加パッケージだ。1ノード内の複数のGPUを活用することも、複数の分散ノードを活用することもできる。齋藤氏が示した計測データによれば、ChainerMNは、使用するGPU数を増やすとほぼ線形に計算速度が向上する。
今回のマイクロソフトとの協業発表に併せて、PFNは、Azure上のGPUクラスターとInfiniBandの環境にChainerMNをセットアップ済みのVM「ChainerMN on Azure」の提供をアナウンスした。2017年中に登場する予定だ。
また、前述のようにUbuntuベースのデータサイエンスVMへのChainer搭載も進行している。ここでは、CUDA 8.0(NVIDIA製GPGPU)とcuDNN 5.1(CUDAの専用ライブラリ)の環境構築済みのVMに、3ステップでChainerを展開できるようになっている。Chainerは、5月30日に新バージョンChainer V2のリリースを予定している。Chainer V2の次以降のバージョンでWindowsの正式サポートが計画されており、これによって「今よりもっと簡単にWindows環境でChainerが使えるようになる」(齋藤氏)という。