GPU 言語処理なら TITAN で

昨日、今年度納入してもらったサーバが1日で返ってきて、GPU(Tesla K40m)を外して端子を洗浄して戻したら動作するようになった、とのことで、確認してみる。確かに4台とも認識し、使えるようである。なんだったんだろうか。

自分も PC のパーツを買って組み立てていたころ(もう20年前だ!)、初めて組み立ててみたら全く画面が映らず、1日かけても2日かけても原因が分からず、20万近くドブに捨てたのか、と思って文字通り死にたくなったのだが、最後に一から手順を確認しよう、と思って全部外してつなぐ、ということを試したら、グラフィックボードの接触が悪くて映らなかっただけ、ということがあったのを思い出した(そして、ハードウェアだけでは PC はただの箱であることが分かり、OS を買いに走ったのであるが)。PCI と比べると AGP接触が厳しかったのである。

GPU を使おうとするとプロセスがフリーズし、ゾンビになる件については、どうやら NVIDIA 公式サイトで配布されている Ubuntu 用の apt リポジトリから CUDA をインストールすると起きる現象のようで、具体的には cuda をインストールすると依存関係で nvidia-modprobe がインストールされ、nvidia-modprobe が提供する /usr/bin/nvidia-modprobe があると、なぜか起動時に nvidia-uvm カーネルモジュールを読み込まず、GPU を使うプロセスが /dev/nvidiactl にアクセス(open)するタイミングでハングするいうだ。(起動後に modprobe nvidia-uvm するとモジュールは読み込めるのだが、それから mknod してもダメ)

納入してくれた業者は、deb パッケージでインストールするのではなく、シェルスクリプトでインストールする手順で動作確認をしていたのでこの問題がなかったようだ。我々も、ここで時間を使いたいわけではないので、とりあえず /usr/bin/nvidia-modprobe を移動して、nvidia-modprobe パッケージを hold してお茶を濁す。(多分、ユーザ権限でモジュールを読み込んだりデバイスを作ったりするあたりの制御でうまく行っていないのだと思うが、深追いする気力がない)

word2vec で速度を確認してみると、どうも Tesla K40m より TITAN X の方が(言語処理タスクでは?)速いようで、精度が違う点は気になるが、3-4倍程度の価格差(4枚買うと Tesla K40m だと200万を超えるが、TITAN X だと60万)を考えると、数を揃えるなら TITAN X 一択ではないか、という気になる。(うちの研究室だと、今のところ GPU よりメモリがほしいので、GPU が8台あるからしばらく GPU は買わなくていいかな、という気になっているが)

午後は200ページほどある原稿の最終確認。月に出版予定だそうで、かなり〆切がタイトだった。結局4時間ほどかかってしまったが、今年度までに引き受けた順に片付けていこうと思うので、昨年度以前からの保留案件(原稿)で、あと残っている仕事は2つ。(引き受けたあと、時間が確保できずに心苦しく思いながらギブアップさせてもらった案件も2つあるし、とにかく少ない時間でもできる範囲でスループットを確保したい)