LoginSignup
2
0

Slack Boltを使ってGPUの使用状況を確認する方法

Last updated at Posted at 2024-02-24

ターミナルでnvidia-smiコマンドを打つことで、GPU使用状況を確認していることと思いますが、SSH接続なしでスマホやPCでも確認したいときありますよね?
Slack Boltを使って簡単に確認できるようにしましょう!

$ nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI XXX.XX.XX    Driver Version: YYY.YY.YY    CUDA Version: ZZ.Z     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA RTX A6000    On   | 00000000:18:00.0 Off |                  Off |
| 37%   67C    P2   250W / 300W |  24591MiB / 48685MiB |     83%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A   1000000      G   /usr/lib/xorg/Xorg                  4MiB |
|    0   N/A  N/A   1000001      C   python                          24583MiB |
+-----------------------------------------------------------------------------+

↑ この出力結果をslackに通知します。

slackの設定

とても分かりやすくまとまっている記事があります。

【実際にやってみましょう】~【BOTをチャンネルへの追加】を記事の通りに設定してみてください。

GPU使用状況を確認するpythonのコード

参照した記事では発言のあったチャンネルに返事をするという機能を実装していましたが、GPUの使用状況を書き込む機能を実装します!

まず、slack_boltをインストールしてください。
condaだったら、conda install -c conda-forge slack-boltでインストールできます。

#必要なライブラリをインポート
import os
import subprocess
from slack_bolt import App
from slack_bolt.adapter.socket_mode import SocketModeHandler

#[OAuth Token] と [App-Level Token]を記載する
SLACK_BOT_TOKEN = "xoxb-*******"
SLACK_APP_TOKEN = "xapp-*************"

#[OAuth Token]読み込み
app = App(token=SLACK_BOT_TOKEN)

#反応する発言内容を記載する
@app.message("^gpu")
def message_hello(message, say):
    #発言のあったチャンネルへメッセージを送信する
    result = subprocess.run(["nvidia-smi"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, shell=True)
    gpu_info = result.stdout
    say(f"```\n{gpu_info}\n```")

#アプリの起動
if __name__ == "__main__":
    SocketModeHandler(app,SLACK_APP_TOKEN).start()

上のコードに自分のBOT_TOKENとAPP_TOKENを入力して.pyファイルとして保存し、pythonで実行してみてください。

アプリを追加したチャンネルで「gpu」と発言すると、
slack.png
このように、使用状況を確認することができました!

ここで、slackで送信したコマンドをターミナルで直接実行させるという事も可能ですが、セキュリティ上めちゃめちゃ良くないので、やめておきましょう。
gpuというメッセージだけ(その他任意に設定可能)を受け入れるというところがポイントです。

常時実行しておく必要があるので、nohupコマンドを使ってバックグラウンド実行しておくのが良いかもしれませんね。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0