実行プログラムと拡張機能
Backburner:iPhoneでMacのローカルLLMのprefillを高速化
USB-Cで接続したiPhoneが、Macの長い入力の処理と文脈の保持を分担します。
Backburnerは、Qwen3.8-27Bを実行するMacにiPhoneをUSB-Cで接続する実験的なllama.cppフォークです。長い入力をより速く読み、64Kを超える文脈の一部をiPhoneのメモリに保持できます。2026年10月1日に公開された測定は、M4 Pro 24GBとiPhone 17 Pro Maxの組み合わせに限られます。この記事ではprefill1とdecode2の結果、64K以降のiPhoneの役割、セットアップ手順を分けて説明します。
BackburnerはMacとiPhoneで処理を分担するローカルLLMサーバーです
BackburnerはMacでQwen3.8-27Bを実行し、USB-Cで接続して前面に開いたiPhoneに一部の計算を任せます。長いプロンプトを読むprefillでは2台でモデル層を分担し、64K文脈を超えるとiPhoneが古い文脈のKVキャッシュ3の一部を保持してattention4計算を助けます。結果はMac上のOpenAI互換サーバーから受け取り、対応するクライアントアプリに接続できます。
Macが前半の層を計算する間に、iPhoneが後半の層を計算し、両方のGPU5を活用します。Mac側のエンジンにはDFlash2ドラフトモデルとカーネル最適化も含まれ、標準構成では一度に1件のリクエストを処理します。

長い入力を読むprefillで差が出ています
prefillは、質問・文書・ツール結果などモデルに送った入力を読み、回答の準備をする段階です。保存済みのエージェントセッションに2,000トークン6のファイルまたはツール結果を追加する測定では、既存文脈が長くなるほどMac単体よりMac+iPhone構成の処理量が増え、待ち時間が短くなりました。以下は2026年10月1日、M4 Pro 24GB、iPhone 17 Pro Max、Qwen3.8-27B IQ4_XSで記録され、各深度で2回読み込んだ結果です。
| 既存文脈 | Mac単体 | Mac + iPhone | 入力待ち時間の短縮 |
|---|---|---|---|
| 16K | 109 tok/s · 18.8秒 | 157 tok/s · 13.1秒 | 31% |
| 32K | 101 tok/s · 20.3秒 | 130 tok/s · 15.8秒 | 22% |
| 48K | 87 tok/s · 23.5秒 | 113 tok/s · 18.1秒 | 23% |
保存済みセッションに2,000トークンを追加したときのprefill速度と待ち時間です。
16K
- Mac単体
- 109 tok/s · 18.8秒
- Mac + iPhone
- 157 tok/s · 13.1秒
- 入力待ち時間の短縮
- 31%
32K
- Mac単体
- 101 tok/s · 20.3秒
- Mac + iPhone
- 130 tok/s · 15.8秒
- 入力待ち時間の短縮
- 22%
48K
- Mac単体
- 87 tok/s · 23.5秒
- Mac + iPhone
- 113 tok/s · 18.1秒
- 入力待ち時間の短縮
- 23%
既存文脈は、新しい入力を追加する前に会話に含まれていた量です。16Kでは同じ約2,000トークンの読み込みが18.8秒から13.1秒に短縮され、1回あたり約5.7秒待つ時間が減りました。コードエージェントがファイルやツール結果を繰り返し読む作業で効いてきます。およそ512トークンより短い新規入力はMacで処理します。
64Kを超えるとiPhoneのメモリが古い文脈を保持します
標準構成の64KまではMacが1~40層、iPhone 17 Pro Maxが41~64層を分担します。Macが保持する64Kを超えると、Macが64層すべてを計算し、iPhoneは古いKVページを保持して、そのページのattentionを計算します。iPhoneのGPUとNeural Engineが古い文脈の計算に参加します。
Mac単体の長文脈構成では4ビットKVを使用します。iPhoneを接続すると8ビットKVを維持しながら、より長い文脈を保持できます。公開された一連の動作試験は8ビット128Kと4ビット140Kまでです。起動時に表示される196K~229Kは、iPhoneの空きメモリから算定した容量です。
| 構成 | コンテキスト | 確認状況 |
|---|---|---|
| M4 Pro 24GB、Mac単体 | 8ビット64K | 測定済み・128Kは4ビット構成 |
| M4 Pro 24GB + iPhone 17 Pro Max | 8ビット196K~229K | 起動時の空きメモリから算定 |
| M4 Pro 24GB + iPhone 17 Pro Max | 8ビット128K | 一連の動作を試験済み |
| M4 Pro 24GB + iPhone 17 Pro Max | 4ビット140K | 一連の動作を試験済み |
KVの精度と実際に試した文脈長を合わせて比較します。
M4 Pro 24GB、Mac単体
- コンテキスト
- 8ビット64K
- 確認状況
- 測定済み・128Kは4ビット構成
M4 Pro 24GB + iPhone 17 Pro Max
- コンテキスト
- 8ビット196K~229K
- 確認状況
- 起動時の空きメモリから算定
M4 Pro 24GB + iPhone 17 Pro Max
- コンテキスト
- 8ビット128K
- 確認状況
- 一連の動作を試験済み
M4 Pro 24GB + iPhone 17 Pro Max
- コンテキスト
- 4ビット140K
- 確認状況
- 一連の動作を試験済み

