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

Ursachen und Lösungen für MySQL-Datenverlust

Inhaltsverzeichnis Vorwort Problembeschreibung Ur...

MySQL-Lösung für zeitgesteuerte Backups (mithilfe von Linux crontab)

Vorwort Obwohl manche Liebe auf dieser Welt ihren...

Praxis der mehrschichtigen verschachtelten Anzeige von Elementtabellen

Es wird eine Liste mit mehreren Bestellungen benö...

jQuery implementiert den Tabellen-Paging-Effekt

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

So verwenden Sie weniger im WeChat-Applet (optimale Methode)

Vorwort Ich bin es gewohnt, Less/Sass zu schreibe...

Detailliertes Tutorial zur Verwendung des Befehls xargs unter Linux

Hallo zusammen, ich bin Liang Xu. Sind Sie bei de...

Detaillierte Erläuterung der Konfiguration der Alibaba Cloud-Sicherheitsregeln

Vor zwei Tagen habe ich das Double 11-Shopping-Fe...

Zusammenfassung der Verwendung von TypeScript in React-Projekten

Vorwort Dieser Artikel konzentriert sich auf die ...

Vollständiges Installationstutorial zum Ubuntu 16.04-Image unter VMware

In diesem Artikel finden Sie das Installations-Tu...

CSS-Pickup-Pfeile, Kataloge, Icons Implementierungscode

1. Verschiedene CSS-Symbole Es gibt drei Möglichk...

PHP geplante Backup MySQL und mysqldump Syntax-Parameter detailliert

Lassen Sie uns zunächst einige gängige Anwendungs...