はじめに
Claude Codeを普段の開発だけでなく、インターネットへ接続できない環境やアクセスが制限された特定の地域からでも利用したいと考え、Windows 11環境上に
- Claude Code
- Ollama
- Qwen 3.5
を構築し、ローカルLLMをClaude Codeのバックエンドとして利用できるか検証しました。
結論から話しますと、自分のローカルPC環境である Windows 11 + Radeon 680Mでも Claude Code + Ollama + Qwen 3.5は動作しましたが、自分の環境では Vulkan による100% GPU offload後もCPU推論より高速という結果にはなりませんでした。
今回の構成は以下の通りです。
構築そのものは比較的簡単だったものの、実際に試してみると以下の問題に遭遇しました。
- Claude Code CLIのインストールでエラー
-
ollama launch claudeでは起動するがAPI Error - Qwen 3.5単体でも非常に遅い
- OllamaがRadeon 680Mを使わずCPU推論していた
- Radeon 680MをVulkan経由で有効化
-
100% GPUにはなったが、必ずしも高速化しなかった
本記事では、単に「動いた」という結果だけではなく、ログを使って原因を切り分けた過程も含めて整理します。
実装環境
実装環境は以下の通りです。
| 項目 | 環境 |
|---|---|
| OS | Windows 11 Pro 25H2 |
| CPU | AMD Ryzen 7 7735HS |
| GPU | AMD Radeon 680M相当の内蔵Radeon Graphics |
| メモリ | 約32 GB |
| Ollama | 0.32.9 |
| Local LLM | Qwen 3.5 |
| モデル規模 | 約9.7B |
| Quantization | Q4_K_M |
| Context Length | 65536 |
| Claude Code | PowerShell |
Qwen 3.5自体の最大Context Lengthは262144であり、Ollama上ではClaude Code利用を想定して65536に設定しました。
Claude Code CLIをWindowsへインストール
最初はAnthropicのNative InstallerをPowerShellから実行しました。
irm https://claude.ai/install.ps1 | iex
しかし、自分の環境ではPowerShellスクリプトではなくHTMLが返されました。その結果、
<script type="text/javascript">
var ...
||
&&
などのJavaScriptをPowerShellが解釈しようとしてParserErrorが発生しました。そこでWinGetに変更して、
winget install --id Anthropic.ClaudeCode -e
インストール後にPowerShellを開き直し、
claude --version
2.1.229 (Claude Code)
でClaude Code CLIが利用できることを確認しました。通常のClaude Codeはそのまま以下のコマンドを叩いて起動します。
claude
起動すると、Security guide を聞かれるので、1. を選択します。
Claude Codeが無事に起動されました。ここまではオンライン版のClaude Codeを単にPowerShellから利用している状態になります。
OllamaとQwen 3.5を導入
Ollamaをインストール後、
ollama pull qwen3.5
を実行します。モデルを確認すると、
architecture qwen35
parameters 9.7B
context length 262144
quantization Q4_K_M
となっていました。Capabilitiesには
completion
vision
tools
thinking
も含まれており、Claude Codeで重要となるTool Callingにも対応しています。Context LengthについてはOllamaの設定から64kへ変更しました。
Ollama単体の動作確認
まずClaude Codeを介さず、
ollama run qwen3.5
を実行します。試しに
1+1はいくつですか?
と質問したところ、最終的には
1+1 は 2 です。
と正常に回答されました。
上記の結果から、
Ollama -> Qwen 3.5
自体は正常に動作していることを確認できましたが、回答までに約1~2分かかりました。この時点で、モデル自体は正常に動作していますが推論の性能に問題があることが分かりました。
Anthropic互換APIを確認
Claude CodeとOllamaはAnthropic Messages API互換インターフェースを介して接続します。そこで、Claude Codeを使わず直接
http://localhost:11434/v1/messages
へリクエストを送信しました。PowerShellでは以下のように確認しました。
$body = @{
model = "qwen3.5"
max_tokens = 256
messages = @(
@{
role = "user"
content = "Hello. Reply only with OK."
}
)
} | ConvertTo-Json -Depth 10
続けて、
Invoke-RestMethod `
-Uri "http://localhost:11434/v1/messages" `
-Method Post `
-ContentType "application/json" `
-Headers @{
"x-api-key" = "ollama"
"anthropic-version" = "2023-06-01"
} `
-Body $body
出力結果について、正常に
OK
が返ってきました。したがって、下図のように
の接続も正常であることが分かります。
Claude CodeをQwen 3.5で起動
ローカルLLMを利用する場合は
$env:CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC="1"
ollama launch claude --model qwen3.5
を実行します。
画像にもありますように、
claude.ai connectors are disabled because ANTHROPIC_API_KEY or another auth source is set and ...
というメッセージが表示されました。
最初は何かのエラーかと思いましたが、Ollamaを利用する場合はClaude Codeの認証先が通常のclaude.aiではなくOllama側へ切り替わるため、今回のローカルLLMの利用では致命的な問題ではないことを確認しました。
なので、通常のClaude Code利用とローカル環境でのClaude Code利用は、
オンライン環境:
claude
ローカル環境:
ollama launch claude --model qwen3.5
と分けて利用すればよいです。
Claude CodeでAPI Errorが発生
次に、さっそくClaude Code上で、
1+1はいくつですか?
と質問すると、しばらく待った後に API Error
となりました。。。そこでOllamaのログを調査することにしました。以下のコマンドをまず叩きます。
Get-Content "$env:LOCALAPPDATA\Ollama\server.log" -Tail 100
すると、ログからClaude CodeからQwen 3.5へ送信されていた入力は、
task.n_tokens = 33058
でした。つまり、ユーザーが入力した文章は1行だけでも、Claude Code内部では
がまとめてモデルへ渡されるため、約33000 tokenもの巨大なプロンプトになっていたのです。
実はGPUが使われていなかった!
そこで以下のコマンドを叩きました。
ollama ps
最初の状態は、
NAME PROCESSOR CONTEXT
qwen3.5:latest 100% CPU 65536
でした。PROCESSOR 列をよくよく見ると、Qwen 3.5を完全にCPUだけで動かしていました。実測の生成速度はおよそ
5.3 token/sec
程度であり、一方Claude Codeからは約33000 tokenのPromptが送られました。そのため、下図のように
という状態になっていたと考えられます。
Radeon 680MはOllamaから認識されていた
ローカル環境で使われているGPUについて調べるために以下のコマンドを叩きました。
Get-CimInstance Win32_VideoController | Select-Object Name, AdapterRAM, PNPDeviceID, DriverVersion
出力結果から
AMD Radeon(TM) Graphics
が確認できました。さらにOllamaのログを見ますと、
AMD driver is too old.
Update your AMD driver to enable GPU inference.
という警告とともに、
dropping integrated GPU;
to enable, set OLLAMA_IGPU_ENABLE=1
というログが見つかりました。つまり、このことから 「OllamaがGPUを認識できない」のではなく、
Radeon iGPUを認識 -> integrated GPUなのでデフォルトでは除外
という状態だったことが分かりました。
Radeon 680MをVulkan経由で有効化
Vulkanは、GPUのグラフィックス処理や汎用計算機能を利用するための低レベルAPIです。Ollamaでは、WindowsおよびLinux環境でVulkanを介したGPUアクセラレーションを利用できます。
今回使用するRadeon 680Mについては、OllamaからVulkan Compute Deviceとして利用できる可能性があるため、Vulkan backendを有効化してGPU推論を試しました。
そこでOllamaを一度終了し、新しいPowerShellから以下を設定しました。
$env:OLLAMA_IGPU_ENABLE="1"
$env:OLLAMA_VULKAN="1"
$env:OLLAMA_DEBUG="INFO"
$env:OLLAMA_CONTEXT_LENGTH="65536"
その後、以下のコマンドを実行しました。
ollama serve
この状態ではOllamaのログに
library=Vulkan
description="AMD Radeon(TM) Graphics"
type=iGPU
total="16.4 GiB"
available="15.6 GiB"
と表示されました。つまりRadeon 680MをVulkan Compute Deviceとして利用できています。
Qwen 3.5を完全にGPUへoffloadできた!
さらにログを確認すると、
offloading output layer to GPU
offloading 32 repeating layers to GPU
offloaded 34/34 layers to GPU
となりました。つまりQwen 3.5について、モデルレイヤーはすべてRadeon側へoffloadされました。メモリ使用量も、
Model Buffer 約4.7 GiB
KV Cache 約2.0 GiB
Compute Buffer 約640 MiB
となっています。64k Contextについても、
n_ctx = 65536
として確保されています。実行中に別のPowerShellから ollama ps を確認したところ、
NAME SIZE PROCESSOR CONTEXT
qwen3.5:latest 8.1 GB 100% GPU 65536
となっていました。これでGPU利用そのものには成功しました。
GPUを使えば速くなる!…とは限らなかった
ここが今回最も意外だった結果でした。CPU推論時の生成速度はおよそ
5.3 token/sec
でした。一方Radeon 680MをVulkan経由で100% GPU利用した状態では、
prompt eval : 約4.44 token/sec
generation : 約4.14 token/sec
という計測結果でした。「1+1はいくつですか?」という非常に単純な質問にもかかわらず、
495 generated tokens
total time = 約123.6秒
でした。比較結果は以下の通りです。
| 実行方式 | Generation速度 |
|---|---|
| CPU | 約5.3 token/sec |
| Radeon 680M / Vulkan | 約4.14 token/sec |
今回の環境ではGPU化によって高速化するどころか、逆に生成速度が低下しました。つまり、GPUで実行しているからと言ってCPUより高速であることは言えません。
考察
GPUを使えば早くなると考えていた
ローカル環境のGPUの仕様を調べると、Radeon 680MはディスクリートGPUではなく、CPUとメインメモリを共有するiGPUでした。そのため、
という構成になっています。また、NVIDIAの高性能GPUのように、
を持つ構成とは異なります。LLM推論では単純な演算性能だけでなく、
- メモリ帯域
- モデルデータ転送
- KV Cacheアクセス
- Backend実装
- Kernel最適化
- Driver
- Quantization
などが大きく影響すると考えられます。また、Ollamaのログには依然として
AMD driver is too old.
という警告も残っています。そのため今回の結果だけから、Radeon 680Mは常にCPUより遅いように思われます。
少なくとも上図のような組み合わせでは、GPU化による速度化の改善は確認できませんでした。
Thinkingのコストも大きい
Qwen 3.5はThinking対応モデル「1+1はいくつですか?」という質問でも、答えは 2 だけですが、内部では数百トークン規模の推論が生成されていました。GPUテストでは最終的に495 トークンを生成しています。したがって、
1+1
の回答に2分かかったからといって、
2という文字を生成するのに2分必要
という意味ではないです。Thinkingを含めて大量のtokenを生成していることも、体感速度を大幅に低下させていることの一つの要因だと考えられます。
Claude Codeの--bare オプションを使う
ローカルLLMの場合は、Claude Codeの初期コンテキストをできるだけ減らす方がよいと考えました。そこで、
ollama launch claude --model qwen3.5 -- --bare
を利用することにします。この --bare オプションはClaude Codeの各種追加機能を抑えて、ファイル操作やShellなど最低限の機能を中心に利用できます。実行結果は以下の通りです。
まとめ
今回の検証で分かったことは、Claude Code + Ollama自体は動作可能であることです。Anthropic互換APIを利用して、
Claude Code -> Ollama -> Qwen 3.5
という構成はWindows 11でも構築できました。また、Radeon 680MでQwen 3.5 9Bを利用すると、
Model
約5 GB
KV Cache
約2 GB
その他Compute Buffer
約1 GB前後
を必要とします。そこで、
ollama pull qwen3.5:4b
として4Bモデルも候補になります。
Claude Codeでは単純なチャットよりTool Calling能力が重要なので、小さくしすぎるとAgent性能が低下する可能性があります。
今回の検証を踏まえ、次は以下を比較したいと思います。
| 条件 | 比較内容 |
|---|---|
| Qwen 3.5 9B / CPU | ここを基準にする |
| Qwen 3.5 9B / Radeon 680M | 今回の計測結果 |
| Qwen 3.5 4B / CPU | 今後測定 |
| Qwen 3.5 4B / Radeon 680M | 今後測定 |
| Thinking ON/OFF | 速度差 |
| Claude Code通常モード | コンテキストのサイズ |
Claude Code --bare
|
コンテキストの削減効果 |
| Context 64k | 現在 |
| Context縮小 | Claude Codeで実用可能か |
また特に、下図のようなコンポーネント
を揃えて測定すると、Radeon 680MクラスのノートPCでClaude Codeをローカル実行する際の一つの目安になると考えています。
参考文献
本記事の検証および技術仕様の確認にあたり、以下の公式ドキュメントを参照しました。
Claude Code
- Anthropic, Claude Code - Advanced setup
Windowsネイティブ環境の対応状況、Native Installer、WinGetによるインストール方法などを参照
https://code.claude.com/docs/en/installation - Anthropic, Claude Code - Quickstart
Windows PowerShellでのインストール方法、およびClaude Codeの基本的な起動方法を参照
https://code.claude.com/docs/en/quickstart - Anthropic, Claude Code - Troubleshoot installation and login
Native Installer実行時にHTMLが返される場合の原因と、WinGetを利用する代替手段について参照
https://code.claude.com/docs/en/troubleshoot-install
Ollama / Claude Code連携
- Ollama, Claude Code - Ollama Documentation
ollama launch claude、--modelによるモデル指定、Qwen 3.5の利用、およびClaude Codeでは64k tokens以上のContext Lengthが推奨されることを参照
https://docs.ollama.com/integrations/claude-code - Ollama, Anthropic compatibility
Ollamaが提供するAnthropic Messages API互換インターフェース、および/v1/messagesエンドポイントの仕様を参照
https://docs.ollama.com/api/anthropic-compatibility - Ollama, Context length
Claude CodeなどのAgent / Coding Toolで利用するContext Lengthの設定方法を参照
https://docs.ollama.com/context-length
GPU / Vulkan
- Ollama, Hardware support
OllamaにおけるGPUアクセラレーション、およびExperimental機能として提供されているVulkan backendの仕様を参照
https://docs.ollama.com/gpu - Ollama GitHub Repository
integrated GPUの扱いやOLLAMA_IGPU_ENABLEに関する実装を確認する際に参照
https://github.com/ollama/ollama
Qwen 3.5
- Ollama, Qwen 3.5 Model Library
Qwen 3.5のモデルサイズ、パラメータ数、Quantization、Context Length、Tool CallingおよびThinking対応状況を参照
https://ollama.com/library/qwen3.5
AMD Radeon 680M / ROCm
- AMD, AMD Ryzen 7 7735HS
Ryzen 7 7735HSに搭載されるAMD Radeon 680Mのハードウェア仕様を参照
https://www.amd.com/ja/products/processors/laptop/ryzen/7000-series/amd-ryzen-7-7735hs.html - AMD ROCm Documentation, System requirements for Windows
Windows環境におけるROCm / HIP SDKの正式対応GPUを確認する際に参照
https://rocm.docs.amd.com/projects/radeon-ryzen/en/latest/docs/shared/hipsdk/reference/system-requirements.html














