Re: [Chainer-jp] training実行時のGPUメモリ管理

883 views
Skip to first unread message

Ryosuke Okuta

unread,
Nov 8, 2017, 9:53:17 AM11/8/17
to 吴益明, Chainer Japanese User Group
奥田です。

updateの後、
・cleargradsを呼びだしてgradを消す
・backwardや、フォワードに使ったローカル変数も消す
などして、計算グラフのデータが全て無くなるようにした後で、

memory_pool.free_all_blocks()

を行ってみていただけますか?
基本的に、CPython上では解放されたGPUメモリはすぐにGCされる(参照カウント方式のため)のですが、
メモリの断片化が起こっている可能性が有り、それを解消する事ができます。
計算速度は遅くなりますが、最後まで実行できる可能性がまします。



2017年11月8日 3:26 吴益明 <wuyim...@hotmail.com>:
> Chainer3.0を使って比較的深いNN(pix2pixに近いもの)の学習を行わせているのですが、学習の途中でGPU(メモリ2GB)がout of
> memoryを起こしてしまいます。
> 確認したところ十回ほどのiteration(パラメータの更新)後に落ちているので、一回の順伝播計算に使うメモリは足りているのだと思います。batch数を減らしたり、少しモデルを小さくしてみると更に多くのiteration後に落ちるようになります。
>
> ほかの小さめのNNだと、このような問題は起こらないので、憶測ですが、cupyのガーベジコレクションが追い付いていないという事なのでしょうか・・・?
> ちなみにtrainer等は使っておらず、1.xスタイルのOptimizer.update()関数で学習を行っています。
> iterationごとにVariableのメモリを明示的に解放する方法はあるのでしょうか?
>
> --
> このメールは Google グループのグループ「Chainer Japanese User Group」に登録しているユーザーに送られています。
> このグループから退会し、グループからのメールの配信を停止するには chainer-jp+...@googlegroups.com
> にメールを送信してください。
> このグループに投稿するには chain...@googlegroups.com にメールを送信してください。
> このディスカッションをウェブ上で閲覧するには
> https://groups.google.com/d/msgid/chainer-jp/0dfc3c24-6593-44c2-a67d-8f2106a89c4c%40googlegroups.com
> にアクセスしてください。
> その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。



--
〒100-0004 東京都千代田区 大手町1丁目6−1 大手町ビル2F
Preferred Networks, Inc.
Ryosuke Okuta 奥田遼介

吴益明

unread,
Nov 8, 2017, 11:41:15 AM11/8/17
to Chainer Japanese User Group
奥田さま、

ご返事いただきありがとうございます。out of memory問題は完全に自分のコーディングのミスによるものだったと判明したので、元の投稿は削除してしまいました。
しかしメモリ管理の問題は元から気になっていたところなので、Tipsを示して頂けて良かったです。今後参考にさせて頂きます。

ありがとうございました!

在 2017年11月8日星期三 UTC+8下午10:53:17,okuta写道:

Ryosuke Okuta

unread,
Nov 8, 2017, 7:35:40 PM11/8/17
to 吴益明, Chainer Japanese User Group
解決したとのこと良かったです。
今後もChainerをよろしくお願いします。


2017年11月9日 1:41 吴益明 <wuyim...@hotmail.com>:
> https://groups.google.com/d/msgid/chainer-jp/b26f74c6-3a9b-4a89-9736-96269deffe56%40googlegroups.com
Reply all
Reply to author
Forward
0 new messages