実行プログラムと拡張機能

Superfluidとは?1つのローカルLLMで複数エージェントを動かす方法

エージェントが長い文書を処理している間も、短い質問を優先できます。

Superfluidは、自分のコンピューターのLLM1を複数のアプリやエージェントで共有するためのサーバーです。アプリがAPI2で質問を送り、llama.cppやMLX3などのエンジンが回答を生成します。Superfluidは処理順と同時実行数を管理するので、複数の文書を要約しながら直接質問したいときに役立ちます。

実行条件と要点
  • GGUFはllama.cpp、Apple SiliconのMLXモデルはMLXエンジンで動かします。
  • チャットに`interactive`優先度を付けると、エージェントの処理中に優先できます。
  • 最初は同時リクエスト2件・文脈4,096トークンから始め、メモリの余裕を確認して増やします。

複数のアプリで1つのモデルを共有するには

3つのエージェントに文書を1つずつ要約させているとします。その間にチャットから短い質問を送ると、先に届いた長い入力の後ろで待つことがあります。回答を作るモデルに加え、リクエストの処理を管理するサーバーが必要です。

Superfluidは複数リクエストをまとめて処理し、急ぎのチャットを優先する仕組みを提供します。同じ指示や文書の冒頭を繰り返し送る場合は、計算済みのprefix cacheも利用します。アプリごとにモデルを起動する代わりに、1つのサーバーアドレスを共有する方法です。

OpenAI・Anthropic・Ollama形式のAPIに対応しているため、既存の対応アプリから接続できます。まずOpenAI互換APIで短い質問を送り、その後でチャットとエージェントの優先度を分けます。

ノートPC画面のチャット・コード・フォルダーと1つのモデルのブロック
複数アプリの質問を1つのローカルサーバーへ集めます。

MacはMLXかGGUF、LinuxはGGUFから始める

Superfluidはモデル形式に合わせてエンジンを選びます。GGUF4はllama.cpp、Apple SiliconのMLX形式モデルはMLXで動かします。取得済みのファイルやフォルダーも指定できます。

Apple Silicon MacではMetal5とMLXを使えます。Linux x86-64ではllama.cppのCUDA6・ROCm7・Vulkan・CPU8経路が提供されています。Windows向けの導入手順はまだ用意されていないため、この記事ではMacとLinuxを扱います。

導入後はモデル重みと会話キャッシュ用のメモリを残してください。Qwen3.8-27BのQ4を試す前に、今の機器でそのモデルを動かせるか確認しましょう。読み込みから進まない場合は、Qwen3.8-27Bガイドでメモリとファイル形式を合わせてください。

手元のモデル形式に合わせて選ぶエンジン
形式エンジン開始時の選択
GGUFllama.cppMac・LinuxでGGUFファイルを指定
MLXMLXApple SiliconでMLXフォルダーを指定
.basebaseRT別のエンジンと対応バンドルを用意

Qwen3.8-27Bを起動して最初の回答を受け取る

Mac・Linux向けの手順でSuperfluidを導入し、以下をターミナルで実行してください。バージョンを表示した後、Qwen3.8-27B UD-Q4_K_Mを同時リクエスト2件・文脈4,096トークン9で起動します。初回はモデルとllama.cppを取得するため、ネット接続と保存容量が必要です。

準備ができたら、別のターミナルで状態とモデル一覧を取得します。`/health`の`status`が`ok`で、`/v1/models`にモデルがあれば質問を送れます。リクエストのモデル名には量子化10タグ`:UD-Q4_K_M`を付けません。

回答を受け取ったら、接続アプリのAPIアドレスを`http://127.0.0.1:8453/v1`に変更し、同じモデルを選びます。この例のアドレスは同じコンピューター内からだけ接続できます。APIキー欄が必須のアプリでは、キーなしのローカルサーバーに任意の仮の文字列を入力できます。

ターミナル1 — サーバー起動
superfluid --version
superfluid serve unsloth/Qwen3.8-27B-GGUF:UD-Q4_K_M --http 127.0.0.1:8453 --max-batch 2 --max-context 4096
このターミナルは起動したままにし、次のリクエストは別のターミナルから送ります。
ターミナル2 — 状態確認と質問
curl -sS http://127.0.0.1:8453/health
curl -sS http://127.0.0.1:8453/v1/models
curl -sS http://127.0.0.1:8453/v1/chat/completions \
  -H 'Content-Type: application/json' \
  -d '{"model":"unsloth/Qwen3.8-27B-GGUF","messages":[{"role":"user","content":"Explain prefix caching in two sentences."}],"max_tokens":128}'
応答の`choices`で生成した回答を読めます。
ターミナルを開いたノートPCと小型PC横のメモリのブロック
モデル重みに加え、同時に処理する会話のキャッシュ容量も残してください。

自分のチャットをエージェントより優先する

接続できたら、チャットと自動処理の優先度を分けてみましょう。標準のHTTPリクエストは`agent`として処理されます。自分の質問には`x-superfluid-qos: interactive`ヘッダーを付け、急ぎでない一括要約には`background`を指定できます。

