Ryzen AI ミニPCでローカルLLMを実用速度で動かす完全ガイド(2026年版) Ryzen AI ミニPCでローカルLLMを実用速度で動かす完全ガイド(2026年版)
はじめに
Ryzen AI 搭載のミニPCは、内蔵 GPU(Radeon 890M)と大容量メモリを積んでいて、 ローカル LLM を動かす機体として人気があります。 ただ、何も考えずに入れると CPU で推論してしまい、遅くて使い物になりません。
このシリーズでは、環境を一度まっさらにしてから組み直し、速度と品質を測ってきました。 この記事は、その結果を最短で再現するための手順書です。細かい理由は各回の記事に譲ります。
到達点: Qwen3.6-35B-A3B が 毎秒 17.5〜22.6 トークン。旧環境(CPU 推論)の約 7 倍です。
ターミナルで llm "質問" と打てば、サーバが止まっていても自動で立ち上がって答えが返ります。
動作確認した環境
| 項目 | 内容 |
|---|---|
| CPU / GPU | Ryzen AI 9 HX 370 / Radeon 890M(gfx1150) |
| メモリ | DDR5-5600 96GB(OS 認識 93.6 GB。iGPU 専用は 2 GiB) |
| OS | Windows 11 Pro 26200 / AMD Software 26.8.1 |
| llama.cpp | b11026(winget の Vulkan ビルド) |
| モデル | unsloth/Qwen3.6-35B-A3B-MTP-GGUF:UD-Q4_K_XL(21.27 GiB) |
この記事の手順と数字は、b11026 で確かめたものです。 winget にはより新しい版(b11193)が出ていますが、試していません。 更新するとオプションや速度が変わる可能性があります。
1. 古い環境を片付ける
以前に Ollama や LM Studio、Lemonade などを入れていたら、先に止めて消しておきます。 同じ GPU とメモリを奪い合うので、残っていると速度が安定しません。
- 常駐サービス(トレイアイコン、Windows サービス)を止める
- 古いモデルのキャッシュ(Hugging Face の
~\.cache\huggingfaceなど)を必要に応じて消す
消したあとに空き容量で効果を確かめるなら、OneDrive などの同期を止めてからにしてください。 私の環境では、69 GB 消したのに空き容量が 150 GB 減りました。裏で OneDrive が毎分 6 GB 書き込んでいたためです。
詳しくは掃除の回にまとめています。
2. llama.cpp(Vulkan 版)を入れる
winget install --id ggml.llamacpp
インストールしたら、ターミナルを開き直します。 開いたままのターミナルは古い PATH を持っているので、
llama-server が見つからないと言われます(私はこれで「インストールされていない」と誤診しました)。
GPU が見えているかを確かめます。
llama-server --list-devices
Available devices:
Vulkan0: AMD Radeon(TM) 890M Graphics (78739 MiB, 74802 MiB free)
Vulkan0 に 890M が出ていれば準備完了です。
なぜ Vulkan か。 同じモデルで生成速度を比べると、CPU が 2.59 t/s、ROCm が 4.76 t/s、 Vulkan が 13.41 t/s でした。この機体では Vulkan が圧倒的に速いです。
3. モデルを選ぶ
MoE(Mixture of Experts)のモデルを選びます。 これがいちばん大きな判断です。
| モデル | ファイル | 生成 | 読み込み |
|---|---|---|---|
| Qwen3.8-27B(密) | 16.23 GiB | 3.6 t/s | 29.6 t/s |
| Qwen3.6-35B-A3B(MoE) | 20.74 GiB | 20.7 t/s | 281 t/s |
ファイルが大きい MoE のほうが 5.7 倍速い。 iGPU の生成速度はメモリから重みを読む速さ(帯域)でほぼ決まり、 MoE は 1 トークンごとに全体の一部しか読まないからです。 **「総パラメータ数」ではなく「1 トークンあたり何バイト読むか」**で選んでください。
Qwen3.6-35B-A3B には、MTP(投機デコード用の層)を含むビルドがあります。
下の設定で使うので、-MTP-GGUF の版を選びます。
4. サーバを起動する
llama-server -hf unsloth/Qwen3.6-35B-A3B-MTP-GGUF:UD-Q4_K_XL `
--port 8080 -c 65536 -ngl 99 -b 8192 -fa on --kv-unified --jinja `
--no-mmproj --spec-type draft-mtp --spec-draft-n-max 2 `
--sleep-idle-seconds 43200
初回は約 22 GB のダウンロードが走ります。2 回目以降はキャッシュから読むだけです。
| オプション | 意味 | 効果(実測) |
|---|---|---|
-ngl 99 | 全層を GPU に載せる | 必須 |
-c 65536 | コンテキスト長 | 2 万トークン級のコードレビューも入る |
-b 8192 | バッチサイズ | 読み込み +26% |
--spec-type draft-mtp --spec-draft-n-max 2 | MTP 投機デコード | 散文 +12.6%、コード +33.4% |
--no-mmproj | 画像用の部品を読まない | メモリ −1.1 GiB(テキストだけなら困らない) |
--sleep-idle-seconds 43200 | 12 時間使わなければモデルをメモリから降ろす | 常駐させてもメモリを抱えっぱなしにしない |
--jinja | モデル同梱のチャットテンプレートを使う | 必須 |
入れても意味がないものもあります。-ub は横ばい、--cache-reuse はこのモデルでは無効、
-ctv q8_0(V の量子化)は遅くなります。
一覧は効くもの・効かないものの回にまとめました。
動いたか確かめる
ブラウザで http://127.0.0.1:8080 を開くと、llama.cpp 付属のチャット画面が使えます。
OpenAI 互換の API も出ているので、http://127.0.0.1:8080/v1 を指定すれば、たいていのツールから繋がります。
5. llm と打つだけで使えるようにする
毎回サーバを起動するのは面倒なので、止まっていれば自動で起動する関数を PowerShell のプロファイルに置きます。
notepad $PROFILE
次の関数を貼り付けます。
function llm {
param([Parameter(Mandatory)][string]$Prompt, [int]$Port = 8080)
$url = "http://127.0.0.1:$Port"
$ready = { try { (Invoke-WebRequest "$url/health" -TimeoutSec 2 -SkipHttpErrorCheck).StatusCode -eq 200 } catch { $false } }
if (-not (& $ready)) {
Write-Host 'サーバを起動しています(初回は 40 秒ほど)...'
$a = @('-hf','unsloth/Qwen3.6-35B-A3B-MTP-GGUF:UD-Q4_K_XL','--port',"$Port",'-c','65536','-ngl','99',
'-b','8192','-fa','on','--kv-unified','--jinja','--no-mmproj',
'--spec-type','draft-mtp','--spec-draft-n-max','2','--sleep-idle-seconds','43200')
Start-Process llama-server -ArgumentList $a -WindowStyle Hidden
while (-not (& $ready)) { Start-Sleep 2 }
}
$body = @{ model = 'local'; messages = @(@{ role = 'user'; content = $Prompt })
chat_template_kwargs = @{ enable_thinking = $false } } | ConvertTo-Json -Depth 5
$r = Invoke-RestMethod "$url/v1/chat/completions" -Method Post -ContentType 'application/json; charset=utf-8' `
-Body ([Text.Encoding]::UTF8.GetBytes($body))
$r.choices[0].message.content
}
新しいターミナルで試します。
llm "1+1は?数字だけ答えて"
私の環境では、サーバが止まっている状態からの 1 回目が 26 秒(起動を含む)、2 回目が 1.0 秒でした。
PowerShell 7 で確かめています(-SkipHttpErrorCheck は 7 以降のオプションです)。
この関数は最小限です。応答を少しずつ表示する、対話モードにする、サーバを止める、といった機能は CLI の回で作っています。
thinking は切ってあります(enable_thinking = $false)。
定型の質問では、thinking を有効にしても正答率は変わらず、時間が 3 倍になったためです(thinking の回)。
6. つまずきやすい点
実際に踏んだものだけを並べます。
| 症状 | 原因 | 対処 |
|---|---|---|
| 短い質問でも毎回 2 秒待たされる | localhost が IPv6 に解決され、IPv4 への切り替えに約 2 秒かかる | 接続先を 127.0.0.1 にする(2.10 秒 → 0.05 秒) |
llama-server が見つからない | winget のあと、ターミナルが古い PATH のまま | ターミナルを開き直す |
request (19303 tokens) exceeds the available context size | -c が小さい | -c 65536 などに上げる |
| メモリを 48 GB 食っている | サーバを止めきる前に次を起動して、2 つ動いていた | 止まったのを確かめてから起動する |
.cmd から呼ぶと '。' is not recognized | バッチファイルのコメントに日本語を書いた | .cmd は ASCII だけで書く |
| Python から設定ファイルが見えない | Store 版 Python は %APPDATA% を別の場所に振り替える | 読む側と同じ Python で書き込む |
| 速度が測るたびに 1 割ぶれる | 裏で別の処理(同期、別のアプリ)が動いている | 測るときは裏を止める(ベンチマークの取り方) |
いちばん効くのは 1 行目です。localhost と書いているところは、全部 127.0.0.1 に替えてください。
長い文書を扱うなら
この設定のまま、コンテキストは 256K まで伸ばせます(メモリは 28 GiB で収まります)。ただし注意点があります。
- 読み込みが重い: 128K トークンの文書を読ませるのに 18〜24 分かかる
- 2 回目からは速い: 同じ文書に別の質問をすると、読み直すのは末尾だけで 11 秒
- 文書を先、質問を後に置く。途中を書き換えると全部読み直しになる
まとめ
- 古い環境を止めて片付ける
winget install --id ggml.llamacppで Vulkan 版を入れ、ターミナルを開き直す- MoE モデル(Qwen3.6-35B-A3B の MTP 版)を選ぶ
-b 8192、MTP(n-max 2)、--no-mmprojを付けて起動するllm関数をプロファイルに置き、127.0.0.1で繋ぐ
速度を決めるのは、Vulkan を使うこととMoE を選ぶことの 2 つです。 細かい設定は、そこから 1〜3 割を上乗せするものだと考えてください。
関連記事 Related Posts
ローカルLLMにメモリは何GB必要か: 96GB積んだミニPCで実測した ローカルLLMにメモリは何GB必要か: 96GB積んだミニPCで実測した
Ryzen AI ミニPCに96GBのメモリを積んでローカルLLMを動かし、実際に何GB使っているかを測りました。35BのMoEモデルで24GiB、コンテキストを上限の256Kまで伸ばしても28GiB程度です。32GB・64GB・96GBでそれぞれ何ができそうかを、実測と推定を分けて整理します。 Ryzen AI ミニPCに96GBのメモリを積んでローカルLLMを動かし、実際に何GB使っているかを測りました。35BのMoEモデルで24GiB、コンテキストを上限の256Kまで伸ばしても28GiB程度です。32GB・64GB・96GBでそれぞれ何ができそうかを、実測と推定を分けて整理します。
Ryzen AI PCのローカルLLMを7倍速くした話(llama.cpp + Vulkan + Qwen) Ryzen AI PCのローカルLLMを7倍速くした話(llama.cpp + Vulkan + Qwen)
まっさらにしたRyzen AI 9 HX 370機に、llama.cppとVulkanでローカルLLM環境を作り直しました。CPU推論から約7倍。最新モデルを選んで失敗した話と、ファイルが大きいほうが速いという実測結果をまとめます。 まっさらにしたRyzen AI 9 HX 370機に、llama.cppとVulkanでローカルLLM環境を作り直しました。CPU推論から約7倍。最新モデルを選んで失敗した話と、ファイルが大きいほうが速いという実測結果をまとめます。
ローカルLLMの設定、効くもの・効かないもの一覧(実測つき) ローカルLLMの設定、効くもの・効かないもの一覧(実測つき)
Ryzen AI ミニPCでローカルLLMを動かすときに試した設定を、効果の大きさ順に1枚にまとめました。Vulkanは5.2倍、MoEは5.7倍。一方で、効かなかったもの、逆効果だったもの、そもそも無効だったものもあります。すべてこの機体での実測値です。 Ryzen AI ミニPCでローカルLLMを動かすときに試した設定を、効果の大きさ順に1枚にまとめました。Vulkanは5.2倍、MoEは5.7倍。一方で、効かなかったもの、逆効果だったもの、そもそも無効だったものもあります。すべてこの機体での実測値です。