LoginSignup
21
22

More than 5 years have passed since last update.

研究室で学生がTensor flowを扱うために

Last updated at Posted at 2016-05-31

今流行りのディープラーニングを「研究室」で手早く設定するためのメモ。(初心者のメモなので、眺める程度にどうぞ)

1.OSはUbuntu

研究室の事情もあり、CentOS6.5で設定を試みたのだが、バージョン等の影響で環境構築に非常に手間がかかった。これらの問題がUbuntu 14.04 LTSでは嘘のようにさっと設定ができる。他のソフトとの連携も考えるとUbuntuを強く推奨。

2.png等の画像を扱えるコードを用意しておく

ディープラーニングのお試し等で大変なのが、統一的なデータセットのフォーマットがないこと。学部生に一々バイナリ読ませるのは結構、酷。そこで、画像ファイルを一枚一枚読み込めるコードを持っておく。
http://kivantium.hateblo.jp/entry/2015/11/18/233834
で紹介されているコードが分かりやすい。
このコードを持っておくと、試したい画像をお手軽に試せる。

(2016/10/12追記)
3.GPUは占有するもの
研究室の皆で使う・・・となるとこの問題が発生します。Deep LearningはGPUをほぼ占有して行うことがあるため(というか画像系やるとわりとメモリ足りなくなる)誰かが動かしていると、他の人が動かせないなどの問題が発生します。どうしても皆でというならば、KVM等で仮想化するのも手ですが、結構難易度高めです。なので、ハードディスクごと入れ替えたりという事例もしばしば・・・。あとはクラウドという手段もありますが、時間課金制なことが多いのもあって、研究室では使いづら問題もあります。ただ、今はgtx1080もあれば大抵のタスクがこなせるので、15万くらい予算あればいけるかも?

4.GPUのメモリ問題
その後の指摘でGTX960なら余裕なはず・・・とご意見をいただいたのでただいま検証中・・・。
6/13改訂
Web上にあるTensorflowのコードを拾って改造すると、GPUのメモリエラーが発生することがある。たとえば、

W tensorflow/core/common_runtime/bfc_allocator.cc:271] Ran out of memory trying to allocate 5.57GiB. See logs for memory state.
W tensorflow/core/framework/op_kernel.cc:900] Resource exhausted: OOM when allocating tensor with shape[59635,28,28,32]

shape[59635,28,28,32]を見ると、59635枚の画像はそれぞれ28*28のサイズになっていて、最初のたたみ込みで、それぞれ32通りの画像を生成する・・・の意味(であってるはず)。

これだけの量がGPUメモリに展開され、60000(約)*28*28*32=1.5G そして、1.5*4=6G 且つ計算用に取った諸メモリを組み合わせると、7Gくらいになり、7G-1.9G=5.1Gで、なんとなく5.58GiB足りないよって出てくるのだと想像。

、普通のGPUだとRan out of memoryを引き起こしてしまうことがある。画像の数を減らせば解決できるのだが、データ量が鍵となる場合、どうにかしないと前に進めない。

これと同じ問題を抱えて解決している記事がこちら
http://qiita.com/ikki8412/items/6784370f73dc7734372a
筆者の前の記事のコードとdiffを見ながらコードを改善する・・・。


ディープラーニングの話で大体出てくる、MNIST。(計算すればわかりきっていることだが)研究室に余ってるGTX960(メモリ2GB)とかで回すと、

W tensorflow/core/common_runtime/bfc_allocator.cc:271] Ran out of memory trying to allocate 5.57GiB. See logs for memory state.

とかでて、全然足りないことがわかる。よく研究室でTITAN X を見かけるが、今だったらGTX1080が一本あるといいかもしれない。また、GTX1080の影響で安くなった980Tiを買っちゃえーとかやると結局メモリ不足に陥りそうなので注意?

21
22
2

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
21
22