64K以下の回答生成速度はほぼ同じでした
回答トークンを順番に作るdecodeでは、主にMac側のエンジン最適化が効きます。公開された27K~33Kの比較では標準llama.cppが11.3 tok/s、BackburnerフォークのMac単体が25.0 tok/s、iPhone接続が25.1 tok/sでした。同じフォーク同士では、接続前後の生成速度はほぼ同じです。入力を速く読む効果と、回答を速く作る効果を分けて考えると分かりやすくなります。
| 実行構成 | デコード |
|---|---|
| stock llama.cpp (Homebrew), Mac | 11.3 tok/s |
| Backburnerフォーク、Mac単体 | 25.0 tok/s |
| Backburnerフォーク、Mac+iPhone | 25.1 tok/s |
同じ27K~33K文脈における公開decode処理量の比較です。
stock llama.cpp (Homebrew), Mac
- デコード
- 11.3 tok/s
Backburnerフォーク、Mac単体
- デコード
- 25.0 tok/s
Backburnerフォーク、Mac+iPhone
- デコード
- 25.1 tok/s
フォークにはMacカーネルとDFlash2ドラフトモデルを使った最適化が含まれます。64Kを超えるとiPhoneも古い文脈のattentionを分担し、プロジェクトは128Kで12.6 tok/sを記録しています。この長文脈の数値には、同日に測定したMac単体の比較値がありません。
インストール前に機器とケーブルを確認します
通常のインストール手順はApple Silicon、macOS 14以降、統合メモリ24GB以上のMacを対象にしています。アプリはiPhone 15 Pro以降とMシリーズiPadに対応し、主な公開速度表はM4 Pro 24GBとiPhone 17 Pro Maxの組み合わせで測定されています。iPadの性能は未試験です。prefill高速化を試すには、付属のUSB 2ケーブルではなく、10Gb/sのデータ転送に対応したUSB-Cケーブルを用意してください。
Macにはメインモデルとドラフトモデルなど約24GBのファイルを取得します。新規インストールでは、ツールやiPhone用ファイルを含めて約28GBをダウンロードまたは作成する場合があります。インストーラーはMacのメモリ24GB以上を確認し、ホームディスクの空き容量30GBを推奨します。メインモデルは約15.5GB、ドラフトモデルは約1.3GBです。
8GBのMacでは、モデル層を2台に分ける別のsplit decodeモードもあります。プロジェクトがMacBook Neo 8GBとiPhone AirでQwen3.8-27B IQ2_XSを試した際の生成速度は約4 tok/sでした。USB 2接続と発熱条件のある別の実験なので、以下の24GB Macの手順とは分けて参考にしてください。

