0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OpenClawをローカルvLLM(Radeon 890M)で動かす

0
Posted at

自律型AIアシスタントOpenClawを、Radeon 890M(iGPU)上のvLLMをバックエンドにして動かすまでの記録。

環境

項目 値
CPU AMD Ryzen AI 9 HX 370
iGPU Radeon 890M (gfx1150, RDNA 3.5)
VRAM 2GB (BIOS UMA設定)
GTT 64GB (amdgpu.gttsize=65536)
RAM 91GB
OS Ubuntu 24.04
ROCm 10.0.0
Node.js v25.3.0

vLLMのセットアップについては前回の記事を参照: vLLMをRadeon 890M(iGPU)で動かす

OpenClawとは

OpenClaw(旧Clawdbot/Moltbot)は、オープンソースの自律型AIアシスタント。ChatGPTやClaudeのようなチャットUIだけでなく、シェルコマンド実行やファイル操作などを自律的に行えるのが特徴。

  • モデル非依存: OpenAI, Anthropic, Ollama, vLLM等に対応
  • プライバシーファースト: データはすべてローカル保存
  • MITライセンス

OpenClawのインストール

$ npm install -g openclaw@latest
$ openclaw --version
OpenClaw 2026.5.26 (10ad3aa)

初回セットアップにはウィザードを使う。

$ openclaw onboard --install-daemon

vLLMの起動

Radeon 890M向けのvLLMコンテナイメージを使う。

$ podman images | grep vllm
docker.io/rocm/vllm  rocm7.13.0_gfx1150_ubuntu24.04_py3.13_pytorch_2.10.0_vllm_0.19.1  a3bc9f1c0307  36.7 GB

モデルの選択

Qwen3.8-27B(最新)を使いたかったが、いくつか問題があった。

AWQ量子化モデル(cyankiwi/Qwen3.8-27B-AWQ-INT4)の場合:

ValueError: Failed to find a kernel that can implement the WNA16 linear layer. Reasons:
 ConchLinearKernel cannot implement due to: Group size (32) not supported
 ExllamaLinearKernel cannot implement due to: Quant type (uint4) not supported

gfx1150(RDNA 3.5)ではAWQ/GPTQ等の量子化カーネルが動作しない。これらのカーネルはCDNA(MI250/MI300等)向けにコンパイルされており、コンシューマ向けRDNA GPUではサポートされていない。

結論: FP16で動くモデルを使うしかない。

Qwen3.8-27BのFP16は約54GBでGTT 64GBギリギリのため、まずはQwen3-8B(FP16, 約16GB) で動作確認することにした。

コンテナの起動

$ podman run -d \
  --name vllm-qwen3 \
  --device /dev/kfd --device /dev/dri \
  --group-add 44 --group-add 110 \
  -v ~/.cache/huggingface:/root/.cache/huggingface \
  -p 8000:8000 \
  --ipc=host \
  -e HIP_VISIBLE_DEVICES=0 \
  rocm/vllm:rocm7.13.0_gfx1150_ubuntu24.04_py3.13_pytorch_2.10.0_vllm_0.19.1 \
  python3 -m vllm.entrypoints.openai.api_server \
    --model Qwen/Qwen3-8B \
    --dtype float16 \
    --enable-auto-tool-choice \
    --tool-call-parser qwen3_coder \
    --host 0.0.0.0 \
    --port 8000 \
    --max-model-len 32768 \
    --gpu-memory-utilization 0.6 \
    --enforce-eager

ポイント:

オプション 説明
--group-add 44 --group-add 110 video/renderグループのGIDを数値指定(コンテナ内にグループ名がないため)
--gpu-memory-utilization 0.6 デスクトップ環境(GNOME, Firefox, VS Code等)がVRAM/GTTを使用しているため低めに設定
--enforce-eager CUDAグラフのコンパイルを回避(gfx1150でのHIPカーネルエラー対策)
--enable-auto-tool-choice OpenClawのfunction calling用
--tool-call-parser qwen3_coder Qwen3系モデル用のツールコールパーサー
--max-model-len 32768 OpenClawのシステムプロンプトが約8500トークンあるため、8192では不足
-e HIP_VISIBLE_DEVICES=0 使用するGPUを指定

注意: HSA_OVERRIDE_GFX_VERSION=11.0.0はこのイメージでは設定しない。イメージ自体がgfx1150ネイティブ対応のため、設定するとHIPカーネルエラー(device kernel image is invalid)が発生する。

起動確認

