Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure Local üzerinde AKS için geçerlidir
Uyarı
Windows Server'da AKS'deki GPU'lar hakkında bilgi için bkz. Windows Server'da AKS'de GPU'ları kullanma.
Grafik İşleme Birimleri (GPU), makine öğrenmesi, derin öğrenme ve daha fazlası gibi yoğun işlem gücü gerektiren iş yükleri için kullanışlıdır. Bu makalede, Azure Arc tarafından etkinleştirilen AKS'de işlem yoğunluklu iş yükleri için GPU'ların nasıl kullanılacağı açıklanmaktadır.
Desteklenen GPU modelleri
Azure yerel üzerindeki Azure Kubernetes Service (AKS), aşağıdaki GPU modellerini destekler. GPU'lar yalnızca Linux işletim sistemi düğüm havuzlarında desteklenir. GPU'lar Windows işletim sistemi düğüm havuzlarında desteklenmez.
| Üretici | GPU modeli | Desteklenen sürüm |
|---|---|---|
| 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 |
Desteklenen GPU VM boyutları
Azure Yerel'de AKS, her GPU modeli için aşağıdaki VM boyutlarını destekler.
NVIDIA T4, NK T4 SKU'ları tarafından desteklenir
| VM boyutu | GPU’lar | GPU Belleği: GiB | vCPU (Sanal İşlemci) | Bellek: GiB |
|---|---|---|---|---|
| Standard_NK6 | 1 | 8 | 6 | 12 |
| Standard_NK12 | 2 | 16 | 12 | yirmi dört |
NVIDIA A2, NC2 A2 SKU'ları tarafından desteklenir
| VM boyutu | GPU’lar | GPU Belleği: GiB | vCPU (Sanal İşlemci) | Bellek: 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, NC2 A16 SKU'ları tarafından desteklenir
| VM boyutu | GPU’lar | GPU Belleği: GiB | vCPU (Sanal İşlemci) | Bellek: 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, NC2 L4 Ürün Birimleri (Önizleme) tarafından desteklenir
| VM boyutu | GPU’lar | GPU Belleği: GiB | vCPU (Sanal İşlemci) | Bellek: GiB |
|---|---|---|---|---|
| Standard_NC16_L4_1 | 1 | yirmi dört | 16 | 64 |
| Standard_NC16_L4_2 | 2 | 48 | 16 | 64 |
| Standard_NC32_L4_1 | 1 | yirmi dört | 32 | 128 |
| Standard_NC32_L4_2 | 2 | 48 | 32 | 128 |
NVIDIA L40, NC2 L40 ürün kodları (Önizleme) tarafından desteklenir
| VM boyutu | GPU’lar | GPU Belleği: GiB | vCPU (Sanal İşlemci) | Bellek: 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, NC2 L40S SKU'ları (Önizleme) tarafından desteklenir
| VM boyutu | GPU’lar | GPU Belleği: GiB | vCPU (Sanal İşlemci) | Bellek: 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, NC2 RTX Pro 6000 SKU'ları (Önizleme) tarafından desteklenir
| VM boyutu | GPU’lar | GPU Belleği: GiB | vCPU (Sanal İşlemci) | Bellek: 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 |
Başlamadan önce
AKS Arc'ta GPU'ları kullanmak için, kümenin dağıtımına başlamadan önce gerekli GPU sürücülerini yüklediğinizden emin olun. Bu bölümdeki adımları izleyin.
1. Adım: İşletim sistemini yükleme
Azure Yerel kümenizdeki her sunucuya Azure Yerel işletim sistemini yerel olarak yükleyin.
2. Adım: NVIDIA ana bilgisayar sürücüsünü kaldırma
Her konak makinesinde Denetim Masası > Program Ekle veya Kaldır'a gidin, NVIDIA ana bilgisayar sürücüsünü kaldırın ve ardından makineyi yeniden başlatın. Makine yeniden başlatıldıktan sonra, sürücünün başarıyla kaldırıldığını onaylayın. Yükseltilmiş bir PowerShell terminali açın ve aşağıdaki komutu çalıştırın:
Get-PnpDevice | select status, class, friendlyname, instanceid | where {$_.friendlyname -eq "3D Video Controller"}
GPU cihazlarının bu örnek çıktıda gösterildiği gibi bir hata durumunda göründüğünü görmeniz gerekir:
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
3. Adım: Konak sürücüsünü konaktan çıkarma
Konak sürücüsünü kaldırdığınızda fiziksel GPU hata durumuna geçer. Tüm GPU cihazlarını ana bilgisayardan sökmeniz gerekir.
Her GPU (3B Video Denetleyicisi) cihazı için PowerShell'de aşağıdaki komutları çalıştırın. Örnek kimliğini kopyalayın; örneğin, PCI\VEN_10DE&DEV_1EB8&SUBSYS_12A210DE&REV_A1\4&32EEF88F&0&0000 önceki komut çıkışından:
$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
GPU'ların konaktan doğru şekilde söküldüğünü onaylamak için aşağıdaki komutu çalıştırın. GPU'ları şu Unknown durumda görmeniz gerekir:
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
4. Adım: NVIDIA risk azaltma sürücüsünü indirme ve yükleme
Yazılım, NVIDIA Corporation veya lisans verenleri tarafından geliştirilen ve sahip olunan bileşenleri içerebilir. Bu bileşenlerin kullanımı NVIDIA son kullanıcı lisans sözleşmesine tabidir.
NVIDIA risk azaltma sürücüsünü indirmek için NVIDIA veri merkezi belgelerine bakın. Sürücüyü indirdikten sonra arşivi genişletin ve her konak makinesine risk azaltma sürücüsünü yükleyin. Bu PowerShell betiğini izleyerek risk azaltma sürücüsünü indirip ayıklayabilirsiniz:
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\
Risk azaltma sürücüsünü yüklemek için, ayıklanan dosyaları içeren klasöre gidin ve Azure Yerel konaklarınızda yüklü olan gerçek GPU türüne göre GPU sürücü dosyasını seçin. Örneğin, tür A2 GPU ise, nvidia_azure_stack_A2_base.inf dosyasına sağ tıklayın ve Yükle'yi seçin.
Aşağıdaki komutları komut satırından çalıştırarak risk azaltma sürücüsünü de yükleyebilirsiniz:
pnputil /add-driver nvidia_azure_stack_A2_base.inf /install
pnputil /scan-devices
Risk azaltma sürücüsünü yükledikten sonra, GPU'lar Nvidia A2_base - Dismounted altında Tamam durumunda listelenir:
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
5. Adım: 1 ile 4 arasındaki adımları yineleyin
Azure Yerel kümenizdeki her sunucu için 1 ile 4 arasındaki adımları yineleyin.
6. Adım: Azure Yerel kümesinin dağıtımına devam edin
Azure Yerel dağıtımındaki adımları izleyerek Azure Yerel kümesinin dağıtımına devam edin.
Kullanılabilir GPU özellikli VM SKU'larının listesini alma
Azure Yerel küme dağıtımı tamamlandığında, dağıtımınızda kullanılabilir VM SKU'larını göstermek için aşağıdaki CLI komutunu çalıştırın. GPU sürücülerinizi doğru yüklerseniz, komut ilgili GPU VM SKU'larını listeler:
az aksarc vmsize list --custom-location <custom location ID> -g <resource group name>
GPU özellikli düğüm havuzuyla yeni bir iş yükü kümesi oluşturma
Şu anda yalnızca Linux düğüm havuzları için GPU özellikli düğüm havuzlarını kullanabilirsiniz. Yeni bir Kubernetes kümesi oluşturmak için:
az aksarc create -n <aks cluster name> -g <resource group name> --custom-location <custom location ID> --vnet-ids <vnet ID>
Aşağıdaki örnek, Standard_NC4_A2 VM SKU'su olan iki GPU özellikli (NVIDIA A2) düğüme sahip bir düğüm havuzu ekler:
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
GPU zamanlayabileceğinizi onaylayın
GPU düğüm havuzunuzu oluşturduktan sonra Kubernetes'te GPU zamanlayabileceğinizi onaylayın. İlk olarak kubectl get node komutunu kullanarak kümenizdeki düğümleri listeleyin:
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
Şimdi GPU'ları zamanlayabileceğinizi onaylamak için kubectl describe node komutunu kullanın. Kapasite bölümünün altında GPU nvidia.com/gpu: 1 olarak görünür.
kubectl describe <node> | findstr "gpu"
Çıktı, çalışan düğümün GPU'larını görüntüler ve aşağıdaki örneğe benzerdir:
Capacity:
cpu: 4
ephemeral-storage: 103110508Ki
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 7865020Ki
nvidia.com/gpu: 1
pods: 110
GPU özellikli iş yükü çalıştırma
Önceki adımları tamamladıktan sonra test için gpupod.yaml gibi yeni bir YAML dosyası oluşturun. Aşağıdaki YAML dosyasını kopyalayıp gpupod.yaml adlı yeni dosyaya yapıştırın ve kaydedin:
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
Örnek uygulamayı dağıtmak için aşağıdaki komutu çalıştırın:
kubectl apply -f gpupod.yaml
Pod'un başladığını, çalışmayı tamamladığını ve GPU'nun atandığını doğrulayın.
kubectl describe pod cuda-vector-add | findstr 'gpu'
Önceki komutta atanmış bir GPU gösterilmelidir:
nvidia.com/gpu: 1
nvidia.com/gpu: 1
Testin başarılı olup olmadığını görmek için podun günlük dosyasını denetleyin:
kubectl logs cuda-vector-add
Aşağıda, önceki komutun örnek çıkışı verilmiştir:
[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
Sürücülere çağrı yaparken "CUDA sürücü sürümü CUDA çalışma zamanı sürümü için yetersiz" gibi bir sürüm uyuşmazlığı hatası alırsanız NVIDIA sürücü matrisi uyumluluk grafiğini gözden geçirin.
Sıkça Sorulan Sorular
GPU özellikli bir düğüm havuzunun yükseltildiği sırada ne olur?
GPU özellikli düğüm havuzlarını yükseltmek, normal düğüm havuzları için kullanılan sıralı yükseltme desenini izler. Yükseltmenin başarılı olması için Kubernetes'in fiziksel konak makinesinde cihaz ataması için bir veya daha fazla fiziksel GPU'ya sahip yeni VM'ler oluşturması gerekir. Bu kullanılabilirlik, Kubernetes bu yükseltilen düğümde podları çalıştırmaya karar verdiğinde uygulamalarınızın çalışmaya devam etmesini sağlar.
Yükseltmeden önce:
- Yükseltme sırasında çalışmama süresini planlayın.
- Standard_NK6 çalıştırıyorsanız fiziksel konak başına fazladan bir GPU veya Standard_NK12 çalıştırıyorsanız fazladan iki GPU'ya sahip olun. Tam kapasitede çalışıyorsanız ve fazladan GPU'nuz yoksa, yükseltmeden önce düğüm havuzunuzun ölçeğini tek bir düğüme düşürebilir ve yükseltme başarılı olduktan sonra ölçeği artırabilirsiniz.
Yükseltme sırasında fiziksel makinemde fazladan fiziksel GPU'larım yoksa ne olur?
Sıralı yükseltmeyi kolaylaştırmak için ek GPU kaynakları olmayan bir kümede yükseltme tetiklerseniz, bir GPU kullanılabilir olana kadar yükseltme işlemi yanıt vermemeye başlar. Tam kapasitede çalışıyorsanız ve fazladan GPU'nuz yoksa, yükseltmeden önce düğüm havuzunuzun ölçeğini tek bir düğüme düşürebilir ve yükseltme başarılı olduktan sonra ölçeği artırabilirsiniz.