西川和久の不定期コラム

ローカルAIの超新星!Qwen3.8-27B×DeepSeek Harnessを早速試す

 日本時間の2026年8月14日、Alibaba Qwenが27B級dense(デンス、非MoE)のモデル「Qwen3.8-27B」を公開した。前作「Qwen3.6-27B」を全ベンチマークで上回るとのことで、ローカルAIの定番候補として界隈は大騒ぎだ。そして同日、DeepSeekもLLMエージェント基盤「DeepSeek Harness」を公開。今回は、Qwen3.8-27BとDeepSeek Harnessをセットで取り上げてみたい。

Qwen3.8-27Bとは

 まずスペックから。Qwen3.8-27Bの主な特徴は以下の通り。

  • dense 27.78Bパラメータ(非MoE)。64層・hidden 5,120
  • ハイブリッドアテンション: Gated DeltaNet(線形アテンション)48層+フルアテンション16層
  • ネイティブ262Kトークンコンテキスト(YaRNで1Mに拡張可)
  • Thinking対応: reasoning_effort で xhigh / medium / low を選択
  • MTPヘッド内蔵(スペキュラティブデコーディング用)
  • マルチモーダル: テキスト・画像・動画入力対応
  • Apache 2.0ライセンス

 デコーダ形状は前作Qwen3.6-27Bとほぼ同一で、アーキテクチャ刷新ではなく重み、訓練、ポスト訓練の改善で性能を上げたリリースだ。Qwen公表のベンチマークを見ると、エージェント・コンピュータ操作系で大幅に伸びている。

ベンチマーク内容Qwen3.6-27BQwen3.8-27B
Terminal-Bench 2.1ターミナル操作タスク63.73.0
SWE-bench Pro実世界のGitHub issue解決53.561.7
DeepSWE 1.1難易度の高いソフトウェア開発13.342.2
QwenSWEBenchコード修正タスク49.379.0
LiveCodeBench v6競技プログラミング83.990.3
OSWorld-Verified実OSのデスクトップ操作63.984.3
WebArena-Verified実ブラウザでのWebタスク48.864.8

 全項目で3.6を上回り、特にエージェント系(DeepSWE +28.9、QwenSWEBench +29.7、OSWorld +20.4)の伸びが目立つ。これは「コードを書く」「PCを操作する」系の用途でかなり期待が持てる数字だ。

 ただし注意したいのは、このベンチマークはおそらくthinkingを最高レベル(xhigh)に設定した状態で測定したものだ。xhighだと思考が長く、そのぶん精度は上がるが遅くもなる。実運用でreasoning_effort: lowやthinking OFFで使う場合は、ここまでの数字は出ないと考えるのが妥当だ。

Qwen3.8-27Bを動かしてみる

 実際使うには、GGUF版(unsloth/Qwen3.8-27B-GGUFなど)やMLX版(mlx-community)も公開されているので、WindowsやMacならLM Studio、Ollamaで手軽に動かせる。

 GGUFの最小構成はUD-IQ2_XXS(2bit)で約9.0GB、16GB VRAMならQ3_K_M(13.8GB)やIQ4_XS(15.7GB)、24GB VRAM(RTX 4090/3090)ならQ4_K_M(17.1GB)がちょうどいい。2bitまで落とすと品質低下するだろうが、12GBのGPUでも動作は可能だ。もちろん最大コンテキスト長やkv cacheなどの設定で必要なVRAM容量は+αとなる。

 今回は主にLLM用のDGX Spark互換機+vLLMでテストすることにした。モデルはQwen公式のFP8版(Qwen/Qwen3.8-27B-FP8、約30.9GB)を使用。量子化形式はNVFP4(約24.6GiB)も選択肢にあるが、Qwen3.6のときにFP8構成(flashinfer+fastsafetensors+kv-cache fp8)の方が速かった実績があり、今回もFP8を選んだ次第。

 起動はspark-vllm-dockerのlaunch-cluster.shでvLLMを直接起動する方式。MTPあり、thinking OFFを有効にしたコマンドは以下の通り。

