Docker コンテナに TensorRT をインストールする際の問題

Docker コンテナに TensorRT をインストールする際の問題

Ubuntu にインストールされているバージョンをアンインストールします。

   sudo apt-get purge "libnvinfer*"

スペースを解放するためにすべてのインストール ファイルを削除する場合は、次を実行します。

   dpkg -l | grep テンソルト

インストール パッケージ名を確認します。nv-tensorrt-repo-ubuntu1804-cuda11.1-trt7.2.1.6-ga-20201007 の場合は、次を実行します。

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

これにより、/var/nv-tensorrt-repo-ubuntu1804-cuda11.1-trt7.2.1.6-ga-20201007_1-1 などのディレクトリ ファイルが削除されます。

https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html#installing-debian に従って、 Ubuntu ホストに TensorRT をインストールします。インストール リポジトリの deb ファイルをダウンロードし、次の手順を実行します。CUDA10.2 に適合した TensorRT7.2.1 バージョンをインストールする場合は、次を実行します。

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

   sudo apt-key を /var/nv-tensorrt-repo-cuda10.2-trt7.2.1.6-ga-20201006/7fa2af80.pub に追加します

   sudo apt-getアップデート

   sudo apt-get で tensorrt をインストールします

Docker コンテナにインストールする場合は、上記の手順は使用できません。そうしないと、インストールの最後の手順で常に次のようなエラーが発生します。

次のパッケージには満たされていない依存関係があります:
tensorrt : 依存: libnvinfer-dev (= 7.2.1-6+cuda10.2) ただし、8.0.0-1+cuda11.3 をインストールする必要があります
依存: libnvinfer-plugin-dev (= 7.2.1-6+cuda10.2) ただし、8.0.0-1+cuda11.3 をインストールする必要があります
依存: libnvparsers-dev (= 7.2.1-6+cuda10.2) ただし、8.0.0-1+cuda11.3 をインストールする必要があります
依存: libnvonnxparsers-dev (= 7.2.1-6+cuda10.2) ただし、8.0.0-1+cuda11.3 をインストールする必要があります
依存: libnvinfer-samples (= 7.2.1-6+cuda10.2) ただしインストールされません
E: 問題を修正できないため、破損したパッケージが保留されています。

コンテナには明らかにCUDA10.2がインストールされており、TensorRTもバージョン7.2.1.6+cuda10.2ですが、常に同様のエラーが報告されます。他のバージョンに変更しても同じです。非常にイライラしています。後でNVIDIAのドキュメントを注意深く読んでみると、

Docker コンテナに TensorRT をインストールするには別の方法が必要なようです。ただし、Network Repo 方式を使用して、多数の libnvinfer* ライブラリ (必要に応じて 8 を 7 に変更) をインストールするのは面倒です。

そしてインストールした後、後でプログラムをコンパイルするときにまださまざまな問題があることがわかりました。バージョンを指定する方法でも同じ問題がありました。

しばらくしてもう一度試してみましたが、やはり間違っていました。最終的に、下を見て、最もシンプルで信頼性の高い方法を見つけました。

つまり、冒頭で報告された不可解なエラーは、実際には NVIDIA CUDA ネットワーク リポジトリが Docker コンテナー内に設定されていることが原因です。nv-tensorrt-repo-ubuntu1804-cuda10.2-trt7.2.1.6-ga-20201006_1-1_amd64.deb などの TensorRT ローカル リポジトリを手動でダウンロードしてインストールした後、sudo apt-get install tensorrt を使用してインストールすると、2 つのソースが原因でパッケージの競合が発生します。/etc/apt/preferences.d/ の下に次の内容のファイル local-repo を追加するだけで済みます。

パッケージ: *
ピン: origin ""
ピン優先度: 1001

次に実行する

 sudo apt-getアップデート
 sudo apt-get で tensorrt をインストールします

ローカル リポジトリに対応するバージョン cuda10.2-trt7.2.1.6 が正常にインストールされ、プログラムのコンパイル時にエラーは発生しませんでした。

NVIDIA のドキュメントは、いくつかの部分で非常に書き方が下手だと感じます。環境ごとにインストール手順を明確かつ完全に説明できないのでしょうか? 多くのものを混ぜ合わせて、ユーザーに 1 つずつ理解させなければなりません。

