2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Intimate MergerAdvent Calendar 2024

Day 25

GPUちゃんと動いてますか? CUDAのステータスを確認しよう。

Last updated at Posted at 2024-12-25

はじめに

プロダクトでも個人の興味でも、音声データを扱うことが増えてきたし、SLMも本格的に検証したいため、GPU環境を整えていきたいなと思ったときの初心者向け備忘録です。

CloudRun も GPUサポート開始したので(若手に試してもらう前に)自分で手を動かしてみたら、いまいちフィットしなく書くことがなくなったわけではありません。

torch.cuda.is_available() の結果確認してますか?

デフォルトでは CUDA無効のPyTorchがインストールされます。

CUDA有効のPyTorchをインストールするためには、https://pytorch.org/get-started/locally/ から、環境を選択して有効なコマンドを指定してインストールする必要があります。

CUDA無効のPyTorchを気づかずにインストールしてしまっている場合は、GPUの恩恵を受けることができません。

CUDAバージョンの選び方は以下のまとめがオススメです。

どのバージョンを利用すれば良いのか?

PyTorchで利用したいCUDAバージョン ≦ CUDA ToolKitのバージョン ≦ GPUドライバーの対応CUDAバージョン

全部のCUDA バージョンを揃えておくのがハズレないとのことです。
(僕はまだハマってません)

cuda-toolkit のリリースノートやサポートマトリクスに目を通しておくのもオススメです。

どうやって調べるの?

自分でコマンドを打てる環境では良いのですが、CloudRunやGKEではちょっと不便です。

ステータスを表示するエンドポイントを用意しておくと捗ります。1

from flask import Flask, Response
import subprocess

@app.route('/gpu-status', methods=['GET'])
def gpu_status():
    try:
        result = subprocess.run(['nvidia-smi'], stdout=subprocess.PIPE)
        res = result.stdout.decode('utf-8')
    except FileNotFoundError:
        return Response("No nvidia-smi", mimetype='text/plain', status=404)
    except Exception as e:
        return Response(f"Unexpected: {e=}", mimetype='text/plain', status=500)
    return Response(res, mimetype='text/plain')

nvidia-smi で表示される CUDAバージョンはドライバーが対応している最大のCUDAバージョンが表示されます。
以下は CloudRun GPU での表示です。

Wed Dec 25 00:00:00 2024       
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.129.03             Driver Version: 535.129.03   CUDA Version: 12.2     |
|-----------------------------------------+----------------------+----------------------+
| 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 L4                      Off | 00000000:00:06.0 Off |                    0 |
| N/A   59C    P0              N/A /  72W |      1MiB / 23034MiB |      0%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+
                                                                                         
+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|  No running processes found                                                           |
+---------------------------------------------------------------------------------------+

ちゃんと外から叩かれないように権限管理を忘れずにしましょう。

これであなたも torch.cuda.is_available() を ONになる環境をかんたんに構築・確認できるようになりました!

おまけ

CloudRun GPU は手元で検証をしていたところ、SLMを動かすという用途の方がやはり合いそうでしたが、

を読みつつ、Whisperを利用して試してみた所感です。

  • GKE を利用する場合 Image Streaming が使えるので、Image内部にモデルを抱いてあげるのも悪くない。
    • とはいえ、あまりに大きすぎるとパフォーマンスに影響しそう
    • Artifact Registry のストーレジ料金 $0.10/GB。古いイメージはちゃんと掃除しましょう。
  • 基本的には起動時に Cloud Storage よりダウンロードが無難そう。
    • 東京リージョンで $0.023/GB
    • たいていはオプションでデータのキャッシュ先が指定できるようになっているのでコードを読みましょう。

最後に

この記事がGPU環境をあまり構築したことがない方のヒントになって、本質的な課題解決に当てる時間が増えたらうれしいです。

今年のインティメート・マージャーのアドベントカレンダーはいかがでしたでしょうか?
参加2年目なんとか全日を埋めることができました。

少しでも弊社に興味をもってくれる人が増えたらうれしいです。

  1. nvcc -V も CloudRun GPU で出したかったのですがうまくいきませんでした。ドキュメントに明記されてるので不要ではありますが、良い確認方法があったら教えてください。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?