seri::diary::graduate_school

大学院修士課程での研究生活について書いています

春学期振り返り(本音編)

2018年8月3日

4月にスタートした春学期も来週で終わりである。集中講義に一個出てレポート出して終わりである。 このブログはなるべく本音を書くようにしているのだが、今日はちょっとネガティブなことを書くので苦手な人はリターンしていただきたい。(別に何か問題になるようなことを書く訳じゃないけど)

春学期を振り返って一言感想を申すならば、ただひたすらにしんどかったという一言に尽きる。

何がしんどかったのかと言えば、ベンチャーから国立大学という組織に変わったことによるカルチャーの変化や、前提知識がないためについていくのがしんどい講義や、研究歴が全くない中からテーマを探して手探りで行う研究活動。

特に、機械学習の知見が担当教官にも他のメンバーにも全くない環境なのに(研究室としては「だからこそネタになる」という側面もあるのだが)機械学習、特に深層学習をテーマとしてHPCに関係したネタを探すのがとてつもなくつらい。HPCと機械学習は相性がよさそうにも見えるが、所属先がストレージを中心に扱っているチームなのでそれに関連した研究を求められるのだが、ディスクに負荷がかかるようなユースケース機械学習において意外と存在しないのである。この分野における花形は、GPUの活用による高速化やネットワーク帯域のボトルネック解決やら、そっちの方だなぁという気がするのだが、その辺はもう他の人がやってしまっているので自分の出る幕はないのである。

深層学習で言っても、例えばtensorflow, chainerのサンプルを見るとよくnpy形式で保存した訓練データをnumpy.loadで読み込んで使うのだが、mmap_mode='r'を指定すると内部でmmapを使って逐次ロードができ、全部メモリに載せなくてもndarrayの要素にアクセスできる。

自分が行った実験では、numpy.load(mmap_mode='r')でロードしたndarrayを訓練データとして、1 iteration回すのに必要なデータをロードする時間が占める割合は、訓練処理全体のうちごくわずかである。単純にndarrayにアクセスするだけなら大体どんなshapeのndarrayでも1ms以下で返ってくる。これで問題になる訳がないし、メモリに乗り切るサイズならそもそもdisk ioは最初だけだが、それでも高々数10GBだし、初回の一回だけである。これで問題のあるユースケースは殆どないと考えられる。リアルタイムにinput食わせて機械学習の訓練を回しまくりたいならそれはsparkとかを使うべきである。

パラメータサイズが大きいLSTMの訓練では8 batchで1 iterationに25秒かかるようなケースもあるのだが、そういう場合はもはや1 iterationの処理時間全体に対して1%も占めていない。それよりもCPUとGPU間のinputデータ転送にかかる時間の方がよっぽど支配的であり、本当はこっちを何とかする方法について研究したい。研究したいのだが、担当教官がdisk ioの有無を調べる方を優先するように言うためそうもいかない。先に問題かもしれないと思われることを片付ける方がやり方としても健全である。また、CPU<->GPUのデータ転送がボトルネックになるという事実は、深層学習の仕組み上正直しょうがないのかなという気もしており、先のSwopp2018でもGPUのメモリ使用率を削減する方法についての発表があったくらいである。ド素人の俺一人がprofilerでいくら追ったところで何もできない可能性の方が高い。ストレージをくっつけたGPUを開発した方が良い気すらする。

それよりも今気にしているのは研究が全く形をなしていないこと。サーベイはそれなりに進んだが、それよりも秋学期に中間発表があるため、そのタイミングで一度成果をまとめて発表して教授陣と他の学生からのレビューを受けなければならない。それが今出来る状態になっていない。サーベイはした。多少の実験はした。しかし論文になるような成果は全く出ていない。どうすんだこれ。いや俺も知らん。とはいかないので、まぁ何とかしなければならない。

所で、春学期にM2の修論中間発表を30人分ぐらい聞いたのだが、大学教授というのは意外と学生にぶん投げてしまうもののようだ。事前にレビューしていれば解決してそうな所ですらあえてそのまま学生に発表させてみんなからの突っ込みを入れさせて成長させる、という意図なのかもしれないが、その辺は大分仕事とは違うんだなぁと思った。この辺は研究室内でやる論文発表の練習でも同じで、学会の数日前とかなのに割とクリティカルな指摘が入ることがあったり、説教が始まったりする。めちゃくちゃ空気悪くなるので正直止めて欲しい。

なので、masterコースの学生の研究活動自体がそういうもんなのかもしれないし、自分のM1の中間発表のクオリティなんて誰も気にしてない可能性があるが、それでもなんかこう半年もかけて何もできませんでしたは個人的に許せないものがあり、何とかして形になるものを発表したいところではある。別にそれがそのまま修論になるかは全く分からんが、どっかで1回はどっかの学会に論文は出したい。そうしないと金と時間を投資している意味がない。