2020년 3월 23일 월요일

AC922 에서 nvidia-container-toolkit 설치하기 (PowerPC, ppc64le 환경, nvidia-docker)

IBM AC922 서버에서 최신(2020/03 기준) nvidia-container-toolkit 을 구성하는 방법입니다. (예전 이름 nvidia-docker2)

이미 2019/04에 포스팅된 아래 글을 보시면, PowerPC 에서도 nvidia-docker2를 활용할 수 있도록 nvidia-container-runtime 을 구성하는 방법을 소개하고 있습니다.
** ppc64le Redhat 7 환경에서의 nvidia-docker2 대신 nvidia-container-runtime 사용
http://hwengineer.blogspot.com/2019/04/ppc64le-redhat-7-nvidia-docker2-nvidia.html

근래에 위 포스트 대로 실행해보니, nvidia-docker2가 deprecated 되어 구성 방식도 조금 바뀐것 같습니다. 위 포스팅 방식대로 하면 에러가 발생하거나, docker run 시에 --runtime=nvidia 로 설정해도 적용되지 않는 경우가 있어서 아래 다시 최신 적용 방법을 기록해둡니다.

기본 내용은 결국 아래 Github 을 따르시면 됩니다.

[root@p639-kvm1 ~]# distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
[root@p639-kvm1 ~]# curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo
[libnvidia-container]
name=libnvidia-container
baseurl=https://nvidia.github.io/libnvidia-container/centos7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://nvidia.github.io/libnvidia-container/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt

[nvidia-container-runtime]
name=nvidia-container-runtime
baseurl=https://nvidia.github.io/nvidia-container-runtime/centos7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://nvidia.github.io/nvidia-container-runtime/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt

[nvidia-docker]
name=nvidia-docker
baseurl=https://nvidia.github.io/nvidia-docker/centos7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://nvidia.github.io/nvidia-docker/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt

아래 경로에 가보면, nvidia-docker.repo 이 위 내용 대로 생성된 것을 확인하실 수 있습니다. 해당 파일을 열어서, repo_gpgcheck=1 을 0 으로 변경해줍니다.
[root@p639-kvm1 ~]# vi /etc/yum.repos.d/nvidia-docker.repo
(여기서 변경) repo_gpgcheck=0

[root@p639-kvm1 ~]# yum repolist
Loaded plugins: nvidia, product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
#### NVIDIA ####
repo id                            repo name                                                                      status
cuda-10-1-local-10.1.243-418.87.00 cuda-10-1-local-10.1.243-418.87.00                                                101
libnvidia-container/ppc64le        libnvidia-container                                                                15
local-rhn-server-epel              Poughkeepsie Client Center Local RHN - RHEL 7Server_alt ppc64le Server EPEL RP 13,831
local-rhn-server-extras            Poughkeepsie Client Center Local RHN - RHEL 7Server_alt ppc64le Server Extras     127
local-rhn-server-iso-media         Poughkeepsie Client Center Local RHN - RHEL 7Server_alt ppc64le Server ISO RPM  3,751
local-rhn-server-optional          Poughkeepsie Client Center Local RHN - RHEL 7Server_alt ppc64le Server Optiona  3,786
local-rhn-server-os                Poughkeepsie Client Center Local RHN - RHEL 7Server_alt ppc64le Server Base RP  3,775
local-rhn-server-rhscl             Poughkeepsie Client Center Local RHN - RHEL 7Server_alt ppc64le Server RHSCL R  2,091
local-rhn-server-supplementary     Poughkeepsie Client Center Local RHN - RHEL 7Server_alt ppc64le Server Supplem     13
nvidia-container-runtime/ppc64le   nvidia-container-runtime                                                            6
nvidia-docker/ppc64le              nvidia-docker                                                                       1
powerai-epel                       Poughkeepsie Client Center Local RHN - RHEL 7Server_alt ppc64le Server EPEL RP 13,726
powerai-extras                     Poughkeepsie Client Center Local RHN - RHEL 7Server_alt ppc64le Server Extras     127
powerai-optional                   Poughkeepsie Client Center Local RHN - RHEL 7Server_alt ppc64le Server Optiona  3,786
powerai-os                         Poughkeepsie Client Center Local RHN - RHEL 7Server_alt ppc64le Server RPMs     3,775
powerai-rhscl                      Poughkeepsie Client Center Local RHN - RHEL 7Server_alt ppc64le Server RHSCL R  2,091
powerai-supplementary              Poughkeepsie Client Center Local RHN - RHEL 7Server_alt ppc64le Server Supplem     13
repolist: 51,015

nvidia-docker, nvidia-container-runtime 이 올라왔는지 확인합니다. 

Github 에서는 nvidia-container-toolkit 혹은 nvidia-container-hook 으로 설치하면 된다고 하는데, 해당 패키지로는 설치가 되질 않습니다. 따라서, 아래의 명령어로 해당 패키지들을 설치해줍니다.
 
[root@p639-kvm1 ~]# yum install -y libnvidia-container-devel nvidia-container-runtime
[root@p639-kvm1 ~]# systemctl restart docker

명령어도 예전 옵션을 사용해야 합니다. 새로운 nvidia-container-toolkit 에서는 --gpus 옵션을 사용하지만, 여기서는 이전처럼 -e를 사용합니다. nvidia-docker2 에서 사용하던 --runtime 도 적용되질 않습니다.

[root@p639-kvm1 ~]# docker run -e NVIDIA_VISIBLE_DEVICES=all nvidia/cuda-ppc64le:10.1-base nvidia-smi
Mon Mar 23 07:27:08 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.87.00    Driver Version: 418.87.00    CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla V100-SXM2...  On   | 00000001:00:01.0 Off |                    0 |
| N/A   34C    P0    39W / 300W |      0MiB / 32480MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

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

컨테이너 실행 시, NVIDIA_VISIBLE_DEVICES=none 으로 GPU를 할당하지 않고 실행해봅니다.

[root@p639-kvm1 ~]# docker run -e NVIDIA_VISIBLE_DEVICES=none nvidia/cuda-ppc64le:10.1-base nvidia-smi
No devices were found

댓글 없음:

댓글 쓰기