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.
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.
Desteklenen GPU destekli VM'ler
Desteklenen GPU özellikli VM'leri görüntülemek için Azure'da GPU ile optimize edilen VM boyutlarına bakın. AKS düğüm havuzları için, minimum Standard_NC6s_v3 boyutunu öneriyoruz. NVv4 serisi (AMD GPU'larına dayalı), AKS üzerinde desteklenmemektedir.
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.
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.
Uyarı
10 Ocak 2025 tarihinden itibaren AKS GPU imajı (önizleme) kullanımdan kaldırılacaktır. Özel üst bilgi artık mevcut değil, bu da AKS GPU görüntüsünü kullanarak yeni GPU etkinleştirilmiş düğüm havuzları oluşturamayacağınız anlamına geliyor. Varsayılan GPU yapılandırmasına geçmeyi veya varsayılan GPU yapılandırmasını kullanmayı öneriyoruz çünkü GPU görüntüsü artık desteklenmiyor. Daha fazla bilgi için AKS sürüm notlarına bakabilir veya bu kullanım ömrü sonu duyurusunu AKS genel yol haritamızda görüntüleyebilirsiniz.
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
NVIDIA GPU'ları kullanma seçenekleri
NVIDIA GPU'larının kullanılması Kubernetes için NVIDIA cihaz eklentisi, GPU sürücü yüklemesi ve daha fazlası gibi çeşitli NVIDIA yazılım bileşenlerinin yüklenmesini içerir.
Uyarı
Varsayılan olarak, Microsoft düğüm görüntüsü dağıtımının bir parçası olarak NVIDIA sürücülerinin sürümünü otomatik olarak korur ve AKS bunu destekler ve yönetir . NVIDIA sürücüleri varsayılan olarak GPU özellikli düğümlere yüklenirken cihaz eklentisini yüklemeniz gerekir.
NVIDIA cihaz eklentisi kurulumu
AKS üzerinde GPU'lar kullanılırken NVIDIA aygıt eklentisinin kurulması gereklidir. 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_NC6s_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_NC6s_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.
-
komutunu kullanarak
kubectl create namespace
bir ad alanı oluşturun.kubectl create namespace gpu-resources
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.17.2 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
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
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 .
Uyarı
gpu-driver
API alanı, daha önce düğüm havuzu etiketini kullanan --skip-gpu-driver-install
müşteriler için önerilen bir alternatiftir.
- AKS'de
--skip-gpu-driver-install
düğüm havuzu etiketi 14 Ağustos 2025'te kullanımdan kaldırılacaktır. Otomatik GPU sürücüsü yüklemesini atlama davranışını korumak için, düğüm havuzlarınızı en son düğüm görüntüsü sürümüne yükseltin ve--gpu-driver
alanınınone
olarak ayarlayın. 14 Ağustos 2025'den sonra, bu varsayılan davranışı atlamak için AKS GPU özellikli düğüm havuzlarını düğüm havuzu etiketiyle--skip-gpu-driver-install
sağlayamazsınız. Daha fazla bilgi için bkzskip-gpu-driver
etiketin kullanımdan kaldırılması.
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_NC6s_v3 \ --enable-cluster-autoscaler \ --min-count 1 \ --max-count 3
Düğüm havuzu oluşturulurken
--gpu-driver
API alanınınnone
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 bkz . Başlamadan önce.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.
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
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: 1
listelenmelidir. Çı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.
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"
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
İş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
kubectl --watch
işlemini sonlandırmak için Ctrl-C tuşlarına basın.Pod'un adını
kubectl get pods
komutunu kullanarak alın.kubectl get pods --selector app=samples-tf-mnist-demo
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
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
- Apache Spark görevlerini çalıştırmak için, AKS üzerinde Apache Spark görevlerini çalıştırma bölümüne bakın.
- Kubernetes zamanlayıcısının özellikleri hakkında daha fazla bilgi için AKS'deki gelişmiş zamanlayıcı özellikleri için en iyi uygulamalar bölümüne bakın.
- Azure Kubernetes Hizmeti ve Azure Makine Öğrenimi hakkında daha fazla bilgi için bkz:
Azure Kubernetes Service