다음을 통해 공유


Azure 로컬에 대한 GPU 준비(미리 보기)

적용 대상: Azure Local 2311.2 이상

이 문서에서는 Arc VM(가상 머신) 및 Azure Arc에서 사용하도록 설정된 AKS에서 실행되는 계산 집약적 워크로드를 위해 Azure 로컬 인스턴스에서 GPU(그래픽 처리 장치)를 준비하는 방법을 설명합니다. GPU는 기계 학습 및 딥 러닝과 같은 계산 집약적 워크로드에 사용됩니다.

Important

이 기능은 현재 미리 보기로 제공됩니다. 베타, 미리 보기로 제공되거나 아직 일반 공급으로 릴리스되지 않은 Azure 기능에 적용되는 약관은 Microsoft Azure 미리 보기에 대한 추가 사용 약관을 참조하세요.

Azure 로컬에서 GPU 연결

Azure Local의 두 가지 방법 중 하나로 GPU를 연결할 수 있습니다.

  • DDA(불연속 디바이스 할당) - 실제 GPU를 워크로드에 헌정할 수 있습니다. DDA 배포에서 가상화된 워크로드는 네이티브 드라이버에서 실행되며 일반적으로 GPU의 기능에 대한 모든 권한을 갖습니다. DDA는 최고 수준의 앱 호환성 및 잠재적 성능을 제공합니다.

  • GPU-P(GPU 분할) - GPU를 전용 소수 파티션으로 분할하여 여러 워크로드와 GPU를 공유할 수 있습니다.

GPU를 사용하는 두 옵션 간의 다음 기능 및 지원 차이점을 고려합니다.

설명 개별 디바이스 할당 GPU 분할
GPU 리소스 모델 전체 디바이스 동일하게 분할된 디바이스
VM 밀도 낮음(GPU 1대 1 VM) 높음(여러 VM에 하나의 GPU)
앱 호환성 공급 기업에서 제공하는 모든 GPU 기능(DX 12, OpenGL, CUDA) 공급 기업에서 제공하는 모든 GPU 기능(DX 12, OpenGL, CUDA)
GPU VRAM GPU에서 지원하는 최대 VRAM 파티션당 GPU에서 지원하는 최대 VRAM
게스트의 GPU 드라이버 GPU 공급업체 드라이버(NVIDIA) GPU 공급업체 드라이버(NVIDIA)

지원되는 GPU 모델

지원되는 솔루션 및 GPU의 전체 목록을 보려면 Azure 로컬 솔루션을 참조하고 왼쪽 메뉴에서 GPU 지원을 선택하여 옵션을 확인하세요.

NVIDIA는 가상 GPU 소프트웨어와 별도로 워크로드를 지원합니다. 자세한 내용은 Microsoft Azure Local - 지원되는 NVIDIA GPU 및 유효성이 검사된 서버 플랫폼을 참조하세요.

AKS 워크로드의 경우 ARC용 AKS에 대한 GPU를 참조 하세요.

다음 GPU 모델은 Arc VM 워크로드에 DDA 및 GPU-P를 모두 사용하여 지원됩니다.

  • NVIDIA A2
  • NVIDIA A16

이러한 추가 GPU 모델은 Arc VM 워크로드에 GPU-P(전용)를 사용하여 지원됩니다.

  • NVIDIA A10
  • NVIDIA A40
  • NVIDIA L4
  • NVIDIA L40
  • NVIDIA L40S

호스트 요구 사항

Azure 로컬 호스트는 다음 요구 사항을 충족해야 합니다.

  • 시스템에서 GPU를 지원하는 Azure 로컬 솔루션을 지원해야 합니다. 옵션을 찾아보려면 Azure 로컬 카탈로그참조하세요.

  • Azure Local에 액세스할 수 있습니다.

  • 시스템의 모든 컴퓨터에서 GPU에 대한 동질적인 구성을 만들어야 합니다. 동일한 구성은 GPU의 동일한 메이크 및 모델을 설치하는 것으로 구성됩니다.

  • GPU-P의 경우 시스템에 있는 각 컴퓨터의 BIOS에서 가상화 지원 및 SR-IOV가 사용하도록 설정되어 있는지 확인합니다. BIOS에서 올바른 설정을 식별할 수 없는 경우 하드웨어 공급업체에 문의하세요.

각 호스트에서 GPU 드라이버 준비

각 컴퓨터에 대한 GPU 드라이버를 준비하고 설치하는 프로세스는 DDA와 GPU-P 간에 다소 다릅니다. 상황에 해당하는 프로세스를 따릅니다.

각 호스트에서 GPU 찾기

먼저 각 컴퓨터에 대해 설치된 드라이버가 없는지 확인합니다. 호스트 드라이버가 설치된 경우 호스트 드라이버를 제거하고 컴퓨터를 다시 시작합니다.