また、RTX30 シリーズの GPU を使用している場合は、CUDA バージョンが 11.1 以上である必要があります。そうでない場合、TensorRT はインストールできますが、実際の実行時に次のエラーが報告される可能性があります。

[W] [TRT] ネイティブ FP16 サポートのないハードウェアで Half2 サポートが要求されると、パフォーマンスに悪影響が出ます。
[E] [TRT] ../rtSafe/cuda/caskUtils.cpp (98) - trtSmToCask のアサーション エラー: 0 (サポートされていない SM)

11.1.0 は使用できますが、caffe や darknet などの特定のプログラムをコンパイルするときに次のエラーが発生する可能性があります。

nvcc 致命的: サポートされていない GPU アーキテクチャ 'compute_86'

したがって、RTX30シリーズのGPUの場合は、CUDAバージョン11.1.1以上をインストールするのが最適です。

以上が、docker コンテナに TensorRT をインストールする際の問題の詳細です。docker に TensorRT をインストールする方法の詳細については、123WORDPRESS.COM の他の関連記事をご覧ください。

以下もご興味があるかもしれません:
  • Pytorch は ONNX モデルとして保存することで TensorRT5 に変換されます
  • Linux システムに docker をインストールし、ssh 経由で docker コンテナにログインする方法
  • Centos7 で Docker アプリケーション コンテナ エンジンをインストールおよびアンインストールする方法
  • 一般的な Docker コマンドの概要: インストール、ミラーリング、基本的なコンテナ操作
  • Dockerコンテナにsshをインストールするための具体的な手順

<<:  Vue3 の参照と参照の詳細

>>:  MySQL テーブル フィールドの時間設定のデフォルト値

推薦する

MySQLテーブルにタイムスタンプを追加するいくつかの方法

シナリオ:テーブル内のデータは、同期ツールを使用して他のデータベースと同期する必要があり、増分同期に...

Linux チェックアップ、Linux の状態 (ネットワーク IO、ディスク、CPU、メモリ) を把握

目次1. コアコマンド2. 共通コマンド3. コアコマンドの詳細な説明3.1、ps補助3.2 トップ...

Docker で MySQL クラスターを構築する方法の例

Docker の基本的な手順:アップデートパッケージ yum -y アップデートDocker仮想マシ...

Reactを使用して画像認識アプリを実装する方法

まずは効果の写真をお見せしましょう。 個人的には効果は問題ないと思います。アプリが写真を学習する時間...

MySQL ジョイントテーブル更新デー​​タの詳細な例

1.MySQL UPDATE JOIN構文MySQL では、UPDATE ステートメントでJOIN句...

データベースの水平セグメンテーションを実装するための2つのアイデア

導入インターネット アプリケーションの普及に伴い、膨大なデータの保存とアクセスがシステム設計における...

MySQLのよくある間違い

NULL 値によると、MySQL の NULL 値は単にデータがないことを意味します。NULL 値は...

Dockerイメージのエクスポートとインポート操作

基本イメージが以前に構成されていて、これらのイメージが他の場所でも必要な場合はどうなりますか?回答:...

MySQLデータベースバックアップのさまざまな実装方法の概要

この記事では、MySQL データベースのバックアップを実装するさまざまな方法について説明します。ご参...

JavaScript ベースのシンプルなカルーセルの実装

この記事では、シンプルなカルーセルを実装するためのJavaScriptの具体的なコードを参考までに紹...

MySQL 8.0.22 winx64 のインストールと設定のグラフィックチュートリアル

mysql 8.0.22 winx64のインストールと設定のグラフィックチュートリアルは参考までに、...

MySQL公式パフォーマンステストツールmysqlslapの使い方の紹介

目次導入説明書実際の経験まとめ導入MySQL は最も人気のあるオープンソース データベースとして、さ...

VMware Workstation 15 Pro インストール ガイド (初心者向け)

01. VMware Workstation Pro 15 のダウンロードダウンロード: VMwa...

Linuxでスクリーンショットを撮って編集するための最高のツール

メインのオペレーティング システムを Windows から Ubuntu に切り替えたとき、最初に考...