- 인쇄
- PDF
KVM GPU
- 인쇄
- PDF
VPC 환경에서 이용 가능합니다.
네이버 클라우드 플랫폼 콘솔에서 GPU A100 서버를 생성하고 관리하는 방법을 설명합니다.
- 예기치 못한 서버의 장애 또는 예정된 변경 작업 등에 대하여 중단 없이 서비스 연속성을 보장할 수 있도록 서버는 기본적으로 존 간 이중화 구성을 권장합니다. Load Balancer 개요를 참고하여 이중화 설정을 진행해 주십시오.
- 네이버 클라우드 플랫폼에서는 메모리, CPU, 전원 공급 등 물리 서버의 장애에 대비하기 위해 High Availability(HA) 구조를 제공합니다. HA는 하드웨어에서 발생한 장애가 Virtual Machine(VM) 서버로 확대되는 것을 방지하기 위한 정책으로 호스트 서버에 장애가 발생하면 자동으로 호스트 서버 안에 있는 VM 서버를 안정된 다른 호스트 서버로 옮기는 Live Migration을 지원합니다. 하지만 Live Migration을 진행할 수 없는 오류가 발생하면 VM 서버가 재시작됩니다. VM 서버 한 대로 서비스를 운영하면 VM 서버 재시작으로 장애가 발생할 수 있으므로 장애 발생 빈도를 줄이기 위해서는 위 안내와 같이 VM 서버를 다중화하는 것을 권장합니다.
서버 정보 확인
GPU 서버 정보를 확인하는 방법은 일반 서버 정보를 확인하는 방법과 같습니다. 자세한 내용은 서버 정보 확인을 참고해 주십시오.
GPU 서버는 서버 정지 시에도 전체 서버 요금이 과금됩니다.
서버 생성
GPU 서버는 콘솔의 Services > Compute > Server 메뉴에서 생성할 수 있습니다. 자세한 생성 방법은 서버 생성을 참고해 주십시오.
- GPU A100은 KR-1에서만 생성 가능합니다. A100 생성 시에는 KR-1의 Subnet을 선택하여 주시기 바랍니다.
- GPU 서버는 기업 회원에 한하여 최대 5대까지 생성할 수 있습니다. 더 많은 GPU 서버가 필요하거나 GPU 서버 생성이 필요한 개인 회원의 경우 고객 지원으로 문의해 주십시오.
서버 관리
GPU 서버 관리 및 설정 변경 방법은 일반 서버 관리 및 설정 변경 방법과 같습니다. 자세한 내용은 서버 관리를 참고해 주십시오.
- GPU 서버는 동일한 타입의 서버로만 스펙을 변경할 수 있습니다.
- GPU 서버를 생성한 후 GPU를 제거하여 일반 서버로 전환할 수는 없습니다. 일반 서버로 변경하려면 서버 이미지를 생성한 후, 서버 이미지를 사용해 일반 서버를 새로 생성해야 합니다.
- 일반 서버에서 생성한 서버 이미지를 사용해 GPU 서버를 생성할 수 있습니다.
GPU 드라이버 및 필수 소프트웨어
서버의 GPU 드라이버와 필수 소프트웨어를 점검해 주십시오. 상세한 점검 요소는 다음과 같습니다.
드라이버 버전 확인
GPU 드라이버의 버전을 확인하려면 nvidia-smi
명령어를 입력해 주십시오.
- 정상적으로 설치된 드라이버 버전과 인식된 GPU 카드 모델 및 개수를 확인할 수 있습니다.
# nvidia-smi
Thu Nov 10 10:01:36 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.82.01 Driver Version: 470.82.01 CUDA Version: 11.4 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA A100-SXM... On | 00000000:07:00.0 Off | 0 |
| N/A 30C P0 62W / 400W | 0MiB / 81251MiB | 0% Default |
| | | Disabled |
+-------------------------------+----------------------+----------------------+
| 1 NVIDIA A100-SXM... On | 00000000:0A:00.0 Off | 0 |
| N/A 28C P0 62W / 400W | 0MiB / 81251MiB | 0% Default |
| | | Disabled |
+-------------------------------+----------------------+----------------------+
| 2 NVIDIA A100-SXM... On | 00000000:45:00.0 Off | 0 |
| N/A 28C P0 61W / 400W | 0MiB / 81251MiB | 0% Default |
| | | Disabled |
+-------------------------------+----------------------+----------------------+
| 3 NVIDIA A100-SXM... On | 00000000:4B:00.0 Off | 0 |
| N/A 31C P0 61W / 400W | 0MiB / 81251MiB | 0% Default |
| | | Disabled |
+-------------------------------+----------------------+----------------------+
| 4 NVIDIA A100-SXM... On | 00000000:83:00.0 Off | 0 |
| N/A 32C P0 64W / 400W | 0MiB / 81251MiB | 0% Default |
| | | Disabled |
+-------------------------------+----------------------+----------------------+
| 5 NVIDIA A100-SXM... On | 00000000:89:00.0 Off | 0 |
| N/A 28C P0 63W / 400W | 0MiB / 81251MiB | 0% Default |
| | | Disabled |
+-------------------------------+----------------------+----------------------+
| 6 NVIDIA A100-SXM... On | 00000000:BF:00.0 Off | 0 |
| N/A 28C P0 61W / 400W | 0MiB / 81251MiB | 0% Default |
| | | Disabled |
+-------------------------------+----------------------+----------------------+
| 7 NVIDIA A100-SXM... On | 00000000:C2:00.0 Off | 0 |
| N/A 31C P0 64W / 400W | 0MiB / 81251MiB | 0% Default |
| | | Disabled |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
현재 GPU A100에 제공하는 드라이버 버전은 470.82.01입니다.
CUDA 버전 확인
CUDA 버전을 확인하려면 nvcc --version
명령어를 입력해 주십시오.
- CUDA Toolkit 버전을 확인할 수 있습니다.
# nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Wed_Jun__2_19:15:15_PDT_2021
Cuda compilation tools, release 11.4, V11.4.48
Build cuda_11.4.r11.4/compiler.30033411_0
NVIDIA 드라이버와 CUDA를 재설치하려면 다음 가이드를 따라 수동으로 설치해 주십시오.
현재 GPU A100에 제공하는 CUDA 버전은 11.4입니다.
Docker 및 NVIDIA-Docker 확인
Docker와 NVIDIA-Docker의 정상 동작 여부를 확인하려면 다음 명령어를 입력해 주십시오.
docker run --rm --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi
공인 IP가 할당되어 있어야 수행할 수 있습니다.
# docker run --rm --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi
Unable to find image 'nvidia/cuda:11.6.2-base-ubuntu20.04' locally
11.6.2-base-ubuntu20.04: Pulling from nvidia/cuda
eaead16dc43b: Pull complete
cb69caf25724: Pull complete
3a665e403616: Pull complete
bcf9a52c75ac: Pull complete
8941157b58ad: Pull complete
Digest: sha256:a3665dcde87552d805bab89371ce6477aef472758e5b46a16189884bd1ab601c
Status: Downloaded newer image for nvidia/cuda:11.6.2-base-ubuntu20.04
Mon Nov 14 02:55:18 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.82.01 Driver Version: 470.82.01 CUDA Version: 11.6 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA A100-SXM... On | 00000000:07:00.0 Off | 0 |
| N/A 29C P0 61W / 400W | 0MiB / 81251MiB | 0% Default |
| | | Disabled |
+-------------------------------+----------------------+----------------------+
| 1 NVIDIA A100-SXM... On | 00000000:0A:00.0 Off | 0 |
| N/A 27C P0 60W / 400W | 0MiB / 81251MiB | 0% Default |
| | | Disabled |
+-------------------------------+----------------------+----------------------+
| 2 NVIDIA A100-SXM... On | 00000000:45:00.0 Off | 0 |
| N/A 28C P0 62W / 400W | 0MiB / 81251MiB | 0% Default |
| | | Disabled |
+-------------------------------+----------------------+----------------------+
| 3 NVIDIA A100-SXM... On | 00000000:4B:00.0 Off | 0 |
| N/A 30C P0 61W / 400W | 0MiB / 81251MiB | 0% Default |
| | | Disabled |
+-------------------------------+----------------------+----------------------+
| 4 NVIDIA A100-SXM... On | 00000000:83:00.0 Off | 0 |
| N/A 30C P0 64W / 400W | 0MiB / 81251MiB | 0% Default |
| | | Disabled |
+-------------------------------+----------------------+----------------------+
| 5 NVIDIA A100-SXM... On | 00000000:89:00.0 Off | 0 |
| N/A 27C P0 62W / 400W | 0MiB / 81251MiB | 0% Default |
| | | Disabled |
+-------------------------------+----------------------+----------------------+
| 6 NVIDIA A100-SXM... On | 00000000:BF:00.0 Off | 0 |
| N/A 27C P0 61W / 400W | 0MiB / 81251MiB | 0% Default |
| | | Disabled |
+-------------------------------+----------------------+----------------------+
| 7 NVIDIA A100-SXM... On | 00000000:C2:00.0 Off | 0 |
| N/A 30C P0 60W / 400W | 0MiB / 81251MiB | 0% Default |
| | | Disabled |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
필요 데몬(nvidia-fabricmanager, nv_peer_mem) 확인
필요한 데몬(nvidia-fabricmanager, nv_peer_mem)을 확인하려면 다음 명령어를 입력하여 Active 항목이 active(running)
로 표시되는지 확인해 주십시오.
# systemctl status nvidia-fabricmanager.service
● nvidia-fabricmanager.service - NVIDIA fabric manager service
Loaded: loaded (/usr/lib/systemd/system/nvidia-fabricmanager.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2022-11-08 18:23:34 KST; 38min ago
Process: 2636 ExecStart=/usr/bin/nv-fabricmanager -c /usr/share/nvidia/nvswitch/fabricmanager.cfg (code=exited, status=0/SUCCESS)
Main PID: 2690 (nv-fabricmanage)
Tasks: 18
Memory: 11.4M
CGroup: /system.slice/nvidia-fabricmanager.service
└─2690 /usr/bin/nv-fabricmanager -c /usr/share/nvidia/nvswitch/fabricmanager.cfg
Nov 08 18:23:24 s1845661cd3b systemd[1]: Starting NVIDIA fabric manager service...
Nov 08 18:23:34 s1845661cd3b nv-fabricmanager[2690]: Successfully configured all the available GPUs and NVSwitches.
Nov 08 18:23:34 s1845661cd3b systemd[1]: Started NVIDIA fabric manager service.
# systemctl status nv_peer_mem.service
● nv_peer_mem.service - LSB: Activates/Deactivates nv_peer_mem module to start at boot time.
Loaded: loaded (/etc/rc.d/init.d/nv_peer_mem; bad; vendor preset: disabled)
Active: active (exited) since Tue 2022-11-08 18:23:19 KST; 39min ago
Docs: man:systemd-sysv-generator(8)
Process: 2048 ExecStart=/etc/rc.d/init.d/nv_peer_mem start (code=exited, status=0/SUCCESS)
Tasks: 0
Memory: 0B
Nov 08 18:23:19 s1845661cd3b systemd[1]: Starting LSB: Activates/Deactivates nv_peer_mem module to start at boot time....
Nov 08 18:23:19 s1845661cd3b nv_peer_mem[2048]: starting... OK
Nov 08 18:23:19 s1845661cd3b systemd[1]: Started LSB: Activates/Deactivates nv_peer_mem module to start at boot time..
NVLink 토폴로지 확인
NVLink 토폴로지의 정상 여부를 확인하려면 nvidia-smi topo -m
명령어를 입력하여 GPU간 NVLink 연결 상태를 확인해 주십시오.
- NVLink가 정상적으로 초기화되었을 경우 GPU간의 NVLink 정보는
NV12
로 표시됩니다. - GPU간 연결이
SYS
로 표시될 경우 nvidia-fabricmanager 서비스가 정상적으로 로드됐는지 확인해 주십시오.
# nvidia-smi topo -m
GPU0 GPU1 GPU2 GPU3 GPU4 GPU5 GPU6 GPU7 mlx5_0 mlx5_1 CPU Affinity NUMA Affinity
GPU0 X NV12 NV12 NV12 NV12 NV12 NV12 NV12 PXB SYS 0-63 N/A
GPU1 NV12 X NV12 NV12 NV12 NV12 NV12 NV12 PXB SYS 0-63 N/A
GPU2 NV12 NV12 X NV12 NV12 NV12 NV12 NV12 SYS SYS 0-63 N/A
GPU3 NV12 NV12 NV12 X NV12 NV12 NV12 NV12 SYS SYS 0-63 N/A
GPU4 NV12 NV12 NV12 NV12 X NV12 NV12 NV12 SYS SYS 0-63 N/A
GPU5 NV12 NV12 NV12 NV12 NV12 X NV12 NV12 SYS SYS 0-63 N/A
GPU6 NV12 NV12 NV12 NV12 NV12 NV12 X NV12 SYS PXB 0-63 N/A
GPU7 NV12 NV12 NV12 NV12 NV12 NV12 NV12 X SYS PXB 0-63 N/A
mlx5_0 PXB PXB SYS SYS SYS SYS SYS SYS X SYS
mlx5_1 SYS SYS SYS SYS SYS SYS PXB PXB SYS X
Infiniband
Infiniband란 고성능 컴퓨팅에서 사용되는 표준 네트워크 통신 기술로, 높은 대역폭과 낮은 지연의 장점이 있습니다.
GPU A100 서버간 통신에 사용되므로 반드시 점검해야 합니다. Infiniband의 점검 방법은 다음과 같습니다.
1. 서버간 Infiniband 통신을 위한 준비
서버간 Infiniband 통신을 위해 준비해야 할 내용은 다음과 같습니다.
- GPU A100은 2개의 200Gb/s Infiniband HDR 연결을 통해 합계 400Gbps의 대역폭을 제공합니다.
- Infiniband 연결을 사용하려면 통신을 원하는 모든 서버가 Cluster Mode로 설정되어 있어야 합니다. Fabric Cluster 메뉴에서 새로운 클러스터를 생성하거나, 생성된 클러스터에 원하는 서버를 포함시켜 주십시오. 자세한 설정 방법은 Fabric Cluster를 참고해 주십시오.
2. Infiniband 연결 상태 확인
Infiniband 연결 상태를 확인하려면 ibstat
명령어를 입력하여 서버에 연결된 Infiniband 포트 상태를 확인해 주십시오.
Physical state
항목은LinkUp
,State
항목은Active
가 정상 상태입니다.- 서버 부팅 직후 잠시 동안
Physical state
항목이Polling
상태로 표시될 수 있으나, 연결을 수립하는 과정으로 이는 정상입니다. Rate
는200
으로 표시되어야 합니다.
[root@test01 ~]# ibstat
CA 'mlx5_0'
CA type: MT4123
Number of ports: 1
Firmware version: 20.30.1004
Hardware version: 0
Node GUID: 0x1070fd03005feb0c
System image GUID: 0x1070fd03005feb0c
Port 1:
State: Active
Physical state: LinkUp
Rate: 200
Base lid: 65
LMC: 0
SM lid: 14
Capability mask: 0x2651e848
Port GUID: 0x1070fd03005feb0c
Link layer: InfiniBand
CA 'mlx5_1'
CA type: MT4123
Number of ports: 1
Firmware version: 20.30.1004
Hardware version: 0
Node GUID: 0x1070fd03005feb58
System image GUID: 0x1070fd03005feb58
Port 1:
State: Active
Physical state: LinkUp
Rate: 200
Base lid: 64
LMC: 0
SM lid: 14
Capability mask: 0x2651e848
Port GUID: 0x1070fd03005feb58
Link layer: InfiniBand
3. 통신 테스트
서버간 Infiniband 통신은 ibping
으로 테스트할 수 있으며, 데이터를 주고받는 Client와 Server 역할의 두 서버를 모두 구동해야 합니다.
먼저 데이터를 받는 Server 역할의 서버에 대한 LID 정보를 확인한 후, ibping
테스트를 진행해 주십시오.
3-1. LID 정보 확인
Server 역할의 서버에서 ibstat
명령어를 입력해 mlx5_0 및 mlx5_1에 대한 LID 정보를 확인해 주십시오.
[root@test01 ~]# ibstat mlx5_0 | grep 'Base lid'
Base lid: 210
[root@test01 ~]# ibstat mlx5_1 | grep 'Base lid'
Base lid: 209
3-2. mlx5_0 테스트
mlx5_0 테스트를 진행하는 방법은 다음과 같습니다.
- Server 역할의 서버에서
ibping -S -C mlx5_0
명령을 실행해 주십시오. - Client 역할의 서버에서
ibping -c5 -C mlx5_0 -L
{확인된 mlx5_0 LID 값} 명령을 실행해 주십시오.- 정상인 경우 다음과 같이 모든 ping 패킷에 대한 응답이 정상적으로 수신됩니다.
root@test02:~# ibping -c5 -C mlx5_0 -L 210 Pong from test01.(none) (Lid 210): time 0.027 ms Pong from test01.(none) (Lid 210): time 0.013 ms Pong from test01.(none) (Lid 210): time 0.012 ms Pong from test01.(none) (Lid 210): time 0.017 ms Pong from test01.(none) (Lid 210): time 0.013 ms --- test01.(none) (Lid 210) ibping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 5000 ms rtt min/avg/max = 0.012/0.016/0.027 ms
3-3. mlx5_1 테스트
mlx5_0 테스트를 진행하는 방법은 다음과 같습니다.
- Server 역할의 서버에서
ibping -S -C mlx5_1
명령을 실행해 주십시오. - Client 역할의 서버에서
ibping -c5 -C mlx5_1 -L
{확인된 mlx5_1 LID 값} 명령을 실행해 주십시오.- 정상인 경우 다음과 같이 모든 ping 패킷에 대한 응답이 정상적으로 수신됩니다.
root@test02~# ibping -c5 -C mlx5_1 -L 209 Pong from test01.(none) (Lid 209): time 0.024 ms Pong from test01.(none) (Lid 209): time 0.013 ms Pong from test01.(none) (Lid 209): time 0.009 ms Pong from test01.(none) (Lid 209): time 0.009 ms Pong from test01.(none) (Lid 209): time 0.014 ms --- test01.(none) (Lid 209) ibping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 5000 ms rtt min/avg/max = 0.009/0.013/0.024 ms
3-4. IP over Infiniband (IPoIB) 설정
NVIDIA의 IPoIB 설정 가이드를 참고하여 IPoIB 설정을 진행해 주십시오.