ローカルモデルのqwen3.8:27bをnothinkでバッチ推定する

ローカルモデルのqwen3.8:27bをnothinkでバッチ推定する

ローカルモデルのqwen3.8:27bの性能状況をポーリング的に確認しておきたく、自社サービス上で非同期的なバッチ呼びだしを行い、性能を確認してみました。

環境や呼び出し方

  • LLMローカルマシン
    値段は全体的にそれなりにしましたが、GPUは ELSA エルザ NVIDIA RTX A4000(16GB) なので対しスペックがあるわけではありません。以下、組み立てたときの記事です。

  • Ollama(v0.32.14)
    CLIとしてではなく、APIで呼び出します。CLI等ではあれば、/set no_thinkなどコマンドを使うことで、thinkingなしを設定することが可能です。ただ今回はサービスを経由した呼び出しのため、APIとして呼び出して利用します。

  • モデル/qwen3.8:27b
    2026年8月の中旬に公開された、執筆時点では新しいモデルとなります。画像・動画対応のマルチモーダルモデルであり、先のマシンスペックでも受け切れるくらいのサイズ感となっています

  • 呼び出しする自社サービス
    RoundaChatという自社サービスを使って呼び出しをしてみます

今回の経路

  • 経路のイメージでいくと、今回は右の「バッチの場合」となります

  • ちなみにチャット側はWebSocket経由のため、localhost参照が可能です
    • 蛇足ですがlocalhostに限ったオプションだとno_thinkのようなパラメータon/offも、サッとUIに追加できるのは良いです。画像認識もすごい間違っています。

API化とno_thinkの反映

API化

この経路だと一度グローバルに出る必要があるため、LLMホストマシンをAPI化したりすることを考える必要があります。古からある方法なども含めると

  • 自宅ルーターポートフォーワード公開
  • ngrokを使って公開

などがあると思いますが、昨今だとCloudflareを使ったトンネルでサービストークンアクセスなどが一番良さそうだなと思いました。下記の記事なども拝見し、使い勝手がよさそうだと。

ただ、あいにくCloudflare側に寄せても良いドメインもなく、恒久的に呼びだしも必要ではなかったのため、一時的なtrycloudflare利用する方針としました。方法は下記を参考にさせていただきました。

cloudflared tunnel --url http://localhost:11434

上記コマンドだけでお手軽に公開ができたので、公開されたURLを取得し登録します。
自社サービス側はOpenAI互換のAPI(カスタムモデル扱い)で登録が可能なので、最後にv1を付けて 例:https://variables-library-standings-reading.trycloudflare.com/v1 みたいなURLを登録して完了です。

no_thinkの反映

qwen3.8:27bはthinkingモードを持つモデルです。最近のモデルは基本的にthinkを持つモデルが多いと思いますが、thinkもどうon/offできるのか、どう反映されるのかがollamaのような基盤単位もそうですし、モデル単位のパラメータ設定としても違うので結構面倒な観点です。

ちなみに今回の環境でqwen3.8:27bthink有りで呼び出した場合、thinkなしに比べて、おおよそ3~6倍程度レスポンスの速度が違いました。サービス側でストリーム出力が始まれば、タイムアウトにはならないように実現しているものの、thinkの量次第ではあるので、今回は全件no_thinkで呼び出しをしてみます。

ただ、サービス側のモデルの受け側では、さまざまなモデルやプロバイダを登録できることを想定しているので、オプションの有効可否を簡単に儲けることが難しいシーンもあります。今回の自社サービスでもモデルカタログになり得そうな情報(LiteLLM
models.dev
など)から情報を参照し紐づけなどを行っていますが、やはり塩梅の良い形でUIに反映するのが難しい状況でもあります。(移り変わりも激しいため)

なので、今回は無理やりですがOllama側のthinkデフォルトパラメータ設定をFalseに書き換える変更を行い、その上で手動で作成したビルドファイルに置き換えて呼び出す形にしました。

具体的には下記の部分をTrueからFalseに書き換えてビルドしています。
(多分最初のやつはCLI向けだと思いますが、念のため)

https://github.com/ollama/ollama/blob/b7871fc0d1d82fe109536efa3e0e8e411c766c75/cmd/cmd.go#L2592

https://github.com/ollama/ollama/blob/b7871fc0d1d82fe109536efa3e0e8e411c766c75/server/routes.go#L457

https://github.com/ollama/ollama/blob/b7871fc0d1d82fe109536efa3e0e8e411c766c75/server/routes.go#L2619

私のローカルLLM環境はubuntuなので、一度マニュアル通りにクイックインストールでollamaを入れた後、上記変更を入れたバイナリを置き換えたという流れになります。試してみましたが、速度的にno_thinkで動いていそうだったのでこれで良しとします。

[参考] ubuntu版のOllamaバイナリ置き換えの手順

事前:go環境が必要なので未はinstallするか、Docker上で上でビルドするかが良いです。普段は使わないのでDocker上のでbuildだけします。

