`pinned: true` model is freed after every request — idle-unload exclusion (#9305) ineffective on v4.7.1
メンテナーはふだん 3 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
ログに示された削除およびFree()の経路を確認するため、pkg/model/process.goから開始し、次にpinnedおよびmax_active_backendsの設定がバックエンドのクリーンアップにどう到達するかを追跡します。記載されているv4.7.1のランタイム設定と2つのリクエストで再現します。pinnedモデルのバックエンドプロセスがアイドルタイムアウトなしでリクエスト間も常駐すれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Follow-up to #9305 / #9309 (exclude models from idle unloading via pinned: true). On v4.7.1 a pinned: true model is not kept resident — its backend process is torn down after every request, so each call pays a full cold reload.
Environment
- LocalAI
v4.7.1, imagelocalai/localai:v4.7.1-gpu-nvidia-cuda-13, single NVIDIA 16 GB GPU,llama-cpp(cuda13) backend. - Model YAML:
backend: llama-cpp,pinned: true,context_size: 24576. - Runtime settings:
watchdog_enabled: false,single_backend: false,max_active_backends: 0(docs: "0 = unlimited"),memory_reclaimer_enabled: false,size_aware_eviction: false,force_eviction_when_busy: false.
Expected
Per the docs ("a pinned model is never evicted") and #9305: with no watchdog, no LRU limit, and pinned: true, the model should stay loaded across requests.
Actual
The backend is freed immediately after each response completes (not after any idle timeout):
INFO ... Predict request completed successfully
DEBUG Deleting process model="qwen3.5-9b" (pkg/model/process.go:49)
DEBUG Calling Free() to release GPU resources model="qwen3.5-9b"
INFO Backend process stopped id="qwen3.5-9b" exitCode="0"
This repeats for every single request across the log; the next request cold-loads (~10 s). Confirmed via nvidia-smi: the backend process disappears seconds after each response and reloads on the next call.
Repro
- Load a
pinned: truellama-cpp model on v4.7.1 with the runtime settings above. - Send two chat completions about a minute apart.
- Observe (via
nvidia-smi) the backend process disappear after the first completes and reload for the second.
Question
Is pinned: true expected to keep a model resident, or only to exempt it from eviction while some other path still frees it? If max_active_backends: 0 (documented as "unlimited") is implicated, the "0 = unlimited" behaviour and the #9305 exclusion don't appear to hold. Net effect: pinned currently provides no persistence benefit — every request pays a full cold model load.
- 主要言語
- Go
- スター
- 49.2k
- フォーク
- 4.5k
- 平均マージ
- 19時間 42分
- マージ済み PR(30日)
- 299
環境構築
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
mudler/LocalAI のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
mudler/LocalAI#12264 · コメント 1 件 ·
メンテナーはふだん 3 日以内に返信
-
bug unconfirmed
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 3 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
mudler/LocalAI#11995 · コメント 1 件 ·
メンテナーはふだん 3 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
mudler/LocalAI#11991 · コメント 1 件 ·
メンテナーはふだん 3 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
mudler/LocalAI#11973 · コメント 1 件 ·
メンテナーはふだん 3 日以内に返信
似ている issue
-
area/proxy kind/bug priority/backlog triage/accepted
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
lexfrei/cloudflare-tunnel-gateway-controller#840 ·
メンテナーはふだん 1 日以内に返信
-
area:chat bug sev:papercut
難易度 2/5 1〜3時間 初心者へのやさしさ 86/100
Agent-Field/CodeAF#1592 ·
メンテナーはふだん 1 日以内に返信
-
kind/bug
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 7 日以内に返信
-
bug needs triage
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
bug P2 reliability
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
afreidah/s3-orchestrator#1564 ·
メンテナーはふだん 1 日以内に返信