Probleme bei der Installation von TensorRT im Docker-Container

Probleme bei der Installation von TensorRT im Docker-Container

Deinstallieren Sie die installierte Version auf Ubuntu:

   sudo apt-get purge "libnvinfer*"

Wenn Sie alle Installationsdateien löschen möchten, um Speicherplatz freizugeben, führen Sie Folgendes aus:

   dpkg -l | grep tensorrt

Überprüfen Sie den Namen des Installationspakets. Wenn es nv-tensorrt-repo-ubuntu1804-cuda11.1-trt7.2.1.6-ga-20201007 ist, führen Sie Folgendes aus:

sudo dpkg -P nv-tensorrt-repo-ubuntu1804-cuda11.1-trt7.2.1.6-ga-20201007

Auf diese Weise werden Verzeichnisdateien wie /var/nv-tensorrt-repo-ubuntu1804-cuda11.1-trt7.2.1.6-ga-20201007_1-1 gelöscht.

Installieren Sie TensorRT auf dem Ubuntu-Host gemäß https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html#installing-debian. Laden Sie die Deb-Datei des Installationsrepos herunter und führen Sie die folgenden Schritte aus. Wenn Sie die an CUDA10.2 angepasste Version von TensorRT7.2.1 installieren, führen Sie Folgendes aus:

sudo dpkg -i nv-tensorrt-repo-ubuntu1804-cuda10.2-trt7.2.1.6-ga-20201006_1-1_amd64.deb

   sudo apt-key add /var/nv-tensorrt-repo-cuda10.2-trt7.2.1.6-ga-20201006/7fa2af80.pub

   sudo apt-get update

   sudo apt-get installiere tensorrt

Bei der Installation in einem Docker-Container können Sie die oben genannten Schritte nicht verwenden, da es sonst im letzten Schritt der Installation immer zu Fehlern wie den folgenden kommt:

Die folgenden Pakete haben nicht erfüllte Abhängigkeiten:
tensorrt: Hängt ab von: libnvinfer-dev (= 7.2.1-6+cuda10.2), aber 8.0.0-1+cuda11.3 muss installiert werden
Hängt ab von: libnvinfer-plugin-dev (= 7.2.1-6+cuda10.2), aber 8.0.0-1+cuda11.3 muss installiert werden
Hängt ab von: libnvparsers-dev (= 7.2.1-6+cuda10.2), aber 8.0.0-1+cuda11.3 muss installiert werden
Hängt ab von: libnvonnxparsers-dev (= 7.2.1-6+cuda10.2), aber 8.0.0-1+cuda11.3 muss installiert werden
Hängt ab von: libnvinfer-samples (= 7.2.1-6+cuda10.2), wird aber nicht installiert
E: Probleme konnten nicht behoben werden, Sie haben beschädigte Pakete zurückgehalten.

CUDA10.2 ist eindeutig im Container installiert und TensorRT ist auch Version 7.2.1.6+cuda10.2, meldet aber immer ähnliche Fehler. Beim Wechsel auf andere Versionen ist es immer noch dasselbe. Es ist sehr frustrierend. Später habe ich die Dokumente von NVIDIA sorgfältig gelesen und festgestellt

Es scheint, dass eine andere Möglichkeit erforderlich ist, um TensorRT im Docker-Container zu installieren. Es ist jedoch mühsam, eine Reihe von libnvinfer*-Bibliotheken (ändern Sie 8 nach Bedarf in 7) mit der Network Repo-Methode zu installieren:

Und nachdem ich es installiert hatte, stellte ich fest, dass es beim späteren Kompilieren des Programms immer noch verschiedene Probleme gab, sogar bei der Methode zur Angabe der Version trat das gleiche Problem auf:

Nach einer Weile des erneuten Probierens war es immer noch falsch. Schließlich schaute ich nach unten und fand diesen einfachsten und zuverlässigsten Weg:

Mit anderen Worten, der unerklärliche Fehler, der am Anfang gemeldet wurde, liegt tatsächlich daran, dass das NVIDIA CUDA-Netzwerk-Repository im Docker-Container konfiguriert ist. Wenn Sie nach dem manuellen Herunterladen und Installieren des lokalen TensorRT-Repositorys wie nv-tensorrt-repo-ubuntu1804-cuda10.2-trt7.2.1.6-ga-20201006_1-1_amd64.deb sudo apt-get install tensorrt zur Installation verwenden, tritt aufgrund der beiden Quellen ein Paketkonflikt auf. Sie müssen nur eine Datei local-repo unter /etc/apt/preferences.d/ mit folgendem Inhalt hinzufügen:

