Azure Kubernetes Hizmeti (AKS) üzerinde hesaplama yoğun iş yükleri için GPU'lar kullanın.

Grafik işleme birimleri (GPU' lar) genellikle grafikler ve görselleştirme iş yükleri gibi yoğun işlem gücü kullanan iş yükleri için kullanılır. AKS, hesaplama yoğun Kubernetes iş yüklerini çalıştırmak için GPU destekli Linux düğüm havuzlarını destekler.

Bu makale, yeni ve mevcut AKS kümelerinde zamanlanabilir GPU'larla düğüm sağlanmasına yardımcı olur.

Önemli

Azure Kubernetes Service (AKS), 30 Kasım 2025'den itibaren Azure Linux 2.0 için güvenlik güncelleştirmelerini desteklemez veya sağlamaz. Azure Linux 2.0 düğüm görüntüsü 202512.06.0 sürümünde dondurulur. 31 Mart 2026'dan itibaren düğüm görüntüleri kaldırılacak ve düğüm havuzlarınızı ölçeklendiremeyeceksiniz. Düğüm havuzlarınızı desteklenen bir Kubernetes sürümüne yükselterek veya osSku AzureLinux3'e geçerek desteklenen bir Azure Linux sürümüne geçin. Daha fazla bilgi için Bkz. Kullanımdan Kaldırma GitHub sorunu ve Azure Güncelleştirmeleri kullanımdan kaldırma duyurusu. Duyurular ve güncelleştirmeler hakkında bilgi sahibi olmak için AKS sürüm notlarını izleyin.

AKS'de GPU'ları çalıştırmak için bir yaklaşım seçin

AKS, NVIDIA GPU iş yüklerini çalıştırmak için iki yaklaşım sağlar. GPU yazılım yığını üzerinde ihtiyacınız olan denetim düzeyine ve AKS'nin sizin yerinize gerçekleştirmesini istediğiniz yönetim miktarına uygun yaklaşımı seçin.

Approach Önerilen AKS'nin yönettiği bileşenler Yönettiğiniz bileşenler
AKS tarafından yönetilen GPU düğümü havuzları (önerilir) GPU kapasitesinin diğer AKS düğüm havuzlarıyla tutarlı çalışmasını gerektiren senaryoların çoğu. NVIDIA GPU sürücüsü, Kubernetes cihaz eklentisi, GPU ölçümleri dışa aktarıcısı ve GPU sistem durumu sinyalleri. GPU iş yükleriniz.
Kendi kendine yönetilen GPU kurulumu GPU sürücüsü ve cihaz eklentisi sürümleri üzerinde ayrıntılı denetim gerektiren veya NVIDIA GPU operatöründe standartlaştıran senaryolar. Varsayılan olarak yalnızca NVIDIA GPU sürücüsü. Kubernetes cihaz eklentisi, GPU ölçümleri verme ve GPU sistem durumu araçları.

Tip

Microsoft çoğu senaryo için AKS tarafından yönetilen GPU düğümü havuzları önerir. AKS, NVIDIA sürücüsünü, cihaz eklentisini ve DCGM ölçümlerini sizin adınıza yükler ve korur; bu da işlem yükünü azaltır ve GPU düğümü havuzu oluşturmayı tek bir adımla basitleştirir. Bu makalede açıklanan kendi kendine yönetilen yaklaşımı yalnızca cihaz eklentisi veya diğer GPU yazılım bileşenleri üzerinde doğrudan denetime ihtiyacınız olduğunda kullanın.

Bu makalenin geri kalanında kendi kendine yönetilen GPU kurulumu açıklanmaktadır. Önerilen yönetilen deneyim için bkz. AKS tarafından yönetilen GPU düğüm havuzu oluşturma.

Desteklenen GPU destekli VM'ler

Kullanılabilir GPU özellikli VM'leri görüntülemek için bkz. Azure'da GPU için iyileştirilmiş VM boyutları. Gpu VM boyutu desteklenen VM boyutları listemizde yoksa AKS gerekli GPU yazılım bileşenlerini yüklemez veya destek sağlamaz. AKS, otomatik GPU sürücüsü yüklemesini atladıktan sonra desteklenmeyen GPU VM boyutlarının kullanılmasına izin verir.

komutunu kullanarak az vm list-skus kullanılabilir ve desteklenen VM boyutlarını denetleyin.

az vm list-skus --location <your-location> --output table

AKS düğüm havuzları için en düşük boyutunu Standard_NC4as_T4_v3kullanın. NVv4 serisi (AMD GPU'ları temel alınarak) AKS'de desteklenmez.

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.

Sınırlamalar

  • Azure üzerinde Linux GPU destekli bir node havuzu kullanıyorsanız, otomatik güvenlik yamaları uygulanmaz. Mevcut AKS API sürümünüze, düğüm işletim sistemi yükseltme kanalının varsayılan davranışını öğrenmek için bakın.
  • AKS için Flatcar Container Linux, AKS üzerinde NVIDIA GPU ile desteklenmez.
  • AKS için OS Guard ile Azure Linux, AKS üzerinde NVIDIA GPU ile desteklenmez.

Uyarı

AKS API sürüm 2023-06-01 veya üzeri için düğüm işletim sistemi yükseltmesi için varsayılan kanal NodeImage'dır. Önceki sürümler için varsayılan kanal Yok'dur. Daha fazla bilgi edinmek için bkz. otomatik yükseltme.

  • Mevcut bir düğüm havuzunu, GPU VM boyutunu eklemek için güncellemek AKS üzerinde desteklenmemektedir.

Başlamadan önce

  • Bu makale, mevcut bir AKS kümeniz olduğunu varsayar. Kümeniz yoksa Azure CLI, Azure PowerShell veya Azure portalını kullanarak bir küme oluşturun.
  • Alanı ayarlamak için Azure CLI sürüm 2.72.2 veya üstünün yüklü olması gereklidir. Sürümü bulmak için az --version komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekiyorsa bkz. Azure CLI'yı yükleme.
  • aks-preview Azure CLI uzantısı yüklüyse lütfen sürümü 18.0.0b2 veya sonraki bir sürüme güncelleştirin.

Kümeniz için kimlik bilgilerini alın

AKS kümeniz için kimlik bilgilerini az aks get-credentials komutunu kullanarak alın. Aşağıdaki örnek komut, myResourceGroup kaynak grubundaki myAKSCluster için kimlik bilgilerini alır:

az aks get-credentials --resource-group myResourceGroup --name myAKSCluster

Kendi kendine yönetilen GPU kurulumu

Tip

Önerilen yönetilen deneyim için bkz. AKS tarafından yönetilen GPU düğüm havuzu oluşturma. AKS, sizin adınıza sürücüyü, cihaz eklentisini ve DCGM ölçüm dışarı aktarıcısını yükler ve bakımını yapar. Aşağıdaki adımlarla yalnızca cihaz eklentisi veya diğer GPU yazılım bileşenleri üzerinde doğrudan denetime ihtiyacınız olduğunda devam edin.

Kendi kendine yönetilen GPU kurulumu, Kubernetes için NVIDIA cihaz eklentisi ve GPU sürücüsü de dahil olmak üzere çeşitli NVIDIA yazılım bileşenlerini yüklemenizi gerektirir.

NVIDIA cihaz eklentisi kurulumu

Bu kendi kendine yönetilen kurulumda GPU'ları kullanırken NVIDIA cihaz eklentisini yüklemeniz gerekir. Bazı durumlarda, kurulum, NVIDIA GPU Operator kullanıldığında olduğu gibi otomatik olarak gerçekleştirilir. Alternatif olarak, NVIDIA cihaz eklentisini manuel olarak yükleyebilirsiniz.

NVIDIA aygıt eklentisini elle yükleyin

NVIDIA cihaz eklentisi için bir DaemonSet dağıtabilirsiniz; bu, her düğümde çalışarak GPU'lar için gerekli olan sürücüleri sağlayan bir pod çalıştırır. Bu, Azure Linux için GPU etkinleştirilmiş düğüm havuzları kullanıldığında önerilen yaklaşımdır.

Varsayılan OS SKU'sunu kullanmak için, bir OS SKU belirtmeden düğüm havuzunu oluşturun. 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.

Kümenize bir düğüm havuzu eklemek için az aks nodepool add komutunu kullanın.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name gpunp \
    --node-count 1 \
    --node-vm-size Standard_NC4as_T4_v3 \
    --node-taints sku=gpu:NoSchedule \
    --enable-cluster-autoscaler \
    --min-count 1 \
    --max-count 3

Bu komut, gpunp adında bir düğüm kümesini myAKSCluster içinde myResourceGroup grubuna ekler ve aşağıdaki düğüm kümesi ayarlarını yapılandırmak için parametreler kullanır.

  • --node-vm-size: Düğüm havuzundaki düğümün VM boyutunu Standard_NC4as_T4_v3 olarak ayarlar.
  • --node-taints: Düğüm havuzunda bir sku=gpu:NoSchedule lekesi belirtir.
  • --enable-cluster-autoscaler: Küme otomatik ölçekleyiciyi etkinleştirir.
  • --min-count: Küme otomatik ölçekleyicisini, düğüm havuzunda en az bir düğüm olacak şekilde yapılandırır.
  • --max-count: Küme otomatik ölçekleyicisini, düğüm havuzunda en fazla üç düğüm olacak şekilde yapılandırır.

Uyarı

Yalnızca düğüm havuzları oluşturulurken, taints ve VM boyutları ayarlanabilir, ancak otomatik ölçekleyici ayarlarını istediğiniz zaman güncelleyebilirsiniz.

  1. komutunu kullanarak kubectl create namespace bir ad alanı oluşturun.

    kubectl create namespace gpu-resources
    
  2. nvidia-device-plugin-ds.yaml adlı bir dosya oluşturun ve Kubernetes için NVIDIA cihaz eklentisi projesi kapsamında sağlanan aşağıdaki YAML bildirimini yapıştırın:

    apiVersion: apps/v1
    kind: DaemonSet
    metadata:
      name: nvidia-device-plugin-daemonset
      namespace: gpu-resources
    spec:
      selector:
        matchLabels:
          name: nvidia-device-plugin-ds
      updateStrategy:
        type: RollingUpdate
      template:
        metadata:
          labels:
            name: nvidia-device-plugin-ds
        spec:
          tolerations:
          - key: "sku"
            operator: "Equal"
            value: "gpu"
            effect: "NoSchedule"
          # Mark this pod as a critical add-on; when enabled, the critical add-on
          # scheduler reserves resources for critical add-on pods so that they can
          # be rescheduled after a failure.
          # See https://kubernetes.io/docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods/
          priorityClassName: "system-node-critical"
          containers:
          - image: nvcr.io/nvidia/k8s-device-plugin:v0.18.0
            name: nvidia-device-plugin-ctr
            env:
              - name: FAIL_ON_INIT_ERROR
                value: "false"
            securityContext:
              allowPrivilegeEscalation: false
              capabilities:
                drop: ["ALL"]
            volumeMounts:
            - name: device-plugin
              mountPath: /var/lib/kubelet/device-plugins
          volumes:
          - name: device-plugin
            hostPath:
              path: /var/lib/kubelet/device-plugins
    
  3. DaemonSet'i oluşturun ve kubectl apply komutunu kullanarak NVIDIA aygıt eklentisinin başarıyla oluşturulduğunu doğrulayın.

    kubectl apply -f nvidia-device-plugin-ds.yaml
    
  4. NVIDIA cihaz eklentisini başarıyla yüklediğinize göre, GPU'larınızın zamanlanabilir olup olmadığını denetleyebilirsiniz ve bir GPU iş yükü çalıştırabilirsiniz.

GPU sürücüsü yüklemesini atlama

NVIDIA sürücülerinin yüklemesini denetlemek veya NVIDIA GPU Operatörünü kullanmak istiyorsanız, varsayılan GPU sürücüsü yüklemesini atlayabilirsiniz. Microsoft, düğüm görüntüsü dağıtımı kapsamında NVIDIA sürücülerinin bakım ve uyumluluğunu desteklemez veya yönetmez .

Önemli

Azure Kubernetes Service (AKS), 14 Ağustos 2025 tarihinden itibaren düğüm havuzu etiketini desteklememektedir --skip-gpu-driver-install . Bu tarihten sonra, otomatik GPU sürücüsü yüklemesini atlamak için bu etiketi kullanarak GPU özellikli düğüm havuzları sağlayamazsınız. --gpu-driver alanını none olarak ayarlayarak aynı davranışı elde edebilirsiniz. Bu kullanımdan kaldırma hakkında daha fazla bilgi için GitHub Kullanımdan Kaldırma Sorunu ve Azure Güncelleştirmeleri kullanımdan kaldırma duyurusu başlıklarına bakın. Duyurular ve güncelleştirmeler hakkında bilgi sahibi olmak için AKS sürüm notlarını izleyin.

  1. az aks nodepool add komutunu kullanarak bir düğüm havuzu oluşturun ve varsayılan GPU sürücüsü yüklemesini atlamak için --gpu-driver alanını none olarak ayarlayın.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name gpunp \
        --node-count 1 \
        --gpu-driver none \
        --node-vm-size Standard_NC4as_T4_v3 \
        --enable-cluster-autoscaler \
        --min-count 1 \
        --max-count 3
    

    Düğüm havuzu oluşturulurken --gpu-driver API alanının none olarak ayarlanması, otomatik GPU sürücüsü yüklemesini geçer. Mevcut düğümler değiştirilmez. Düğüm havuzunu önce sıfıra, sonra yeniden yükselterek değişikliğin etkili olmasını sağlayabilirsiniz.

    Hatayı unrecognized arguments: --gpu-driver none alırsanız Azure CLI sürümünü güncelleştirin. Daha fazla bilgi için Başlamadan önce bölümüne bakın.

  2. bu adımları izleyerek isteğe bağlı olarak NVIDIA GPU operatörünü yükleyebilirsiniz.

GPU'ların zamanlanabilir olduğunu doğrulayın.

Kümenizi oluşturduktan sonra GPU'ların Kubernetes'te zamanlanabilir olduğunu onaylayın.

  1. Kümenizdeki düğümleri kubectl get nodes komutunu kullanarak listeleyin.

    kubectl get nodes
    

    Çıkışınız aşağıdaki örnek çıkışa benzer olmalıdır:

    NAME                   STATUS   ROLES   AGE   VERSION
    aks-gpunp-28993262-0   Ready    agent   13m   v1.20.7
    
  2. GPU'ların programlanabilir olduğunu kubectl describe node komutunu kullanarak doğrulayın.

    kubectl describe node aks-gpunp-28993262-0
    

    Kapasite bölümünün altında GPU olarak nvidia.com/gpu: 1listelenmelidir. Çıkışınız aşağıdaki daraltılmış örnek çıkışa benzer olmalıdır:

    Name:               aks-gpunp-28993262-0
    Roles:              agent
    Labels:             accelerator=nvidia
    
    [...]
    
    Capacity:
    [...]
     nvidia.com/gpu:                 1
    [...]
    

GPU destekli bir iş yükü çalıştırın

GPU'yu çalışırken görmek için, uygun kaynak isteği ile GPU etkinleştirilmiş bir iş yükü zamanlayabilirsiniz. Bu örnekte, MNIST veri seti üzerinde bir Tensorflow işi çalıştıracağız.

  1. Bir dosya oluşturun ve şu YAML bildirimini yapıştırın: samples-tf-mnist-demo.yaml. Bu bildirim, nvidia.com/gpu: 1 kaynak sınırı içermektedir.

    Uyarı

    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.

    apiVersion: batch/v1
    kind: Job
    metadata:
      labels:
        app: samples-tf-mnist-demo
      name: samples-tf-mnist-demo
    spec:
      template:
        metadata:
          labels:
            app: samples-tf-mnist-demo
        spec:
          containers:
          - name: samples-tf-mnist-demo
            image: mcr.microsoft.com/azuredocs/samples-tf-mnist-demo:gpu
            args: ["--max_steps", "500"]
            imagePullPolicy: IfNotPresent
            resources:
              limits:
               nvidia.com/gpu: 1
          restartPolicy: OnFailure
          tolerations:
          - key: "sku"
            operator: "Equal"
            value: "gpu"
            effect: "NoSchedule"
    
  2. kubectl apply komutunu kullanarak işi çalıştırın; bu komut manifest dosyasını ayrıştırır ve tanımlanan Kubernetes nesnelerini oluşturur.

    kubectl apply -f samples-tf-mnist-demo.yaml
    

GPU etkin iş yükünün durumunu görüntüle

  1. İşin ilerleyişini, kubectl get jobs komutunu --watch bayrağı ile kullanarak izleyin. Görüntüyü çekmek ve veri setini işlemek için birkaç dakika sürebilir.

    kubectl get jobs samples-tf-mnist-demo --watch
    

    TAMAMLANMALAR sütununda 1/1 gösterildiğinde, aşağıdaki örnek çıktıda gösterildiği gibi iş başarıyla tamamlanmıştır:

    NAME                    COMPLETIONS   DURATION   AGE
    
    samples-tf-mnist-demo   0/1           3m29s      3m29s
    samples-tf-mnist-demo   1/1   3m10s   3m36s
    
  2. kubectl --watch işlemini sonlandırmak için Ctrl-C tuşlarına basın.

  3. Pod'un adını kubectl get pods komutunu kullanarak alın.

    kubectl get pods --selector app=samples-tf-mnist-demo
    
  4. GPU özellikli iş yükünün çıktısını kubectl logs komutunu kullanarak görüntüleyin.

    kubectl logs samples-tf-mnist-demo-smnr6
    

    Aşağıdaki yapılandırılmış örnek pod günlüğü çıktısı, uygun GPU cihazı Tesla K80'nin keşfedildiğini doğrular.

    2019-05-16 16:08:31.258328: I tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA
    2019-05-16 16:08:31.396846: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Found device 0 with properties:
    name: Tesla K80 major: 3 minor: 7 memoryClockRate(GHz): 0.8235
    pciBusID: 2fd7:00:00.0
    totalMemory: 11.17GiB freeMemory: 11.10GiB
    2019-05-16 16:08:31.396886: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1120] Creating TensorFlow device (/device:GPU:0) -> (device: 0, name: Tesla K80, pci bus id: 2fd7:00:00.0, compute capability: 3.7)
    2019-05-16 16:08:36.076962: I tensorflow/stream_executor/dso_loader.cc:139] successfully opened CUDA library libcupti.so.8.0 locally
    Successfully downloaded train-images-idx3-ubyte.gz 9912422 bytes.
    Extracting /tmp/tensorflow/input_data/train-images-idx3-ubyte.gz
    Successfully downloaded train-labels-idx1-ubyte.gz 28881 bytes.
    Extracting /tmp/tensorflow/input_data/train-labels-idx1-ubyte.gz
    Successfully downloaded t10k-images-idx3-ubyte.gz 1648877 bytes.
    Extracting /tmp/tensorflow/input_data/t10k-images-idx3-ubyte.gz
    Successfully downloaded t10k-labels-idx1-ubyte.gz 4542 bytes.
    Extracting /tmp/tensorflow/input_data/t10k-labels-idx1-ubyte.gz
    Accuracy at step 0: 0.1081
    Accuracy at step 10: 0.7457
    Accuracy at step 20: 0.8233
    Accuracy at step 30: 0.8644
    Accuracy at step 40: 0.8848
    Accuracy at step 50: 0.8889
    Accuracy at step 60: 0.8898
    Accuracy at step 70: 0.8979
    Accuracy at step 80: 0.9087
    Accuracy at step 90: 0.9099
    Adding run metadata for 99
    Accuracy at step 100: 0.9125
    Accuracy at step 110: 0.9184
    Accuracy at step 120: 0.922
    Accuracy at step 130: 0.9161
    Accuracy at step 140: 0.9219
    Accuracy at step 150: 0.9151
    Accuracy at step 160: 0.9199
    Accuracy at step 170: 0.9305
    Accuracy at step 180: 0.9251
    Accuracy at step 190: 0.9258
    Adding run metadata for 199
    [...]
    Adding run metadata for 499
    

Düğüm havuzunu yükseltme

Düğüm havuzlarınızı güncellemek veya yükseltme işlemi yapmak istediğinizde, her iki işlem için de --gpu-driver parametre olmadığını fark edebilirsiniz. parametresini geçirmeye çalışırsanız gibi unrecognized arguments: --gpu-driver none bir hatayla karşılaşabilirsiniz. Değer bu tür işlemlerden etkilenmediğinden parametresinde çağrı yapmanıza gerek yoktur.

Düğüm havuzunuzu ilk oluşturduğunuzda, hangi --gpu-driver parametresini bildirirseniz bildirin, bunlar yükseltme/güncelleştirme işlemlerinden etkilenmez. Düğüm havuzunuzu oluştururken --gpu-driver None seçip sürücülerin yüklenmesini istemiyorsanız, sürücüler daha sonraki güncellemelerde/yükseltmelerde yüklenmez.

Kaynakları temizle

Bu makalede oluşturduğunuz ilişkili Kubernetes nesnelerini kubectl delete job komutunu kullanarak kaldırın.

kubectl delete jobs samples-tf-mnist-demo

Sonraki Adımlar