applyPerModelConfigToRuntime runs synchronously on model selection, which can happen before any GPU hook has fetched /api/system. On a cold cache reconcilePersistedGpuIds can't tell whether the saved ids belong to the current llama.cpp backend's index space (physical CUDA/ROCm ids vs ggml Vulkan ordinals), so it passes them through. That value then launders into the store and the later load path reconciles it as a live pick (fromPersisted false), which never clears it -- a saved physical [1] gets sent as Vulkan ordinal 1 and pins the wrong card. When the pick is applied cold, warm the cache and re-reconcile with fromPersisted, overwriting only if the user has not replaced the pick since. |
||
|---|---|---|
| .. | ||
| backend | ||
| frontend | ||
| src-tauri | ||
| __init__.py | ||
| install_llama_prebuilt.py | ||
| install_node_prebuilt.py | ||
| install_python_stack.py | ||
| install_whisper_prebuilt.py | ||
| LICENSE.AGPL-3.0 | ||
| MCP.md | ||
| node_prebuilt_pins.json | ||
| package-lock.json | ||
| package.json | ||
| prebuilt_core.py | ||
| setup.bat | ||
| setup.ps1 | ||
| setup.sh | ||
| Unsloth_Studio_Colab.ipynb | ||