install_ollama_deb_fix.sh hinzugefügt
This commit is contained in:
80
install_ollama_deb_fix.sh
Normal file
80
install_ollama_deb_fix.sh
Normal file
@@ -0,0 +1,80 @@
|
||||
#!/usr/bin/env bash
|
||||
# Repariert/aktiviert AMD-GPU-Nutzung in Ollama auf Debian 13 über Vulkan (Mesa/RADV).
|
||||
# Beste Wahl für viele Radeon-Karten, wenn ROCm auf Debian auf CPU zurückfällt.
|
||||
set -Eeuo pipefail
|
||||
|
||||
log() { printf '\n\033[1;32m==> %s\033[0m\n' "$*"; }
|
||||
warn() { printf '\n\033[1;33mWARNUNG: %s\033[0m\n' "$*" >&2; }
|
||||
die() { printf '\n\033[1;31mFEHLER: %s\033[0m\n' "$*" >&2; exit 1; }
|
||||
|
||||
[[ $EUID -eq 0 ]] || die "Bitte mit sudo ausführen."
|
||||
[[ -r /etc/os-release ]] || die "/etc/os-release fehlt."
|
||||
# shellcheck disable=SC1091
|
||||
source /etc/os-release
|
||||
[[ "${ID:-}" == "debian" && "${VERSION_ID:-}" == "13" ]] || \
|
||||
warn "Erwartet wurde Debian 13; erkannt: ${PRETTY_NAME:-unbekannt}"
|
||||
|
||||
OLLAMA_BIN="$(command -v ollama || true)"
|
||||
[[ -n "$OLLAMA_BIN" ]] || die "Ollama wurde nicht gefunden."
|
||||
id ollama >/dev/null 2>&1 || die "Der Systembenutzer 'ollama' fehlt."
|
||||
|
||||
log "AMD-GPU und Kernel-Treiber anzeigen"
|
||||
lspci -nnk | grep -EA4 -i 'VGA|3D|Display' || true
|
||||
modprobe amdgpu || true
|
||||
|
||||
log "Vulkan-/Mesa-Pakete installieren"
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
apt-get update
|
||||
apt-get install -y --no-install-recommends \
|
||||
mesa-vulkan-drivers vulkan-tools libvulkan1 libcap2-bin pciutils
|
||||
|
||||
if ! dpkg -s firmware-amd-graphics >/dev/null 2>&1; then
|
||||
if ! apt-get install -y --no-install-recommends firmware-amd-graphics; then
|
||||
warn "firmware-amd-graphics konnte nicht installiert werden. Prüfe, ob 'non-free-firmware' in den APT-Quellen aktiviert ist."
|
||||
fi
|
||||
fi
|
||||
|
||||
log "Ollama Zugriff auf AMD-Geräte geben"
|
||||
for group in render video; do
|
||||
getent group "$group" >/dev/null 2>&1 && usermod -aG "$group" ollama
|
||||
if [[ -n "${SUDO_USER:-}" && "${SUDO_USER}" != "root" ]] && id "$SUDO_USER" >/dev/null 2>&1; then
|
||||
getent group "$group" >/dev/null 2>&1 && usermod -aG "$group" "$SUDO_USER"
|
||||
fi
|
||||
done
|
||||
|
||||
# Ollama empfiehlt dies für eine zuverlässigere VRAM-Erkennung mit Vulkan.
|
||||
setcap cap_perfmon+ep "$OLLAMA_BIN" || warn "cap_perfmon konnte nicht gesetzt werden. Vulkan kann trotzdem funktionieren."
|
||||
|
||||
log "Vulkan-Backend für den systemd-Dienst aktivieren"
|
||||
install -d -m 0755 /etc/systemd/system/ollama.service.d
|
||||
cat > /etc/systemd/system/ollama.service.d/30-amd-vulkan.conf <<'CONF'
|
||||
[Service]
|
||||
Environment="OLLAMA_VULKAN=1"
|
||||
Environment="OLLAMA_DEBUG=1"
|
||||
CONF
|
||||
chmod 0644 /etc/systemd/system/ollama.service.d/30-amd-vulkan.conf
|
||||
|
||||
systemctl daemon-reload
|
||||
systemctl restart ollama.service
|
||||
sleep 3
|
||||
|
||||
log "Vulkan-Erkennung als Benutzer ollama"
|
||||
sudo -u ollama vulkaninfo --summary 2>&1 | \
|
||||
grep -E -i 'GPU|deviceName|deviceType|driverName|driverInfo|apiVersion' | head -n 80 || true
|
||||
|
||||
log "Geräte und Berechtigungen"
|
||||
ls -l /dev/kfd /dev/dri/renderD* 2>/dev/null || true
|
||||
id ollama
|
||||
|
||||
log "Ollama-Umgebung"
|
||||
systemctl show ollama.service -p Environment --no-pager
|
||||
|
||||
log "Ollama-GPU-Erkennung im Journal"
|
||||
journalctl -u ollama.service -b --no-pager -n 250 | \
|
||||
grep -E -i 'vulkan|rocm|gpu|amdgpu|device|offload|inference compute|no compatible|discovery|error|warn' | tail -n 100 || true
|
||||
|
||||
printf '\nFertig. Starte nun ein Modell und prüfe parallel:\n'
|
||||
printf ' ollama run <DEIN-MODELL>\n'
|
||||
printf ' watch -n 1 ollama ps\n\n'
|
||||
printf 'In der Spalte PROCESSOR sollte 100%% GPU oder ein CPU/GPU-Split stehen.\n'
|
||||
printf 'Bei mehreren GPUs steht der verwendbare Vulkan-Index im Journal; dann kann GGML_VK_VISIBLE_DEVICES gesetzt werden.\n'
|
||||
Reference in New Issue
Block a user