😸

RunPodのMI300Xを使ってみる

に公開

前回ACRiルームのMI210を使ってGemma 3 27Bに自動プログラミングをさせてみたが、64GBのVRAMではコンテキスト長は76K程度までしか設定できず、それ以上ではVRAMが不足してしまうことが分かった。

https://zenn.dev/anjn/articles/b46787307ab597

今回はRunPodで192GBのVRAMを搭載するAMD Instinct MI300Xを借りて動かしてみる。MI300XはVRAM容量で比較すると高コスパだ。

https://www.runpod.io/gpu/mi300x

前回と同様にリモートでollamaを実行し、ローカルのVS CodeでClineを動かしてみる。

ollamaの実行準備

MI300Xが利用できるリージョンでNetwork Volume(50GB)を作成し、節約のためCPUの一番安いPodでollamaを実行する準備をする。/workspaceがNetwork Volumeのようなのでそこにollamaをダウンロードし、モデルの保存先を作成する。

cd /workspace
curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgz
tar xf ollama-linux-amd64.tgz

curl -L https://ollama.com/download/ollama-linux-amd64-rocm.tgz -o ollama-linux-amd64-rocm.tgz
tar xf ollama-linux-amd64-rocm.tgz

mkdir models
OLLAMA_MODELS=./models ./bin/ollama serve

別のターミナルから接続してモデルをダウンロードする。今回はQwen QwQ 32Bというモデルを試してみる。

cd /workspace
./bin/ollama pull qwq

モデルをダウンロードできたらCPUのPodはTerminateしてしまう。それほど時間がかからなかったのでGPU Podで作業してしまっても良かったかもしれない。

ollamaの実行

MI300XのPodを作成する。PyTorchとROCmがセットアップ済みのテンプレートが用意されているので利用する。スポットであれば$1.49/hrと格安だ。このときはスポットはリソース不足で借りられなかったのでオンデマンドで借りた。オンデマンドは$2.49/hrだった。

ollamaを起動する。MI300Xを利用するための特別な設定は不要だった。

cd /workspace
OLLAMA_MODELS=./models ./bin/ollama serve

SSH over exposed TCPの方のコマンドにポート転送のオプション(例えば-L 11444:localhost:11434)を追加して接続する。単にSSHと書いてある方法のコマンドではポート転送できなかった。

ClineのModel Context Windowの設定を131072に設定して動かしてみた。

動作中のVRAM使用率は32%程度とかなり余裕のある様子。

こちらはGemma 3 27Bを動かしたときの使用率。Gemma 3 27BはモデルサイズとしてはQwen QwQ 32Bより小さいが、コンテキスト長が大きいときにより多くのVRAMを必要とすることが分かった。

ollama runコマンドでコンテキスト長を設定するには次のようにする。

cd /workspace
./bin/ollama run qwq
/set parameter num_ctx 131072

使い終わったらPodの削除を忘れずに。準備はすぐにできるのでNetwork Volumeも削除してしまって良い。

まとめ

192GBのVRAMを搭載するMI300XであればGemma 3 27BもQwen QwQ 32Bも128Kのコンテキスト長で余裕を持って推論できることが分かった。有料のAPIは賢いがすぐにクレジットがなくなってしまうので、スポットでMI300Xを借りることができればお得かもしれない。

Discussion