OkayuTech

情報系大学生の技術的なこと

複数の計算機上のGPU使用率をモニタリングできるツールを作った

タイトルのままです。

github.com

f:id:okayu_k:20180429075256p:plain

複数の計算機上にあるGPUを複数人で共有するような場合、使用前に空いているGPUを探す必要があります*1

1つ1つ手動で探すのも面倒ですし、自動で空いたGPUに割り当てる方法もパッと思いつかなかったので、1つのWebページに複数の計算機上のGPU使用率を表示できるツールを作成しました。

仕組みは非常に簡単で、各計算機上で"ssh hoge nvidia-smi ..."を実行してその結果を集めてくるだけです。
そのためアクセスする度にssh接続とnvidia-smiが実行されるのであまり効率的ではないかもしれませんが、そんなに大人数が頻繁にアクセスすることもないと思うので妥協しました。

GPU使用率をモニタリングしていると、GPUメモリ上にモデルを載せたまま何も処理をしていない状態が発生していることに気づきます。 そうなると計算資源自体は空いているもののメモリが足りないので他の人がモデルを載せられず、実質的にGPUが使えない状態になります。
かく言う私もJupyter Notebookで学習させる際に、モデルを待避させるコードを書かないことがあるので、数分から数時間の間そのような状態にしてしまうことがあります。
そのような死んだGPUが長時間存在して、他に空いているGPUが無い場合に通知を送る、なんてこともしてみたいですね。

*1:もちろんクラスタ化すればその必要はありませんし、そちらの方が理想的ですが、色々な事情でそれが出来ない場合のことです

標準入力から与えられたテキストをSlackに流すツールを作った

タイトルのままです。

github.com

設定ファイルの例はconfig.ini.exampleにあるので、それをconfig.iniにコピーして中をいじる必要があります。
細かな書式の説明はないですが、config.ini.exampleを見れば大体分かると思います。

Incoming WebhooksのWebhook URLをあらかじめ取得しておく必要があります。
取得時にChannelの選択を求められますが、config.iniでchannelの設定をすればオーバライドされます。
逆にconfig.iniでchannelを省略した時はURL取得時に設定したChannelに投稿されます。

ソースコードは40行しかないので、気にいらない所があれば気軽にいじり倒して下さい。

f:id:okayu_k:20180411011920p:plain

f:id:okayu_k:20180411011933p:plain

技術書典3に一般参加した

技術書典3に一般参加しました。

techbookfest.org

技術書典は、公式サイトにもあるとおり「技術書オンリーイベント」です。 公式サイトのサークルリストには194ものサークルの名前が書いてあります。 一部を除きオンリーイベントでは大規模な部類に入るのではないでしょうか。

会場は前回の技術書典2と同じ秋葉原UDX2階のアキバ・スクエアでした。 また、今回は同ビル4階に「立ち読み会場」と「戦利品会場」が設けられ、入場の順番待ちや戦利品入手後の際に利用することができるようになっていました。 私は軽く中を覗いただけですが、多くの方が利用しておられて繁盛している雰囲気でした。

今回初の試みは4階会場だけでなく、私が知る限り、

  • 「立ち読み会場」と「戦利品会場」の設置
  • 入場整理券の配布
  • 入場可能な整理券番号をWebで配信
  • 整理券による再入場
  • 独自の決済システムの導入

が行われました。 前回は雨の中待ち続ける時点でかなり体力を消耗してしまったので、今回の入場整理券はかなり助かりました。 現金不要な独自の決済システムを使いたかったのですが、iOS非対応ということで残念ながら利用できませんでした。 次回までにはiOS対応になりますかね……?

手にいれた技術書の紹介

続きを読む