Paket: *
Pin: Herkunft ""
Pin-Priorität: 1001

Dann ausführen

 sudo apt-get update
 sudo apt-get installiere tensorrt

Die dem lokalen Repo entsprechende Version cuda10.2-trt7.2.1.6 wurde erfolgreich installiert und beim Kompilieren des Programms sind keine Fehler aufgetreten!

Ich finde, dass die Dokumentation von NVIDIA an manchen Stellen wirklich schlecht geschrieben ist. Können sie die Installation nicht für jede Umgebung einzeln klar und vollständig erklären? Sie müssen viele Dinge miteinander vermischen und die Benutzer einen nach dem anderen durch die einzelnen Schritte führen lassen.

Wenn Sie eine GPU der RTX30-Serie verwenden, muss die CUDA-Version außerdem >= 11.1 sein. Andernfalls kann TensorRT zwar installiert werden, aber während der tatsächlichen Laufzeit wird möglicherweise der folgende Fehler gemeldet:

[W] [TRT] Half2-Unterstützung auf Hardware ohne native FP16-Unterstützung angefordert, die Leistung wird negativ beeinflusst.
[E] [TRT] ../rtSafe/cuda/caskUtils.cpp (98) - Assertionsfehler in trtSmToCask: 0 (SM nicht unterstützt.)

Obwohl 11.1.0 verwendet werden kann, können beim Kompilieren bestimmter Programme wie Caffe oder Darknet die folgenden Fehler auftreten:

nvcc fatal: Nicht unterstützte GPU-Architektur „compute_86“

Daher ist es für GPUs der RTX30-Serie am besten, die CUDA-Version >= 11.1.1 zu installieren

Oben sind die Details des Problems bei der Installation von TensorRT im Docker-Container aufgeführt. Weitere Informationen zur Installation von TensorRT im Docker finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Pytorch konvertiert zu TensorRT5 durch Speichern als ONNX-Modell
  • So installieren Sie Docker auf einem Linux-System und melden sich über SSH beim Docker-Container an
  • So installieren und deinstallieren Sie die Docker-Anwendungscontainer-Engine unter Centos7
  • Zusammenfassung gängiger Docker-Befehle: Installation, Spiegelung und grundlegende Containervorgänge
  • Spezifische Schritte zur Installation von SSH im Docker-Container

<<:  Code zum Ausrichten von Kontrollkästchen und Radiotext im Formular

>>:  MySQL-Tabellenfeld Zeiteinstellung Standardwert

Artikel empfehlen

js zur Implementierung einer Überprüfungscode-Interferenz (dynamisch)

In diesem Artikelbeispiel wird der spezifische Co...

Mehrere Möglichkeiten, die Lesbarkeit von Webseiten zu verbessern

1. Verwenden Sie kontrastierende Farben. Mit Kont...

jQuery+Ajax zum Erreichen eines einfachen Paging-Effekts

In diesem Artikel wird der spezifische Code von j...

Reagieren Sie auf die Konstruktionsreihenfolge verschachtelter Komponenten

Inhaltsverzeichnis Auf der offiziellen React-Webs...

Detaillierte Erläuterung des grundlegenden Falls des React.js-Frameworks Redux

react.js Rahmen Redux https://github.com/reactjs/...

CSS3 realisiert die Mask Barrage-Funktion

Kürzlich habe ich auf der B-Station einen Sperrfe...

Vergleich mehrerer Beispiele zur Einfügungseffizienz in MySQL

Vorwort Aus beruflichen Gründen musste ich kürzli...

Vue kapselt die öffentliche Funktionsmethode zum Exportieren von Excel-Daten

vue+element UI kapselt eine öffentliche Funktion ...

Beispielanalyse der MySQL-Indexabdeckung

Dieser Artikel beschreibt die MySQL-Indexabdeckun...

Schritte zur Installation von MySQL mit Docker unter Linux

Als Tester müssen Sie während des Lernprozesses h...