PI DOCUMENTATION / 日本語
llama.cpp によるローカルモデル
Pi は llama.cpp ルーターサーバーをサポートしています。ルーターは複数の GGUF モデルを検出し、必要に応じてロードまたはアンロードします。
ルーターをサポートする最新の llama.cpp ビルドを使用してください。ビルド手順に従うか、お使いのプラットフォーム向けのビルド済みリリースをインストールします。
ルーターを起動する#
--model または -m を指定せずに llama-server を起動します。モデルを指定すると、ルーターモードではなく単一モデルモードで起動します。
llama-server \
--models-dir ~/models \
--no-models-autoload \
--jinja \
--host 127.0.0.1 \
--port 8080 \
-ngl 999 \
-c 32768重要なオプション:
--models-dir ~/modelsはローカルの GGUF ファイルを検出します。--no-models-autoloadは、/llamaを介した明示的なロードのみを行うようにします。--jinjaは、互換性のあるチャットテンプレートとツール呼び出しを有効にします。-ngl 999は、可能な限り多くのレイヤーを GPU にオフロードします。-c 32768は、ロードされた各モデルのコンテキストウィンドウを設定します。モデル固有のコンテキストを使用するには省略しますが、メモリが大幅に多く必要になる場合があります。
単一ファイルのモデルは、モデルディレクトリの直下に配置できます。マルチモーダルモデルと複数シャードのモデルは、それぞれ別のサブディレクトリに配置してください:
~/models/
├── llama-3.2-1b-Q4_K_M.gguf
├── gemma-3-4b-it-Q4_K_M/
│ ├── gemma-3-4b-it-Q4_K_M.gguf
│ └── mmproj-F16.gguf
└── large-model-Q4_K_M/
├── large-model-Q4_K_M-00001-of-00003.gguf
├── large-model-Q4_K_M-00002-of-00003.gguf
└── large-model-Q4_K_M-00003-of-00003.ggufファイルを手動で追加した後は、ルーターを再起動してください。モデルごとのコンテキストサイズやその他のオプションには、llama.cpp のモデルプリセットを使用します。
Pi を設定する#
Pi を起動し、プロバイダーを設定します:
/login llama.cppルーターの URL と、必要に応じて API キーを入力します。デフォルトの URL は http://127.0.0.1:8080 です。
--no-models-autoload を指定してルーターを起動した場合、/login llama.cpp は接続情報のみを保存します。/llama を実行してモデルをロードしてから、/model で現在のセッションに使用するロード済みモデルを選択します。
環境変数を使用すれば、/login を使わずに同じ値を設定できます:
export LLAMA_BASE_URL=http://127.0.0.1:8080
export LLAMA_API_KEY=optional-secret
piサーバーが API キーを使用する場合は、対応する --api-key の値を指定して llama-server を起動します。ローカルからのみアクセスできるようにするには、--host 127.0.0.1 を維持してください。
モデルを管理する#
次を実行します:
/llama- 未ロードのモデルを選択すると、そのモデルがロードされます。
- ロード済みのモデルを選択すると、そのモデルがアンロードされます。
- **モデルをダウンロード…**を選択し、Hugging Face を検索してから、リポジトリと量子化方式を選択します。正確な
owner/repository[:quant]値を指定することもできます。 - ロード中またはダウンロード中に Escape キーを押すと、キャンセルの確認が表示されます。
Hugging Face の検索では、HF_TOKEN が設定されている場合はそれを使用し、次に $HF_TOKEN_PATH、$HF_HOME/token、$XDG_CACHE_HOME/huggingface/token、~/.cache/huggingface/token の順に確認します。認証なしでも検索できますが、レート制限は低くなります。Pi は、アクセス制限付きリポジトリをダウンロードする前に警告し、そのアクセスページへのリンクを表示します。ダウンロードは llama.cpp サーバーが実行するため、選択したリポジトリへのアクセスに必要な場合は、そのプロセスにも HF_TOKEN を設定する必要があります。
ほかのモデルがロードされている場合、Pi はそれらを先にアンロードするか、ロードしたままにするかを確認します。Pi がモデルを暗黙にアンロードすることはなく、モデルファイルを削除することもありません。ルーターはほかのクライアントと共有されている場合があるため、/llama には常にルーターの現在の状態が表示されます。
ロード済みおよびスリープ中のモデルは /model に表示されます。スリープ中のモデルは、選択すると自動的に復帰します。ルーターの自動ロードが有効な場合、未ロードのプリセットモデルも表示され、選択するとロードされます。--no-models-autoload を使用している場合は、モデルを選択する前に /llama からロードしてください。
ルーターとの接続が切れると、/llama に 再試行と閉じるが表示されます。再試行すると、接続を再確立してモデルの状態を更新しますが、中断された操作は再実行しません。
分類#
チャット用として一覧表示されるすべてのモデルは、同じ ID と llama-cpp-classify API を持つ分類器モデルとしても一覧表示されます。分類器モデルは、TypeSafe の Jev モデルと同様に、JSON の状態に関する型付きの choice、bool、score の質問に回答します。モデルは codemode スクリプトから、拡張機能は ctx.modelRegistry.classify() を介してこれらを利用できます。詳細は分類器モデルを参照してください。
モデルは回答文を生成しません。各質問は、状態、リクエスト内のすべての質問、再度の状態、そして単一トークンのラベルの下に回答を並べた質問からなる、1 つのチャットプロンプトになります。ラベルには、選択肢では文字(最大 62 個)、真偽値では Yes/No、スコアでは数字(最大 10 段階)を使用します。2 回目の状態は質問を参照できる状態で読み取られ、この方法により小規模モデルを使用した JevBench で精度が向上しました。Pi は次のトークンとして各ラベルが生成される確率を読み取り、正規化します。選択肢では各オプションの確率と (n * peak - 1) / (n - 1) の信頼度を返し、スコアでは期待されるレベルを返します。
- 生のラベル確率は通常、過度に確信的です。リクエストごとの
temperatureオプションは、正規化前にラベルのロジットを除算します。1 より大きい値にすると分布が平滑化されます。回答自体は変わりません。 - 質問は順番に実行されます。最後の質問より前の内容は、リクエスト内のすべての質問で同じであるため、サーバーのプロンプトキャッシュによる評価は 1 回だけです。状態は 2 回出現するため、コンテキストには状態のサイズの 2 倍が必要です。
- 小規模モデルは、状態内に記述された指示に従う場合があります。プロンプトはモデルに状態をデータとして判定するよう指示しますが、それを保証するものではありません。
- Qwen3.5 などのハイブリッドモデルは、コンテキストチェックポイントがないと、部分的にキャッシュされたプロンプトを巻き戻せません。各質問で状態全体が再処理される場合は、
--ctx-checkpoints 32 --checkpoint-min-step 0を指定してルーターを起動してください。
トラブルシューティング#
ルーターに接続できることを確認します:
curl http://127.0.0.1:8080/health
curl http://127.0.0.1:8080/models/llamaにモデルが表示されない:--models-dirとディレクトリ構成を確認し、ルーターを再起動してください。--no-models-autoloadの使用時に/modelにモデルが表示されない: 先に/llamaでロードしてください。- ロードに失敗する、またはメモリを使いすぎる:
-cを小さくするか、別のモデルをアンロードしてください。 - サーバーがルーターモードではない:
--model、-m、-hfのいずれも指定せずに起動してください。
llama.cpp プロバイダーと /llama を削除するには、pi config の Built-in で llama.cpp を無効にするか、設定で "extensions": ["-builtin:llama.cpp"] を指定します。