Nvidia Docker: nvidia-smi: 명령을 찾을 수 없습니다.

Nvidia Docker: nvidia-smi: 명령을 찾을 수 없습니다.

설치를 위해 Dockerfile에 컨테이너를 만들었습니다 docker.FROM nvidia/cuda:8.0-devel-ubuntu16.04CUDA Toolkit

내 아키텍처는 공식적으로 설명된 아키텍처입니다.Nvidia-docker환매 계약

엔비디아-도커 레이어

빌드하고 실행한 후

$ nvidia-smi
bash: nvidia-smi: command not found

DOCKER_HOST다음과 같이 실행 중인 Docker Nvidia 컨테이너(GPU 시스템)에 대한 포인터가 있습니다 .

export DOCKER_HOST=tcp://x.x.x.x:2376
export DOCKER_TLS_VERIFY=1
set NVIDIA_VER=367.57

머신에 터널링할 때 포트에 바인딩된 Docker 인스턴스에 연결합니다.

$ ssh -i "$DOCKER_CERT" docker@$IP -g -R 10250:localhost:10250 -L 0.0.0.0:3000:127.0.0.1:3000  -L 0.0.0.0:8181:127.0.0.1:8181 -L 5858:127.0.0.1:5858 -L 4567:127.0.0.1:4567

내 도커 인스턴스가 평소처럼 시작됩니다.

$ docker run --rm -it --name $CONTAINER_NAME -p 3000:3000 $CONTAINER_IMG:$CONTAINER_VERSION $CMD

Docker 호스트에서 Docker Nvidia 인스턴스에 연결할 수 있습니다.

loreto@nvidia-docker:~$ sudo nvidia-docker run --rm nvidia/cuda nvidia-smi
Fri Mar 17 09:08:03 2017       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 367.57                 Driver Version: 367.57                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GRID K520           Off  | 0000:00:03.0     Off |                  N/A |
| N/A   35C    P8    17W / 125W |      0MiB /  4036MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

그리고 심지어

loreto@nvidia-docker:~$ nvidia-smi
Fri Mar 17 09:12:59 2017       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 367.57                 Driver Version: 367.57                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GRID K520           Off  | 0000:00:03.0     Off |                  N/A |
| N/A   35C    P8    17W / 125W |      0MiB /  4036MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|  No running processes found                                                 |

그리고 내 컨테이너에서 $CONTAINER_NAME실행할 때는 볼 수 없습니다.

$ docker exec -it $CONTAINER_NAME bash
$ nvidia-smi
nvidia-smi: command not found

$CONTAINER_NAME건설 FROM nvidia/cuda:8.0-devel-ubuntu16.04

이 문제를 nvidia-docker github repo에 제기했습니다.여기.

[업데이트] 런타임에 장치를 연결하고 컨테이너에 드라이버를 다음과 같이 설정하여 문제를 해결했습니다.

docker run --rm -it --device=/dev/nvidiactl --device=/dev/nvidia-uvm --device=/dev/nvidia0 -v nvidia_driver_367.57:/usr/local/nvidia:ro --name $CONTAINER_NAME -p 3000:3000 $CONTAINER_IMG:$CONTAINER_VERSION $CMD

물론 DOCKER_HOST설정이 되어 있어야 하고 터널이 열려 있어야 합니다.

답변1

nvidia-docker일반적으로 설치된 버전에 설치합니다 docker.

명령은 다음과 같습니다:

곱슬https://get.docker.com| sh
&& sudo systemctl - 이제 도커를 활성화합니다.

그 다음에

distribution=$(./etc/os-release;echo $ID$VERSION_ID)
&& 컬 -fsSLhttps://nvidia.github.io/libnvidia-container/gpgkeysudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
&&curl -s -Lhttps://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list|
sed 's#deb https://#deb [서명자=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g'
| list.d/nvidia-container-toolkit.list

그 다음에

sudo apt-get 업데이트

그 다음에

sudo apt-get 설치 -y nvidia-docker2

이제 설치가 완료된 후 nvidia-docker2- 먼저 groups 명령을 사용하여 사용자 ID가 속한 그룹을 확인하십시오.

그룹

docker나열된 그룹이 표시되지 않으면 먼저 이 명령을 실행하세요.

sudo 그룹도커 추가

sudo usermod -aG docker $USER

이제 로그아웃했다가 다시 로그인해야 합니다(원격 SSH 서버로 인해 이것이 가능하지 않은 경우 동일한 서버에 대해 SSH를 사용하여 새 터미널을 엽니다).

달리기

sudo systemctl 재시작 도커

이제 다시 확인해 보세요 groups. 사용자 ID에 docker그룹이 포함되어 있는지 확인해야 합니다. 그렇지 않은 경우 먼저 이 문제를 해결하십시오. 그런 다음 다음을 실행하십시오.

sudo docker run --rm --gpus 모든 nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi

nvidia-smi지금은 다음 장소에 있어야 합니다 .docker

이 링크에서 애플리케이션에 사용할 적절한 Docker 버전과 올바른 nvidia-driver 버전 및 ubuntu 버전을 선택하세요.https://hub.docker.com/r/nvidia/cuda/tags

관련 정보