学外の人のヘルプがありがたい

文科省関係の書類の直しが昨日の午前中〆切だったのをすっぽかしてしまったので、朝5時に起きて泣きながら(誇張)作成。10時前に寝れば5時に起きるのは大変じゃないのだが、娘がなかなか寝てくれないのである。

午前中は共同研究関係の電話会議。自分だけだと研究領域が手薄になってしまうので、こうやって学外の方と連携できるのは本当に助かる。月に1回2-3時間程度研究の相談に乗ってくださるの、年間の研究費でいうと100-150万円ぶんくらいの貢献ではないか、という気がする。

昼から対話勉強会のキックオフミーティング。せっかく B3 の学生たちが研究室インターンシップで来てくれているので、勉強ではなく研究っぽいことをしようと考え、対話をテーマに選ぶことにしたのである(せっかく国内でもかなりの規模の自然言語処理の研究室になってきたと思っているので、うちの研究室じゃないとできないことをした方がいいのかな、と)。いろいろ準備した方がいいのかもしれないが、研究は講義と違って行き当たりばったりで変わっていくので、その場の雰囲気に合わせてやることを決めていく。とりあえず対話の本を読みつつ、データを作成してアノテーションすることを考えて準備。

午後は教授会。学部の教授会はいいのだが、大学院の教授会はまた自分が大学院教務委員長として8割くらいの審議・報告案件を説明しなければならず、なんで毎回こんなに説明しないといけないのだろうか?と不思議に思ったりする(去年まではそんなに多い印象はなかったので)。あと、審議案件で「これってどういうことですか?」と言われても、ペーペーの自分では分からなかったり(汗)歴史のある(しかも統合されて経緯も複雑な)組織だと、いろいろ錯綜してそうである。

夕方は学生から「Chainer を使って htop で見るとプロセスが大量増殖して見える」という報告を受けて少し調べてみる。import chainer するだけで確かにたくさんプロセスが上がるようなのだが、上がる数としてはどうも見えている CPU コア数ぶん上がっているようである(8コアの CPU で hyper threading を有効にしたものが2つだと、合計8x2x2=32個)。strace とかしてみると、どうも NumPy あたりで起動されていて、NumPy を呼んだときに BLAS がデフォルトで CPU コア数ぶんスレッドを立ち上げているようである。OMP_NUM_THREADS という環境変数を1に指定すると1スレッドしか立ち上がらないようになるので、これで解決だろうか?

といういうなことを Twitter で書いていたら、詳しい人が補足してくださって(ありがたい)、

  • htop はデフォルトの設定が1スレッドを1プロセスとして表示するので、その設定を変えればいい
  • Python でマルチスレッドはまともに動かないので、Chainer を CPU で使うならスレッド数は1に固定するといい
  • BLASIntel MKL(無料)がおすすめ

などという情報を教えていただく。Intel MKL は入れていなかった(OpenBLAS にしていた)ので、計算機係の人に依頼すればいいだろうか(特に CPU で Chainer 使っている人に)。