インストーラーを確認してからサーバーを起動します
Mac用インストーラーは最新エンジン、Qwen3.8-27B IQ4_XS、DFlash2ドラフトモデル、iPhone用のモデル層ファイルを準備し、`backburner`コマンドを登録します。インターネット上のスクリプトを直接シェルへ渡さず、ファイルとしてダウンロードして内容を確認してから実行してください。以下は公式リポジトリの現在のmainブランチからスクリプトを取得します。
iPhoneアプリは無料Apple IDを使うAltStore経由、またはXcodeでインストールできます。AltStoreの案内では、無料アカウントは7日ごとにアプリの署名を更新する必要があり、Backburnerのメモリ権限にはAltStore 2.2以降を推奨しています。アプリを開いて前面に置き、MacからiPhone側のモデルファイルを一度コピーします。`backburner`を実行すると`http://127.0.0.1:8080/v1`でサーバーが起動し、標準ではMac内からのみ接続できます。
以下のコマンドはiPhone 17 Proシリーズ向けの標準40層分割を使います。A18 ProのiPhone 16 Proで試す場合は、インストールコマンドを`TAIL_L=52 bash "$backburner_setup/install.sh"`に変更して、iPhoneが担当する層を減らしてください。インストーラーは機種別の分割を自動選択しません。
backburner_setup="$(mktemp -d)"
curl -fsSL https://raw.githubusercontent.com/StayLameBro/backburner/main/install.sh -o "$backburner_setup/install.sh"
less "$backburner_setup/install.sh"
bash "$backburner_setup/install.sh"
# Connect the phone with Backburner installed and open.
"$HOME/.local/bin/backburner" phone
"$HOME/.local/bin/backburner"最初の応答を試し、接続の問題を確認します
対応クライアントアプリのサーバーURLに`http://127.0.0.1:8080/v1`を入力します。先にターミナルから簡単なリクエストを送ると、クライアント設定とモデル応答の問題を切り分けやすくなります。このサーバーは任意のモデル名を受け付けるため、例の`backburner-local`をそのまま使えます。
サーバーのターミナルはそのまま動かし、別のターミナルから以下のリクエストを送ります。正常な起動ログには`split prefill on`、`remote KV on`、`ANE pages on`が表示されます。初回はNeural Engine用ファイルの転送とアプリの再起動に約1分かかる場合があります。`curl -i http://127.0.0.1:8080/health`でHTTP 200を確認してから、チャットを送ってください。
接続が切れたら、iPhoneでBackburnerを前面に戻し、ケーブルを確認します。64Kを超えるとiPhoneが古いKVを保持するため、ロックやアプリ切り替えで15秒応答がないとサーバーが停止します。アプリを開き直し、Mac側のサーバーも再起動してください。アクセスガイドを使うと、作業中の誤ったロックを減らせます。
iPhone 17 Pro Maxの`app budget`が約6,000MiBではなく3,000MiB前後なら、アプリのメモリ権限を確認します。リポジトリのフォルダで`scripts/phone-up.sh`を実行すると値が表示されます。公式手順はAltStore 2.2以降を案内していますが、この経路の権限維持は開発者がまだ検証中です。小さい値のままなら、Xcode経由とメモリ権限の設定も確認してください。
Macの再起動後は、`backburner`がGPUのwiredメモリ上限を再設定するため、管理者パスワードを求める場合があります。モデル用メモリを固定する設定なので、ほかのアプリ用の余裕も残してください。リポジトリの`scripts/serve.sh`を直接実行して上限エラーが出た場合だけ、以下のコマンドを参考にしてください。20,480MiBはこの記事の24GB Mac構成向けの値です。
curl http://127.0.0.1:8080/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{"model":"backburner-local","messages":[{"role":"user","content":"로컬 모델이 준비됐는지 한 문장으로 알려줘."}],"max_tokens":64}'sudo sysctl iogpu.wired_limit_mb=20480プレリリースの制限を理解し、自分の機器で試します
BackburnerはMITライセンスのプレリリースソフトウェアです。iPhoneアプリがGPUを使うには、前面で開いた状態を保つ必要があります。64K未満では接続が切れてもMacが処理を引き継げますが、それを超えるとiPhoneに保持された古いKVページをMacは持っていません。標準の同時リクエスト数は1件で、複数ユーザーの同時利用を想定した構成でもありません。
Mac側のサーバーとプロンプトキャッシュのプロキシは`127.0.0.1`だけで待ち受けます。iPhoneはUSB-Cケーブルで接続し、Wi-Fiを使う場合も先にケーブルでペアリングします。この接続保護機能を備えたアプリ0.0.3以降を使用してください。
最初の試験では、よく使う同じ文書を16K、32K、48Kで読み込ませてください。Mac単体とiPhone接続で、最初の入力処理時間、回答生成速度、アプリの接続状態を分けて記録すると、Backburnerがどの待ち時間を短縮するのか分かります。64Kを超える機能は、より長い文脈が必要な作業に限って使い、iPhoneのmemory budgetとアプリを前面に置く時間も考慮してください。
SSD7のプロンプトキャッシュは、処理済みのシステムプロンプトを再利用するときに役立ちます。iPhoneにKVを置く64K超のセッション保存にはアプリ0.0.4以降が必要です。この保存機能は、実機iPhoneではなくMacのloopback代替端末でのみ試験されています。最初は64K以内で読み込み時間と接続状態を比較してみてください。
用語の注釈
プリフィル — LLMが入力プロンプトを読み、各トークンの内部表現を計算する段階です。プロンプトが長いほど処理するトークンが増えます。
本文に戻るデコード — LLMでは入力処理後に出力トークンを生成する段階です。VAEやオーディオコーデックでは、圧縮表現や符号化データから元の形式を復元する処理を指すことがあります。
本文に戻るKVキャッシュ — 過去トークンのAttention用キー・バリューを保存し、後続トークン生成で再利用するメモリです。容量はコンテキスト長やバッチサイズで変わります。
本文に戻るAttention — 入力の各位置を比較し、現在の計算で参照する情報を選ぶ演算です。具体的な動作やコストはモデル構造によって異なります。
本文に戻るGPU — 多くの計算を並列に処理するプロセッサーです。AIモデルの実行ではモデル計算を担います。
本文に戻るトークン — モデルが入力や出力を分けて処理する単位です。
本文に戻るSSD — フラッシュメモリを使うデータ保存装置です。電源を切ってもデータが保持されます。
本文に戻る
