LoginSignup
1
2

More than 5 years have passed since last update.

GPUで作ったpickleをCPUで使う時のTips

Last updated at Posted at 2017-11-09

概要

研究において、GPUで学習してもらったPickleのdumpファイルはGPUで作ったPickleのファイルであるため、どうやらCPUでそのまま使えないらしい。実際にやってみたところエラーが出たので改善策をまとめておく。

このままではせっかく作ったモデルファイルで予測ができない。
よってGPUで作ったpickleのモデルファイルを使って予測を行うために自分がやったことをメモする。

環境

python => 3.5.2

chainer => 2.0.1

CPU用にモデルファイルを変換

pylearn2にあるgpu_pkl_to_cpu_pklを使ってdumpファイルをcpu用に変換する。
ただし、これはどうやら実験段階にあるため、環境によってはそもそもうまくいかない場合があることに注意する。

  1. Pylearn2がインストールされていない場合はインストールする(公式ドキュメントはこちら)
  2. Pylearn2のgpu_pkl_to_cpu_pklを使って変換を行い、保存する。

[画像]

変換後

変換後、予測のタスクをやってみたところしっかり予測できた。
エラーもなし。スバラシイ。

対策(そもそもではあるが)

そもそもGPUで保存する際にCPUで使えるように保存できないのかと思って調べてみたところ

model.to_cpu
pickle.dump()

これでchainerの場合はCPU向けのPickleにできるらしい。センセイェ...
※GPUでの学習において、このpickle.dumpをepochごとに行なっている場合は、次のepochを始める際にmodel.to_gpuをしておかないと、モデルがおかしくなるので注意が必要。

参考

Pylearn2 公式ドキュメント
Pylearn2(Github)
Converting a theano model built on GPU to CPU?

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2