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 구성이 균일한지 수동으로 확인해야 합니다.
구성하려는 GPU 파티션 수가 있는 컴퓨터에 연결합니다.
Get-VMHostPartitionableGpu
명령을 실행하고 Name 및 ValidPartitionCounts 값을 참조합니다.다음 명령을 실행하여 파티션 수를 구성합니다.
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
구성을 균일하게 유지하려면 시스템의 각 컴퓨터에서 파티션 수 구성 단계를 반복합니다.
게스트 요구 사항
GPU 관리는 다음 Arc VM 워크로드에 대해 지원됩니다.
2세대 VM