安価なGPUでできることを模索してみる
昨今Xを眺めていると、えらく高価なGPUでローカルLLMをぶん回してる話題がたくさん飛び交ってます。やれ、DGX-Spark(当初60万→現在100万ぐらい?)だの、RTX5080(20万円前後)だの、すごい人はRTX PRO 6000(150万超)だの。これらの製品はいわゆる「ン十万」と呼ばれる領域のGPUであり、会社員を辞めた私にはとてもじゃないですけど「天上人級」のGPUです。
そして、「どんなGPUが必要なんだろう・・・?」という質問が流れた際に、返ってくる応答内容がえらくロマンを追求したような回答だったりすることが少なくありません。
んじゃぁ、実際に中古市場から入手できちゃう安物GPUだとどのぐらいのことができるんだろうかね?というところが気になりました。先日、残り少ない手持ちのお金をはたいて、RTX 3050 を買ってましたので、これを使って何ができるのかというところを検証してみることにしました。
今載ってるRTX 3050について
先日25,000円ほどでドスパラから購入しました GeForce RTX 3050 8Gですが、もともとこれを買う想定はしてなくて、既存のGTX 1660 Superあたりを探しに行ってましたのです。ところが、思った以上にRTX 3050が安い上に、消費電力が130Wということで非常にリーズナブル!ということでついつい手を出したものになります。
外箱なかったので調査してみると、製品としてはどうやらこれのようです。
https://www.techpowerup.com/gpu-specs/gainward-rtx-3050-ghost-oc.b9366

