12GB以下のGPUでモデル切り替えの遅延をなくすllama-swap設定値
May 14, 2026
0
Computing/SoftwareComments (0)
Log in to leave a comment
No posts yet
Log in to leave a comment
No posts yet
中級GPUユーザーにとって、VRAMは常に不足するリソースです。RTX 3060や4060を使いながら複数のモデルを立ち上げていると、すぐに限界にぶつかります。4ビット量子化(Q4_K_M)を施したLlama 3.1 8Bモデルは、重みだけで5.2GBを消費します。Windowsの基本占有分1GBを差し引くと、残りのスペースは2GB程度です。ここで無理にモデルをさらに読み込むと、システムRAMを借用する「スピルオーバー」が発生します。秒間15トークン出ていた速度が1トークンまで落ち込むのを見ると、すぐにでもプロセスを終了させたくなります。
このようなボトルネックを防ぐには、config.yamlでモデルごとに退場時間であるidle_timeoutを個別に設定する必要があります。
globalTTLを300(5分)に設定してください。モデル実行コマンド(cmd)の後ろに--ctx-size 8192を付け、KVキャッシュが残りのメモリをすべて飲み込まないように制限することで、OOM(Out of Memory)を回避できます。ttl: 0で常駐させ、重いQwen 2.5 Coder 7Bはttl: 60に設定して、コーディングが終わったらすぐにVRAMを解放するようにしましょう。このように設定すれば、モデルをいちいち再起動させて無駄にしていた時間を、1日最低20分は節約できます。
Ollamaからllama.cppに乗り換えようとすると、ポートが重なったりリソースの占有権争いが起きたりします。llama-swapはこの混乱を整理する交通警察です。Go言語で書かれたこの軽量なプロキシは、新しいモデルの呼び出しが入ると既存のプロセスにSIGTERM信号を送って安全に終了させ、新しいモデルを立ち上げます。
安定的な統合のためのYAMLの書き方は明確です。
macrosセクションに実行ファイルのパスや--flash-attn、--mlockといった共通フラグをあらかじめ定義してください。設定ファイルが非常にスッキリします。models項目の下に${PORT}マクロを活用して、各モデルの実行パスを指定してください。proxyフィールドにhttp://localhost:11434を記入してパスを繋ぐだけでOKです。結果として、あなたのアプリはhttp://localhost:8080/v1という一つのアドレスだけを見ればよくなります。内部でエンジンが変わろうがモデルが変わろうが、気にする必要はなくなります。
ローカルLLMを使う真の理由は、お金を節約しながら個人情報を守ることにあります。Cursorは基本有料ですが、OpenAI Compatible設定を使えば、ローカルのllama-swapで回避できます。毎月かかる20ドル、年間で240ドルを節約できる計算です。
接続方法は簡単です。
http://localhost:8080/v1を入力します。gpt-4oという別名(Alias)を付けておけば、Cursorが自分のパートナーだと認識してすぐに動作します。nomic-embed-textに合わせ、llama-swapでttl: 0に固定してください。ノート整理をしながらコーディング画面に移っても、バックグラウンドで勝手にモデルがスワップされます。すべてのデータは自分のコンピュータ内だけで完結するため、プライバシーの心配もありません。
毎回ターミナルを開いてプロキシを起動するのは非常に面倒な作業です。AIを道具として使いこなすには、空気のように静かに常駐している必要があります。Windowsユーザーなら、NSSM(Non-Sucking Service Manager)でllama-swapをサービスとして登録するのが最もスマートです。
手順は以下の通りです。
winget install NSSMを実行してインストールし、管理者権限でnssm install LlamaSwapと入力します。llama-swap.exeのパスを、Argumentsに--config config.yaml -watch-configを入力します。これで、コンピュータを起動した瞬間にAPIエンドポイントが有効になります。YAML設定ファイルを修正して保存すれば、-watch-configオプションのおかげでサービスの再起動なしに新しい設定が即座に反映されます。
モデルが切り替わる際に対話が途切れたり落ちたりするのは、その多くがメモリ設計のミスです。推論エンジンは起動時に、コンテキストウィンドウの分だけメモリをあらかじめ確保しようとします。これを制御しないと、予期せぬエラーに遭遇することになります。
安定性を確保するための3つの仕掛けです。
cmdフィールドで--ctx-sizeを8192程度に明示してください。無制限にしておくとVRAMがパンクします。healthCheckTimeoutを300秒程度と長めに設定し、プロキシが読み込み中に接続を切断しないようにします。--flash-attnは必須です。これを使うことで、同じVRAM量でもコンテキストを20%広く使えます。8Bモデル基準で、5秒前後あればスワップは完了します。これなら作業の流れを妨げないレベルです。高性能なワークステーションがなくても、いくつかの設定値を調整するだけで、デスクの上で快適なAI環境を享受できます。