Azure Kubernetes Service'te (AKS) tam olarak yönetilen bir GPU düğüm havuzu oluşturma (önizleme)

NVIDIA GPU iş yüklerini geleneksel olarak Azure Kubernetes Hizmeti'nde (AKS) çalıştırmak, her GPU düğümüne NVIDIA GPU sürücüsü, Kubernetes cihaz eklentisi ve bir GPU metrikleri dışa aktarıcı yüklenmesini ve bunların korunmasını gerektirir. Bu bileşenler GPU zamanlamasını, kapsayıcı düzeyinde GPU erişimini ve telemetriyi etkinleştirir, ancak bunları el ile veya NVIDIA GPU Operatörü aracılığıyla yüklemek işlem yükü ekler.

Tam yönetilen GPU düğümleri (önizleme) ile AKS, NVIDIA GPU sürücüsünü, cihaz eklentisini ve Veri Merkezi GPU Yöneticisi (DCGM) metrik dışa aktarıcısını sizin için yükler ve korur. GPU düğümü havuzu oluşturma işlemi tek bir adıma dönüşür ve GPU kapasitesi diğer AKS düğüm havuzları gibi davranır.

gpuProfile.nvidia altında iki alan kullanarak yönetilen bir GPU düğümü havuzu yapılandırabilirsiniz.

  • managementMode (Managed veya Unmanaged) AKS'nin tam yönetilen GPU yığınını (sürücü, cihaz eklentisi ve DCGM ölçümleri veren) veya yalnızca sürücüyü yükleyip yüklemediğini denetler. Varsayılan değer: Unmanaged.
  • migStrategy (None, Singleveya Mixed) A100 ve H100 gibi desteklenen GPU SKU'ları için Çok Örnekli GPU (MIG) stratejisini ayarlar. Varsayılan değer: None.

Bu makalede yönetilen bir GPU düğüm havuzu sağlar, isteğe bağlı olarak MIG'yi etkinleştirir, yığını doğrular ve örnek bir GPU iş yükü çalıştırırsınız.

Önemli

AKS önizleme özellikleri self servis ve kabul temelinde kullanılabilir. Önizlemeler "olduğu gibi" ve "mevcut olduğu şekilde" sağlanmakta olup, hizmet seviyesi anlaşmalarına ve sınırlı garantilere dahil edilmemektedir. AKS önizlemeleri, müşteri desteği ekibi tarafından maksimum çaba gösterilerek kısmen ele alınmaktadır. Bu nedenle, bu özellikler üretim kullanımı için tasarlanmamıştır. Daha fazla bilgi için aşağıdaki destek makalelerine bakın:

Başlamadan önce

Yönetilen GPU bileşenleri

Yönetilen GPU düğüm havuzu her düğümde aşağıdaki bileşenleri içerebilir:

Bileşen Ne yapar? AKS'nin yönettiği şeyler
NVIDIA GPU sürücüsü İşletim sisteminin ve kapsayıcıların GPU donanımıyla konuşmasına olanak sağlayan çekirdek modülleri ve kullanıcı alanı kitaplıkları. Sürücü sürümü seçimi, düğüm sağlama sırasında yükleme ve düğüm görüntüsü yükseltmelerinden sonra yeniden yükleme.
NVIDIA Kubernetes cihaz eklentisi Podların bunları isteyebilmesi için GPU kaynaklarını (nvidia.com/gpu, nvidia.com/mig-*) kubelet'e tanıtan DaemonSet eşdeğeri. Her GPU düğümünde dağıtım, yapılandırma (MIG stratejisi dahil) ve yaşam döngüsü.
NVIDIA DCGM ve DCGM metrikleri dışa aktarıcısı Veri Merkezi GPU Yöneticisi, GPU sistem durumu ve kullanım verilerini toplar ve bağlantı noktasında DCGM_FI_DEV_GPU_UTILPrometheus ölçümlerini (örneğin , DCGM_FI_DEV_GPU_TEMP19400) kullanıma sunar. Yükleme, hizmet etkinleştirme ve kubernetes.azure.com/dcgm-exporter=enabled ölçümleri toplamak için kullanılan düğüm etiketi.
GPU sistem durumu sinyalleri NPD sinyalleri, UnhealthyNvidiaDevicePlugin ve UnhealthyNvidiaDCGMServices gibi GPU'ya özgü düğüm koşullarını ortaya çıkartır. GPU düğümlerinde NPD izleme ve koşul raporlama.

