Hier dasselbe Problem nach dem Update auf h6.0.3.3670. Ich habe die Ursache und eine Lösung gefunden.
Was passiert ist: Das Update hat den NVIDIA-Treiber auf 580.159.04 aktualisiert. Das Kernelmodul und die GPU Driver-App stimmen beide überein, der Treiber selbst ist also in Ordnung. Container Station verwaltet aber einen eigenen NVIDIA-Bibliothekscache, und darin waren noch die alten Dateien der Version 575.64.05 aufgeführt, die nicht mehr existieren. Das verursacht den Fehler libnvidia-tls.so.575.64.05: no such file or directory im ersten Beitrag. Weder ein Neustart noch eine Neuinstallation der Treiber oder das Ausführen von NVIDIA_GPU_DRV.sh start haben diesen Cache verändert. Er muss daher von Hand neu erstellt werden.
Lösung: Führe diese Befehle als Administrator über SSH aus. Ich bin nur ein Nutzer und gehöre nicht zu QNAP, also erfolgt die Anwendung auf eigenes Risiko.
1. Pfade festlegen (das funktioniert unabhängig davon, wie dein Pool heißt):
NV=$(getcfg NVIDIA_GPU_DRV Install_Path -f /etc/config/qpkg.conf)
CS=$(getcfg container-station Install_Path -f /etc/config/qpkg.conf)
C="$CS/opt/nvidia/etc/ld.so.cache"
2. Prüfen, ob es dasselbe Problem ist:
cat /proc/driver/nvidia/version # sollte 580.159.04 anzeigen
sudo grep -E '(root|ldcache) *=' "$CS/etc/nvidia-container-runtime/config.toml"
grep -c 575.64.05 "$C" # jeder Wert über 0 = veralteter Cache
Die Konfiguration sollte root = "/" und eine ldcache-Zeile enthalten, die auf genau diese ld.so.cache verweist. Wenn das Kernelmodul nicht Version 580.159.04 hat, liegt bei dir ein anderes Problem vor und diese Lösung hilft nicht.
3. Cache sichern und neu erstellen:
sudo cp "$C" "$C.bak"
sudo /sbin/ldconfig -X -C "$C" "$NV/usr/nvidia"
grep -c 575.64.05 "$C"; grep -c 580.159.04 "$C" # erwartet: 0, dann eine Zahl über 0
-C sorgt dafür, dass ldconfig nur in die Cachedatei von Container Station schreibt, und -X verhindert Änderungen an symbolischen Links. So wird sonst nichts auf dem System verändert.
4. Starte deine GPU-Container über Container Station. Container Station selbst musst du nicht neu starten. Meine Container liefen sofort wieder.
Zum Rückgängigmachen führe sudo cp "$C.bak" "$C" aus. Ein zukünftiges Treiber- oder Container-Station-Update könnte dazu führen, dass der Cache wieder veraltet ist. Wiederhole in diesem Fall Schritt 3.
Danke an mjellybaby für die PaddlePaddle-Anleitung, in der erwähnt wird, dass dieser Cache nach GPU-Treiber-Updates veralten kann. Ein Neustart hat das Problem bei mir allerdings nicht behoben: Getting GPU-Accelerated PaddlePaddle Working in Docker on QNAP NAS
Für QNAP: Die eigentliche Ursache ist, dass die NVIDIA-Datei ld.so.cache von Container Station bei einem Update des GPU-Treiberpakets nicht neu erstellt wird. Bitte sorgt dafür, dass sie bei Treiber- oder Container-Station-Updates automatisch neu erstellt wird.