載ってるプロセッサはGA106、コアはAmpereということで、その中でも最もエントリーなGPUではあります。
あくまで個人的に:おすすめGPUコアをAmpereに据えた理由
簡単に列挙してまいりますと、以下のような理由があります。
- 超最低限な話として、量子化モデルを動かすことになるためTensorCoreの搭載は必須です。
- Voltaは除外します。エントリーモデルがない上に、TensorCoreがf16にしか対応していません。
- 過去の会社員時代の拙作ですが、ここにどの低精度演算に対応しているかについて記述がありますので参考にしてください。
- なお、Turingコアではあるものの、GTX16xxシリーズはTensorCoreが無効化されているため、これらのシリーズはPascal以前のコアと同等に扱うことが望ましいです。
- そして、Attention機構の計算オーダーを下げるFlashAttentionはさらに必須です。
- このFlashAttentionはAmpereコアから搭載がスタートしています。
- bfloat16(bf16)にも対応している点が特に、llama.cppのマルチモーダル機能mtmdを使う上で重要になってきます。これも対応しだしたのはAmpereコアからです。
なので、GTX1660Superを買ったのは失敗だったなーとは思いつつも、あれはあれでもっと古いマシンで動かそうと考えて買ったものなんで、こればかりは仕方がないっすね。そのうち買い替えてやろうと考えてるところです。
だったらTuringでもRTX20xxはどや?というところがあるんですが、実は同じレベルを並べればわかるんですが、後のコアになればなるほどTDPが実は下がっていってるんです。(Turing/AdaコアのGPUは**50クラスはモバイル向けにしか提供されていないため、**60クラスを適用)
| コア世代 | 機種 | TDP |
|---|---|---|
| Turing | GeForce RTX 2060 | 160W |
| Ampere | GeForce RTX 3050 | 130W |
| Ada Loverace | GeForce RTX 4060 | 115W |
そうした点を考慮すると、Turingコアはあまりコストメリットがないんですね。単純な性能は上なんですけど、FlashAttentionが使えない分速度に跳ね返ってしまい、総合力的には弱いのです・・
Qwen3.5-9Bモデルを動かすことができる(マジ)
llama.cppをCUDA付きでBuildして動かしてるわけですが、このモデルを以下の引数群で動かしています。
/opt/llama/bin/llama-server --model /opt/llama/models/Qwen3.5-9B-UD-Q4_K_XL.gguf \
-t 4 --prio 2 --temp 1.0 --top-p 0.95 --top-k 20 --min-p 0.00 --host 0.0.0.0 --port 8001 \
--device CUDA0 -mg 0 -ctv q8_0 -ctk q8_0 --fit off --no-warmup --no-cache-prompt \
-c 65535 \
--chat-template-kwargs '{"enable_thinking":true}' メモリ消費量は以下の通りです。ちょうどいいバッファを残しながらめいっぱいメモリを使用してくれています。これがちょうどいい値なのかなと思われます。なお、82MiBほど消費している分は、EmbeddingモデルとRerankerモデルをGTX 1660 Superで動かしているものの影響になります。
Wed May 13 03:13:50 2026
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 590.48.01 Driver Version: 590.48.01 CUDA Version: 13.1 |
+-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce RTX 3050 On | 00000000:02:00.0 Off | N/A |
| 0% 49C P8 13W / 130W | 7198MiB / 8192MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| 0 N/A N/A 596028 C /opt/llama/bin/llama-server 82MiB |
| 0 N/A N/A 914563 C /opt/llama/bin/llama-server 82MiB |
| 0 N/A N/A 2474169 C /opt/llama/bin/llama-server 7020MiB |
+-----------------------------------------------------------------------------------------+メモリ使用量の内訳としてはこんな感じです。若干合計値は上下してましたけど、おおよそログに残ってる数値に嘘はないように思えます。
| 項目 | GPUメモリ使用量 | その他備考等 |
|---|---|---|
| モデル重みデータ | 5133.63 MiB | メインメモリに545.62 MiB |
| KVキャッシュ | 1088.00 MiB | Key/Value各544.0 MiB (Q8_0量子化状態) |
| Recurrentバッファ | 201.00 MiB | |
| Computeバッファ | 637.29 MiB | |
| 合計 | 7059.62 MiB |
パフォーマンスとしては以下のような感じです。
prompt eval time = 17579.10 ms / 19704 tokens ( 0.89 ms per token, 1120.88 tokens per second)
eval time = 5870.65 ms / 177 tokens ( 33.17 ms per token, 30.15 tokens per second)
total time = 23449.74 ms / 19881 tokensVibeCodingなどをするには少々不足気味の速度ですが、通常会話とかをしてみたり、文章要約を部分的に行ってみたりする分にはちょうど良い速度なのかなと感じました。なかなかトークン出力速度が劣化しない点もよいかなと思います。
Gemma-4-E4Bも動く(マジ)
はい、このモデルも動きます。実はこのモデル、E4Bとありますが、活性化パラメータ量が4Bなだけで、実際の全体パラメータ量は8Bなんですよね(苦笑)
引数群は以下の通りです。
/opt/llama/bin/llama-server --model /opt/llama/models/gemma-4-E4B-it-UD-Q4_K_XL.gguf -t 4 --prio 2 --temp 1.0 --top-p 0.95 --top-k 20 --min-p 0.00 --host 0.0.0.0 --port 8001 --device CUDA0 -mg 0 --fit off --no-warmup --no-cache-prompt --chat-template-kwargs {"enable_thinking":true}メモリ消費はこんな感じ。
Thu May 14 00:57:27 2026
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 590.48.01 Driver Version: 590.48.01 CUDA Version: 13.1 |
+-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce RTX 3050 On | 00000000:02:00.0 Off | N/A |
| 0% 54C P2 29W / 130W | 5254MiB / 8192MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| 0 N/A N/A 596028 C /opt/llama/bin/llama-server 82MiB |
| 0 N/A N/A 914563 C /opt/llama/bin/llama-server 82MiB |
| 0 N/A N/A 3234811 C /opt/llama/bin/llama-server 5076MiB |
+-----------------------------------------------------------------------------------------+Qwenに比べると若干メモリ消費量は少なめです。内訳は以下の通り。
| 項目 | GPUメモリ使用量 | その他備考等 |
|---|---|---|
| モデル重みデータ | 3025.74 MiB | メインメモリに2288.00 MiB |
| KVキャッシュ | 1088.00 MiB | Key/Value各544.0 MiB (Q8_0量子化状態) |
| SlidingWindowバッファ | 53.12 MiB | |
| Computeバッファ | 805.30 MiB | メインメモリに293.30 MiB |
| 合計 | 4972.16 MiB |
これまた使用量的にずれがありますが、オーバーヘッドが関与しているのだろうと推察しています。
パフォーマンスはいかほどか?というと
prompt eval time = 1626.14 ms / 2954 tokens ( 0.55 ms per token, 1816.57 tokens per second)
eval time = 94432.33 ms / 4106 tokens ( 23.00 ms per token, 43.48 tokens per second)
total time = 96058.47 ms / 7060 tokens活性パラメータが少ない分、若干Qwenよりも高速に動作するようです。ただ、会話履歴が嵩むにつれて徐々に性能が劣化していく点が気になりました(詳細は記述しないけど)。
文章的なアプローチを求めるなら十分な性能
今回、Ampereコアという若干古めのエントリーGPUを使ってみましたが、結論としては以下の通りです。
- Qwen3.5-9BやGemma-4-E4B-itといった、小規模ながら実力のあるSmall Language Model(SLM)をそこそこの速度で実行することが可能である。
- なお、EmbeddingやRerankerモデルもかなり楽勝レベルで動かすことができる
EmbeddingにRuri-v3-310m, RerankerにBAAIのbge-v2-m3マルチリンガルを適用したら、512M以下で動かすことができました。(ついでに確認済み)
- なお、EmbeddingやRerankerモデルもかなり楽勝レベルで動かすことができる
思った以上に使い道がありそうで、特に9Bモデルがそれなりに動くというのは非常に大きなポイントなんじゃないかと思いました。ただし、あくまで推論のみの話であって、学習となると話は別になってきますのでご注意を。
私自身、もともとローカルLLMを中心に調査・追跡を行ってきたこと、今後取り組む方針としてテクニカルライターの方向性を模索する中でこれらの軽量モデルを扱えるのは非常に助かるところもあり、引き続きローカルLLM/SLMを中心に取り扱いつつ、こうしたモデルに向き合っていこうと思っています。
もちろんクラウドGPUの利用も今後発生するでしょうが、「何かを原型的に試す」というフェーズにおいては、基礎環境の存在が非常に重要です。
RTX 3050のようなエントリークラスのモデルが3万円を切る価格で市場に流通し、実用的なレベルに達しているという事実は、ローカルLLM・SLMの参入障壁が大きく下がってきていることを示唆しています。この変化を理解することは、知見を深める上で大きな助けになるはずです。
ただ、正直コーディング用途には適していません。こうした用途も今後触れるようになる必要があるため、そのうちGTX 1660 Superを取り外して、もう少し上のランクのGPUを探して搭載しようかなと考えているところです。いずれにしろお金がないと始まらないので、考えなきゃならないんすけどね。
参考:NVSMI LOG出力結果
==============NVSMI LOG==============
Timestamp : Thu May 14 01:31:31 2026
Driver Version : 590.48.01
CUDA Version : 13.1
Attached GPUs : 2
GPU 00000000:02:00.0
Product Name : NVIDIA GeForce RTX 3050
Product Brand : GeForce
Product Architecture : Ampere
Display Mode : Requested functionality has been deprecated
Display Attached : No
Display Active : Disabled
Persistence Mode : Enabled
Addressing Mode : None
MIG Mode
Current : N/A
Pending : N/A
Accounting Mode : Disabled
Accounting Mode Buffer Size : 4000
Driver Model
Current : N/A
Pending : N/A
Serial Number : N/A
GPU UUID : GPU-6aee6084-e675-e201-f1b1-cac04aee03e2
GPU PDI : 0x2ac8bf388a9e4712
Minor Number : 0
VBIOS Version : 94.06.37.00.5C
MultiGPU Board : No
Board ID : 0x200
Board Part Number : N/A
GPU Part Number : 2507-150-A1
FRU Part Number : N/A
Platform Info
Chassis Serial Number : N/A
Slot Number : N/A
Tray Index : N/A
Host ID : N/A
Peer Type : N/A
Module Id : 1
GPU Fabric GUID : N/A
Inforom Version
Image Version : G001.0000.03.03
OEM Object : 2.0
ECC Object : N/A
Power Management Object : N/A
Inforom BBX Object Flush
Latest Timestamp : N/A
Latest Duration : N/A
GPU Operation Mode
Current : N/A
Pending : N/A
GPU C2C Mode : N/A
GPU Virtualization Mode
Virtualization Mode : None
Host VGPU Mode : N/A
vGPU Heterogeneous Mode : N/A
GPU Recovery Action : None
GSP Firmware Version : 590.48.01
IBMNPU
Relaxed Ordering Mode : N/A
PCI
Bus : 0x02
Device : 0x00
Domain : 0x0000
Base Classcode : 0x3
Sub Classcode : 0x0
Device Id : 0x250710DE
Bus Id : 00000000:02:00.0
Sub System Id : 0x250710DE
GPU Link Info
PCIe Generation
Max : 3
Current : 1
Device Current : 1
Device Max : 4
Host Max : 3
Link Width
Max : 16x
Current : 8x
Bridge Chip
Type : N/A
Firmware : N/A
Replays Since Reset : 0
Replay Number Rollovers : 0
Tx Throughput : 537 KB/s
Rx Throughput : 439 KB/s
Atomic Caps Outbound : N/A
Atomic Caps Inbound : N/A
Fan Speed : 0 %
Performance State : P8
Clocks Event Reasons
Idle : Active
Applications Clocks Setting : Not Active
SW Power Cap : Not Active
HW Slowdown : Not Active
HW Thermal Slowdown : Not Active
HW Power Brake Slowdown : Not Active
Sync Boost : Not Active
SW Thermal Slowdown : Not Active
Display Clock Setting : Not Active
Clocks Event Reasons Counters
SW Power Capping : 8766009 us
Sync Boost : 0 us
SW Thermal Slowdown : 0 us
HW Thermal Slowdown : 0 us
HW Power Braking : 0 us
Sparse Operation Mode : N/A
FB Memory Usage
Total : 8192 MiB
Reserved : 351 MiB
Used : 5300 MiB
Free : 2543 MiB
BAR1 Memory Usage
Total : 256 MiB
Used : 9 MiB
Free : 247 MiB
Conf Compute Protected Memory Usage
Total : 0 MiB
Used : 0 MiB
Free : 0 MiB
Compute Mode : Default
Utilization
GPU : 0 %
Memory : 0 %
Encoder : 0 %
Decoder : 0 %
JPEG : 0 %
OFA : 0 %
Encoder Stats
Active Sessions : 0
Average FPS : 0
Average Latency : 0
FBC Stats
Active Sessions : 0
Average FPS : 0
Average Latency : 0
DRAM Encryption Mode
Current : N/A
Pending : N/A
ECC Mode
Current : N/A
Pending : N/A
ECC Errors
Volatile
SRAM Correctable : N/A
SRAM Uncorrectable Parity : N/A
SRAM Uncorrectable SEC-DED : N/A
DRAM Correctable : N/A
DRAM Uncorrectable : N/A
Aggregate
SRAM Correctable : N/A
SRAM Uncorrectable Parity : N/A
SRAM Uncorrectable SEC-DED : N/A
DRAM Correctable : N/A
DRAM Uncorrectable : N/A
SRAM Threshold Exceeded : N/A
Aggregate Uncorrectable SRAM Sources
SRAM L2 : N/A
SRAM SM : N/A
SRAM Microcontroller : N/A
SRAM PCIE : N/A
SRAM Other : N/A
Channel Repair Pending : No
TPC Repair Pending : No
Unrepairable Memory : N/A
Retired Pages
Single Bit ECC : N/A
Double Bit ECC : N/A
Pending Page Blacklist : N/A
Remapped Rows : N/A
Temperature
GPU Current Temp : 47 C
GPU T.Limit Temp : N/A
GPU Shutdown Temp : 97 C
GPU Slowdown Temp : 94 C
GPU Max Operating Temp : 92 C
GPU Target Temperature : 83 C
Memory Current Temp : N/A
Memory Max Operating Temp : N/A
GPU Power Readings
Average Power Draw : 12.81 W
Instantaneous Power Draw : 12.84 W
Current Power Limit : 130.00 W
Requested Power Limit : 130.00 W
Default Power Limit : 130.00 W
Min Power Limit : 100.00 W
Max Power Limit : 130.00 W
GPU Memory Power Readings
Average Power Draw : N/A
Instantaneous Power Draw : N/A
Module Power Readings
Average Power Draw : N/A
Instantaneous Power Draw : N/A
Current Power Limit : N/A
Requested Power Limit : N/A
Default Power Limit : N/A
Min Power Limit : N/A
Max Power Limit : N/A
Power Smoothing : N/A
Workload Power Profiles
Requested Profiles : N/A
Enforced Profiles : N/A
EDPp Multiplier : N/A
Clocks
Graphics : 210 MHz
SM : 210 MHz
Memory : 405 MHz
Video : 555 MHz
Applications Clocks
Graphics : Requested functionality has been deprecated
Memory : Requested functionality has been deprecated
Default Applications Clocks
Graphics : Requested functionality has been deprecated
Memory : Requested functionality has been deprecated
Deferred Clocks
Memory : N/A
Max Clocks
Graphics : 2100 MHz
SM : 2100 MHz
Memory : 7001 MHz
Video : 1950 MHz
Max Customer Boost Clocks
Graphics : N/A
Clock Policy
Auto Boost : N/A
Auto Boost Default : N/A
Fabric
State : N/A
Status : N/A
CliqueId : N/A
ClusterUUID : N/A
Health
Summary : N/A
Bandwidth : N/A
Route Recovery in progress : N/A
Route Unhealthy : N/A
Access Timeout Recovery : N/A
Incorrect Configuration : N/A
Processes
GPU instance ID : N/A
Compute instance ID : N/A
Process ID : 596028
Type : C
Name : /opt/llama/bin/llama-server
Used GPU Memory : 82 MiB
GPU instance ID : N/A
Compute instance ID : N/A
Process ID : 914563
Type : C
Name : /opt/llama/bin/llama-server
Used GPU Memory : 82 MiB
GPU instance ID : N/A
Compute instance ID : N/A
Process ID : 3234811
Type : C
Name : /opt/llama/bin/llama-server
Used GPU Memory : 5122 MiB
Capabilities
EGM : disabled

コメント