Profilleri yükleme

AKS'nin bu bileşenlerden hangisini yükleyeceğine iki gpuProfile alan karar verir:

  • gpuProfile.driver (Install veya None): AKS'nin NVIDIA GPU sürücüsünü yükleyip yüklemediği.
  • gpuProfile.nvidia.managementMode (Managed veya Unmanaged): AKS'nin sürücünün üzerine Kubernetes'e yönelik GPU yığınını da yükleyip yüklemediği.

Birlikte üç yükleme profili oluşturur:

Profili yükleme CLI bayrakları AKS'nin yüklediği ve yönettiği şeyler
Tam yönetilen yığın --enable-managed-gpu=true (veya bayrak olmaması) Yukarıdaki dört bileşenin tümü: sürücü, cihaz eklentisi, DCGM ölçümlerini dışa aktaran ve NPD'de GPU sağlığını izleyen.
Yalnızca sürücü (varsayılan) --enable-managed-gpu=false Yalnızca NVIDIA GPU sürücüsü. Cihaz eklentisini, ölçümler vereni ve sistem durumu izlemeyi kendiniz yükler ve yönetirsiniz (örneğin, NVIDIA GPU Operatörü ile).
Hiçbiri (BYO) --enable-managed-gpu=false --gpu-driver None Hiçbir şey. AKS dört bileşenin hiçbirini yüklemez. Tam yığının sahibi sizsiniz. Bkz . Kendi GPU sürücünüzü getirme.

Varsayılanlar ve geçersiz kılmalar

  • Varsayılanlar: --enable-managed-gpu veya --gpu-driver geçmezseniz, AKS yalnızca Sürücü profilini NVIDIA GPU özellikli bir VM boyutuyla oluşturulan düğüm havuzuna uygular.
  • Geçersiz kılma: managementMode: Managed sürücü gerektirir, bu nedenle sürücü hala yüklüyken --gpu-driver None ve --enable-managed-gpu=true yoksayılır. Sürücüyü atlamak için hem --enable-managed-gpu=false hem de --gpu-driver None ayarını yapın.
  • Değişmezlik: managementMode, migStrategyve driver oluşturma zamanında düzeltilir. Profili değiştirmek için yeni bir düğüm havuzu oluşturun.

CLI uzantısını aks-preview yükleme

  1. aks-preview komutu ile az extension add CLI uzantısını yükleyin. Sürüm 19.0.0b29 veya üzeri gereklidir.

    az extension add --name aks-preview
    
  2. komutunu kullanarak en son sürümü yüklediğinizden emin olmak için uzantıyı güncelleştirin az extension update .

    az extension update --name aks-preview
    

Özellik bayrağını ManagedGPUExperiencePreview kaydetme

ManagedGPUExperiencePreview komutunu kullanarak aboneliğinize özellik bayrağını az feature register kaydedin.

az feature register --namespace Microsoft.ContainerService --name ManagedGPUExperiencePreview

Sınırlamalar

  • Bu özellik şu anda yalnızca NVIDIA GPU özellikli sanal makine (VM) boyutlarını destekler.
  • GENEL amaçlı düğüm havuzunu GPU VM boyutu eklemek için güncelleştirmek AKS'de desteklenmez.
  • GPU ölçümleri desteklenmediğinden Windows düğüm havuzları bu özellikte desteklenmez. Windows GPU düğüm havuzları oluşturduğunuzda AKS, sürücüleri ve DirectX cihaz eklentisini otomatik olarak yükler ve yönetir. Daha fazla bilgi için AKS Windows GPU belgelerine bakın.
  • Bu özelliği kullanmak için mevcut çok örnekli GPU düğümü havuzlarınızı geçirmeniz desteklenmez.
  • Mevcut bir NVIDIA GPU düğüm havuzundan yönetilen GPU düğüm havuzuna yerinde yükseltmeler desteklenmez. Mevcut GPU düğümlerinizi kordonlayın ve boşaltın, ardından iş yüklerinizi --enable-managed-gpu=true ile oluşturulan yeni bir GPU düğümü havuzuna yeniden dağıtın. Daha fazla bilgi için bkz. AKS'de düğüm havuzlarını yeniden boyutlandırma.
  • managementModealtındaki migStrategy , driverve gpuProfile alanları düğüm havuzu oluşturulduktan sonra sabittir. Bu değerleri değiştirmek için yeni bir düğüm havuzu oluşturun.
  • Küme otomatik ölçeklendiricisi, önizleme sırasında yönetilen GPU düğümü havuzlarında desteklenmez. Bu havuzları el ile ölçeklendirin.

