Share via


İşlem yoğunluklu iş yükleri için GPU'ları kullanma (Azure Stack HCI 23H2 üzerinde AKS)

Şunlar için geçerlidir: Azure Stack HCI, sürüm 23H2

Not

Azure Stack HCI 22H2 üzerinde AKS'deki GPU'lar hakkında bilgi için bkz. GPU'ları kullanma (HCI 22H2).

Grafik İşleme Birimleri (GPU), makine öğrenmesi, derin öğrenme ve daha fazlası gibi yoğun işlem gücü kullanımlı iş yükleri için kullanılı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

Aşağıdaki GPU modelleri Azure Stack HCI 23H2 üzerinde AKS tarafından desteklenir:

Üretici GPU modeli Desteklenen sürüm
Nvidia A2 2311.2
Nvidia A16 2402.0

Desteklenen VM boyutları

Her GPU modeli için aşağıdaki VM boyutları Azure Stack HCI 23H2 üzerinde AKS tarafından desteklenir.

Nvidia A2, NC2 A2 SKU'ları tarafından desteklenir

VM boyutu GPU’lar GPU Belleği: GiB Sanal işlemci Bellek: GiB
Standard_NC4_A2 1 16 4 8
Standard_NC8_A2 1 16 8 16
Standard_NC16_A2 2 48 16 64
Standard_NC32_A2 2 48 32 28

Nvidia A16, NC2 A16 SKU'ları tarafından desteklenir

VM boyutu GPU’lar GPU Belleği: GiB Sanal işlemci Bellek: GiB
Standard_NC4_A16 1 16 4 8
Standard_NC8_A16 1 16 8 16
Standard_NC16_A16 2 48 16 64
Standard_NC32_A16 2 48 32 28

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 Stack HCI kümenizdeki her sunucuya yerel olarak Azure Stack HCI, sürüm 23H2 işletim sistemini yükleyin.

2. 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.

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 Stack HCI 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.

Ayrıca, klasörüne gidip aşağıdaki komutları çalıştırarak da komut satırını kullanarak yükleyerek risk azaltma sürücüsünü 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 - Çıkarılır altında Tamam durumunda listelenir:

Get-PnpDevice  | select status, class, friendlyname, instanceid | findstr /i /c:"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

3. Adım: 1. ve 2. adımları yineleyin

HCI kümenizdeki her sunucu için 1. ve 2. adımları yineleyin.

4. Adım: Azure Stack HCI kümesinin dağıtımına devam edin

Azure Stack HCI, sürüm 23H2 dağıtımındaki adımları izleyerek Azure Stack HCI kümesinin dağıtımına devam edin.

Kullanılabilir GPU özellikli VM SKU'larının listesini alma

Azure Stack HCI kümesi dağıtımı tamamlandıktan sonra, dağıtımınızda kullanılabilir VM SKU'larını göstermek için aşağıdaki CLI komutunu çalıştırabilirsiniz. GPU sürücüleriniz doğru şekilde yüklendiyse ilgili GPU VM SKU'ları listelenir:

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 GPU özellikli düğüm havuzlarını kullanmak yalnızca Linux düğüm havuzları için kullanılabilir. 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 2 GPU özellikli (NVDIA 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 havuzunuz oluşturulduktan sonra Kubernetes'te GPU zamanlayabileceğinizi onaylayın. İlk olarak kubectl get nodes 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ın zamanlanabilir olduğunu 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ünmelidir.

kubectl describe <node> | findstr "gpu" 

Çıktı, çalışan düğümünden GPU'ları görüntülemeli ve şöyle görünmelidir:

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 yeni bir YAML dosyası oluşturun; örneğin, gpupod.yaml. 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şlatıldığını, çalıştırmanın tamamlandığını ve GPU'ya 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 uyumsuzluğu hatası alırsanız NVIDIA sürücü matrisi uyumluluk grafiğini gözden geçirin.

SSS

GPU özellikli düğüm havuzunun yükseltildiği sırada ne olur?

GPU özellikli düğüm havuzlarının yükseltilmesi, normal düğüm havuzları için kullanılan sıralı yükseltme desenini izler. Yeni bir VM'deki GPU özellikli düğüm havuzlarının fiziksel konak makinesinde başarıyla oluşturulması için, başarılı cihaz ataması için bir veya daha fazla fiziksel GPU'ya ihtiyaç duyulabilir. Bu kullanılabilirlik, Kubernetes bu yükseltilen düğümde pod zamanladığında uygulamalarınızın çalışmaya devam etmesini sağlar.

Yükseltmeden önce:

  1. Yükseltme sırasında kapalı kalma süresini planlayın.
  2. Standard_NK6 çalıştırıyorsanız fiziksel konak başına fazladan bir GPU veya Standard_NK12 çalıştırıyorsanız fazladan 2 GPU'ya sahip olun. Tam kapasitede çalışıyorsanız ve fazladan GPU'nuz yoksa, yükseltmeden önce düğüm havuzunuzu tek bir düğüme azaltmanızı ve yükseltme başarılı olduktan sonra ölçeği artırmanızı öneririz.

Yükseltme sırasında fiziksel makinemde fazladan fiziksel GPU'lar yoksa ne olur?

Sıralı yükseltmeyi kolaylaştırmak için ek GPU kaynakları olmayan bir kümede yükseltme tetiklendiğinde, bir GPU kullanılabilir olana kadar yükseltme işlemi kilitleniyor. Tam kapasitede çalışıyorsanız ve fazladan GPU'nuz yoksa, yükseltmeden önce düğüm havuzunuzun ölçeğini tek bir düğüme azaltmanızı ve yükseltme başarılı olduktan sonra ölçeği artırmanızı öneririz.

Sonraki adımlar