Q8 日本発の技術はある?

A 深層学習Chainerが代表例

 日本発のPython用ライブラリーの代表例は深層学習向けの「Chainer」だ。PFNがOSSとして2015年に公開した。グーグルのTensorFlowやフェイスブックのPyTorchが世界で普及するなか、日本を中心に根強い人気がある。

 Chainerの特徴はPythonで実装されていることに加え、ニューラルネットワークの構造もPythonで記述できる点だ。RNN(リカレントニューラルネットワーク)など複雑なネットワーク構造を記述するのに適している。

 Chainerの開発を主導するPFNの得居誠也リサーチャーはPythonを選んだ理由について「何よりChainerを機械学習エンジニアに使って欲しかったため」と語る。Pythonは機械学習や科学技術計算のエンジニアにとって慣れ親しんだ言語で、潜在的に大きなユーザー層を見込めると考えた。

 機械学習エンジニアは一般的なプログラマーと比べ、新たな言語の習得には比較的関心が薄いとされる。実際、マイクロソフトは自社開発の深層学習フレームワーク「CNTK」のモデル記述言語として独自スクリプトを用意したが、ほとんど普及しなかった。

 Chainerから派生した「CuPy」も同じくPFNが開発するOSSだ。CuPyはNumPy互換の数値計算ライブラリーである。NumPyは一般にCPUが演算するのに対し、CuPyはGPUが演算を担う。行列演算などをより高速に処理でき、CPU側の負荷を軽減できる。「NumPyと同じ感覚で、追加の勉強なしにGPU演算ができる」と、開発を主導するPFNの奥田遼介取締役CTO(最高技術責任者)は語る。

GPUを使う数値計算ライブラリー「CuPy」開発者の奥田遼介氏(左)とChainer開発者の得居誠也氏(右)
[画像のクリックで拡大表示]

 初期のChainerは機能を追加する際、CPUに実行させる演算はNumPyのPythonコード、GPUに実行させる演算はGPU向け開発環境「CUDA」のコードを書く必要があった。CPUとGPU双方の演算を同じコードを記述できれば、Chainerの開発効率が高まる。このため奥田CTOは自ら「GPU版のNumPy」をつくることを決めた。

 当時からPyCUDAやGNumPyなどPythonのGPUライブラリーはあったが、NumPyとの互換性や更新頻度などで、開発チームの要望を満たせなかったという。

 現在、CuPyの存在はNumPyやSciPyなどの開発者コミュニティーからも認知され、ライブラリー間インターフェースなどの議論にCuPyの開発者も参加しているという。

まだある日本発プロジェクト

 このほかPythonのサブセットとなる処理系を使える日本発のオープンソースプロジェクトがいくつかある。

 リクルートコミュニケーションズは2018年9月、量子アニーリングマシンに解かせる組み合わせ最適化問題の数式をPythonで記述できる「PyQUBO」をOSSとして公開した。

 アットマークテクノ、Seeed、コアスタッフが2019年3月に発足させたIoT(インターネット・オブ・シングズ)センサー向けのオープンソースプロジェクト「Degu」は、IoT端末側でのデータ前処理をMicroPythonで記述・実行できるようにするという。

この先は有料会員の登録が必要です。今なら有料会員(月額プラン)が12月末まで無料!

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