はじめに
機械学習系で重い処理を実行しているとき、明らかに画面が固まっていたり、マシンが激しくシューシュー音を立てだしたり、逆に全くの無音すぎたりで不安になることがある
そういう時は「ちゃんと動いているか」「CPUやメモリがパンパンになっていないか」を確認することになります
CLI なら top
や htop
コマンド、 GUI ならアクティブティモニタやタスクマネージャーを開くことで CPU 利用率とメモリ使用量が確認可能です
しかし、 Livebook で作業中であれば、いちいち別のウィンドウを開くよりも、もちろん Livebook の中でそのまま確認したいですよね
当然、リアルタイムに変化する様子を見たいです
実は Livebook だとそれができます
セットアップ
KinoUtil をインストールします
Mix.install([
{:kino_util, "~> 0.1.1"},
{:nx, "~> 0.6"}
])
Nx は手軽に負荷をかけるために使うので、 CPU使用率・メモリ使用量取得には不要です
スマートセルの追加
KinoUtil をインストールしていると System utilization (システム使用量)のスマートセルが追加できます
追加すると以下のようにCPU使用率とメモリ使用量がグラフと数値で表示されます
CPU使用率・メモリ使用量のリアルタイム表示
System utilization のスマートセルでは、グラフと数値がリアルタイムに変化します
負荷をかけるために以下の処理を実行しましょう
Nx.dot(
Nx.iota({250, 250}),
Nx.iota({250, 250})
)
250 * 250
のテンソル同士の内積を計算するため、それなりの負荷がかかります
CPU が 17 % まで増加した後、計算中は 10 %代をうろちょろしているのが分かります
まとめ
「実行時点の値を表示する」のではなく「リアルタイムに現在の値を表示する」ところが Livebook らしくて素敵ですね