Submit Search
Upload
Capitalicoでのchainer 1.1 → 1.5 バージョンアップ事例
•
Download as PPTX, PDF
•
8 likes
•
94,952 views
Jun-ya Norimatsu
Follow
Chainer Meetup #01での発表スライドです。
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 30
Download now
Recommended
Chainer meetup20151014
Chainer meetup20151014
Jiro Nishitoba
Chainer Meetup LT (Alpaca)
Chainer Meetup LT (Alpaca)
Jun-ya Norimatsu
LT@Chainer Meetup
LT@Chainer Meetup
Shunta Saito
Chainer入門と最近の機能
Chainer入門と最近の機能
Yuya Unno
Deep learning実装の基礎と実践
Deep learning実装の基礎と実践
Seiya Tokui
Jubatusにおける大規模分散オンライン機械学習
Jubatusにおける大規模分散オンライン機械学習
Preferred Networks
Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用
Yuya Unno
Tensor flow勉強会3
Tensor flow勉強会3
tak9029
Recommended
Chainer meetup20151014
Chainer meetup20151014
Jiro Nishitoba
Chainer Meetup LT (Alpaca)
Chainer Meetup LT (Alpaca)
Jun-ya Norimatsu
LT@Chainer Meetup
LT@Chainer Meetup
Shunta Saito
Chainer入門と最近の機能
Chainer入門と最近の機能
Yuya Unno
Deep learning実装の基礎と実践
Deep learning実装の基礎と実践
Seiya Tokui
Jubatusにおける大規模分散オンライン機械学習
Jubatusにおける大規模分散オンライン機械学習
Preferred Networks
Chainerの使い方と自然言語処理への応用
Chainerの使い方と自然言語処理への応用
Yuya Unno
Tensor flow勉強会3
Tensor flow勉強会3
tak9029
Learning Phrase Representations using RNN Encoder-Decoder for Statistical Mac...
Learning Phrase Representations using RNN Encoder-Decoder for Statistical Mac...
Yuta Kikuchi
MS COCO Dataset Introduction
MS COCO Dataset Introduction
Shinagawa Seitaro
GPU上でのNLP向け深層学習の実装について
GPU上でのNLP向け深層学習の実装について
Yuya Unno
CuPy解説
CuPy解説
Ryosuke Okuta
音声認識と深層学習
音声認識と深層学習
Preferred Networks
D言語会議#1
D言語会議#1
9rnsr
High performance python computing for data science
High performance python computing for data science
Takami Sato
深層学習フレームワークChainerの紹介とFPGAへの期待
深層学習フレームワークChainerの紹介とFPGAへの期待
Seiya Tokui
深層学習フレームワークChainerとその進化
深層学習フレームワークChainerとその進化
Yuya Unno
PCFG構文解析法
PCFG構文解析法
Yusuke Oda
CMSI計算科学技術特論A(3) OpenMPの基礎
CMSI計算科学技術特論A(3) OpenMPの基礎
Computational Materials Science Initiative
boost - std - C#
boost - std - C#
Tatsuya Ishikawa
CMSI計算科学技術特論A(4) Hybrid並列化技法
CMSI計算科学技術特論A(4) Hybrid並列化技法
Computational Materials Science Initiative
ディープニューラルネット入門
ディープニューラルネット入門
TanUkkii
Python 機械学習プログラミング データ分析演習編
Python 機械学習プログラミング データ分析演習編
Etsuji Nakai
111015 tokyo scipy2_ディスカッション
111015 tokyo scipy2_ディスカッション
Shohei Hido
Tokyo.R #19 発表資料 「Rで色々やってみました」
Tokyo.R #19 発表資料 「Rで色々やってみました」
Masayuki Isobe
論文紹介:「End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF」
論文紹介:「End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF」
Naonori Nagano
110828 tokyo scipy1_hido_dist
110828 tokyo scipy1_hido_dist
Shohei Hido
文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)
文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)
Shirou Maruyama
Chainer Development Plan 2015/12
Chainer Development Plan 2015/12
Seiya Tokui
深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル
Yuta Kashino
More Related Content
What's hot
Learning Phrase Representations using RNN Encoder-Decoder for Statistical Mac...
Learning Phrase Representations using RNN Encoder-Decoder for Statistical Mac...
Yuta Kikuchi
MS COCO Dataset Introduction
MS COCO Dataset Introduction
Shinagawa Seitaro
GPU上でのNLP向け深層学習の実装について
GPU上でのNLP向け深層学習の実装について
Yuya Unno
CuPy解説
CuPy解説
Ryosuke Okuta
音声認識と深層学習
音声認識と深層学習
Preferred Networks
D言語会議#1
D言語会議#1
9rnsr
High performance python computing for data science
High performance python computing for data science
Takami Sato
深層学習フレームワークChainerの紹介とFPGAへの期待
深層学習フレームワークChainerの紹介とFPGAへの期待
Seiya Tokui
深層学習フレームワークChainerとその進化
深層学習フレームワークChainerとその進化
Yuya Unno
PCFG構文解析法
PCFG構文解析法
Yusuke Oda
CMSI計算科学技術特論A(3) OpenMPの基礎
CMSI計算科学技術特論A(3) OpenMPの基礎
Computational Materials Science Initiative
boost - std - C#
boost - std - C#
Tatsuya Ishikawa
CMSI計算科学技術特論A(4) Hybrid並列化技法
CMSI計算科学技術特論A(4) Hybrid並列化技法
Computational Materials Science Initiative
ディープニューラルネット入門
ディープニューラルネット入門
TanUkkii
Python 機械学習プログラミング データ分析演習編
Python 機械学習プログラミング データ分析演習編
Etsuji Nakai
111015 tokyo scipy2_ディスカッション
111015 tokyo scipy2_ディスカッション
Shohei Hido
Tokyo.R #19 発表資料 「Rで色々やってみました」
Tokyo.R #19 発表資料 「Rで色々やってみました」
Masayuki Isobe
論文紹介:「End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF」
論文紹介:「End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF」
Naonori Nagano
110828 tokyo scipy1_hido_dist
110828 tokyo scipy1_hido_dist
Shohei Hido
文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)
文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)
Shirou Maruyama
What's hot
(20)
Learning Phrase Representations using RNN Encoder-Decoder for Statistical Mac...
Learning Phrase Representations using RNN Encoder-Decoder for Statistical Mac...
MS COCO Dataset Introduction
MS COCO Dataset Introduction
GPU上でのNLP向け深層学習の実装について
GPU上でのNLP向け深層学習の実装について
CuPy解説
CuPy解説
音声認識と深層学習
音声認識と深層学習
D言語会議#1
D言語会議#1
High performance python computing for data science
High performance python computing for data science
深層学習フレームワークChainerの紹介とFPGAへの期待
深層学習フレームワークChainerの紹介とFPGAへの期待
深層学習フレームワークChainerとその進化
深層学習フレームワークChainerとその進化
PCFG構文解析法
PCFG構文解析法
CMSI計算科学技術特論A(3) OpenMPの基礎
CMSI計算科学技術特論A(3) OpenMPの基礎
boost - std - C#
boost - std - C#
CMSI計算科学技術特論A(4) Hybrid並列化技法
CMSI計算科学技術特論A(4) Hybrid並列化技法
ディープニューラルネット入門
ディープニューラルネット入門
Python 機械学習プログラミング データ分析演習編
Python 機械学習プログラミング データ分析演習編
111015 tokyo scipy2_ディスカッション
111015 tokyo scipy2_ディスカッション
Tokyo.R #19 発表資料 「Rで色々やってみました」
Tokyo.R #19 発表資料 「Rで色々やってみました」
論文紹介:「End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF」
論文紹介:「End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF」
110828 tokyo scipy1_hido_dist
110828 tokyo scipy1_hido_dist
文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)
文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)
Viewers also liked
Chainer Development Plan 2015/12
Chainer Development Plan 2015/12
Seiya Tokui
深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル
Yuta Kashino
ディープラーニングにおける学習の高速化の重要性とその手法
ディープラーニングにおける学習の高速化の重要性とその手法
Yuko Fujiyama
ボケるRNNを学習したい (Chainer meetup 01)
ボケるRNNを学習したい (Chainer meetup 01)
Motoki Sato
Lighting talk chainer hands on
Lighting talk chainer hands on
Ogushi Masaya
Chainer Contribution Guide
Chainer Contribution Guide
Kenta Oono
Chainer meetup lt
Chainer meetup lt
Ace12358
Introduction to DEEPstation the GUI Deep learning environment for chainer
Introduction to DEEPstation the GUI Deep learning environment for chainer
Ryo Shimizu
Deep parking
Deep parking
Shintaro Shiba
A Chainer MeetUp Talk
A Chainer MeetUp Talk
Yusuke Oda
Towards Chainer v1.5
Towards Chainer v1.5
Seiya Tokui
Chainer meetup
Chainer meetup
kikusu
Chainer Update v1.8.0 -> v1.10.0+
Chainer Update v1.8.0 -> v1.10.0+
Seiya Tokui
Chainerを使って細胞を数えてみた
Chainerを使って細胞を数えてみた
samacoba1983
NVIDIA 更新情報: Tesla P100 PCIe/cuDNN 5.1
NVIDIA 更新情報: Tesla P100 PCIe/cuDNN 5.1
NVIDIA Japan
On the benchmark of Chainer
On the benchmark of Chainer
Kenta Oono
深層学習ライブラリの環境問題Chainer Meetup2016 07-02
深層学習ライブラリの環境問題Chainer Meetup2016 07-02
Yuta Kashino
ヤフー音声認識サービスでのディープラーニングとGPU利用事例
ヤフー音声認識サービスでのディープラーニングとGPU利用事例
Yahoo!デベロッパーネットワーク
俺のtensorが全然flowしないのでみんなchainer使おう by DEEPstation
俺のtensorが全然flowしないのでみんなchainer使おう by DEEPstation
Yusuke HIDESHIMA
Chainer, Cupy入門
Chainer, Cupy入門
Yuya Unno
Viewers also liked
(20)
Chainer Development Plan 2015/12
Chainer Development Plan 2015/12
深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル
ディープラーニングにおける学習の高速化の重要性とその手法
ディープラーニングにおける学習の高速化の重要性とその手法
ボケるRNNを学習したい (Chainer meetup 01)
ボケるRNNを学習したい (Chainer meetup 01)
Lighting talk chainer hands on
Lighting talk chainer hands on
Chainer Contribution Guide
Chainer Contribution Guide
Chainer meetup lt
Chainer meetup lt
Introduction to DEEPstation the GUI Deep learning environment for chainer
Introduction to DEEPstation the GUI Deep learning environment for chainer
Deep parking
Deep parking
A Chainer MeetUp Talk
A Chainer MeetUp Talk
Towards Chainer v1.5
Towards Chainer v1.5
Chainer meetup
Chainer meetup
Chainer Update v1.8.0 -> v1.10.0+
Chainer Update v1.8.0 -> v1.10.0+
Chainerを使って細胞を数えてみた
Chainerを使って細胞を数えてみた
NVIDIA 更新情報: Tesla P100 PCIe/cuDNN 5.1
NVIDIA 更新情報: Tesla P100 PCIe/cuDNN 5.1
On the benchmark of Chainer
On the benchmark of Chainer
深層学習ライブラリの環境問題Chainer Meetup2016 07-02
深層学習ライブラリの環境問題Chainer Meetup2016 07-02
ヤフー音声認識サービスでのディープラーニングとGPU利用事例
ヤフー音声認識サービスでのディープラーニングとGPU利用事例
俺のtensorが全然flowしないのでみんなchainer使おう by DEEPstation
俺のtensorが全然flowしないのでみんなchainer使おう by DEEPstation
Chainer, Cupy入門
Chainer, Cupy入門
Similar to Capitalicoでのchainer 1.1 → 1.5 バージョンアップ事例
ヤフーの次世代パイプラインについて#yjdsw3
ヤフーの次世代パイプラインについて#yjdsw3
Yahoo!デベロッパーネットワーク
Future Tech Night Agile勉強会 20210709
Future Tech Night Agile勉強会 20210709
shotamiyazaki6
数千人が利用する楽天Redmineの過去と未来 - The past and future of Rakuten Redmine that is the...
数千人が利用する楽天Redmineの過去と未来 - The past and future of Rakuten Redmine that is the...
Dai FUJIHARA
数千人が利用する楽天Redmineの過去と未来
数千人が利用する楽天Redmineの過去と未来
Rakuten Group, Inc.
Trac Plugin Developement with Jenkins
Trac Plugin Developement with Jenkins
Takahisa Wada
インフラエンジニアがk8sでアプリを作って見えた今後のインフラ
インフラエンジニアがk8sでアプリを作って見えた今後のインフラ
susumu tanaka
フロントエンドで GraphQLを使った所感
フロントエンドで GraphQLを使った所感
Chao Li
アジャイルソフトウェア開発の道具箱
アジャイルソフトウェア開発の道具箱
Koichi ITO
パワポをよくしただけなのに〜デザインの力で会社に貢献するチームの紹介
パワポをよくしただけなのに〜デザインの力で会社に貢献するチームの紹介
Masataka Suzuki
Similar to Capitalicoでのchainer 1.1 → 1.5 バージョンアップ事例
(9)
ヤフーの次世代パイプラインについて#yjdsw3
ヤフーの次世代パイプラインについて#yjdsw3
Future Tech Night Agile勉強会 20210709
Future Tech Night Agile勉強会 20210709
数千人が利用する楽天Redmineの過去と未来 - The past and future of Rakuten Redmine that is the...
数千人が利用する楽天Redmineの過去と未来 - The past and future of Rakuten Redmine that is the...
数千人が利用する楽天Redmineの過去と未来
数千人が利用する楽天Redmineの過去と未来
Trac Plugin Developement with Jenkins
Trac Plugin Developement with Jenkins
インフラエンジニアがk8sでアプリを作って見えた今後のインフラ
インフラエンジニアがk8sでアプリを作って見えた今後のインフラ
フロントエンドで GraphQLを使った所感
フロントエンドで GraphQLを使った所感
アジャイルソフトウェア開発の道具箱
アジャイルソフトウェア開発の道具箱
パワポをよくしただけなのに〜デザインの力で会社に貢献するチームの紹介
パワポをよくしただけなのに〜デザインの力で会社に貢献するチームの紹介
Capitalicoでのchainer 1.1 → 1.5 バージョンアップ事例
1.
Capitalicoでのchainer 1.1→1.5 バージョンアップ事例 J U
N - Y A N O R I M A T S U Engineer http://alpaca.ai jnory@alpacadb.com 2015/12/19 Chainer Meetup #01
2.
自己紹介 乗松潤矢(Twitter: arrow_elpis, Github:
jnory) Alpaca (Engineer) フリーランス 博士課程在学中(専門:自然言語処理, 統計翻訳) 今日の肩書
3.
Entry Point FXチャートにはパターンがある
4.
すべて同一カテゴリの事象 パターン認識で検出したい
5.
プログラミングなしでパターンを発見
6.
Chainerによるモデル学習 入力:為替時系列データ 出力:学習時に指定したパターンっぽさ
7.
今日の発表 弊社環境をChainer 1.5にバージョンアップしました バージョンアップでハマったところは? バージョンアップで良くなったところは? バージョンアップで悪くなったところは? Chainerバージョンアップはどの程度のタスク?
8.
今日の発表 弊社環境をChainer 1.5にバージョンアップしました バージョンアップでハマったところは? バージョンアップで良くなったところは? バージョンアップで悪くなったところは? Chainerバージョンアップはどの程度のタスク?
9.
本題の前に…CapitalicoでのChainerバージョンアップのトラウマ 2015年9月2日 Chainer 1.3リリース 弊社環境もバージョンアップを試みるが…
v1.1と比較してモデル学習が約1.5倍遅い バージョンアップ失敗 Chainer 1.3の変更点 CuPyの導入 どうもこれが遅いらしい
10.
バージョンアップで良くなったところ ボトルネックだったCuPyが高速化 速くなりました!!! Chainer 1.1 :約22分 Chainer
1.5 :約16分 (ありがとうございます!!!) 弊社サービス上でのモデル学習時間
11.
Training Loss収束の様子 Chainer 1.1
Chainer 1.5 ほぼ同じ学習ができた 反復回数 反復回数
12.
Chainerの速度で気になっていること Dropoutが全体の12%の時間 Linearより重い…? モデル学習時のProfileを取った 実行時間に大きな偏りはない
13.
今日の発表 弊社環境をChainer 1.5にバージョンアップしました バージョンアップでハマったところは? バージョンアップで良くなったところは? バージョンアップで悪くなったところは? Chainerバージョンアップはどの程度のタスク?
14.
バージョンアップで悪くなったところ 一度GPUメモリを確保すると開放されない 学習終了後もプロセスは起動したまま サーバープログラム内で学習・テスト
15.
メモリ解放したい 幾つかのプロセスがGPUを使用 GPUメモリが開放されないと同時起動プロセス数に影響 用途ごとにプロセスを分離 モデル学習 テスト実行 大量のユーザーに対応できない CapitalicoはBtoCなサービス 目標:1万人程度が同時アクセス 数千人が同時にモデル学習を走らせても動くようにしたい
16.
[解決策] ちょっとだけChainerを改造 MemoryPoolにこんなコードを追加 (とにかく全部捨てる…という意味) PRしました
17.
今日の発表 弊社環境をChainer 1.5にバージョンアップしました バージョンアップでハマったところは? バージョンアップで良くなったところは? バージョンアップで悪くなったところは? Chainerバージョンアップはどの程度のタスク?
18.
バージョンアップでハマったところ 1. インストール 2. FunctionSet
→ Chain 4. モデルの保存形式をHDF5に変更 5. 過去に学習したモデルを変換 3. その他の非互換を修正 これ バージョンアップの流れ
19.
バージョンアップでハマったところ HDF5からの読込:一部のパラメータが読み込まれない chain.linear = Linear(…,
nobias=True) from chainer.serializers.hdf5 import HDF5Deserializer group = h5file["chainer"] serializer = HDF5Deserializer(group) serializer.load(chain) モデルファイルにbiasが書かれていても読まれない
20.
今日の発表 弊社環境をChainer 1.5にバージョンアップしました バージョンアップでハマったところは? バージョンアップで良くなったところは? バージョンアップで悪くなったところは? Chainerバージョンアップはどの程度のタスク?
21.
Chainerバージョンアップはどの程度のタスク? コード修正:5.5人日 動作検証に要した期間:3人日 修正開始 11/26 本番環境適用
12/11 デプロイ等々:2人日 コード修正量 工数 追加:500行(くらい) 削除:100行 コミット回数:30回
22.
Chainerに期待すること コミュニティが大きくなってほしいと思います Numpy非互換部分が少しずつでも減っていくと嬉しいです CuPyは単体でも十分インパクト大だと思います モデルフォーマットは今後固定していただけるとありがたい! ロゴがあると人に紹介するときにより大きいインパクト
23.
まとめ CapitalicoのChainerをバージョンアップ 学習機能が高速化 メモリ使用効率は悪化 PRしましたm(_ _)m バージョンアップ作業はそこそこ重いタスク ハマりどころもそこそこある
24.
おまけ Chainer 1.5での修正必要箇所一覧 Reference: https://groups.google.com/forum/#!topic/chainer/eXyL11thcNY
25.
インストール pip install cython==0.23.4 pip
install h5py==2.5.0 pip install chainer==1.5.0.2 何のつまづきもなくすんなり
26.
FunctionSet → Chain 何のつまづきもなくすんなり self.model
= FunctionSet(**args) self.model = Chain(**args) API互換性有
27.
その他非互換部分 レイヤー内の変数が(Numpy/gpuarrayから)Variableになった ohlc.W.shape[1] ohlc.W.data.shape[1] 旧FunctionがFunctionとLinkに分離 import chainer.functions as
F F.Linear(x_size, self.n_units) import chainer.links as L L.Linear(x_size, self.n_units)
28.
過去に学習したモデルを変換 Chainer 1.1形式のモデル (pickle)を読み込み1.5の形式(HDF5)で出力 import
sys from chainer.links.connection import linear sys.modules['chainer.functions.linear'] = linear パッケージの配置が変わっているのでトリックを入れる with open(path) as fp: chain = cPickle.loads(fp.read()) 一応読めるようになる newchain.linear.W.data[...] = model.W[...] newchain.linear.W.grad[...] = model.gW[...] newchain.linear.b.data[...] = model.b[...] newchain.linear.b.grad[...] = model.gb[...] newchain = Chain(linear=linear.Linear(x, y)) 変数の値を淡々とコピー nobias=Trueのとき不要
29.
モデルの保存形式をHDF5に変更 保存:何のつまづきもなくすんなり from chainer.serializers.hdf5 import
HDF5Serializer group = h5file.create_group("/chainer”) serializer = HDF5Serializer(group) serializer.save(model) 読込:一部のパラメータが読み込まれなくてハマる model = Linear(…, nobias=True) from chainer.serializers.hdf5 import HDF5Deserializer group = h5file["chainer"] serializer = HDF5Deserializer(group) serializer.load(model) ファイルにbiasが書かれていても読まれない
30.
一応の解決策(おそらく非推奨) chain.linear = Linear(…,
nobias=True) nobias=Trueなレイヤーを無理やりnobias=Falseに書き換える del chain.linear.b out_size = chain.linear.W.data.shape[0] chain.linear.add_param('b', out_size) from chainer.serializers.hdf5 import HDF5Deserializer group = h5file["chainer"] serializer = HDF5Deserializer(group) serializer.load(chain) bをリセット 以下の定義は修正不可とする モデル読み込み (ここを変えられるならnobiasを取るのが正攻法)
Download now