Zweiter Versuch
Beim letzten Versuch ist es an den fehlenden cuDNN
Paketen von Nvidia gescheitert. Nach etwas Unterbrechung habe ich mir die Doku, hier in der von mir installierten pip Version. Dort ist mir der Hinweis aufgefallen, dass man mit der folgenden Anleitung das installiert bekommt:
GPU execution requires the NVIDIA libraries cuBLAS 11.x and cuDNN 8.x to be installed on the system. Please refer to the [CTranslate2 documentation](https://opennmt.net/CTranslate2/installation.html).
Zurückrollen
Das Zurückkehren zu einem früheren Zustand geht recht einfach:
Ich habe noch einmal einen Versuch gestartet. Dieses Mal mit Hilfe dieser Anleitung auf Github. Es haben nämlich noch ein paar Einstellungen auf dem Proxmox Host gefehlt, damit alles nach einem Neustart weiterhin funktioniert (insbesondere das Blacklisting und die udev Regeln, siehe Anleitung). Dann ich habe noch einmal meine Container Konfig überprüft und sie auch der Anleitung angepasst.
Mit ls -l /dev/nv*
Daten auslesen:
crw-rw-rw- 1 root root 195, 0 Apr 5 18:41 /dev/nvidia0
crw-rw-rw- 1 root root 195, 1 Apr 5 18:41 /dev/nvidia1
crw-rw-rw- 1 root root 195, 255 Apr 5 18:41 /dev/nvidiactl
crw-rw-rw- 1 root root 195, 254 Apr 5 18:41 /dev/nvidia-modeset
crw-rw-rw- 1 root root 509, 0 Apr 5 18:41 /dev/nvidia-uvm
crw-rw-rw- 1 root root 509, 1 Apr 5 18:41 /dev/nvidia-uvm-tools
crw------- 1 root root 10, 144 Apr 5 18:41 /dev/nvram
Unter /etc/pve/lxc/<CT-id>.conf
die obigen Werte angepasst eintragen:
#cgroup access
lxc.cgroup2.devices.allow: c 195:0 rw
lxc.cgroup2.devices.allow: c 195:255 rw
lxc.cgroup2.devices.allow: c 195:254 rw
lxc.cgroup2.devices.allow: c 509:0 rw
lxc.cgroup2.devices.allow: c 509:1 rw
lxc.cgroup2.devices.allow: c 10:144 rw
#device files
lxc.mount.entry: /dev/nvidia0 dev/nvidia0 none bind,optional,create=file
lxc.mount.entry: /dev/nvidiactl dev/nvidiactl none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-modeset dev/nvidia-modeset none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-uvm dev/nvidia-uvm none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-uvm-tools dev/nvidia-uvm-tools none bind,optional,create=file
lxc.mount.entry: /dev/nvram dev/nvram none bind,optional,create=file
Jetzt geht es wieder wie zuvor im Container.
Fehlende libcudnn
Pakete installieren
Dieses Mal gehe ich direkt auf die Nvidia-Seite und lade von auch die notwendigen CUDNN-Pakete runter und folgen der Anleitung:
wget https://developer.download.nvidia.com/compute/cudnn/9.8.0/local_installers/cudnn-local-repo-ubuntu2404-9.8.0_1.0-1_amd64.deb
sudo dpkg -i cudnn-local-repo-ubuntu2404-9.8.0_1.0-1_amd64.deb
sudo cp /var/cudnn-local-repo-ubuntu2404-9.8.0/cudnn-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cudnn
WhisperX-User, venv und WhisperX einrichten
Notwendigen Pakete installieren:
apt install python3 python3-venv python3-pip ffmpeg git build-essential
User erstellen:
adduser gpuwhisperxuser
Zum User wechseln:
su gpuwhisperxuser
In’s Home-Verzeichnis wechseln, whisperx
Ordner erstellen und hineinwechseln, Python virtuelle Umgebung whenv
(whisper-environment) erstellen und aktivieren:
cd /home/gpuwhisperxuser
mkdir whisperx
cd whisperx
python3 -m venv whenv
source whenv/bin/activate
Und jetzt das pip-Paket whisperx
installieren:
pip install whisperx
Das dauert ein wenig:
whisperx /pfad/zur/mediendatei.endung --compute_type float16 --model large-v3
Leider kommt wieder der gleiche Fehler, aber dieses Mal habe ich eine Lösung gefunden in diesem Github-Isue Thread. Dort wird empfohlen diese Repo hinzuzufügen:
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb
dpkg -i cuda-keyring_1.0-1_all.deb
apt update && apt upgrade
apt install libcudnn8 libcudnn8-dev
Also wieder zum Root-User wechseln und ausführen, ich habe jedoch übersehen, dass diese Repo für Ubuntu 22.04 und nicht 24.04 ist.
Eine Warnung kommt auch noch:
update-alternatives: warning: forcing reinstallation of alternative /usr/include/x86_64-linux-gnu/cudnn_v9.h because link group libcudnn is broken
update-alternatives: using /usr/include/x86_64-linux-gnu/cudnn_v8.h to provide /usr/include/cudnn.h (libcudnn) in manual mode
Aber funktionieren tut es jetzt:
Sehr gut, die Transkription ist nun auch um ein Vielfaches schneller geworden. In einem zukünftigen Beitrag beschreibe ich, wie man diese Transkriptionsfähigkeiten in eine sinnvolle Anwendung umsetzen kann.