mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-10-17 00:01:14 +02:00
LocalAI: pin the CPU backends when the container has no GPU runtime (#17909)
LocalAI resolves meta backends from the GPU vendor it reads out of sysfs, which is the host's card even with no driver installed in the container, so llama-cpp became cuda12-llama-cpp and never started (#17908). Force the default capability unless a CUDA, ROCm or Level Zero runtime is present; update adds the pin to existing installs.
This commit is contained in:
committed by
GitHub
parent
82a6154ea9
commit
6234161462
@@ -37,6 +37,15 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
# Older installs have no CPU pin; on a host with a GPU but no driver in the
|
||||
# container every model then ends in "backend not found".
|
||||
if ! grep -q '^LOCALAI_FORCE_META_BACKEND_CAPABILITY=' /opt/localai.env 2>/dev/null &&
|
||||
! ldconfig -p 2>/dev/null | grep -qE 'libcuda[.]so|libamdhip64[.]so|libze_intel_gpu[.]so|libze_loader[.]so'; then
|
||||
echo "LOCALAI_FORCE_META_BACKEND_CAPABILITY=default" >>/opt/localai.env
|
||||
systemctl restart localai
|
||||
msg_ok "Pinned LocalAI to the CPU backends (no GPU runtime in the container)"
|
||||
fi
|
||||
|
||||
if check_for_gh_release "localai" "mudler/LocalAI"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop localai
|
||||
|
||||
@@ -39,6 +39,12 @@ LOCALAI_MODELS_PATH=/opt/localai_data/models
|
||||
LOCALAI_BACKENDS_PATH=/opt/localai_data/backends
|
||||
LOCALAI_LOG_LEVEL=info
|
||||
EOF
|
||||
# LocalAI picks the backend variant from the GPU it sees in sysfs, which is the
|
||||
# host's card even when no driver was installed in here, and a CUDA/ROCm/SYCL
|
||||
# backend then never starts. Pin the CPU variants unless a runtime is present.
|
||||
if ! ldconfig -p 2>/dev/null | grep -qE 'libcuda[.]so|libamdhip64[.]so|libze_intel_gpu[.]so|libze_loader[.]so'; then
|
||||
echo "LOCALAI_FORCE_META_BACKEND_CAPABILITY=default" >>/opt/localai.env
|
||||
fi
|
||||
# LocalAI refuses to start on a wildcard bind with nothing to identify callers,
|
||||
# and binding the wildcard is what makes the container reachable at all.
|
||||
if [[ "$var_auth" == "yes" ]]; then
|
||||
|
||||
Reference in New Issue
Block a user