Windows에서 Nvidia GPU/AI Card 드라이버 모드 변경

@개요

Nvidia의 GPU / AI 가속 카드를 Windows에서 사용하는 경우, Nvidia-smi에서 WDDM/TCC/MCDM 모드 3가지 중 하나를 선택할 수 있다.
다만 각 모드를 지원하는 API가 상이하고 카드마다 지원하는 모드가 차이가 있음.

DirectX, Volkan, OpenGL 을 사용하기 위해서는 WDDM 또는 MCDM으로 드라이버 모드를 사용해야 한다.
참조 : https://docs.nvidia.com/datacenter/tesla/tesla-release-notes-570-133-20/index.html
참조 : https://docs.nvidia.com/nsight-visual-studio-edition/reference/index.html#tesla-compute-cluster

위와 같이 일반적으로 Datacenter용 AI전용카드 계열인 Tesla 제품군은 WDDM 이 기본적으로 되지 않는 경우가 많다. 공식문서에서는 GRID 라이선스가 필요한데 user당 월 또는 년간 구독형식이라 가상화 환경에서 vGPU를 사용하지 않는다면 매우 불필요한 비용이 된다.

몇 가지 Tesla제품에서 WDDM을 사용하기 위한 우회방법을 확인한다. test된 몇가지 제품군에 대한 것이라 일반적이 적용에 대해서는 불명확하다.
테스트에 사용된 제품은 T4, L4, L40s 제품.

Nvidia Driver 버전에 따라 모드 사용여부과 정해지는 것으로 보이며, MCDM의 경우는 560이상버전에서만 지원되는 것으로 보인다. 하지만 WDDM이 되지 않는 카드에 대해서는 동일하게 정상적으로 작동하지 않는다.
(하단의 실패사례 참조)

Display Mode Selector Tool을 사용가능한 제품의 경우.

L40s 테스트시 작동확인하였으며 Physical display mode를 변경해주는 tool로 Display 활성화시 WDDM 모드도 같이 사용가능하게 되는 것으로 보임. 개발자 등록 및 간단한 사유를 입력해야 download 가능.

참조 : NVIDIA Display Mode Selector Tool | NVIDIA Developer

적용가능한 제품은 해당페이지에서 확인가능. Nvidia의 모든 제품에 적용되지는 않음.

1. nvidia-smi를 통한 확인 및 변경순서 (모든 명령어는 powershell “run as administrator” 로 실행한 창에서 입력)
현재모드 확인
> 상단의 TCC/WDDM 부분이 드라이버에서 지원하는 모드, 아래의 TCC 부분이 현재 설정모드. (MCDM 지원하는 경우 다르게 표시됨. nvidia-smi –help 시 지원모드 확인가능.)
> nvidia-smi ;; 아래 TCC 부분 확인 (L40s 는 Default로 TCC 모드)

> nvidia-smi -i 0 -fdm 1
-i, –id=                              Target a specific GPU.
-dm,  –driver-model=             Enable or disable TCC mode: 0/WDDM, 1/TCC
-fdm, –force-driver-model=  Enable or disable TCC mode: 0/WDDM, 1/TCC
-> MCDM 지원하는 Nvidia 드라이버에서는 2/MCDM 옵션이 추가로 있음.

기본적으로 Tesla(Datacenter용) 카드의 경우 아래 메세지(Not Supported)와 모드 변경이 되지 않음.

상단 개발자 tool 페이지에서 Nvidia_Display_Mode_Selector_Tool-1.67.0.zip 다운로드, 버전에 맞는 디렉토리 진입하여 하기 명령어를 통해 Physical Display Mode 변경
– 현재 모드 확인
>./displaymodeselector.exe –listgpumodes
GPU Mode: Compute
– 모드 변경
>./displaymodeselector.exe –gpumode

모드 선택 -> 변경확인 “y” -> 전체카드 적용여부 “n”

서버 리부팅 필요. 리부팅후 “–listgpumodes”로 확인시 “Physical display enabled” 로 표기됨.

이후 동일하게 “nvidia-smi -i 0 -dm 0” 명령어를 통해 변경후 리부팅하면 WDDM 모드로 동작 확인.
“nvidia-smi -q” 를 통해 pending 모드 확인 가능.

리부팅 이후 정상적으로 taskmgr에서 GPU 사용율 표시되면 nvidia-smi 에서도 WDDM 모드 확인 가능.

GRID 드라이버를 이용할 수 있는 경우

