KVM GPU
    • PDF

    KVM GPU

    • PDF

    Article Summary

    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 상태로 표시될 수 있으나, 연결을 수립하는 과정으로 이는 정상입니다.
    • Rate200으로 표시되어야 합니다.
    [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 테스트를 진행하는 방법은 다음과 같습니다.

    1. Server 역할의 서버에서 ibping -S -C mlx5_0 명령을 실행해 주십시오.
    2. 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 테스트를 진행하는 방법은 다음과 같습니다.

    1. Server 역할의 서버에서 ibping -S -C mlx5_1 명령을 실행해 주십시오.
    2. 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 설정을 진행해 주십시오.


    이 문서가 도움이 되었습니까?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.