$ curl -s http://localhost:8000/v1/models | python3 -m json.tool
{
    "data": [
        {
            "id": "Qwen/Qwen3-8B",
            "object": "model",
            "owned_by": "vllm",
            "max_model_len": 32768
        }
    ]
}
$ curl -s http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "Qwen/Qwen3-8B",
    "messages": [{"role": "user", "content": "Hello!"}],
    "max_tokens": 50
  }' | python3 -m json.tool
{
    "choices": [
        {
            "message": {
                "role": "assistant",
                "content": "Hello! How can I assist you today?"
            },
            "finish_reason": "stop"
        }
    ]
}

OpenClawの設定

~/.openclaw/openclaw.jsonを編集して、vLLMをモデルプロバイダとして追加する。

デフォルトモデルの変更

{
  "agents": {
    "defaults": {
      "model": {
        "primary": "vllm/Qwen/Qwen3-8B"
      },
      "models": {
        "vllm/Qwen/Qwen3-8B": {}
      }
    }
  }
}

primaryの形式はプロバイダ名/モデルID。モデルIDはvLLMの/v1/modelsが返すidと一致させる必要がある。

プロバイダの追加

{
  "models": {
    "mode": "merge",
    "providers": {
      "vllm": {
        "baseUrl": "http://127.0.0.1:8000/v1",
        "api": "openai-completions",
        "apiKey": "none",
        "models": [
          {
            "id": "Qwen/Qwen3-8B",
            "name": "Qwen3-8B",
            "reasoning": true,
            "input": ["text"],
            "cost": {
              "input": 0,
              "output": 0,
              "cacheRead": 0,
              "cacheWrite": 0
            },
            "contextWindow": 32768,
            "maxTokens": 8192,
            "compat": {
              "supportsTools": true,
              "supportsUsageInStreaming": true
            }
          }
        ]
      }
    }
  }
}

ポイント:

  • apiは"openai-completions"を指定する。"openai"ではない(openclaw doctorが自動修正してくれる)
  • idはvLLMのserved_model_nameと完全一致させる(デフォルトは--modelに渡した値)
  • contextWindowはvLLMの--max-model-lenと合わせる
  • costはすべて0(ローカル実行なので課金なし)

設定の検証

$ openclaw config validate
Config valid: ~/.openclaw/openclaw.json

動作確認

$ openclaw agent --agent main --message "Hi, respond in one short sentence." --local --json
{
  "finalAssistantRawText": "Hello! How can I assist you today?",
  "executionTrace": {
    "winnerProvider": "vllm",
    "winnerModel": "Qwen/Qwen3-8B",
    "attempts": [
      {
        "provider": "vllm",
        "model": "Qwen/Qwen3-8B",
        "result": "success"
      }
    ],
    "fallbackUsed": false,
    "runner": "embedded"
  }
}

vLLMプロバイダ経由でQwen3-8Bが応答を返している。

ハマりどころまとめ

1. 量子化モデルはgfx1150で動かない

AWQ, GPTQ等の量子化カーネル(Marlin, Exllama等)はCDNA(MI系)向け。RDNA 3.5ではFP16/BF16のみ使用可能。

2. HSA_OVERRIDE_GFX_VERSIONの罠

gfx1150ネイティブ対応のコンテナイメージを使う場合、HSA_OVERRIDE_GFX_VERSION=11.0.0を設定すると逆にHIPカーネルエラーになる。PyTorch単体のROCm 10.0.0環境では必要だったが、このvLLMイメージでは不要。

3. GPUメモリはデスクトップ環境が消費している

ValueError: Free memory on device cuda:0 (28.78/45.97 GiB) ...

GNOME Shell(1.7GB), VS Code(1.0GB), Firefox(1.0GB)等がGPUメモリを使用している。--gpu-memory-utilizationを下げて対応する。

4. OpenClawのモデルID不一致

OpenClawはプロバイダ名/モデルIDの形式でモデルを指定する。models.providers.vllm.models[].idがvLLMのserved_model_nameと完全一致していないと404エラーになる。

5. コンテキストウィンドウが小さいとシステムプロンプトが入らない

OpenClawのシステムプロンプトは約8500トークンある。vLLMの--max-model-lenが8192だと、ユーザーメッセージを送る前にcontext overflowになる。32768以上を推奨。

今後

  • Qwen3.8-27B(FP16, 54GB)への挑戦 — GTT 64GBに収まるか検証
  • OpenClawのスキル(coding-agent, github等)を有効化して実用性を確認
  • 推論速度のベンチマーク
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?