新しいソフトウエア技術は米国企業が考案して、日本企業は輸入するだけ――。そんな長年の構図を覆す動きが出てきた。Preferred Networks(PFN)のディープラーニング(深層学習)フレームワーク「Chainer」の仕組みを、米フェイスブック(Facebook)や米グーグル(Google)が取り入れたのだ。

 フェイスブックやグーグルが取り入れたのは、PFNが2015年6月からオープンソースソフトウエア(OSS)として公開しているChainerが備える「Define-by-Run」という仕組みだ。

 Chainerは深層学習に使用するニューラルネットワークの構造や学習(トレーニング)の方法をPythonのプログラムとして記述する。ニューラルネットワークの計算を表現した計算グラフは、学習などデータを入力した際にPythonプログラムに基づいて動的に構築される。計算の実行時に計算グラフが定義されることから、この方式をDefine-by-Runと呼んでいる。

 一方、深層学習フレームワークとして人気の高い「Caffe」やグーグルが開発した「TensorFlow」などは、計算グラフを学習の前にあらかじめ構築する。計算グラフを定義してから計算を実行するので、この方式は「Define-and-Run」と呼ぶ。

 Define-by-Run、Define-and-RunともPFNが名付けた分類だが、今では深層学習の世界で一般的な用語になっている。

フェイスブックはChainerをフォーク(分岐)

 フェイスブックは2018年5月初めに開催した開発者会議「Facebook F8」で、同社がオープンソースソフトウエア(OSS)として開発する深層学習フレームワーク「PyTorch」を、数カ月以内に「バージョン1.0」として公開すると発表した。このPyTorchがそもそも、Chainerのフォーク(分岐)なのだ。採用する方式はDefine-by-Runであり、PyTorchが備えるAPI(アプリケーション・プログラミング・インタフェース)はChainerのAPIとほぼ同じだ。

米フェイスブックの開発者会議「Facebook F8」におけるPyTorch 1.0の発表風景
米フェイスブックの開発者会議「Facebook F8」におけるPyTorch 1.0の発表風景
[画像のクリックで拡大表示]

 フェイスブックがPyTorchの初期バージョンをOSSとして公開したのは2017年1月。その際にChainerのソースコードを利用した。ChainerがAPIを実現するフロントエンド部分と計算を実行するバックエンド部分の全てをPythonで実装したのに対して、PyTorchはバックエンド部分をC++で実装する点に違いがある。