Uyarı

GPU özellikli VM'ler, daha yüksek fiyatlandırma ve bölge kullanılabilirliğine tabi özel donanımlar içerir. Daha fazla bilgi için fiyatlandırma aracı ve bölge kullanılabilirliği konularına bakın.

AKS tarafından yönetilen GPU düğüm havuzu oluşturma (önizleme)

Var olan bir AKS kümesine --enable-managed-gpu=true'yü az aks nodepool add kullanarak yönetilen bir GPU düğüm havuzu ekleyin. gpuProfile.nvidia.managementMode Managed AKS, GPU sürücüsünü, cihaz eklentisini ve DCGM ölçümlerini otomatik olarak verir ve yükler.

Varsayılan Ubuntu işletim sistemi (OS) SKU'su kullanmak için, bir işletim sistemi SKU'su belirtmeden düğüm havuzunu oluşturursunuz. Düğüm havuzu, kümenin Kubernetes sürümü temel alınarak varsayılan işletim sistemi için yapılandırılmıştır.

  1. bayrağıyla az aks nodepool add komutunu kullanarak --enable-managed-gpu=true kümenize bir düğüm havuzu ekleyin.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name gpunp \
        --node-count 1 \
        --node-vm-size Standard_NC6s_v3 \
        --node-taints sku=gpu:NoSchedule \
        --enable-managed-gpu=true
    
  2. Yönetilen NVIDIA GPU yazılım bileşenlerinin başarıyla yüklendiğini onaylayın:

    az aks nodepool show \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name gpunp
    

    Çıkışınız aşağıdaki değerleri içermelidir:

    ...
    "gpuProfile": {
        "driver": "Install",
        "driverType": "",
        "nvidia": {
            "managementMode": "Managed",
            "migStrategy": null
        }
    },
    ...
    

Yönetilen Çok Örnekli GPU (MIG) düğüm havuzu oluşturma (önizleme)

Çok Örnekli GPU'yu destekleyen GPU SKU'ları için (A100 ve H100 gibi), düğüm havuzu oluşturma sırasında --gpu-mig-strategy bayrağıyla bir MIG stratejisi yapılandırın. Strateji, MIG bölümlerinin Kubernetes'e nasıl açık olduğunu denetler:

  • Single: Tüm MIG örnekleri standart nvidia.com/gpu kaynak altında toplanır.
  • Mixed: Her bir MIG profili, nvidia.com/mig-1g.10gb gibi ayrı bir kaynak olarak sunulmaktadır.
  • None (varsayılan): MIG yapılandırılmadı.

migStrategy Düğüm havuzu oluşturulduktan sonra alan sabittir.

MIG bölümleme, desteklenen VM boyutları ve GPU örneği profilleri hakkında bilgi almak için AKS'te çok örnekli GPU düğümü havuzu oluşturma ve NVIDIA Çok Örnekli GPU belgelerine bakın.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mignp \
    --node-count 1 \
    --node-vm-size Standard_NC24ads_A100_v4 \
    --node-taints sku=gpu:NoSchedule \
    --enable-managed-gpu=true \
    --gpu-instance-profile MIG1g \
    --gpu-mig-strategy Single

Bu yapılandırmayla podlar standart nvidia.com/gpu kaynak adını kullanarak GPU kaynakları istemektedir.

Yönetilen GPU düğüm havuzunu doğrulama (önizleme)