すべての処理枠をエージェントが使っていても、優先度の高い質問が来ると低優先度の処理を一時停止してチャットを先に処理できます。その後、待っていた処理が再開します。チャットアプリがカスタムヘッダーに対応しなければ、接続設定を調べるかAPIリクエストで先に試してください。

共通の指示を毎回同じ順序で冒頭に置くと、prefix cacheを利用しやすくなります。共通指示・共通文書・個別質問の順を保ってください。繰り返し質問で速くなるか調べるには、同じ文書を再送し、最初の文字が出るまでの待ち時間を比べます。

チャットリクエストの優先度を指定
curl -sS http://127.0.0.1:8453/v1/chat/completions \
  -H 'Content-Type: application/json' \
  -H 'x-superfluid-qos: interactive' \
  -d '{"model":"unsloth/Qwen3.8-27B-GGUF","messages":[{"role":"user","content":"Reply with one short sentence."}],"max_tokens":64,"stream":true}'
急ぎでない処理は、同じヘッダーの値を`background`に変更して送れます。
ノートPCのチャット画面と優先度ごとに分けたタスクカードのトレー
直接質問した内容を先に処理し、バックグラウンド作業を待機させられます。

全体の処理量と1つの回答の速度を分けて読む

リクエストをまとめると、一定時間に完了する全体のトークン数が増えることがあります。複数の回答を同時に作るため、各回答が進む速さも比較してください。要約の一式を早く終えたいのか、自分の回答を早く受け取りたいのかで設定が変わります。

Superfluidのllama.cpp経路・同時実行数別の処理量
同時リクエスト数全体tok/s1件あたり平均tok/s
176.776.7
287.643.8
4126.531.6
8150.818.9

公開測定・2026-10-06・M1 Max 64GB・Qwen3-4B Q4_K_M・llama.cpp b11284・各リクエスト256出力トークン・temperature 0・異なる入力・3回の中央値。1件あたりの値は全体の処理量を同時リクエスト数で割った平均です。条件と全結果

この比較では同時リクエストを1件から8件に増やすと、全体は76.7から150.8 tok/sに増えました。1件が受け取る平均は76.7から18.9 tok/sに下がっています。個人用チャットは少ない同時実行数から、一括要約は全体の完了時間を比べながら増やすとよいでしょう。

メモリ不足や接続失敗のときは

モデルを読み込めなければ、`superfluid runtimes`でエンジンの状態とデバイス経路を確認します。取得済みGGUFはモデルIDの代わりにファイルパスを指定できます。取得は終わったのにメモリ不足になる場合は、同時実行数を1に下げ、文脈4,096トークンで再実行してください。

APIに接続できなければ、まず`/health`を取得します。状態取得はできるのにアプリが失敗する場合は、末尾の`/v1`とモデル一覧のIDを合わせてください。8453ポートを他のアプリが使用しているなら、`--port 8455`に変更し、接続先も同じポートに変えます。

自分のコンピューター内で使う場合は`127.0.0.1`を維持してください。他の機器と共有する前に、APIキーとHTTPS接続を用意します。入力と回答は標準で`~/.superfluid/sessions`に保存されるため、機密文書を扱う場合はフォルダーのアクセス権とバックアップ範囲も管理してください。

Superfluidは現在1.0以前の段階です。重要な自動処理では既存サーバー設定を残し、別のポートでアプリ接続・長い文書・同時リクエストの順に試してください。エージェントを初めて導入するならローカルエージェント入門から、Mac用の管理画面が必要ならoMLXも比較しましょう。

用語の注釈

  1. 大規模言語モデル — 大量のテキストデータから言語パターンを学び、文脈に沿ったテキストを処理・生成するモデルです。

    本文に戻る
  2. API — 別のコードからプログラムの機能を呼び出すための決められたインターフェースです。

    本文に戻る
  3. MLX — Appleが開発する機械学習フレームワークです。Apple siliconでは統合メモリとMetalを活用し、別途Linux向けの実行経路も提供します。対応モデルや機能はMLXを使うツールごとに異なります。

    本文に戻る
  4. GGUF — モデル情報を格納するファイル形式で、llama.cpp系のツールで広く使われます。

    本文に戻る
  5. Metal — Apple機器でグラフィックスやGPUの並列計算を実行する低水準の技術です。

    本文に戻る
  6. CUDA — NVIDIA GPUで汎用計算を行うソフトウェア基盤です。

    本文に戻る
  7. ROCm — AMD GPUでAIや高性能計算を実行するソフトウェア基盤です。対応状況はGPUだけでなく、OS・ドライバー・フレームワークの版の組み合わせで確認します。

    本文に戻る
  8. CPU — OSや一般的なプログラム命令を実行する中央処理装置です。AIでは前処理やデータ転送などの汎用処理も担います。

    本文に戻る
  9. トークン — モデルが入力や出力を分けて処理する単位です。

    本文に戻る
  10. 量子化 — モデルの重みや計算値を少ないビット数で表し、保存容量やメモリ使用量を減らす方法です。表現が粗くなるため、精度にも影響することがあります。

    本文に戻る