要約
RTX3060とRX9060XTのマルチGPU構成でllama.cppを利用してQwen3.6-35b-A3Bを起動しました。
トークンの生成速度は毎秒45token程度です。
環境の構築にかかったお金は大体15万くらいだと思います。元々持っていたパーツを流用したところも多いので、正確なところはわかりませんが...。
環境
RTX5090やR9700はとても手が出ないので、中古品とミドルクラスのGPUを集めました。
ハードウェア
マルチGPUを採用するにあたりPCIeレーン数の多いx299シリーズを採用しています。
最新のハイエンド向けは高い..。
| パーツ分類 | 採用パーツ |
|---|---|
| CPU | Intel Core i9-10900X |
| マザーボード | ASRock X299 Taichi XE |
| GPU 1 | NVIDIA GeForce RTX 3060(12GB) |
| GPU 2 | AMD Radeon RX 9060 XT(16GB) |
実行環境
llama.cppを採用したのに特に深い意味はないです。
| 項目 | 採用ソフトウェア |
|---|---|
| OS | Ubuntu 26.04 LTS |
| 推論ランタイム | llama.cpp |
| 推論バックエンド | Vulkan 1.4.3xx |
| モデルソース | unsloth/Qwen3.6-35B-A3B-GGUF:UD-Q4_K_XL |
VulkanのバージョンはNvidiaでは1.4.329で、Radeonでは1.4.335となっていました。
特に指定した訳ではなく、適当に入れています。
構築手順
Dockerを利用せずネイティブインストールしました。
GPUドライバのインストール
Nvidiaのドライバーはsudo ubuntu-drivers installでインストールしました。
Radeonを動かすためのradvはデフォルトでインストールされてました。
Vulkan SDKのインストール
以下の記事を参考にしました。
Ubuntu 26.04は公式サポートしていないようなので24.04を選んだほうが無難と思います。
インストール後にvulkaninfo --summaryを実行してGPUが2つ認識されていればOKです。
llama.cppのインストール
git clone https://github.com/ggml-org/llama.cpp してからbuildしました。vulkanバックエンドを前提としてビルドする必要があります。
適当なディレクトリを掘って移動し、 cmake -DGGML_VULKAN=ON ..を実行してください。
llama.cppの起動
以下のオプションで起動しています。
./bin/llama-server
-hf unsloth/Qwen3.6-35B-A3B-GGUF:UD-Q4_K_XL
-ngl 999
--device vulkan0,vulkan1
--tensor-split 3,5
--split-mode row
-c 131072
-np 1
-ctk q4_0
-ctv q4_0
--cache-ram 0
--jinja
--reasoning on
--temp 1.0
--top-p 0.95
--top-k 64
--host 0.0.0.0
--port 8080
vulkan0がRTX3060、vulkan1がRX9060XTです。VRAMの多いRX9060XTの負荷が高めになるようにしています。
また利用者もどうせ私一人なので同時リクエスト処理数も1に絞っています。
リソース消費
起動時のVRAM消費量です。
Device 0 [NVIDIA GeForce RTX 3060] PCIe GEN 1@16x RX: 585.0 KiB/s TX: 781.0 KiB/s
GPU 210MHz MEM 405MHz TEMP 57°C FAN 0% POW 10 / 170 W
GPU[ 0%] MEM[||||||||||||||||||10.333Gi/12.000Gi]
Device 1 [AMD Radeon RX 9060 XT] PCIe GEN 3@ 8x RX: N/A TX: N/A
GPU 0MHz MEM 96MHz TEMP 48°C FAN 0% POW 11 / 160 W
GPU[ 0%] MEM[||||||||||||||||||13.505Gi/15.922Gi]
コンテキストウインドウは広めに取っていますが、VRAMに載りきってます。調整すればもう少し増やせそうです。
この記事自体を読ませて評価させた時のトークン出力速度は以下の様になってます。
prompt eval time = 13823.64 ms / 837 tokens ( 16.52 ms per token, 60.55 tokens per second)
eval time = 89790.06 ms / 4054 tokens ( 22.15 ms per token, 45.15 tokens per second)
total time = 103613.70 ms / 4891 tokens
2.47.063.627 I slot release: id 0 | task 144 | stop processing: n_tokens = 4890, truncated = 0
2.47.063.659 I srv update_slots: all slots are idle
ちなみに27Bを動かしたときは毎秒14token程度でした。ちょっと遅いので、普段使いするなら35B-A3Bがよさそうです。
不明点
RTX3060もRX9060XTも計算リソースの消費量が50%程度で頭打ちになってます。どちらかが100%になるものと思っていたのですが、何かがボトルネックになっているのかもしれません。
気になるのはPCIe 3.0の帯域の小ささですが、ここがボトルネックになるのであれば環境丸ごと作り直しになるのでどうしようもないですね。
まとめ
NvidiaとAMDの混成構成でもそこそこ動くことが分かって良かったです。駄目ならRTX3060を手放してもう一枚9060XTを購入しようと思ってました。
i9-10900XのPCIeのレーン数は48なので、もう一枚グラボを刺してもキチンと動きそうです。もう一枚RX9060XTを追加してGemini 3.1 Proなどの商用LLMと同じくらいまでコンテキストウインドウを拡張したいなー。