新しいソフトウエア技術は米国企業が考案して、日本企業は輸入するだけ――。そんな長年の構図を覆す動きが出てきた。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の発表風景
[画像のクリックで拡大表示]

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

この先は有料会員の登録が必要です。有料会員(月額プラン)は申し込み初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら