18
Chainer v1.6からv1.7の新機能 2016/03/18 Chainer Meetup #02@ドワンゴ (株)Preferred Networks 奥田 遼介

Chainer v1.6からv1.7の新機能

Embed Size (px)

Citation preview

Page 1: Chainer v1.6からv1.7の新機能

Chainer v1.6からv1.7の新機能

2016/03/18 Chainer Meetup #02@ドワンゴ

(株)Preferred Networks

奥田 遼介

Page 2: Chainer v1.6からv1.7の新機能

自己紹介

奥田 遼介 -2014東北大学 修士

文字列処理など

2014 (株)プリファードインフラストラクチャー

2014- (株)プリファードネットワークス

チーフアーキテクト

映像解析系、製造業系にかかわる研究開発

ChainerやCuPyの開発最新版v1.7.1(2016/3/15)

2/18

Page 3: Chainer v1.6からv1.7の新機能

前回のChainer Meetup #01(2015/12/19)からのアップデート

2016/1/19 v1.6.0

2016/2/ 3 v1.6.1

2016/2/17 v1.6.2

2016/3/ 1 v1.7.0

2016/3/15 v1.7.1

マイナー2回

リビジョン3回

3/18

Page 4: Chainer v1.6からv1.7の新機能

Issue/PRの統計

0 20 40 60 80 100 120

v1.6.0

v1.6.1

v1.6.2

v1.7.0

v1.7.1

v1.6.0 v1.6.1 v1.6.2 v1.7.0 v1.7.1

feature 30 22

bug 25 14 2 4 7

enhancement 14 7 6 7 2

install 3 3 1 3

test 20 2 8 3 4

document 10 6 5 8 7

example 2 1 3 1

4/18

Page 5: Chainer v1.6からv1.7の新機能

互換性ポリシーの作成 v1.6.0

互換性のポリシーを作りました (#829)

メジャー :不定期

後方互換性のない変更を含む

マイナー :6週間ごと

新機能の追加

後方互換性は維持する

リビジョン :2週間ごと

バグ修正

ドキュメントに基づいた互換性維持

互換性はドキュメントに書かれた内容に従って維持されます

5/18

Page 6: Chainer v1.6からv1.7の新機能

新しいコア機能

デバッグモードの導入(#899)

forward/backwardの値のNaNチェックなどを行う

softmax_cross_entorpyではlabelの範囲チェックも

有効にするとオーバーヘッドがあります

ファンクションフックの追加(#933)

forward/backward の呼び出し時にフックを仕掛けることが可

能になった

Variable.debug_printメソッドの追加(#830)

data とgradについて、device ID, shape, dtype 統計情報を表

6/18

Page 7: Chainer v1.6からv1.7の新機能

デバッグモード

chainer.set_device(True)で使えます

NaNの検出デモ

In [1]: import chainer, numpy

In [2]: chainer.set_debug(True)In [3]: x = chainer.Variable(numpuy.array([float(‘nan’)], ’f’))In [4]: chainer.functions.identity(x)-----------------------------------------------------------RuntimeError Traceback (most recent call last)<ipython-input-4-e234ae95dfb6> in <module>()----> 1 chainer.functions.identity(x)=========省略=========RuntimeError: NaN is detected on forward computation

7/18

Page 8: Chainer v1.6からv1.7の新機能

ファンクションフック

例えば時間を測るフックが作れます:TimerHook

In [1]: import chainer, chainer.function_hooks, numpy

In [2]: h = chainer.function_hooks.TimerHook()In [3]: link = chainer.links.Linear(5, 5)In [4]: with h:

...: link(chainer.Variable(numpy.zeros((3, 5), 'f')))

...:In [5]: print(h.total_time())0.011421918869

In [6]: print(h.call_history)[(<chainer.functions.connection.linear.LinearFunction object at 0x7fb18d9ff790>, 0.011421918869018555)]

8/18

Page 9: Chainer v1.6からv1.7の新機能

Variable.debug_print

debug_print()を呼ぶだけ

In [1]: import chainer, numpyIn [2]: d = numpy.random.uniform(-1, 1, (3, 5)).astype('f')In [3]: x = chainer.Variable(d)In [4]: print(x.debug_print())<variable at 0x7fac1017a790>- device: CPU- volatile: OFF- backend: <type 'numpy.ndarray'>- shape: (3, 5)- dtype: float32- statistics: mean=-0.02048243, std=0.46310186- grad: None

9/18

Page 10: Chainer v1.6からv1.7の新機能

新しい関数(Chainer)その1

activation

elu (#754)

log_softmax (#842)

maxout (#856)

slstm (#518)

LSTM along binary trees

array

broadcast_to (#826)

expand_dims (#690)

evaluation

binary_accuracy (#757)

Accuracy for binary classification.

10/18

Page 11: Chainer v1.6からv1.7の新機能

新しい関数(Chainer)その2

math

batch_l2_norm_squared (#828)

det, batch_det (#613)

matrix determinant

inv, batch_inv (#608)

Differentiable matrix inversion

pool

unpooling_2d(#599)

spatial upsampling

Link

StatefulGRU (#817)

GRU with LSTM chain-like interface

Maxout (#856)11/18

Page 12: Chainer v1.6からv1.7の新機能

関数の機能拡張(Chainer)

fixed_batch_normalization (#798)

Backward をサポート

sigmoid_cross_entropy (#790)

ignore_label をサポート

ctc_padding(#689)

異なる長さのシーケンスからなるミニバッチをサポート

12/18

Page 13: Chainer v1.6からv1.7の新機能

新しい関数(CuPy)

asfortranarray(#923)

fortranオーダーにする

broadcast_to (#644)

NumPy 1.10からの新機能

roll (#827)

くるくる回す

13/18

Page 14: Chainer v1.6からv1.7の新機能

NumPyシリアライザの追加

NumPy NPZ シリアライザが追加されました (#810)

これまでのシリアライザと同じく使えます

save_npz(filename, obj, compression=True):

NPZは、numpyの配列1個が1ファイルとなっているものを集め

たzipファイルです。

h5pyのインストールがオプショナルに

hdf5が不要になり、インストールが簡単に

14/18

Page 15: Chainer v1.6からv1.7の新機能

Python関係

インストールを安定化させました

依存ライブラリの削減

h5py をオプショナルに

セットアップ時のNumPy依存をなくす

setuptoolsやpipとの長い戦い

NumPy 1.10サポート

Chainer,CuPy共に最新版のNumPyに対応

注意

ChainerはPython3.5.0では動きません。Python3.5.1を使って

ください

15/18

Page 16: Chainer v1.6からv1.7の新機能

CUDA関係

cuDNN v4対応 (#838 #756)

v2からv4すべてのライブラリに対応しました

まだ一部最新の関数を使わないコードのままです

PRお待ちしております

Device-to-device copy時のGPUDirect使用 (#884)

特定条件下でGPU間でのメモリ速度が向上しました

ホストメモリの経由がなくなった

16/18

Page 17: Chainer v1.6からv1.7の新機能

そのほか

沢山の改善が行われました

詳しくはRelease noteを見てください

https://github.com/pfnet/chainer/releases

17/18

Page 18: Chainer v1.6からv1.7の新機能

さいごに

PRありがとうございます (敬称略)

@cemoody @hrantzsch @jnishi @jnory

@kashif @muupan @sinhrks @t-abe

@wkentaro

皆様のPRをお待ちしております

Chainer開発アルバイトに興味ある人はぜひ声をかけて

ください

18/18