fix(xtts): --upgrade-driver holt den Treiber von NVIDIA statt aus den Backports
Das lokale LLM rechnete auf der KI-Box die ganze Zeit auf der CPU: Treiber 550 (Debian, auch trixie-backports — mehr gibt es dort nicht) kann CUDA 12.4, die llama.cpp-/llama-swap-Images brauchen 12.8/12.9. llama.cpp meldet dann "failed to initialize CUDA … forward compatibility …", findet keine Karte und laeuft still auf der CPU weiter — "ready" meldet es trotzdem. Whisper und F5-TTS (CUDA 12.2) waren nicht betroffen. --upgrade-driver installierte bisher "nvidia-driver" aus den Backports und meldete Erfolg — es kam aber derselbe 550er. Jetzt: NVIDIAs Paketquelle fuer Debian 13 (Treiber 615), Upgrade an Ort und Stelle. Vorher auf der Box simuliert (apt -s in einem Temp-Verzeichnis, nichts veraendert): ALLE installierten NVIDIA-Pakete mit hochzuziehen scheitert an Konflikten — NVIDIA hat Debians Teilpakete (nvidia-driver-bin, nvidia-alternative, …) zusammengefasst. Nur nvidia-driver, nvidia-kernel-dkms, nvidia-smi, libcuda1 (+ persistenced/modprobe, wenn installiert) anfordern → apt loest es sauber: 30 aktualisiert, 8 neu, 10 Altpakete entfernt, Container-Toolkit unberuehrt. Sicherungen: spielt erst durch (apt -s); bricht OHNE Aenderung ab und nimmt die Paketquelle wieder raus, wenn apt keinen Weg findet oder das Container-Toolkit anfassen wuerde. Zeigt den Plan und fragt nach (--yes zum Ueberspringen). Prueft danach Version und DKMS-Build. Ablauf in einem frischen Debian-13-Container getestet (Installation abgefangen). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -46,6 +46,33 @@ GPU-Test + Stack-Start.
|
||||
| `--up` | am Ende `docker compose up -d --build` (Default-Profil) |
|
||||
| `--token <TOK>` | `RVS_TOKEN` in `xtts/.env` eintragen (auch via `RVS_TOKEN=…` env) |
|
||||
| `--rvs-host <H>` | `RVS_HOST` setzen |
|
||||
| `--upgrade-driver` | NVIDIA-Treiber aus **NVIDIAs** Paketquelle für Debian 13 (siehe unten). Spielt erst durch, zeigt den Plan, fragt nach. Danach Reboot. |
|
||||
| `--yes` | bei `--upgrade-driver` nicht nachfragen |
|
||||
|
||||
## Treiber für das lokale LLM: `--upgrade-driver`
|
||||
|
||||
Debian hat höchstens Treiber **550** (CUDA 12.4). Die aktuellen llama.cpp- und
|
||||
llama-swap-Images brauchen CUDA 12.8/12.9. Mit 550 meldet llama.cpp beim Start
|
||||
`failed to initialize CUDA … forward compatibility …`, findet **keine** Karte und
|
||||
rechnet still auf der **CPU** — das Modell meldet trotzdem „bereit". Erkennbar
|
||||
daran, dass `nvidia-smi` auf der LLM-Karte kaum Speicher belegt zeigt.
|
||||
|
||||
```bash
|
||||
cd ARIA-AGENT/xtts
|
||||
sudo ./bootstrap.sh --upgrade-driver
|
||||
sudo reboot
|
||||
nvidia-smi # zeigt den neuen Treiber und eine CUDA-Version >= 12.9
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
Das Script trägt NVIDIAs Paketquelle ein und aktualisiert Treiber, Kernelmodul,
|
||||
`nvidia-smi` und `libcuda1` an Ort und Stelle (gleiche Paketnamen, neuere
|
||||
Version). Alte Debian-Teilpakete, die in den neuen aufgegangen sind, werden
|
||||
entfernt. Das **NVIDIA-Container-Toolkit bleibt unberührt** — würde apt es
|
||||
anfassen wollen, bricht das Script ab, ohne etwas zu ändern. Ebenso, wenn apt
|
||||
keinen sauberen Weg findet; die Paketquelle wird dann wieder entfernt.
|
||||
Whisper und F5-TTS laufen mit dem neuen Treiber weiter (neuere Treiber können
|
||||
ältere CUDA-Versionen).
|
||||
|
||||
## Wichtig
|
||||
|
||||
|
||||
+84
-31
@@ -11,8 +11,13 @@
|
||||
#
|
||||
# Optionen:
|
||||
# --up am Ende den xtts-Stack starten (Default-Profil, OHNE voxtral)
|
||||
# --upgrade-driver NVIDIA-Treiber aus trixie-backports (modernes CUDA fuer Voxtral).
|
||||
# Danach REBOOT noetig. Default-Bootstrap laesst 550 unangetastet.
|
||||
# --upgrade-driver NVIDIA-Treiber aus NVIDIAs eigener Paketquelle fuer Debian 13
|
||||
# (Debian selbst hat max. 550 = CUDA 12.4 — zu alt fuer die
|
||||
# aktuellen llama.cpp/llama-swap-Images, die CUDA 12.8/12.9
|
||||
# brauchen; ohne Upgrade rechnet das LLM still auf der CPU).
|
||||
# Spielt erst durch, zeigt den Plan, fragt nach. Danach REBOOT.
|
||||
# Default-Bootstrap laesst den Treiber unangetastet.
|
||||
# --yes bei --upgrade-driver nicht nachfragen
|
||||
# --token <TOK> RVS_TOKEN in xtts/.env eintragen (alternativ: env RVS_TOKEN=...)
|
||||
# --rvs-host <H> RVS_HOST setzen (Default aus .env.example)
|
||||
#
|
||||
@@ -24,12 +29,14 @@ set -euo pipefail
|
||||
# ── CLI ──
|
||||
DO_UP=0
|
||||
DO_UPGRADE_DRIVER=0
|
||||
ASSUME_YES=0
|
||||
RVS_TOKEN_ARG="${RVS_TOKEN:-}"
|
||||
RVS_HOST_ARG="${RVS_HOST:-}"
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--up) DO_UP=1; shift ;;
|
||||
--upgrade-driver) DO_UPGRADE_DRIVER=1; shift ;;
|
||||
--yes|-y) ASSUME_YES=1; shift ;;
|
||||
--token) RVS_TOKEN_ARG="${2:-}"; shift 2 ;;
|
||||
--rvs-host) RVS_HOST_ARG="${2:-}"; shift 2 ;;
|
||||
-h|--help) grep '^#' "$0" | sed 's/^# \{0,1\}//'; exit 0 ;;
|
||||
@@ -94,42 +101,88 @@ fi
|
||||
[[ $ENABLED_ANY -eq 0 ]] && ok "non-free schon aktiv"
|
||||
apt-get update -qq # immer neu einlesen, damit der Kandidat sicher da ist
|
||||
|
||||
# ── 2b. (opt-in) Treiber-Upgrade via trixie-backports — fuer Voxtral/modernes CUDA ──
|
||||
# Der Trixie-Standardtreiber (550, CUDA 12.4) ist zu alt fuer den modernen Stack
|
||||
# (torch 2.13, vLLM). Backports bringt einen neueren, apt-verwalteten Treiber.
|
||||
# ── 2b. (opt-in) Treiber-Upgrade ueber NVIDIAs Paketquelle fuer Debian 13 ──
|
||||
# Debian (auch trixie-backports) hat hoechstens 550 = CUDA 12.4. Die aktuellen
|
||||
# llama.cpp-/llama-swap-Images brauchen CUDA 12.8/12.9 → mit 550 meldet
|
||||
# llama.cpp "failed to initialize CUDA … forward compatibility …", findet keine
|
||||
# Karte und rechnet STILL auf der CPU ("ready" meldet es trotzdem).
|
||||
# NVIDIAs Quelle hat die Pakete unter denselben Namen, nur neuer — apt
|
||||
# aktualisiert an Ort und Stelle. Alte Debian-Teilpakete (nvidia-driver-bin,
|
||||
# nvidia-alternative, …) sind in den neuen aufgegangen und werden entfernt.
|
||||
# Das Container-Toolkit bleibt unberuehrt — ohne es saehe kein Container die GPU,
|
||||
# darum bricht das Script ab, falls apt es anfassen wollte.
|
||||
# NUR mit --upgrade-driver, damit ein laufendes Setup nicht ungewollt angefasst wird.
|
||||
NV_REPO="https://developer.download.nvidia.com/compute/cuda/repos/debian13/x86_64"
|
||||
MIN_DRIVER_MAJOR=575 # CUDA 12.9 braucht mindestens Treiber 575
|
||||
if [[ "$DO_UPGRADE_DRIVER" -eq 1 ]]; then
|
||||
step "NVIDIA-Treiber-Upgrade (trixie-backports)"
|
||||
BP_FILE="/etc/apt/sources.list.d/backports.sources"
|
||||
if ! grep -rqs "trixie-backports" /etc/apt/sources.list /etc/apt/sources.list.d/ 2>/dev/null; then
|
||||
cat > "$BP_FILE" <<'EOF'
|
||||
Types: deb
|
||||
URIs: http://deb.debian.org/debian
|
||||
Suites: trixie-backports
|
||||
Components: main contrib non-free non-free-firmware
|
||||
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
|
||||
EOF
|
||||
ok "trixie-backports hinzugefuegt"
|
||||
step "NVIDIA-Treiber-Upgrade (NVIDIAs Paketquelle fuer Debian 13)"
|
||||
CUR="$(nvidia-smi --query-gpu=driver_version --format=csv,noheader 2>/dev/null | head -1 || true)"
|
||||
if [[ -z "$CUR" ]]; then CUR="$(dpkg-query -W -f='${Version}' nvidia-driver 2>/dev/null || true)"; fi
|
||||
CUR_MAJOR="${CUR%%.*}"
|
||||
if [[ "$CUR_MAJOR" =~ ^[0-9]+$ && "$CUR_MAJOR" -ge "$MIN_DRIVER_MAJOR" ]]; then
|
||||
ok "Treiber ${CUR} ist neu genug (>= ${MIN_DRIVER_MAJOR}) — nichts zu tun"
|
||||
else
|
||||
ok "trixie-backports bereits aktiv"
|
||||
fi
|
||||
apt-get update
|
||||
apt-get install -y linux-headers-amd64 || true
|
||||
apt-get install -y "linux-headers-$(uname -r)" || true
|
||||
if apt-get install -y -t trixie-backports nvidia-driver; then
|
||||
ok "aktuell: ${CUR:-kein Treiber} — Ziel: >= ${MIN_DRIVER_MAJOR}"
|
||||
KEYRING_NEW=0
|
||||
if ! dpkg -s cuda-keyring >/dev/null 2>&1; then
|
||||
curl -fsSL "$NV_REPO/cuda-keyring_1.1-1_all.deb" -o /tmp/cuda-keyring.deb \
|
||||
|| die "NVIDIA-Paketquelle nicht erreichbar ($NV_REPO)"
|
||||
dpkg -i /tmp/cuda-keyring.deb >/dev/null && KEYRING_NEW=1
|
||||
ok "NVIDIA-Paketquelle eingetragen"
|
||||
fi
|
||||
undo_keyring() { [[ "$KEYRING_NEW" -eq 1 ]] && dpkg -r cuda-keyring >/dev/null 2>&1 && apt-get update -qq || true; }
|
||||
apt-get update -qq
|
||||
apt-get install -y -qq linux-headers-amd64 >/dev/null 2>&1 || true
|
||||
apt-get install -y -qq "linux-headers-$(uname -r)" >/dev/null 2>&1 || true
|
||||
|
||||
NV_PKGS="nvidia-driver nvidia-kernel-dkms nvidia-smi libcuda1"
|
||||
for p in nvidia-persistenced nvidia-modprobe; do
|
||||
if dpkg -s "$p" >/dev/null 2>&1; then NV_PKGS="$NV_PKGS $p"; fi
|
||||
done
|
||||
|
||||
# Erst durchspielen — aendert nichts.
|
||||
if ! SIM="$(apt-get -s install -y $NV_PKGS 2>&1)"; then
|
||||
echo "$SIM" | grep -E "^E:|Kollidiert|Hängt ab|Depends|Conflicts" | head -15 || true
|
||||
undo_keyring
|
||||
die "apt findet keinen sauberen Weg — NICHTS geaendert (Quelle wieder entfernt)."
|
||||
fi
|
||||
if echo "$SIM" | grep -qE '^(Remv|Inst) (nvidia-container|libnvidia-container)'; then
|
||||
undo_keyring
|
||||
die "Das Upgrade wuerde das NVIDIA-Container-Toolkit anfassen — abgebrochen, NICHTS geaendert."
|
||||
fi
|
||||
NEWV="$(echo "$SIM" | sed -nE 's/^Inst nvidia-driver (\[[^]]*\] )?\(([^ ]+).*/\2/p' | head -1 || true)"
|
||||
echo
|
||||
echo -e " Plan: Treiber ${CUR:-?} → ${c_g}${NEWV:-?}${c_0}"
|
||||
echo "$SIM" | grep -E "^[0-9]+ (aktualisiert|upgraded)" | head -1 | sed 's/^/ /' || true
|
||||
REMV="$(echo "$SIM" | sed -nE 's/^Remv ([^ ]+).*/\1/p' | paste -sd' ' || true)"
|
||||
if [[ -n "$REMV" ]]; then echo " entfernt (in den neuen Paketen aufgegangen): $REMV"; fi
|
||||
echo " Container-Toolkit: bleibt unberuehrt"
|
||||
echo " Danach ist ein REBOOT noetig (neues Kernelmodul)."
|
||||
if [[ "$ASSUME_YES" -ne 1 && -t 0 ]]; then
|
||||
read -r -p " Jetzt ausfuehren? [j/N] " ans
|
||||
if [[ ! "$ans" =~ ^[jJyY] ]]; then
|
||||
undo_keyring
|
||||
die "Abgebrochen — NICHTS geaendert."
|
||||
fi
|
||||
fi
|
||||
|
||||
apt-get install -y $NV_PKGS
|
||||
dkms autoinstall >/dev/null 2>&1 || true
|
||||
NEWV="$(dpkg-query -W -f='${Version}' nvidia-driver 2>/dev/null || echo '?')"
|
||||
ok "nvidia-driver aus backports installiert: ${NEWV}"
|
||||
GOT="$(dpkg-query -W -f='${Version}' nvidia-driver 2>/dev/null || echo '?')"
|
||||
[[ "${GOT%%.*}" =~ ^[0-9]+$ && "${GOT%%.*}" -ge "$MIN_DRIVER_MAJOR" ]] \
|
||||
|| die "Installiert ist ${GOT} — erwartet >= ${MIN_DRIVER_MAJOR}. Bitte Ausgabe oben pruefen."
|
||||
if dkms status 2>/dev/null | grep -q "$(uname -r).*installed"; then
|
||||
ok "Kernelmodul fuer $(uname -r) gebaut"
|
||||
else
|
||||
warn "Kernelmodul fuer $(uname -r) nicht als gebaut gemeldet — nach dem Reboot 'nvidia-smi' pruefen"
|
||||
fi
|
||||
ok "nvidia-driver ${GOT} installiert"
|
||||
echo
|
||||
echo -e "${c_y}==> REBOOT noetig, damit der neue Treiber laedt:${c_0}"
|
||||
echo -e "${c_y} sudo reboot && danach: cd xtts && sudo ./bootstrap.sh --up --token <TOKEN>${c_0}"
|
||||
echo -e "${c_y} (nvidia-smi zeigt dann die neue Version + CUDA-Level)${c_0}"
|
||||
echo -e "${c_y} sudo reboot${c_0}"
|
||||
echo -e "${c_y} danach: nvidia-smi (zeigt ${GOT%%-*} und eine CUDA-Version >= 12.9)${c_0}"
|
||||
echo -e "${c_y} und: cd xtts && docker compose up -d${c_0}"
|
||||
exit 0
|
||||
else
|
||||
warn "backports-Install fehlgeschlagen — 550er bleibt aktiv."
|
||||
warn "Alternative fuer den neuesten Treiber: NVIDIAs CUDA-Repo fuer debian13"
|
||||
warn " (developer.download.nvidia.com/compute/cuda/repos/debian13/x86_64) → Paket 'cuda-drivers'."
|
||||
die "Treiber-Upgrade nicht moeglich — siehe oben."
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user