Düğüm havuzu hazır olduktan sonra, tam yönetilen yığının yüklendiğini ve sağlıklı olduğunu onaylamak için aşağıdaki kontrolleri gerçekleştirin.

  1. Düğüm Sorun Algılayıcısı'ndan (NPD) GPU'ya özgü düğüm koşullarını doğrulayın:

    GPU_NODE=$(kubectl get nodes -l agentpool=gpunp -o jsonpath='{.items[0].metadata.name}')
    kubectl describe node $GPU_NODE
    

    Yönetilen bir GPU düğümünde, aşağıdaki koşulların her ikisi de şunu bildirmelidir False:

    Condition Statü Nedeni
    UnhealthyNvidiaDevicePlugin False HealthyNvidiaDevicePlugin
    UnhealthyNvidiaDCGMServices False HealthyNvidiaDCGMServices
  2. Yönetilen GPU etiketinin düğümde mevcut olduğunu doğrulayın:

    kubectl get node $GPU_NODE -o jsonpath='{.metadata.labels.kubernetes\.azure\.com/dcgm-exporter}'
    

    Beklenen çıkış: enabled.

  3. GPU kaynaklarının düğümün tahsis edilebilir kaynaklarında tanıtıldığını doğrulayın.

    kubectl get node $GPU_NODE -o jsonpath='{.status.allocatable}'
    

    MIG olmayan bir düğüm havuzu için çıktıda "nvidia.com/gpu": "1" (veya SKU'ya bağlı olarak daha fazlası) bulunur. Bir MIG Mixed düğüm havuzu için çıkış, "nvidia.com/mig-1g.10gb": "7" gibi MIG'ye özgü kaynakları içerir.

  4. Bir kapsayıcının içinden GPU erişimini onaylamak için örnek bir iş yükü çalıştırın:

    apiVersion: v1
    kind: Pod
    metadata:
      name: managed-gpu-test
    spec:
      restartPolicy: Never
      tolerations:
        - key: "sku"
          operator: "Equal"
          value: "gpu"
          effect: "NoSchedule"
      containers:
      - name: gpu-test
        image: mcr.microsoft.com/azuredocs/samples-tf-mnist-demo:gpu
        command: ["nvidia-smi"]
        resources:
          limits:
            nvidia.com/gpu: 1
    

    GPU cihazı, sürücü sürümü ve CUDA sürümünü gösteren çıkışı görmek nvidia-smi için pod günlüklerini görüntüleyin:

    kubectl logs managed-gpu-test
    

Yönetilen GPU düğüm havuzunu ölçeklendirme (önizleme)

Yönetilen bir GPU düğüm havuzunu az aks nodepool scale ile elle ölçeklendirin. Yeni düğümler tam yönetilen GPU yığınını yükler.

az aks nodepool scale \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name gpunp \
    --node-count 2

Önemli

Önizleme sırasında yönetilen GPU düğüm havuzları küme otomatik ölçeklendiricisini desteklemez. Bu havuzları el ile ölçeklendirin.

Alternatif yükleme profilleri

Tam yönetilen yığın profili uygun değilse AKS, GPU düğüm havuzlarında iki alternatif profili destekler.

AKS'nin NVIDIA GPU sürücüsünü yüklemesini ve bakımını kullanmasını istediğinizde, ancak cihaz eklentisini ve ölçümler vereni kendiniz dağıtmayı planlıyorsanız (örneğin, NVIDIA GPU Operatörü ile) bu profili kullanın. Ayarla --enable-managed-gpu=false:

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name gpunp \
    --node-count 1 \
    --node-vm-size Standard_NC6s_v3 \
    --node-taints sku=gpu:NoSchedule \
    --enable-managed-gpu=false

Bu yapılandırmayla:

  • AKS, NVIDIA GPU sürücüsünü (gpuProfile.driver ) Installyükler ve yönetir.
  • AKS bir cihaz eklentisi, DCGM ölçüm verme veya GPU sistem durumu kuralları yüklemez. gpuProfile.nvidia, null'e eşittir.
  • nvidia.com/gpu Bir cihaz eklentisi dağıtılana kadar hiçbir kaynak yayınlanmaz.

Sonraki Adımlar