今流行りのディープラーニングを「研究室」で手早く設定するためのメモ。(初心者のメモなので、眺める程度にどうぞ)
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(約)282832=1.5G そして、1.54=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を買っちゃえーとかやると結局メモリ不足に陥りそうなので注意?