Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: AKS di Azure Local
Catatan
Untuk informasi tentang GPU di AKS di Windows Server, lihat Menggunakan GPU di AKS di Windows Server.
Unit Pemrosesan Grafis (GPU) berguna untuk beban kerja intensif komputasi seperti pembelajaran mesin, pembelajaran mendalam, dan banyak lagi. Artikel ini menjelaskan cara menggunakan GPU untuk beban kerja intensif komputasi di AKS Hybrid dan Edge.
Model GPU yang didukung
Azure Kubernetes Service (AKS) di lokal Azure mendukung model GPU berikut. GPU hanya didukung pada kumpulan simpul OS Linux. GPU tidak didukung pada kumpulan simpul OS Windows.
| Produsen | Model GPU | Versi yang didukung |
|---|---|---|
| NVIDIA | A2 | 2311.2 |
| NVIDIA | A16 | 2402.0 |
| NVIDIA | T4 | 2408.0 |
| NVIDIA | L4 | 2512.0 |
| NVIDIA | L40 | 2512.0 |
| NVIDIA | L40S | 2512.0 |
| NVIDIA | RTX Pro 6000 | 2603.0 |
Ukuran VM GPU yang didukung
AKS di Azure Local mendukung ukuran VM berikut untuk setiap model GPU.
NVIDIA T4 didukung oleh SKU NK T4
| Ukuran VM | GPU | Memori GPU: GiB | Unit Pemrosesan Sentral Virtual (vCPU) | Ukuran Memori: GiB |
|---|---|---|---|---|
| Standard_NK6 | 1 | 8 | 6 | 12 |
| Standard_NK12 | 2 | 16 | 12 | 24 |
NVIDIA A2 didukung oleh SKU NC2 A2
| Ukuran VM | GPU | Memori GPU: GiB | Unit Pemrosesan Sentral Virtual (vCPU) | Ukuran Memori: GiB |
|---|---|---|---|---|
| Standard_NC4_A2 | 1 | 16 | 4 | 8 |
| Standard_NC8_A2 | 1 | 16 | 8 | 16 |
| Standard_NC16_A2 | 2 | 32 | 16 | 64 |
| Standard-NC32-A2 | 2 | 32 | 32 | 128 |
NVIDIA A16 didukung oleh SKU NC2 A16
| Ukuran VM | GPU | Memori GPU: GiB | Unit Pemrosesan Sentral Virtual (vCPU) | Ukuran Memori: GiB |
|---|---|---|---|---|
| Standard_NC4_A16 | 1 | 16 | 4 | 8 |
| Standard_NC8_A16 | 1 | 16 | 8 | 16 |
| Standard_NC16_A16 | 2 | 32 | 16 | 64 |
| Standard_NC32_A16 | 2 | 32 | 32 | 128 |
NVIDIA L4 didukung oleh SKU NC2 L4 (Pratinjau)
| Ukuran VM | GPU | Memori GPU: GiB | Unit Pemrosesan Sentral Virtual (vCPU) | Ukuran Memori: GiB |
|---|---|---|---|---|
| Standard_NC16_L4_1 | 1 | 24 | 16 | 64 |
| Standard_NC16_L4_2 | 2 | 48 | 16 | 64 |
| Standard_NC32_L4_1 | 1 | 24 | 32 | 128 |
| Standard_NC32_L4_2 | 2 | 48 | 32 | 128 |
NVIDIA L40 didukung oleh SKU NC2 L40 (Pratinjau)
| Ukuran VM | GPU | Memori GPU: GiB | Unit Pemrosesan Sentral Virtual (vCPU) | Ukuran Memori: GiB |
|---|---|---|---|---|
| Standard_NC16_L40_1 | 1 | 48 | 16 | 64 |
| Standard_NC16_L40_2 | 2 | 96 | 16 | 64 |
| Standard_NC32_L40_1 | 1 | 48 | 32 | 128 |
| Standard_NC32_L40_2 | 2 | 96 | 32 | 128 |
NVIDIA L40S didukung oleh SKU NC2 L40S (Pratinjau)
| Ukuran VM | GPU | Memori GPU: GiB | Unit Pemrosesan Sentral Virtual (vCPU) | Ukuran Memori: GiB |
|---|---|---|---|---|
| Standard_NC16_L40S_1 | 1 | 48 | 16 | 64 |
| Standard_NC16_L40S_2 | 2 | 96 | 16 | 64 |
| Standard_NC32_L40S_1 | 1 | 48 | 32 | 128 |
| Standard_NC32_L40S_2 | 2 | 96 | 32 | 128 |
NVIDIA RTX Pro 6000 didukung oleh NC2 RTX Pro 6000 SKU (Pratinjau)
| Ukuran VM | GPU | Memori GPU: GiB | Unit Pemrosesan Sentral Virtual (vCPU) | Ukuran Memori: GiB |
|---|---|---|---|---|
| Standard_NC16_RTX6000Pro_1 | 1 | 48 | 16 | 64 |
| Standard_NC16_RTX6000Pro_2 | 2 | 96 | 16 | 64 |
| Standard_NC32_RTX6000Pro_1 | 1 | 48 | 32 | 128 |
| Standard_NC32_RTX6000Pro_2 | 2 | 96 | 32 | 128 |
Sebelum Anda mulai
Untuk menggunakan GPU di AKS, pastikan Anda menginstal driver GPU yang diperlukan sebelum memulai penyebaran kluster. Ikuti langkah-langkah di bagian ini.
Langkah 1: instal OS
Instal sistem operasi Lokal Azure secara lokal di setiap server di kluster Azure Local Anda.
Langkah 2: copot pemasangan driver host NVIDIA
Pada setiap komputer host, buka Panel > Kontrol Tambahkan atau Hapus program, hapus instalan driver host NVIDIA, lalu boot ulang komputer. Setelah komputer di-boot ulang, konfirmasikan bahwa driver berhasil dihapus instalasinya. Buka terminal PowerShell yang ditingkatkan dan jalankan perintah berikut:
Get-PnpDevice | select status, class, friendlyname, instanceid | where {$_.friendlyname -eq "3D Video Controller"}
Anda akan melihat perangkat GPU muncul dalam status kesalahan seperti yang ditunjukkan dalam contoh output ini:
Error 3D Video Controller PCI\VEN_10DE&DEV_1EB8&SUBSYS_12A210DE&REV_A1\4&32EEF88F&0&0000
Error 3D Video Controller PCI\VEN_10DE&DEV_1EB8&SUBSYS_12A210DE&REV_A1\4&3569C1D3&0&0000
Langkah 3: Melepas driver host dari host
Saat Anda menghapus instalan driver host, GPU fisik masuk ke status kesalahan. Anda harus melepas semua perangkat GPU dari host.
Untuk setiap perangkat GPU (Pengontrol Video 3D), jalankan perintah berikut di PowerShell. Salin ID instans; misalnya, PCI\VEN_10DE&DEV_1EB8&SUBSYS_12A210DE&REV_A1\4&32EEF88F&0&0000 dari output perintah sebelumnya:
$id1 = "<Copy and paste GPU instance id into this string>"
$lp1 = (Get-PnpDeviceProperty -KeyName DEVPKEY_Device_LocationPaths -InstanceId $id1).Data[0]
Disable-PnpDevice -InstanceId $id1 -Confirm:$false
Dismount-VMHostAssignableDevice -LocationPath $lp1 -Force
Untuk mengonfirmasi bahwa GPU dilepas dengan benar dari host, jalankan perintah berikut. Anda akan melihat GPU dalam status Unknown :
Get-PnpDevice | select status, class, friendlyname, instanceid | where {$_.friendlyname -eq "3D Video Controller"}
Unknown 3D Video Controller PCI\VEN_10DE&DEV_1EB8&SUBSYS_12A210DE&REV_A1\4&32EEF88F&0&0000
Unknown 3D Video Controller PCI\VEN_10DE&DEV_1EB8&SUBSYS_12A210DE&REV_A1\4&3569C1D3&0&0000
Langkah 4: Unduh dan instal driver mitigasi NVIDIA
Perangkat lunak ini mungkin mencakup komponen yang dikembangkan dan dimiliki oleh NVIDIA Corporation atau pemberi lisensinya. Penggunaan komponen ini diatur oleh perjanjian lisensi pengguna akhir NVIDIA.
Lihat dokumentasi pusat data NVIDIA untuk mengunduh driver mitigasi NVIDIA. Setelah mengunduh driver, perluas arsip dan instal driver mitigasi pada setiap komputer host. Anda dapat mengikuti skrip PowerShell ini untuk mengunduh driver mitigasi dan mengekstraknya:
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\
Untuk menginstal driver mitigasi, buka folder yang berisi file yang diekstrak, dan pilih file driver GPU berdasarkan jenis GPU aktual yang diinstal pada host Azure Local Anda. Misalnya, jika jenisnya adalah GPU A2, klik kanan file nvidia_azure_stack_A2_base.inf , dan pilih Instal.
Anda juga dapat menginstal driver mitigasi dengan menjalankan perintah berikut dari baris perintah:
pnputil /add-driver nvidia_azure_stack_A2_base.inf /install
pnputil /scan-devices
Setelah Anda menginstal driver mitigasi, GPU tercantum dalam status OK di bawah Nvidia A2_base - Dismount:
Get-PnpDevice | select status, class, friendlyname, instanceid | where {$_.friendlyname -match "Nvidia"}"
OK Nvidia A2_base - Dismounted PCI\VEN_10DE&DEV_1EB8&SUBSYS_12A210DE&REV_A1\4&32EEF88F&0&0000
OK Nvidia A2_base - Dismounted PCI\VEN_10DE&DEV_1EB8&SUBSYS_12A210DE&REV_A1\4&3569C1D3&0&0000
Langkah 5: ulangi langkah 1 hingga 4
Ulangi langkah 1 hingga 4 untuk setiap server di kluster Azure Local Anda.
Langkah 6: lanjutkan penyebaran kluster Azure Local
Lanjutkan penyebaran kluster Azure Local dengan mengikuti langkah-langkah dalam penyebaran Azure Local.
Mendapatkan daftar SKU VM dengan dukungan GPU yang tersedia
Saat penyebaran kluster Azure Local selesai, jalankan perintah CLI berikut untuk menampilkan SKU VM yang tersedia pada penyebaran Anda. Jika Anda menginstal driver GPU dengan benar, perintah mencantumkan SKU VM GPU yang sesuai:
az aksarc vmsize list --custom-location <custom location ID> -g <resource group name>
Membuat kluster beban kerja baru dengan kumpulan simpul dengan dukungan GPU
Saat ini, Anda hanya dapat menggunakan kumpulan simpul yang diaktifkan GPU untuk kumpulan simpul Linux. Untuk membuat kluster Kubernetes baru:
az aksarc create -n <aks cluster name> -g <resource group name> --custom-location <custom location ID> --vnet-ids <vnet ID>
Contoh berikut menambahkan kumpulan simpul dengan dua simpul yang diaktifkan GPU (NVIDIA A2) dengan SKU VM Standard_NC4_A2 :
az aksarc nodepool add --cluster-name <aks cluster name> -n <node pool name> -g <resource group name> --node-count 2 --node-vm-size Standard_NC4_A2 --os-type Linux
Konfirmasikan bahwa Anda dapat menjadwalkan GPU
Setelah membuat kumpulan simpul GPU, konfirmasikan bahwa Anda dapat menjadwalkan GPU di Kubernetes. Pertama, daftar node di klaster Anda dengan perintah kubectl get nodes:
kubectl get nodes
NAME STATUS ROLES AGE VERSION
moc-l9qz36vtxzj Ready control-plane,master 6m14s v1.22.6
moc-lhbkqoncefu Ready <none> 3m19s v1.22.6
moc-li87udi8l9s Ready <none> 3m5s v1.22.6
Sekarang gunakan perintah kubectl describe node untuk mengonfirmasi bahwa Anda dapat menjadwalkan GPU. Di bawah bagian Kapasitas , GPU muncul sebagai nvidia.com/gpu: 1.
kubectl describe <node> | findstr "gpu"
Output menampilkan GPU dari node pekerja dan terlihat mirip dengan contoh berikut:
Capacity:
cpu: 4
ephemeral-storage: 103110508Ki
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 7865020Ki
nvidia.com/gpu: 1
pods: 110
Jalankan beban kerja yang mendukung GPU
Setelah Anda menyelesaikan langkah-langkah sebelumnya, buat file YAML baru untuk pengujian, seperti gpupod.yaml. Salin dan tempel YAML berikut ke dalam file baru bernama gpupod.yaml, lalu simpan:
apiVersion: v1
kind: Pod
metadata:
name: cuda-vector-add
spec:
restartPolicy: OnFailure
containers:
- name: cuda-vector-add
image: "k8s.gcr.io/cuda-vector-add:v0.1"
resources:
limits:
nvidia.com/gpu: 1
Jalankan perintah berikut untuk menyebarkan aplikasi sampel:
kubectl apply -f gpupod.yaml
Verifikasi bahwa pod sudah dimulai, menyelesaikan prosesnya, dan GPU sudah ditetapkan.
kubectl describe pod cuda-vector-add | findstr 'gpu'
Perintah sebelumnya harus menampilkan satu GPU yang ditetapkan:
nvidia.com/gpu: 1
nvidia.com/gpu: 1
Periksa file log pod untuk melihat apakah pengujian lulus:
kubectl logs cuda-vector-add
Berikut ini adalah contoh output dari perintah sebelumnya:
[Vector addition of 50000 elements]
Copy input data from the host memory to the CUDA device
CUDA kernel launch with 196 blocks of 256 threads
Copy output data from the CUDA device to the host memory
Test PASSED
Done
Jika Anda menerima kesalahan versi tidak cocok saat menggunakan driver, seperti "Versi driver CUDA tidak kompatibel dengan versi runtime CUDA," tinjau bagan kompatibilitas matriks driver NVIDIA.
FAQ
Apa yang terjadi selama peningkatan kumpulan simpul berkemampuan GPU?
Meningkatkan kumpulan simpul berkemampuan GPU mengikuti pola peningkatan bergulir yang sama yang digunakan untuk kumpulan simpul reguler. Agar peningkatan berhasil, Kubernetes perlu membuat VM baru pada komputer host fisik yang memiliki satu atau beberapa GPU fisik yang tersedia untuk penetapan perangkat. Ketersediaan ini memastikan bahwa aplikasi Anda dapat terus berjalan ketika Kubernetes menjadwalkan pod pada simpul yang ditingkatkan ini.
Sebelum Anda memutakhirkan:
- Rencanakan waktu henti selama peningkatan.
- Miliki satu GPU tambahan per host fisik jika Anda menjalankan Standard_NK6 atau dua GPU tambahan jika Anda menjalankan Standard_NK12. Jika Anda berjalan pada kapasitas penuh dan tidak memiliki GPU tambahan, turunkan skala kumpulan simpul Anda ke satu simpul sebelum peningkatan, lalu tingkatkan setelah peningkatan berhasil.
Apa yang terjadi jika saya tidak memiliki GPU fisik tambahan di komputer fisik saya selama peningkatan?
Jika Anda memicu peningkatan pada kluster tanpa sumber daya GPU tambahan untuk memfasilitasi peningkatan bergulir, proses peningkatan macet hingga GPU tersedia. Jika Anda berjalan pada kapasitas penuh dan tidak memiliki GPU tambahan, turunkan skala kumpulan simpul Anda ke satu simpul sebelum peningkatan, lalu tingkatkan setelah peningkatan berhasil.