【ローカルLLM】RTX 3060×2の話【Multi GPUs】
はじめに
12GBのVRAMを持つRTX 3060は、多くのAIモデルを動作させる事ができます。しかし、gpt-ossをはじめ、最近になって微妙に巨大化(20GB〜)しはじめたローカルLLMを快適に動作させるには難しくなってきています。
もちろん、24GBのVRAMのハイエンドGPUを購入すれば良いのですが、価格的にも電力的にも辛いものがあります。
そこで、LLMモデル限定ですが、メモリを合算(12GB×2=24GB)して利用できるRTX3060 12GBのGPUを二枚刺しの環境でどの程度戦えるか確認しました。
※ ただし、 現状では画像生成AIにおいて直接的な並列利用はできません
※ ollama + Open WebUIでの確認です
GPUカードを二枚利用すると
Blenderや、その昔流行ったNVIDIA SLIなどの技術は、全く同じデータをそれぞれのGPUメモリに持つため、動作速度は向上しても、利用可能なメモリ空間が増える事はありませんでした。
一方で、ollamaやlm-studioで複数のGPUカードを利用すると、メモリが単純合算されますが、動作速度は向上しないようです。(遅いカード側に律速します)
なぜなら、交互に計算をしているだけで、主演算において同時に計算していないからです。
それでもAI演算において、CPUにメモリが溢れると1/10程度になってしまう事を考えると、メモリが合算される効果は非常に有用です。
たとえば、gpt-ossを一枚のRTX 3060で動作させようとすると、まともに動作しませんが、二枚にすると実用以上になります。
AIにおいて、GPUメモリのサイズが演算性能よりも重要になる例の一つだと思います。実質的に並列演算していないのに、メモリに収まるか収まらないかで、動作速度が10倍以上変わってしまうのですから。
PCスペック
OS: Linux mint 22.1
CPU: Ryzen7 5700x 64GB
GPU: RTX 3060 12G × 2
パフォーマンス結果
次のモデルは、いずれも12GBのVRAMだけでは濫れてしまい、実用的に利用できないモデル(とコンテキストサイズ)です
Gemma3 12B(gemma3:12b-it-q4_K_M)
num_ctx=64k
OLLAMA_FLASH_ATTENTION=0
OLLAMA_KV_CACHE_TYPE=f16

Gemma3 27B(gemma3:27b-it-q4_K_M)
num_ctx=16k
OLLAMA_FLASH_ATTENTION=0
OLLAMA_KV_CACHE_TYPE=f16

Qwen3 30B A3B(unsloth/Qwen3-30B-A3B-Instruct-2507-GGUF:Q3_K_M)
num_ctx=64k
OLLAMA_FLASH_ATTENTION=1
OLLAMA_KV_CACHE_TYPE=Q8_0

Qwen3 30B coder A3B(unsloth/Qwen3-Coder-30B-A3B-Instruct-GGUF:Q3_K_M)
num_ctx=64k
OLLAMA_FLASH_ATTENTION=1
OLLAMA_KV_CACHE_TYPE=Q8_0

Qwen3 30B A3B Thinking(unsloth/Qwen3-30B-A3B-Thinking-2507-GGUF:Q3_K_M)
num_ctx=64k
OLLAMA_FLASH_ATTENTION=1
OLLAMA_KV_CACHE_TYPE=Q8_0

まとめ
ファイルサイズが大きいものの、MoEアーキテクチャのため動作が軽いQwen3 30B A3Bとは非常に相性が良く、Thinkingモデルだけのgpt-ossと比べても、用途に応じて(Instruct, Thinking, Coder)3つのモデルを利用した方が、効果的に運用できると感じます。
昔は、(ほとんど変わらない)NVIDIA SLI技術が金持ちの道楽と呼ばれた時代がありましたが、コスパ優先にするためにマルチGPUが利用される時代になるとは思いませんでした。
以下、関連する記事の【PR】です。
