본문 바로가기

aws

aws EC2 Window Server에서 GPU 인식시키기

 

 

가상 환경에서 버츄얼 캐릭터를 띄워서

방송 플랫폼에 송출시키는 프로젝트를 수행 중이다.

 

 

과정에서, GPU를 사용할 필요가 있다 느껴 Window Server를 선택했다.

 

 

그러나 과정이 만만치 않았는데,

수많은 삽질 끝에 GPU를 인식시켰다.

 

 

 

아래는 나처럼 삽질하지 말고

제발 편하게 연결하라는 의미에서 이 글을 남긴다.

 

 

 

 

 

 

1. Window Server 이미지는 2016이나 2019를 선택한다.

 

EC2에서 Window 운영체제로 가상머신을 생성한다면 Window Server만 나타난다.

 

 

(정정)

Window Server base 2022에서 GPU가 제대로 인식되는 게 확인됐다.

그 중, Window Server base 2022의 경우 GPU가 인식되지 않는다. (원인 불명)

 

 

생성 과정에서 인스턴스는 g4dn.2xlarge를 선택했다.

(사실 g4dn.xlarge를 써도 상관없긴 하다. 그 정도로 gpu 효율이 좋다.)

 

 

 

 

 

 

 

 

2. GPU 드라이버 설치하기

 

앞서 언급한 인스턴스는 Tesla T4 GPU를 사용한다.

여기에 맞춰 드라이버를 설치하지 않으면 인식 문제가 발생한다.

 

 

때문에, 각자 선택한 GPU에 맞는 드라이버를 선택하여 설치하자.

 

 

 

 

당연 GPU 드라이버가 없으니 명령어 인식을 못한다.

 

 

 

 

 

 

 

https://www.nvidia.co.kr/Download/Find.aspx?lang=kr

 

위 URL로 들어 가, 필요한 GPU 드라이버를 설치하면 된다.

 

 

나는 위 옵션으로 설정하고 474.44 version으로 설치했다.

 

 

가상머신 스팩을 잘 확인하고 적합한 드라이버를 찾아서 설치하면 된다.

 

 

 

 

 

 

설치 과정에서 설치 옵션은 Custom으로 설정한다.

 

아직 GPU 드라이버를 설치하지 않았으니 당연 없겠지만,

혹시 모르는 파일이 존재할 수도 있다.

 

때문에, Custom으로 잔여 파일을 없애고 설치하는 게 낫다.

 

 

 

 

 

 

 

 

 

체크 박스를 모두 체크하고 설치를 진행한다.

 

 

 

 

 

 

설치가 모두 끝나면 GPU 드라이버를 클릭한다.

아마 라이센스 사용에 동의한다는 내용이 출력될텐데, Agree를 누르면 된다.

 

 

 

 

Nvidia-smi

명령어를 입력해보면 아래와 같이 정보가 나온다.

 

GPU 정보가 제대로 나오면 인식된 상태다.

 

 

 

 

 

 

 

 

해치웠나?

 

작업관리자를 확인해보면 GPU가 안 보인다.

 

분명 인식은 되는데 작업관리자에서 안 뜬다면
GPU 상태에 문제가 있단 뜻이다.

 

 

 

아까 명령어로 GPU 정보를 확인했을 때, TCC라는 게 보였을 텐데,

 

관련 내용을 GPT에게 물어봤다.

 

WDDM 모드 문제: 
NVIDIA의 GPU 드라이버는 TCC (Tesla Compute Cluster) 또는 
WDDM (Windows Display Driver Model) 중 하나의 모드로 동작할 수 있습니다. 

TCC 모드는 Windows Server와 같은 
데이터 센터 환경에 최적화되어 있지만, 
WDDM 모드는 디스플레이 기능을 활성화합니다. 

작업 관리자에서 GPU 정보가 보이지 않는 문제는 
GPU가 TCC 모드로 동작 중일 때 발생할 수 있습니다. 

WDDM 모드로 변경하여 문제를 해결할 수 있습니다.

 

 

설정을 WDDM으로 바꿔야 한다.

 

nvidia-smi -g 0 -dm 0

현재 GPU 모드를 TCC에서 WDDM으로 변경하는 명령어이다.

 

 

작업이 반영됐다는 내용과 오류가 나타난다.

nvidia-smi 명령어로 확인하면 여전히 TCC 모드상태다.

 

 

 

시도해 본 것들

여러 드라이버 버전을 설치해보면서 바꿔보기도 하고

CUDA를 따로 설치해보기도 했다.

 

 

Window Server 버전 문제일 수도 있어서

2022, 2019, 2016 셋 다 해봤다.

 

 

services.msc 들어가서 GPU 관련 설정

GPU 드라이버 및 Experience 같은 프로그램도 설치해봤다.

 

 

 

그러나, 모두 해결되지 않았다.

 

 

 

 

 

그렇게, 몇 주간 삽질 끝에

방법을 찾은 게 레지스트리 편집기이다.

 

 

 

 

 

레지스트리 편집기 실행하기

 

 

https://linustechtips.com/topic/1496913-can-i-enable-wddm-on-a-tesla-p40/

 

Can I enable WDDM on a tesla P40?

I need to change these two to 0 ( -dm 0 and gom = 0 ). can it be done on a tesla P40?

linustechtips.com

 

 

위 사이트에서 해답을 얻었다.

 

단, GPU 모델마다 값이 모두 다르기 때문에 잘 찾아봐야 한다.

아래 나오는 방법은 Tesla T4 기준이다.

 

 

 

 

OS 기준은 Window 10 or 11 기준이다.

 

 

 

먼저 win + R키로 레지스트리 편집기를 실행한다.

regedit

 

 

다음 경로를 따라 들어간다

 

\HKEY_LOCAL_MACHINE

\SYSTEM

\CurrentControlSet

\Control

\Class

\{4d36e968-e325-11ce-bfc1-08002be10318} .

 

 

 

 

 

폴더에서 DriverDesc가 자신이 선택한 GPU와 일치하는가 확인한다.

 

하위폴더에는 0001 0002 0003 과 같은 폴더가 있을텐데, 여기서 찾아보면 된다.

 

 

 

이제 다음 값들을 수정한다.

AdapterType을 1 (10진수)로 변경한다.

FeatureScore의 값을 D1 (16진수)으로 변경한다.

 

DWORD(32bit) 파일을 새로 만들고,
파일 명은 GridLicensedFeatures로 입력,
값을 7 (10진수)로 변경한다.

 

 

새로고침을 한 번 한다. (F5)

 

AdapterType 파일을 삭제한다.

 

DWORD (32bit) 파일을 만들고,
파일명은 EnableMsHybrid로 입력,
값은 1 (10진수)로 변경한다.

 

 

 

관련 설정을 모두 끝냈으면 재부팅을 하자.

 

 

 

재부팅 후, 작업관리자를 확인해보면

아래와 같이 GPU가 제대로 인식됨을 확인할 수 있다.

 

 

 

 

 

 

 

정리

 

앞으로 Window 환경에서 GPU를

인식시키는 경우가 또 있을진 모르겠으나,

 

다른 사람들이 이런 작업을 해야 한다면

이 글을 읽고 무난하게 연결했으면 하는 바람에 글을 남긴다.