株式会社Preferred Networks(以下、PFN)が開発・提供する深層学習フレームワーク「Chainer(チェイナー)」は、2015年にオープンソースとして公開され、Pythonベースのディープラーニング向けフレームワークとして、Define-by-Runの手法を通じてユーザーが簡単かつ直感的に複雑なニューラルネットワークを設計するための柔軟性とパフォーマンスを兼ね備えている。
このほど、PFNは、「Chainer」および汎用配列計算ライブラリ「CuPy(クーパイ)」のメジャーアップデート版となるv6をリリースした。Chainer v6では、v5までのコードをほとんど変更することなくそのまま動作させることができる。
今回、Chainer v6(β版)で試験的に統合されたC++製のChainerXが、より多くのexampleに対応した。ChainerXを使用することで、Chainerのフレキシブルさや後方互換性をほとんど失うことなく、順伝播・逆伝播ともにフレームワーク側のオーバーヘッドを大幅に低減して、より高いパフォーマンスを実現した。
また、新たなハードウェアへの対応をサードパーティの開発者がプラグインとして実装することで、ChainerおよびChainerX本体のソースコードを変更することなくChainerX上で利用できる。Chainer v6およびCuPy v6の主な特長は以下の通り。
- ChainerXの統合
- 高速でよりポータブルな多次元配列と自動微分のバックエンドを追加
- ChainerXの配列をNumPyやCuPyの配列と同じように使える互換レイヤーを実装し、C++による低オーバーヘッドな自動微分を実現
- 統合デバイスAPIを導入し、NumPy、CuPy、iDeep、ChainerX など多様なバックエンドに対し、デバイス指定やデバイス間転送を統一のインターフェイスで実現
- 混合精度学習のサポート強化
- デフォルトデータ型として新たにmixed16を追加し、単精度と半精度の演算を組み合わせた訓練を透過的に実現する混合精度モードを導入
- 混合精度学習におけるアンダーフロー回避のため、オーバーフローを検出して自動調整する動的スケーリングを実装
- FunctionやLinkのテストツール追加
最小限のコードから順伝播、逆伝播、2回微分のユニットテストを生成するテストツールを追加 - NumPy関数へのCuPy配列対応
NumPyの試験的な機能である__array_function__に対応し、この機能を有効にした NumPyの多くの関数に直接CuPy配列を適用
PFNは、今後もChainerの性能向上やバックエンドの拡充を進める計画だ。
無料メルマガ会員に登録しませんか?
膨大な記事を効率よくチェック!

IoTに関する様々な情報を取材し、皆様にお届けいたします。