display mode selector를 사용할 수 없거나 GRID 드라이버에서 해당 칩셋을 제공하면 GRID 드라이버를 설치하여 WDDM 모드를 사용할 수 있다.
GRID 드라이버의 경우 Nvidia 공식사이트에서는 GRID용으로 나온 Card외 다른 카드의 드라이버는 제공하지 않는다. 받으려면 GRID 라이선스를 구매해야 된다.
참조 : nvidia.com/en-us/data-center/buy-grid/

다만 Azure나 GCP에서 클라우드에서 사용하는 GRID 드라이버를 Cloud VM용으로 배포하고 있다.
참조 : https://learn.microsoft.com/en-us/azure/virtual-machines/windows/n-series-driver-setup
GitHub – Azure/azhpc-extensions: Metadata for Azure HPC Extensions
참조 : https://cloud.google.com/compute/docs/gpus/grid-drivers-table?hl=ko

각 클라우드의 참조페이지를 보면 Azure는 “NVIDIA Tesla V100″,”Nvidia Tesla T4″,”NVIDIA Tesla M60”,”NVIDIA A100″을 지원하고, GCP는 NVIDIA B200,NVIDIA H100 80GB,NVIDIA H200 141GB,NVIDIA A100 80GB,NVIDIA A100 40GB GPU,NVIDIA L4 ,NVIDIA T4,NVIDIA V100,NVIDIA P100,NVIDIA P4 가 지원 되는 것으로 보인다.

여기서 테스트 된 Nvidia L4 도 마찬가지로 Azure에서 제공하는 GRID 드라이버는 아예 설치가 진행되지 않았으며 GCP에서 제공된 GRID 드라이버가 설치되었다.
설치한 드라이버 파일명은 “553.62_grid_win10_win11_server2019_server2022_dch_64bit_international.exe”으로 진행되었으며 해당드라이버 설치후 정상적으로 WDDM 모드로 전환이 이루어졌다.

이후 과정은 이전의 display mode 변경후와 동일하게 때문에 생략한다.

(“nvidia-smi -i 0 -dm 0” 명령어를 통해 변경후 리부팅하면 WDDM 모드로 동작 확인.
“nvidia-smi -q” 를 통해 pending 모드 확인 가능.)

– 실패사례
Nvidia에서 제공하는 드라이버 중 560 이상버전에서 MCDM 모드를 제공 하기 명령어로 변환시 변환까지는 성공하나 리부팅후 Nvidia 드라이버가 정상 인식 되지 않는 증상이 발생.

Device Manager에서 Nvidia L4 Driver 부분에 노란색(yellow Attention) 발생.
Nvidia-smi 정상작동하지 않는 증상이 발생.
Driver를 제거 후, 재설치하면 기존의 TCC mode로 다시 인식하게 됨.

메세지 참조

NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running. This can also be happening if non-NVIDIA GPU is running as primary display, and NVIDIA GPU is in WDDM mode.

GPU Mode: Physical display enabled

WDDM (Windows Display Driver Model) ;; MS에서 개발한 디스플레이 드라이버 모드, 과거의 Display Adaptor의 표준. AI연산에 쓰지않는 것들도 포함, 그러나 DirectX, Vulkan, OpenGL 에 반드시 필요.

MCDM (Microsoft Compute Driver Model) ;; MS에서 개발한 AI연산을 위한 모드, WDDM의 하위 모드로 WDDM 2.6이상에서 지원된다. Nvidia Driver의 경우 560이상 버전에서 지원되는 것으로 보임.
WDDM 버전은 dxdiag 명령어에서 디스플레이 부분/드라이버에서 확인 가능하며, 디스플레이 별로 표시되므로 정보가 뜨지 않을시 모든 정보 저장을 클릭하여 txt 파일에서 확인 가능. -> 설치된 드라이버에 따라 버전이 달라지는 것으로 보임.

TCC (Tesla Compute Cluster) ;; Nvidia에서 개발한 모드, Windows의 Layer를 거치지 않고 AI연산만을 위해 사용가능, 주로 CUDA 용도

>nvidia-smi -i 0 -dm 0
Unable to set driver model for GPU 00000000:26:00.0: Not Supported
Treating as warning and moving on.
All done.

GPU Mode: Compute
GPU Mode: Physical display enabled
Are you sure you want to continue?
Press ‘y’ to confirm (any other key to abort):
y
Specified GPU Mode “physical_display_enabled_256MB_bar1”
Update GPU Mode of all adapters to “physical_display_enabled_256MB_bar1”?
Press ‘y’ to confirm or ‘n’ to choose adapters or any other key to abort:
n
Apply GPU Mode <5> corresponds to “physical_display_enabled_256MB_bar1”
Reading EEPROM (this operation may take up to 30 seconds)
[============================================] 100 %
Successfully updated GPU mode to “physical_display_enabled_256MB_bar1” (Mode 5).
A reboot is required for the update to take effect.