호스트 드라이버를 제거하거나 드라이버가 설치되지 않은 경우 다음 명령을 사용하여 관리자 권한으로 PowerShell을 실행합니다.

Get-PnpDevice -Status Error | fl FriendlyName, ClusterId

GPU의 이름 및 인스턴스 ID를 나열하는 예제 출력에 표시된 것처럼 3D Video Controller GPU 디바이스가 오류 상태로 표시됩니다.

[ASRR1N26R02U46A]: PS C:\Users\HCIDeploymentUser\Documents> Get-PnpDevice - Status Error

Status		Class			FriendlyName
------		-----			------------
Error					SD Host Controller
Error					3D Video Controller
Error					3D Video Controller
Error		USB			Unknown USB Device (Device Descriptor Request Failed)

[ASRR1N26R02U46A]: PS C:\Users\HCIDeploymentUser\Documents> Get-PnpDevice - Status Error | f1 InstanceId

InstanceId : PCI\VEN_8086&DEV_18DB&SUBSYS_7208086REV_11\3&11583659&0&E0

InstanceId : PCI\VEN_10DE&DEV_25B6&SUBSYS_157E10DE&REV_A1\4&23AD3A43&0&0010

InstanceId : PCI\VEN_10DE&DEV_25B6&SUBSYS_157E10DE&REV_A1\4&17F8422A&0&0010

InstanceId : USB\VID_0000&PID_0002\S&E492A46&0&2

DDA 사용

DDA를 사용하는 경우 다음 프로세스를 따릅니다.

1. 호스트에서 GPU 사용 안 함 및 분리

DDA의 경우 호스트 드라이버를 제거하거나 새 Azure 로컬 설정이 있는 경우 실제 GPU는 오류 상태로 전환됩니다. 계속하려면 모든 GPU 디바이스를 분리해야 합니다. 장치 관리자 또는 PowerShell을 사용하여 이전 단계에서 얻은 GPU를 ClusterID 사용하지 않도록 설정하고 분리할 수 있습니다.

$id1 = "GPU_instance_ID"
Disable-PnpDevice -ClusterId $id1 -Confirm:$false
Dismount-VMHostAssignableDevice -ClusterPath $id1 -Force

호스트 컴퓨터에서 GPU가 올바르게 분리되었는지 확인합니다. 이제 GPU가 상태가 됩니다.Unknown

Get-PnpDevice -Status Unknown | fl FriendlyName, ClusterId

시스템의 각 컴퓨터에 대해 이 프로세스를 반복하여 GPU를 준비합니다.

2. 완화 드라이버 다운로드 및 설치

이 소프트웨어에는 NVIDIA Corporation 또는 해당 라이센서가 개발하고 소유한 구성 요소가 포함될 수 있습니다. 이러한 구성 요소의 사용은 NVIDIA 최종 사용자 라이선스 계약의 적용을 받습니다.

해당 NVIDIA 완화 드라이버를 다운로드하려면 NVIDIA 설명서를 참조하세요. 드라이버를 다운로드한 후 보관 파일을 확장하고 각 호스트 컴퓨터에 완화 드라이버를 설치합니다. 다음 PowerShell 스크립트를 사용하여 완화 드라이버를 다운로드하고 추출합니다.

Invoke-WebRequest -Uri "https://docs.nvidia.com/datacenter/tesla/gpu-passthrough/nvidia_azure_stack_inf_v2022.10.13_public.zip" -OutFile "nvidia_azure_stack_inf_v2022.10.13_public.zip"
mkdir nvidia-mitigation-driver
Expand-Archive .\nvidia_azure_stack_inf_v2022.10.13_public.zip .\nvidia-mitigation-driver

완화 드라이버 파일이 추출되면 GPU의 올바른 모델에 대한 버전을 찾아 설치합니다. 예를 들어 NVIDIA A2 완화 드라이버를 설치하는 경우 다음을 실행합니다.

pnputil /add-driver nvidia_azure_stack_A2_base.inf /install /force

이러한 드라이버의 설치를 확인하려면 다음을 실행합니다.

pnputil /enum-devices OR pnputil /scan-devices

다음에서 올바르게 식별된 GPU를 볼 수 있어야 합니다.Get-PnpDevice

Get-PnpDevice -Class Display | fl FriendlyName, ClusterId

Azure Local의 각 호스트에 대해 위의 단계를 반복합니다.

GPU-P 사용

GPU-P를 사용하는 경우 다음 프로세스를 수행합니다.

호스트 드라이버 다운로드 및 설치

