반응형

Unknown runtime specified nvidia 오류

nvidia-driver를 재설치 하거나 처음 설치하고, docker를 runtime 옵션으로 nvidia 설정을 하는 경우 마주하는 경우가 있다.
이 오류는 아래와 같이 나타나기도 한다

docker: Error response from daemon: unknown or invalid runtime name: nvidia.

nvidia-docker2가 설치가 안되어 있을 가능성이 있으며, 설치되어 있지 않을 경우 설치해줄 경우 정상 동작하는 것이 확인된다.

nvidia-docker2 설치 확인

$ dpkg -l | grep nvidia-docker2

nvidia-docker2 설치

$ sudo apt install nvidia-docker2

nvidia gpg key와 저장소 추가

만약 nvidia-docker2를 못찾을 경우 저장소 추가

distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
   && curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
   && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

docker 재시작

$ sudo systemctl restart docker
반응형
반응형

 

Docker 설치 관련 내용은 생략함

 

1. TensorRT 버전 확인 

https://docs.nvidia.com/deeplearning/tensorrt/container-release-notes/running.html

 

::

About this task On a system with GPU support for NGC containers, when you run a container, the following occurs: The Docker engine loads the image into a container which runs the software. You define the runtime resources of the container by including the

docs.nvidia.com

Container Release Node에서 TensorRT Container의 각 Release 버전과 CUDA 버전, Ubuntu 버전 등의 자신의 필요로 하는 버전과 일치하는 버전을 확인한다.

 

2.  Docker Run

Docker run 명령어로 Image Download 및 shall 실행한다.

$ docker run --gpus <GPU> -it --name <NAME>  nvcr.io/nvidia/tensorrt:<Version>-<pyver> bash

예로 실행은 아래와 같다

$ docker run --gpus '"device=2"' -it -v /home/host/host_dir:/root/share_dir --name tensorrt_23.01_py3  nvcr.io/nvidia/tensorrt:23.01-py3 bash

 

3. Container 정상 동작 확인

-it 옵션으로 실행을 했기 때문에 바로 container 에 attach 및 shell이 실행된다
각 명령어로 정상 동작 하는지 확인한ㄷ,

$ nvidia-smi # GPU 연결 및 CUDA Driver 정상 동작 확인
$ pip list | grep tensorrt # Tensor rt 버전 확인

 

4. Docker containe

Docker run 명령어로 container는 이미 생성되었다. 아래의 명령어로 생성된 container를 확인한다.
아래의 명령어중 -a를 붙여야 현재 container의 status가 start 상태가 아니더라도 확인이 가능한다.

$ docker container ls -a # Container 전체 리스트

이후 다시 접속하기 위해서는 일반 docker container 와 같이 start/executing 을 통해 다시 접근 가능하다.

$ docker start <container name or hashnum>
$ docker exec -it <container name or hashnum> /bin/bash​
반응형
반응형

dGPU 환경 기준, Jetson 환경 기준은 별도 Guide 참고 필요.

Deepstream 6.2 기준

https://resources.nvidia.com/en-us-deepstream-get-started-with-c-cpp

 

DeepStream SDK Development Guide

DeepStream SDK Development Guide

resources.nvidia.com

 

Docker-ce 설치

 $ sudo apt-get update
 $ sudo apt-get install apt-transport-https ca-certificates
 $ curl gnupg-agent software-properties-common
 $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
 $ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
 $ sudo apt-get update
 $ sudo apt-get install docker-ce

 

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 nvidia-docker2
   $ sudo systemctl restart docker.service
   $ sudo usermod -a -G docker <<USER NAME>>
   $ reboot

  

사용자 설치 스크립트 실행

 $ cd /opt/nvidia/deepstream/deepstream-6.2/user_additional_install.sh

 

Conatinaer 내 미설치 패키지 설치

  1. cuda-toolkit

 $ apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub
 $ add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /"
 $ apt-get update
 $ apt-get install cuda-toolkit-11-8
 $ apt install cuda-toolkit-11-8

 

Docker container 내부에서 X11 가능하게 container 실 방법

1. One-shot

$ sudo nvidia-docker run -it --rm --net=host -v ${HOME}:${HOME}/home -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --volume="$HOME/.Xauthority:/root/.Xauthority:rw" <<<Image Name or Checksum>>> /bin/bash 

2. Container 생성

$ sudo nvidia-docker run -it --net=host -v ${HOME}:${HOME}/home -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --volume="$HOME/.Xauthority:/root/.Xauthority:rw" --name=deepstream-6.2-devel-temp <<<Image Name or Checksum>>> /bin/bash

 아래는 nvidia sample command

# Pull the required docker.  Refer Docker Containers table to get docker container name.
$ docker pull <required docker container name>
# Step to run the docker
$ export DISPLAY=:0
$ xhost +
$ docker run -it --rm --net=host --gpus all -e DISPLAY=$DISPLAY --device /dev/snd -v /tmp/.X11-unix/:/tmp/.X11-unix <required docker container name>
반응형
반응형

현재 활성화된 컨테이너 확인

# docker ps


모든 활성화된 컨테이너 확인

# docker ps -a


컨테이너 삭제
방법 1 :

# docker rm {container id or container name}

방법 2 :

# docker container rm {container id or container name}

 

이미지 리스트

# docker images

 

이미지 삭제

# docker rmi {image id or image name}


컨테이너 삭제 까지 일괄 동작

# docker rmi -f {image id or image name}


이미지 생성(빌드)
방법 1(정해진 이름으로 생성)

# docker build -t {Image Name} .

방법 2(Random 이름으로 생성)

# docker build .


Container 생성

# docker run -it --name {container name} -v {Local Path}:{To be mounted host path} {Container Name} {Shell ex./bin/bash}


중지된 Container 재시작

# docer start {container name or id}


Container 재접속

# docker attach {container name or id}



반응형
반응형
  1. Caffe docker 설치
    GPU 버전의 Caffe와 같은 경우 nvidia-docker 플러그인이 추가적으로 설치 되어 있어야 함
    $ docker pull bvlc/caffe:cpu // CPU only
    $ docker pull bvlc/caffe:gpu // GPU only(cuDNN Caffe)

  2. CUDA 설치
    CUDA 및 cuDNN 라이브러리 관련 docker 이미지 및 docker shell 실행
    $ nvidia-docker pull nvidia/cuda:8.0-cudnn6-devel-ubuntu16.04
    $ nvidia-docker run -it -v /data:/data nvidia/cuda:8.0-cudnn6-devel-ubuntu16.04 /bin/bash --name myname

  3. Caffe 빌드에 필요한 패키지 설치(docker 내 sudo 권한 필요없음)
    첫 실행시 업데이트 정보 최신화
    $ apt-get update;apt-get upgrade
    $ apt-get install build-essential cmake libblas-dev libboost-all-dev libprotobuf-dev libgoogle-glog-dev libgflags-dev libhdf5-dev libhdf5-serial-dev libopencv-dev liblmdb-dev libleveldb-dev libsnappy-dev protobuf-compiler libatlas-dev libatlas-base-dev git

  4. Caffe 소스코드 다운로드
    $ git clone https://github.com/bvlc/caffe /data/caffe
    $ cd /data/caffe && git checkout tags/1.0
    $ cp Makefile.config.example Makefile.config

  5. Makefile에서 cuDNN 설정

    # cuDNN acceleration switch (uncomment to build with cuDNN).

    USE_CUDNN := 1

  6. caffe 빌드 및 설치
    $ mkdir build
    $ cd build
    $ cmake ..
    $ make all
    $ make install

반응형

+ Recent posts