RunPodのMI300Xを使ってみる
前回ACRiルームのMI210を使ってGemma 3 27Bに自動プログラミングをさせてみたが、64GBのVRAMではコンテキスト長は76K程度までしか設定できず、それ以上ではVRAMが不足してしまうことが分かった。
今回はRunPodで192GBのVRAMを搭載するAMD Instinct MI300Xを借りて動かしてみる。MI300XはVRAM容量で比較すると高コスパだ。
前回と同様にリモートで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