AI・機械学習
Show HN: Reame – 実行するほど速くなるCPU推論サーバー
Show HN: Reame – a CPU inference server that gets faster as it runs (github.com)
要約
Reameは、llama.cppをベースにした軽量でテスト済みのLLM推論サーバーで、既存のCPUハードウェア(共有vCPU、無料ティア、2コアARMボックスなど)での利用を想定しています。特に、コンテキスト内の情報に基づいて回答を生成するような、狭く反復的なAIワークロードに最適化されており、実行するほどキャッシュや過去の生成結果を活用して高速化します。
全文翻訳
安価なCPUハードウェアをファーストクラス市民として扱い、フォールバックとしてではなく扱うように設計された、llama.cpp上に構築された軽量で完全にテストされたLLM推論サーバー。共有vCPU、無料ティア、2コアARMボックスなど、すでに持っているハードウェア向けです。
Reameは最初の推論サーバーではありません。CPU上で、同じものを二度計算しないというシンプルなテーゼを持っています。
Reameは何のためにあるのか
Reameは、すでに支払っているハードウェア上で、独自のデータに対して、狭く反復的なAIワークロードのために構築されています。これは、回答がモデルの一般的な知識ではなく、提供するコンテキスト内に存在するケースです。
これはまさに、小規模モデルが最先端モデルに匹敵する場所であり(無料の2コアARMボックスで長文コンテキスト抽出で100%の精度を測定しました)、Reameのメモリがリクエスト#100をリクエスト#1のわずかなコストにする場所です。
ユースケース
適合する理由
推奨モデル
ドキュメント抽出と分類(RAG、請求書、チケット、スクレイピング)
回答はコンテキスト内に存在します。プロンプトはプレフィックスを共有します → ディスクキャッシュが役立ちます
Qwen2.5 1.5B–7B
バッチパイプライン(夜間に10k製品をタグ付け、メタディスクリプション、メールトリアージ)
性質上反復的です → Palimpsestがドラフトを作成します。トークンあたり€0、レート制限なし
Qwen2.5 1.5B–3B
薄利多売SaaS内のAI機能
従量課金APIの代わりに€5 VPSを使用すると、ユニットエコノミクスが維持されます
Qwen2.5 1.5B–7B
プライバシー重視の作業(法律、医療、公共部門)
データはサーバーから離れません — 完全な主権
Qwen2.5 7B
プライベートコード補完(Continue.dev + OpenAI互換API)
行レベルの補完は狭いタスクです。コードはラップトップから離れません
Qwen2.5-Coder 1.5B
Reameは何のためにあるのではないか — 信頼はここで構築されるため、率直に言います。
汎用ChatGPTの代替(最先端の推論と広範な知識には最先端のパラメータ数が必要)、エージェント型コーディングアシスタント、または大規模なクリエイティブな長文作成。
タスクに100Bクラスの脳が必要な場合は、それを購入してください。プライベートに、永続的に、ゼロマージナルコストでドキュメントを処理する必要がある場合は、あなたが所有できる領域です。
🗂️ 永続的な共有プレフィックスKVキャッシュ — プロンプトのプレフィックスはディスクにスナップショットされ(zstd、チェックサム付き、LRU予算付き)、異なるプロンプト、再起動、プロセス間で再利用されます。システムプロンプトは、最初のユーザーによって一度だけ支払われます。
📜 Palimpsest:サーバーは生成したものを記憶します — すべての完了した生成はオンディスクn-gramアーカイブにフィードされ、将来のリクエストはゼロコストでそこからドラフトされます。ドメインワークロードは繰り返されます — それらに支払いを行わせましょう。
🎭 Il Suggeritore:文法をドラフトソースとして — 制約付きデコーディングは構造を使用してトークンを禁止します。Reameはそれを反転させ、構造を使用してトークンを提案します。リストの番号付け、箇条書き、フォーマットトークンは、誰も生成したことのないコンテンツに対して無料で推測されます。
🔮 自己調整型推測デコーディング — 小さなドラフトモデルまたはゼロコストのn-gramルックアップがトークンを提案します。ターゲットはそれらを1つのバッチパスで検証します。Reameは、推測がハードウェアで役立つかどうかを測定し、役立たない場合は自動的にオフにします。
🏛️ The Conclave:コンセンサスを品質ノブとして — --best-of N は、同じプロンプトに対してN個の候補回答を1つのインターリーブされたバッチで生成します(1つのプリフィル、KVコピーを介して他のものにクローン。すべての重み読み取りが共有されます)。最終結果で過半数によって勝者を選出します。絶対過半数が合意した瞬間、遅延しているものは停止します。正直に測定:実行中のモデルからクイズごとに約1つの追加の正解を引き出します。モデルのサイズを2倍にするような推論能力は向上しません(コンセンサスは分散を修正しますが、バイアスは修正しません)。
👥 インターリーブ型マルチユーザーサービング — N個の同時生成が単一のマルチシーケンスバッチ内で一緒に進行し、モデルの重みのすべての読み取りを共有します(メモリバウンドCPUデコーディングで支配的なコスト)。
🌐 OpenAI互換REST API — /v1/completions, /v1/chat/completions, SSEストリーミング, セッション, ベアラー認証, メトリクス。任意のOpenAIクライアントをそれにポイントしてください。
⚡ ゼロコンフィグCLI — reame run qwen2.5-1.5b はモデルを一度ダウンロードし、ホスト用にスレッド/KV/キャッシュを自動設定し、チャット(または --serve)に入ります。設定ファイルは、必要になるまで不要です。
🧪 210個の分離されたテストケース — 各レイヤーはモック可能で、モデルなしでテストされます。マルチシーケンス、推測、KVクローンパスの正確性は、統合テストで実際のモデルに対してピン留めされます。
測定されたもの、約束されたものではない
以下のすべての数値は、出荷されたバイナリが指定されたハードウェアで生成したものです。設計を形成した否定的な結果も含まれます。
ハードウェア
モデル
構成
結果
Oracle Cloud無料ティア(2× ARM、12 GB、€0/月)
Qwen2.5-7B
Q4_K_M 通常、KV q8_0
3.3 tok/s
Oracle Cloud無料ティア
TriLM 3.9B
三項 TQ2_0
1.1 GB 総RAM
約10 tok/s
Apple M3 Pro(6スレッド)
Qwen2.5-1.5B
Q4_K_M 通常
52 tok/s
共有Contabo VPS(18個の過剰割り当てvCPU)
1.5B + 0.5B ドラフト推測、87%の受け入れ
3.2倍の速度向上
共有Contabo VPS
TinyLlama 1.1B
ウォームディスクキャッシュ vs コールド
4.8倍のエンドツーエンド
Apple M3 Pro
Qwen2.5-1.5B
書き換えタスクでのプロンプトルックアップ
1.44倍
Apple M3 Pro
TinyLlama、3つの同時ユーザー
インターリーブ vs シリアル
1.6倍
Apple M3 Pro
Qwen2.5-1.5B、繰り返しリクエストアーカイブ推測(Palimpsest)
2.3倍(22→51 tok/s)
Apple M3 Pro
Qwen2.5-1.5B、新しいリスト生成フォームドラフト(Suggeritore)
2.1倍(4.4秒→2.1秒)
Apple M3 Pro
Qwen2.5-1.5B ×5候補
Conclave:共有プリフィル + 早期コンセンサス + 高速核
8質問クイズ
97秒 → 約50秒
Apple M3 Pro
Qwen2.5-1.5B --best-of 5 vs シングル
3つの算術クイズ、厳密な採点
+0.5〜+2正解、約2.5倍の壁(5倍ではない)
Oracle Cloud無料ティア
OLMoE 7B-A1B(MoE) vs 密な7B
同じ8針長文コンテキストテスト
両方100%精度 · 17.8 vs 3.3 tok/s(5.4倍)
重要な2つの否定的な結果。過剰に割り当てられた共有vCPUでは、ドラフトモデルはターゲットと同じくらい遅いため、推測は逆効果です。Reameはこれを検出し、実行時に無効にします。そしてConclaveは、ハード推論では2倍のサイズのモデルとのギャップを埋めません。多数決はランダムなミスを修正しますが、体系的な誤解は修正しません。1.5B ×5は1.5Bと3Bの間にとどまり、3Bを超えることはありませんでした。勝利のみを示すベンチマークは広告です。これらはエンジニアリングです。
仕組み
共有プレフィックスディスクキャッシュ。プロンプトは固定トークンブロックに分割されます。チェーンハッシュが各ブロック境界でのKVスナップショットをキー付けします。プレフィックスを共有する異なるプロンプトは、最も長いキャッシュされた境界を復元し、自身のテールのみをデコードします。GPU常駐プレフィックスキャッシュとは異なり、スナップショットはNVMe上に存在します。再起動後も保持されます。
自己調整型推測。古典的なLeviathan/Chenの受け入れ(拒否されたトークンは残差分布から再サンプリングされるため、出力分布はターゲットと正確に一致します)、CPU初の2つのひねりがあります。ドラフトソースは、プロンプト自体からマイニングされた無料のn-gramルックアップにすることができます。これは抽出および書き換えワークロードに理想的です。フィードバックコントローラーはドラフト長を調整し、測定された受け入れ率またはドラフトエコノミクスがマイナスになった場合に推測をオフにします。
Conclave。--best-of N は、インターリーブスケジューラに同じプロンプトに対するN個の試行を送信します。試行0は未変更のアンカーです(貪欲法は貪欲法のまま)。エクスプローラーはシードを変更し、熱を上げます。スケジューラは、同一のプロンプトを検出し、プロンプトKVをクローンします(ドナーのキャッシュをコピーし、最後のプロンプトトークンのみをデコードします。argmax検証は完全なプリフィルと同等です)。選挙は、各候補の最終数値に対する正確な過半数投票であり、散文の場合はJaccardテキストメドイドフォールバックがあります。過半数が存在した瞬間、残りの候補は生成中に停止され、CLIはCONCLAVE consensus=k/N を報告するため、呼び出し元はコンクレーブが分割された場合にのみエスカレートできます。品質ノブとして使用してください。ハードウェアで利用可能なモデルからより高い精度を得られます。これは、より大きなモデルのRAMではなく、アイドル状態のインターリーブ計算で支払われます。
使い方
reame list # モデルカタログ + ディスク上のもの
reame run qwen2.5-1.5b # 一度ダウンロード、自動設定、チャット
reame run qwen2.5-1.5b "Explain mmap" # ワンショット回答
reame run qwen2.5-1.5b --serve # :8080 上のOpenAI互換API
reame run qwen2.5-1.5b "12*13-50?" --best-of 5 # Conclave
run はカタログ名(または任意のローカルGGUFパス)を解決し、~/.reame/model にダウンロードします。