機械学習の開発フレームワークとしては、GoogleのTensorflowライブラリが今いちばんよく知られているが、今年の初めにはMicrosoftが、同社の社内ツールだったCNTKを一般公開して、デベロッパーの選択肢を増やした。そして今日(米国時間10/25)Microsoftは、CNTKの次のバージョン、バージョン2.0の最初のベータを立ち上げ、Tensorflowのトップの座に挑戦しようとしている。
CNTKは最初、‘Computational Network Toolkit’を表していたが、今ではMicrosoft Cognitive Toolkitに名前を改めている。
Microsoftの音声認識技術のリーダーXuedong Huangによると、CNTK/Cognitive ToolkitはTensorflowや類似のフレームワークに比べて、前からアドバンテージが大きかった。中でも、そのパフォーマンスが。
Microsoftのベンチマーク(下図)によると、Cognitive Toolkitは多くのテストにおいて競合製品に勝ち続けている。そして当然ながら、今度のニューバージョンは、それまでのリリースよりもさらに高速であり、とりわけ、ビッグデータのデータ集合に強い。それは単一GPUのパフォーマンスでもそうだが、しかしHuangによると、より重要なのは、大量のGPUを使えるという、CNTKの優れたスケーラビリティだ。新バージョンでは、この特性にもさらに磨きがかかった。“簡単な問題ならほかのツールキットでも十分だが、どんどんスケールアウトしていくようなタスクでは、CNTKが唯一の選択肢だ”、とHuangは自負を述べる。
しかしデベロッパーの心をつかむのは、スピードだけではない。CNTKの最初のバージョンはMicrosoftが社内的に使っていたものと同じなので、利用するデベロッパーもコードをC++やC#で書かなければならなかった。そのことは、Pythonなどの使えるTensorflowに比べて大きな不利である。Huangも率直にそのことを認め、“当時はプライオリティが、社内で使う場合の効率にあった。ということは、社内的に前から使っていた言語、C++を使う、という結論にならざるを得ない”、と彼は語る。“その後その社内ツールをオープンソースにし、公開的な共有化に踏み切った”。ところが、彼らが直ちに理解したのは、多くのデベロッパーが求めるものがPythonのサポートであることだった。
そこで次のバージョンではCognitive ToolkitはPythonはネイティブでサポートし、さらにデベロッパーがCNTKのモデルを理解するための教育訓練事業も提供している。
AzureのGPUインスタンスも今ベータに入っているから、今後のMicrosoftはソフトウェアツールと、それが動くシステム環境(Azure仮想マシン群)の両方を提供していける。ただしHuangが強調するのは、Cognitive Toolkitは動く環境としてAzureに依存しているわけではなく、またAzureも、そのほかの機械学習ツールキットを十分に動かせる。
Huangは何度も強調する: Microsoftの内部的サービスの多くがCognitive Toolkitに依存しており、MicrosoftのAI開発が会話中の語を認識し、その発話者を特定できるようになったのも、CNTKが提供する機械学習能力のおかげである。またMicrosoftのCognitive Servicesにおいても、そのツールの一部はCNTKに負っている。
CNTKのコードはGitHub上で入手できる。