クイックでインストールしたOllamaのバージョンと場所を確認

ollama --version
which ollama

Ollamaのバージョンを合わせる

git clone https://github.com/ollama/ollama.git
cd ollama

git checkout v0.x.y

先で記載した通り、trueをfalseに変換した後、Dockerでgoビルド
適宜下記のコマンドは適切パスや環境に書き換えてください。

docker run --rm \
  -v /[ollamaをcloneしたパス]/ollama:/src \
  -w /src \
  ubuntu:24.04 \
  bash -c '
    set -e

    apt-get update
    apt-get install -y curl ca-certificates gcc g++

    GO_VERSION=$(awk "/^go / {print \$2}" go.mod)

    echo "Installing Go ${GO_VERSION}"

    ARCH=$(uname -m)
    case "$ARCH" in
      x86_64) GO_ARCH=amd64 ;;
      aarch64|arm64) GO_ARCH=arm64 ;;
      *) echo "Unsupported arch: $ARCH"; exit 1 ;;
    esac

    curl -fsSL \
      "https://go.dev/dl/go${GO_VERSION}.linux-${GO_ARCH}.tar.gz" \
      | tar -xz -C /usr/local

    export PATH=/usr/local/go/bin:$PATH

    go version

    go mod download

    CGO_ENABLED=1 \
      go build \
      -trimpath \
      -buildmode=pie \
      -o /src/ollama-custom \
      .
  '

ビルドが完了しファイルの存在を確認できたらあとは停止して、置き換えるだけです。
binのファイル場所は事前にwhichで確認した場所に書き換えてください

ls -lh /[ollamaをcloneしたパス]/ollama/ollama-custom

sudo systemctl stop ollama
sudo cp /usr/bin/ollama /usr/bin/ollama.backup

sudo cp /[ollamaをcloneしたパス]/ollama/ollama-custom /usr/bin/ollama
sudo chmod 755 /usr/bin/ollama

sudo systemctl start ollama

バッチで呼び出す

no_think固定となったollamaを cloudflared で呼び出します。
自社サービス上ではこんな形でプロンプトやモデル選択を行うようにしています。
1シートで 他のモデルと比較することも可能ですが、今回はqwen3.8:27b単体で30回ほどリクエストをしてみました。


データと結果

質問は定まった答えがないものにしたかったので、よく私がしている経営課題や企業にまつわる質問をAIベースで作成し、回答をしてもらいました。
だいたい1問につき、20~30秒程度でテンポよく回答されており、nothinkであればこの環境でも許容範囲内かな~という感じでした。

回答は一般的なリプライの範囲ではありますが、逆に的外れな内容も少なく、このサイズ感のモデルでも、ちょっとしたアドバイスや整理など十分使えそうな印象を受けました。
時事や幅広い知識が絡むともちろんハルシネーションや読み間違えもありますが、その点は検索を付け加えたり、think有りもうまく活用することで、ちょっとした間違いも十分許容範囲内にとどめられると思います。出力の文字化け(画像内にも存在)などは、相変わらず起こり得る観点ですが、出力Tokenに対して0.1%未満ぐらいだと見えるので、もうあまり気にする程度でもないかもですね。

以下回答結果の一覧です。

https://docs.google.com/spreadsheets/d/1eODocOXoYHPcFWuNhPUJh6-n_TfqBpqa-n41sAxUD9s/edit?usp=sharing

まとめ

qwen3.8:27bは思った以上の速度感と精度感が手軽に得られるモデルだと思いました。

もちろんオープンクエスチョンに答えさせたり、Agentのタスクを丸っと対応させるなどはまだまだ厳しいと思います。ただ日常のちょっとしたタスクを切り出して担ってもらったり、ユースケースをしっかり落とし込めば、マシンに対して費用対のある使い方ができるのではないでしょうか。

また、こういうモデルがユースケースを広げてくれることで自社サービスへの組み込みも含め、新しい機能の展望も広がっていくので、これからも広く触っていければと思います。



お問い合わせ・資料請求

プロジェクトに関するご質問や詳細な情報が必要な場合は、お気軽にお問い合わせください。

サービス紹介資料

当社のサービスや実績について詳しく解説した資料をご覧いただけます。

資料をダウンロード

無料相談・お問い合わせ

お持ちの課題について、広くお問い合わせを受け付けています。

問い合わせをする

関連記事

Kimi K3とFable5を比較|日本語精度・コストをRoundaChatで検証
Kimi K3とFable5を比較|日本語精度・コストをRoundaChatで検証
記事を読む
LPのSEO/AEO対策&編集をAIで自動化してみた
LPのSEO/AEO対策&編集をAIで自動化してみた
記事を読む
フロンティアモデルをプロンプトのみで比較(GPT-5.5, opus-4.8, 3.5-Flash)
フロンティアモデルをプロンプトのみで比較(GPT-5.5, opus-4.8, 3.5-Flash)
記事を読む