LLMをAMDのGPUで動かそう 【Ollama】
キーワード
AMD, ローカルLLM, Ollama
はじめに
本記事てはLLMを Ollama を使用して動かします。Ollamaについて詳しくは 弊社樋口の記事 をご覧ください。LLMを動かす場合NVIDIA製のGPUを用いることが一般的かと思いますが、OllamaはAMD製のGPUもサポートしているため、本記事では Radeon RX 7900 XTX でOllamaを動かします。
前提条件
本稿で使用したローカルPCのスペックは次の通りです。実用的な速度でローカルLLMを動作させたいと思ったため、スペックは高めになっています。
- Intel(R) Xeon(R) w5-2555X (3.3 GHz, 14コア, 28スレッド, 2024年発売)
- Radeon RX 7900 XTX (メモリ24GB, 2022年発売)
- メモリ 128GB
- Ubuntu 24.04 LTS
Ollama がサポートするAMDのGPU
Ollama はブログ記事 Ollama now supports AMD graphics cards でサポートするGPUリストを掲載しています。
- Radeon RXシリーズ: 7900 XTX, 7900 XT, 7900 GRE, 7800 XT, 7700 XT, 7600 XT, 7600, 6950 XT 6900 XTX, 6900XT, 6800 XT, 6800, Vega 64, Vega 56
- Radeon PRO シリーズ: W7900, W7800, W7700, W7600, W7500, W6900X, W6800X Duo, Vega II Duo, Vega II, VII, SSG
- Instinct シリーズ: MI300X, MI300A, MI300, MI250X, MI250, MI210, MI200, MI100, MI60, MI50
Ollama のインストール
Ollamaが提供するインストールスクリプトを使用してOllamaをインストールすることができます。Dockerコンテナも提供されていますが、いきなりAMDのGPUを使用してOllamaコンテナを動かすのはチャレンジングに思われたため、本稿ではコンテナは使用しません。
curl -fsSL https://ollama.com/install.sh | sh
注意点として、GPUの有無でインストールスクリプトの動作が変わります。GPUを取り付けた状態でインストールを行なってください。
お好みのモデルを動かす
一度AMDのGPUを取り付けた状態でインストールを行なってしまえば、AMDのGPUを使用するからといって特別な作業は必要ありません。通常通りの方法でOllamaを使えば勝手にGPUが使用されます。
$ ollama run qwen3:30b >>> exp(x) を x で不定積分するとどうなりますか? <think> ... But wait, let me check if there's any possible mistake here. For example, if I had a different exponent, like e^{kx}, then the integral would be (1/k)e^{kx} + C. But in this case, k is 1, so it's just e^x + C. That makes sense. So if someone confuses the integral of e^x with something else, like maybe e^x divided by something, but no, since the derivative of e^x is e^x, the integral should be the same function. Another check: if I differentiate e^x + C, I get e^x, which is the original function. So that's correct. Therefore, the answer is e^x plus the constant of integration. I think that's solid. I don't see any errors in the reasoning. All the methods point to the same conclusion. So yeah, the indefinite integral of e^x dx is e^x + C. </think> exp(x) を x で不定積分すると、以下のように求められます。 --- ### 積分の結果 $$ \int e^x \, dx = e^x + C $$ ここで、$ C $ は積分定数(任意の定数)です。 --- ### 説明 - $ e^x $ の導関数は $ e^x $ です。 - したがって、$ e^x $ の不定積分(逆の操作)は $ e^x $ になります。 - 積分定数 $ C $ は、積分の結果に存在する任意の定数を表します。 --- ### 補足 - 他の関数(例: $ e^{kx} $)の積分は $ \frac{1}{k}e^{kx} + C $ となります。 - しかし、$ k = 1 $ の場合、$ \frac{1}{k} = 1 $ なので、結果は $ e^x + C $ になります。 --- ### 結論 $$ \boxed{e^x + C} $$
GPUが使用されていることを確認する
rocm-smi
コマンドでGPUの使用状況を確認することができます。GPUが使用されていれば Temp (温度) や AvgPwr (平均消費電力) が上昇します。
$ sudo apt install rocm-smi $ rocm-smi ========================= ROCm System Management Interface ========================= =================================== Concise Info =================================== GPU Temp (DieEdge) AvgPwr SCLK MCLK Fan Perf PwrCap VRAM% GPU% 0 66.0c 327.0W 2965Mhz 1249Mhz 26.67% auto 327.0W 82% 100% ==================================================================================== =============================== End of ROCm SMI Log ================================
速度ベンチマーク
touch-spさんの記事 OllamaのベンチマークをとるプログラムをOllama Python Libraryを使って書き換えました を参考に、次のPythonコードで速度ベンチマーク (トークン/秒) を行いました:
from ollama import Client import sys client = Client( host="http://localhost:11434" ) def client_chat(): response = client.chat( model=sys.argv[1], messages=[ { "role": "user", "content": "東京から大阪までの移動手段を提案してください。" }, ], ) return response.eval_count, response.eval_duration if __name__ == "__main__": total_tokens = 0 total_time = 0 for _ in range(3): eval_count, eval_duration = client_chat() total_tokens += eval_count total_time += eval_duration rate = (total_tokens / total_time) * 10**9 print(f"tokens per second: {rate:.2f} tokens/second")
結果
モデル | 量子化 | トークン/秒 |
deepseek-r1:8b | Q4_K_M | 70.21 |
deepseek-r1:14b | Q4_K_M | 47.76 |
qwen3:14b | Q4_K_M | 49.76 |
qwen3:30b | Q4_K_M | 36.72 |
まとめ
本稿ではAMDのGPUを使いOllamaを動かしました。特にAMDのGPUを使うからといって難しい点はなかったと思います。これからAMDのGPUを使ってローカルLLMを試そうとしている人の参考になればと思います。