./launch-cluster.sh --solo exec \
vllm serve Qwen/Qwen3.8-27B-FP8 \
  --served-model-name qwen38-27b-fp8 \
  --host 0.0.0.0 --port 8888 \
  --tensor-parallel-size 1 --trust-remote-code \
  --attention-backend flashinfer \
  --kv-cache-dtype fp8 \
  --gpu-memory-utilization 0.8 \
  --max-model-len 262144 \
  --max-num-seqs 4 \
  --max-num-batched-tokens 32768 \
  --enable-chunked-prefill \
  --enable-prefix-caching \
  --load-format fastsafetensors \
  --reasoning-parser qwen3 \
  --tool-call-parser qwen3_coder \
  --enable-auto-tool-choice \
  --generation-config vllm \
  --speculative-config '{"method":"mtp","num_speculative_tokens":3}' \
  --default-chat-template-kwargs '{"enable_thinking": false}'

※MTPを無効にする場合は--speculative-configの行を外す。thinkingはデフォルトONなので、ONにしたい場合は--default-chat-template-kwargsのenable_thinkingの行自体を外す。reasoning_effortに関しては--default-chat-template-kwargs '{"reasoning_effort": "low"}'という感じで書く(xhigh / medium / low)。
vLLMの起動画面

 thinkingはデフォルトONなのだが、挨拶にすら思考が入って「こんにちは!」でずっと考える問題があるため、サーバー側ではOFFにしている。難しい問題だけリクエスト側でreasoning_effort: xhighを渡せば自動で思考ONになるので、使い分けが効く。

 簡単な速度計測をしてみた。500トークン生成での結果は以下の通り。

設定生成速度
FP8 + MTP ON12.0tok/s
NVFP4 + MTP ON(参考)10.3tok/s
NVFP4 + MTP OFF(参考)9.8~9.9tok/s

 GB10のメモリ帯域(273GB/s)から計算した理論限界はNVFP4で約10.3tok/s。FP8は重みが大きい分、理論上は遅いはずなのに実測12.0tok/sと逆転している。FP8がBlackwellネイティブのテンソルコアで変換オーバーヘッドがないことと、flashinfer+kv-cache fp8のカーネル効率が効いているようだ。Qwen3.6のときの「FP8の方が速い」という経験とも一致する。

 ちなみにMTPはON/OFFで(帯域がボトルネックのため)ほぼ差がない。効果もオーバーヘッドもほぼゼロという、なんとも言えない結果だった。

動画を認識、内容を表示

 Qwen3.8-27BはQwen3.6-27B同様マルチモーダル対応なので、画像と動画の認識も試してみた。画像は詳細な説明が返ってきて、動画(HD/5秒)も内容の概要を正確に返答。ただし、動画は「必ず日本語のみで回答してください」と明示しないと多言語ノイズが混ざる癖がある。

 ウォーターマークの有無を聞けば「下部中央に白文字で」と正確に答え、画面キャプチャのようにタイムラインを出すことも可能。認識自体は優秀だと思われる。残念なのは映像にあるセリフや歌詞など音は非対応なこと。

DeepSeek Harnessで使ってみる

 モデル単体で動くのは確認できた。続いて、冒頭で紹介したDeepSeek Harnesssから使ってみる。MITライセンスで、モデル・ツール・UIまで全部プラグインとして差し替えられる構成になっており、GitHubにも公開済み

 インストールはgit cloneでコードからbuildしてもいいのだが、Node.jsが入っていればnpx一発。以下のコマンドを実行するとWeb UIが起動する。

npx @deepseek-ai/dsh web
DeepSeek Harness WebUI

 http://127.0.0.1:3080 をブラウザで開けばOK。公開されて間もないdeveloper preview(検証時0.1.0-rc.6)なので、タグはなく常に最新のrc版が入る。

 名前からDeepSeek専用と思われがちだが、実はOpenAI互換APIなどDeepSeek以外のモデルもプロバイダーとして追加できる。OpenCode Goやローカルに立てたvLLMのQwen3.8-27Bも同じように扱えるのが便利。

 やり方はWeb UIのSettings > ModelsからAdd a custom providerを選ぶだけ。OpenAI互換APIなので以下のように設定する。

  • Provider ID: qwen38-local
  • Display name: DGX Spark
  • Base URL: http://192.168.11.100:8888/v1
  • API protocol: openai-completions
  • API Key: ローカルなので適当なダミー値
  • Models: Fetch available modelsとすると使えるモデルが表示される(qwen38-27b-fp8)
custom provider の設定

 モデルはFetch available modelsでbase URLから自動取得できる。vLLMの/v1/modelsがqwen38-27b-fp8を返すのでそれを選択保存すればOKだ。モデル変更はサーバー再起動なしで次のリクエストから反映される。

 1点だけ注意がある。手入力したモデルはテキスト専用として扱われるため、画像を渡したい場合は$DSH_HOME/settings.yamlにinput: [text, image]を追記する必要がある(そういえばOpenClawでも似た話があった)。