GPU-P에는 DDA와 다른 호스트 수준의 드라이버가 필요합니다. NVIDIA GPU의 경우 각 호스트 및 GPU-P를 사용하는 각 VM에 NVIDIA vGPU 소프트웨어 그래픽 드라이버가 필요합니다. 자세한 내용은 최신 버전의 NVIDIA vGPU 설명서 및 클라이언트 라이선스 사용자 가이드의 라이선스에 대한 세부 정보를 참조하세요.

호스트 컴퓨터에서 GPU 3D Video Controller 를 식별한 후 호스트 vGPU 드라이버를 다운로드합니다. NVIDIA GRID 라이선스를 통해 적절한 호스트 드라이버 .zip 파일을 가져올 수 있어야 합니다.

다음 폴더를 가져와서 호스트 컴퓨터로 이동해야 합니다. \vGPU_<Your_vGPU_version>_GA_Azure_Stack_HCI_Host_Drivers

\vGPU_<Your_vGPU_version>_GA_Azure_Stack_HCI_Host_Drivers\Display.Driver로 이동하여 드라이버를 설치합니다.

pnputil /add-driver .\nvgridswhci.inf /install /force

이러한 드라이버의 설치를 확인하려면 다음을 실행합니다.

pnputil /enum-devices

다음에서 올바르게 식별된 GPU를 볼 수 있어야 합니다.Get-PnpDevice

Get-PnpDevice -Class Display | fl FriendlyName, ClusterId

NVIDIA 시스템 관리 인터페이스 nvidia-smi 를 실행하여 다음과 같이 호스트 컴퓨터의 GPU를 나열할 수도 있습니다.

nvidia-smi

드라이버가 올바르게 설치된 경우 다음 샘플과 유사한 출력이 표시됩니다.

Wed Nov 30 15:22:36 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 527.27       Driver Version: 527.27       CUDA Version: N/A      |
|-------------------------------+----------------------+----------------------+
| GPU  Name            TCC/WDDM | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA A2          WDDM  | 00000000:65:00.0 Off |                    0 |
|  0%   24C    P8     5W /  60W |  15192MiB / 15356MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   1  NVIDIA A2          WDDM  | 00000000:66:00.0 Off |                    0 |
|  0%   24C    P8     5W /  60W |  15192MiB / 15356MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
 
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

GPU 파티션 수 구성

PowerShell에서 GPU 파티션 수를 구성하려면 다음 단계를 수행합니다.

참고 항목

PowerShell을 사용하는 경우 Azure Local의 모든 컴퓨터에서 GPU 구성이 균일한지 수동으로 확인해야 합니다.

  1. 구성하려는 GPU 파티션 수가 있는 컴퓨터에 연결합니다.

  2. Get-VMHostPartitionableGpu 명령을 실행하고 NameValidPartitionCounts 값을 참조합니다.

  3. 다음 명령을 실행하여 파티션 수를 구성합니다. GPU-name을(를) Name 값으로 바꾸고 partition-count을(를) ValidPartitionCounts 값에서 지원되는 개수 중 하나로 바꿉니다.

    Set-VMHostPartitionableGpu -Name "<GPU-name>" -PartitionCount <partition-count>
    

    예를 들어 다음 명령은 파티션 수를 다음과 같이 4구성합니다.

    PS C:\Users> Set-VMHostPartitionableGpu -Name "\\?\PCI#VEN_10DE&DEV_25B6&SUBSYS_157E10DE&REV_A1#4&18416dc3&0&0000#{064092b3-625e-43bf-9eb5-dc845897dd59}" -PartitionCount 4
    

    명령을 Get-VMHostPartitionableGpu | FL Name,ValidPartitionCounts,PartitionCount 다시 실행하여 파티션 수가 .로 4설정되어 있는지 확인할 수 있습니다.

    샘플 출력은 다음과 같습니다.

    PS C:\Users> Get-VMHostPartitionableGpu | FL Name,ValidPartitionCounts,PartitionCount
    
    Name                    : \\?\PCI#VEN_10DE&DEV_25B6&SUBSYS_157E10DE&REV_A1#4&18416dc3&0&0000#{064092b3-625e-43bf-9eb5-dc845897dd59}
    ValidPartitionCounts    : {16, 8, 4, 2...}
    PartitionCount          : 4
    
    Name                    : \\?\PCI#VEN_10DE&DEV_25B6&SUBSYS_157E10DE&REV_A1#4&5906f5e&0&0010#{064092b3-625e-43bf-9eb5-dc845897dd59}
    ValidPartitionCounts    : {16, 8, 4, 2...}
    PartitionCount          : 4
    
  4. 구성을 균일하게 유지하려면 시스템의 각 컴퓨터에서 파티션 수 구성 단계를 반복합니다.

게스트 요구 사항

GPU 관리는 다음 Arc VM 워크로드에 대해 지원됩니다.

다음 단계