1. nvidia-docker 설치
docker에 대한 설치는 밑의 링크에 잘 성명되어 있어서 따라 설치하면 된다.
https://nodoudt.tistory.com/50
만약 terminal에서 nvidia-docker 명령어를 실행하였을 때 권한 거부가 발생하면 밑의 usermod명령어를 사용해서 계정 속성을 변경해준다.
sudo usermod -aG docker $USER
sudo service docker restart
속성을 변경하고 내 경우에는 재부팅을 해주니까 됐다.
설치가 완료되고 terminal에 명령어를 치면 다음과 같이 뜬다.
2. TensorRT docker container
docker 설치가 완료되었다면 tensorrt의 이미지를 pull 한다.
nvidia-docker pull nvcr.io/nvidia/tensorrt:<버전1>-py<버전2>
ex) nvidia-docker pull nvcr.io/nvidia/tensorrt:19.12-py3
버전1은 TensorRT Release 버전으로 각 버전마다 설치되어 있는 tensorrt버전, cuda버전, cudnn버전 등이 다르게 설치되어 있고, 버전2는 python버전으로 python2를 쓰면 py2, python3을 쓰면 py3로 하면 된다.
밑의 링크는 tensorrt에 대한 docker container 버전이 설명되어 있다.
https://docs.nvidia.com/deeplearning/tensorrt/container-release-notes/rel_21-08.html#rel_21-08
원하는 tensorrt container 버전을 pull하고 나면 이미지가 받아졌는지 확인을 한다.
nvidia-docker ps -l
받아진 이미지에 대해 container를 생성하는데 나는 다음과 같은 명령어들을 포함하여 사용한다.
nvidia-docker run -ti -v <호스트 폴더>:<container path> --ipc=host --name test <다운받은 docker 이미지 이름>
nvidia-docker run -ti -v /home/test_folder:/test_folder --ipc=host --name test nvcr.io/nvidia/tensorrt:19.12-py3
-v는 현재 local에 있는 폴더를 container 내부에서도 연결하여 사용할 수 있게 하고, 여러 폴더를 연결하고 싶으면 -v 옵션을 여러번 해서 사용하면 된다.
(ex) -v /home/test/test_folder1:/test_folder1 -v /home/test/test_folder2:/test_folder2
여기서 --ipc라는 옵션도 있는데 docker container안에서 pytorch를 실행하다 보면 local에서는 잘 돌아갔는데 container에서는 메모리가 부족하다는 에러가 발생할 때가 있어서 해당 문제를 해결하기 위해 옵션에 넣어 주었다.
container를 run으로 생성하면 바로 container에 들어가게 되지만 terminal을 종료하거나 하면 명령어로 container에 들어가야 된다.
nvidia-docker exec -ti test /bin/bash
or
nvidia-docker attach test
exec과 attach로 접속하는 차이점은 attrach는 background에서 실행되고 있는 container애 접속한다고 보면 되고, exec은 새로운 프로세스를 실행시킨다고 생각하면 된다.
3. C++ TensorRT example
container가 생성되면 container 안에 간단한 TensorRT 예제가 있는데 만약 테스트를 해보고 싶다면 해당 경로에 들어가서 빌드만 해주면 된다.
cd /workspace/tensorrt/samples
make -j4
빌드가 완료되면 bin폴더에 실행 파일들이 생성된다.
4. python TensorRT example
python에 대한 TensorRT의 예제는 /opt/tensorrt/sample/python에 있는데 해당 sample를 돌리기 위해서는 몇몇몇 필요한 python 라이브러리가 있다.
필요한 라이브러리는 /opt/tensorrt/python에 있는 python_setup.sh 를 실행하면 받아지기도 하고 직접 보면서 설치해도 된다.
5. 모델 변환
TensorRT container안에는 당연히 해당 버전에 맞춰져 있는 trtexec가 있어서 모델 변환도 가능하다.
cd /workspace/tensorrt/bin
./trtexec
'Development > TensorRT' 카테고리의 다른 글
[TensorRT] trtexec dumpProfile / profilingVerbosity / dumpLayerInfo option (0) | 2022.04.21 |
---|---|
[TensoRT] SM version not supported in this NVRTC version 오류 해결 (0) | 2021.08.30 |
[TensorRT]Onnx모델을 tensorrt모델로 변환 (0) | 2021.08.19 |
[TensorRT] architecture 별 호환성 (0) | 2021.08.10 |
댓글