ui-onboarding:
  welcomeNoticeVersion: 2026-08-13.1
llm-pi-ai:
  providers:
    {
      qwen38-local:
        {
          displayName: DGX Spark,
          apiKeyEnv: QWEN38_LOCAL_API_KEY,
          api: openai-completions,
          baseURL: http://192.168.11.100:8888/v1,
          models: [ { id: qwen38-27b-fp8 } ]
        }
    }
※ 画像対応にするには、models配列の中のモデルオブジェクトにinput: [text, image]を追加する(モデル単位の設定)

models: [ { id: qwen38-27b-fp8, input: [text, image] } ]

 $DSH_HOMEは環境変数で指定できるが、未設定なら~/.dsh(macOSなら/Users/ユーザー名/.dsh、Linuxなら/home/ユーザー名/.dsh)が使われる。

 設定すると画像はドラッグ&ドロップで扱えるが、残念ながら動画は未対応だった。

DeepSeek HarnessでQwen3.8-27Bが動作中。このフォルダにあるプログラムの内容と目的は?の答え

 これでDeepSeek HarnessのWeb UIからQwen3.8-27Bが使えるようになった。実際試してみると、DGX Spark互換機で動くQwen3.8-27B(Thinking off/mtpあり)は、デコードが遅いものの、たとえばコードが入っているフォルダを開き、何をするコードが入っている?と聞くと適切な答えが戻ってくる。日頃Claude CodeやOpenCodeを使っているが特に違和感はない。

 Qwen3.8-27Bは、エージェントとして動かすと、コード生成やファイル操作系のタスクでモデルの実力を活かせる。ベンチマークで伸びていたエージェント系の強みは、こういう形で活きてくるわけだ。

 さてDeepSeek Harness、なぜプラグインで差し替えれる仕様になってるか?GitHubにあるコードやドキュメントからAIの意見を聞くと(笑)、

 「未来の不確実性を全部プラグインに押し込んで、コアは最小限に保つ」ため。AIエージェント界隈は何が標準になるかまだ混沌としてて、それに備えた保険の設計

※ 実際には以下の辺り

README.md(概要・「Everything is a Plugin」の宣言)

docs/architecture.md(アーキテクチャ解説・「特権的なコアを作らない」の明記)

docs/cordis-primer.md(基盤フレームワークCordisの設計思想・5つのアイデア)

docs/capability-seams.md(差し替え可能な機能「seam」の概念図)

とのこと。

 理由は、特権的なコアを作らない、モデルロックインしない(DeepSeek専用にしてしまうと普及しない)、プロトコル戦争への保険、エコシステム形成……このあたりがドキュメントに書かれているためらしい。

 Xでも同じ意見を少し見かけたのだが、もう1つ、もしかして的に「AIが自分でハーネスを書き換えて拡張できるようにするため」ではとも。設定ファイル1枚でプラグイン追加できる構造+ドキュメントがエージェントに読ませる前提で書かれているため、その伏線に見えなくもない(ただし公式の明言はなく、あくまで推測)。

 そういえば、日頃使っている自作ハーネスcore-agentも何かリサーチを頼み、仕様などが分かると(便利そうなら)勝手にSkillを作り始める(笑)。多くの場合はSTOPで止めているが、これの延長線上的な感じではないだろうか。


 以上のように、Qwen3.8-27Bは、27B級denseのローカルモデルとして現時点で最有力候補の1つだ。エージェント系ベンチマークで3.6を大きく上回り、画像・動画認識までこなす。FP8構成の場合、DGX Sparkで12tok/sと、実用的に使うにはちょっと遅いものの、対話用途なら許容範囲の速度は出る。

 と、思っていたところSGLang-DGX-Sparkを発見!SGLangやNVFP4などを駆使し30tok/s近く出るようになった。これなら結構使える戦力となる♪

 そしてDeepSeek Harnessのようなエージェント基盤と組み合わせれば、ローカル完結のAIエージェント環境が手軽に組める。クラウドAPIに依存せず、プライバシーを保ちながら強力なモデルをAI PCとしては比較的軽め?なローカルPCで使いたい人には、まさに今が旬の組み合わせの1つではないだろうか。