hsr-project / tmc_wrs_docker

BSD 3-Clause Clear License
63 stars 22 forks source link

nvidia-dockerインストールについて #17

Open Shoichi-Hasegawa0628 opened 3 years ago

Shoichi-Hasegawa0628 commented 3 years ago

tmc_wrc_dockerのセットアップにある「GPU環境でのシミュレータの起動」で、 nvidia-dockerをGithubを参考にしてHostPCにインストールを行いました。 しかしながら、tmc_wrs_docker上でGPUを使用することができません。 https://github.com/NVIDIA/nvidia-docker/wiki/Installation-(version-2.0)

nvidia-dockerインストール時のコマンドは、

curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
sudo apt-get install -y nvidia-docker2
sudo pkill -SIGHUP dockerd

を入力しました。 HostPCのスペックは、 ・Ubuntu:18.04LTS ・Docker:18.09.3 ・nvidia-driver:440.100 ・CUDA:10.1 ・cuDNN:v8.0.5 です。 https://nvidia.github.io/nvidia-docker/

インストールした後は、

DISPLAY=:0 xhost si:localuser:root
docker-compose -f docker-compose.nvidia.yml up

を行い、 vscode (localhost:3001)のterminal上で、 nvidia-smi を入力しましたが、nvidiaコマンドがないエラーが返ってきました。 PCの再起動、tmc_wrs_dockerの再インストールを行いましたが、 改善することができませんでした。

質問として、 ①nvidia-dockerのインストール手順は上記で合っていますでしょうか? またnvidia-dockerはver2.0の方で行いましたが、問題ないでしょうか? ②既にtmc_wrs_dockerを構築した状態でインストールを行いましたが、 問題ないでしょうか?

もし何か知っていましたら、 よろしくお願いします。

yosuke commented 3 years ago

回答が遅くなりすいません。 インストールは上記であっています。 当初はシミュレータを高速化する目的でnvidia-docker版を提供していた(workspaceはnvidia-dockerが適用されていないのでnvidia-smiも使えない)のですが、オブジェクト認識などcudaが使えないと辛いと思うので、workspace についてもnvidia-dockerを有効化しました。 以下の変更をレポジトリに加えておきましたので、git pull origin masterしてテストしてみていただけますでしょうか? https://github.com/hsr-project/tmc_wrs_docker/commit/cc850a8de8b5976c8c6bfcf653fbe99a859d7274

Shoichi-Hasegawa0628 commented 3 years ago

ありがとうございます。

git pull origin master を行ったところ、 vscode (localhost:3001)のterminal上で、 nvidia-smi を実行すると、GPUのスペックが表示されるようになりました。

しかしながら、 物体検出でYOLOを使用しているのですが、FPSが0.1のままでGPUを使用できているかは不明な状況です。 もし何か知っていましたら、よろしくお願いします。

yosuke commented 3 years ago

YOLOはコンパイルの際にMakefileに書かれたフラグを立てておかないとGPUを使ってくれなかったと思うのですが、それは忘れていないでしょうか? フラグを立てて再コンパイルしないとGPUが使えてもCPUを使うままだと思います。