Bagikan melalui


Gunakan GPU Windows untuk beban kerja intensif komputasi pada Azure Kubernetes Service (AKS) (pratinjau)

Unit pemrosesan grafis (GPU) sering digunakan untuk beban kerja intensif komputasi, seperti beban kerja grafis dan visualisasi. AKS mendukung kumpulan simpul Windows dan Linux berkemampuan GPU untuk menjalankan beban kerja Kubernetes intensif komputasi.

Artikel ini membantu Anda menyediakan simpul Windows dengan GPU yang dapat di-schedulable pada kluster AKS baru dan yang sudah ada (pratinjau).

Komputer virtual (VM) dengan dukungan GPU yang didukung

Untuk melihat VM yang didukung GPU, lihat Ukuran VM yang dioptimalkan GPU di Azure. Untuk kumpulan simpul AKS, kami merekomendasikan ukuran minimum Standard_NC6s_v3. Seri NVv4 (berdasarkan GPU AMD) tidak didukung di AKS.

Catatan

VM dengan dukungan GPU berisi perangkat keras khusus yang tunduk pada harga dan ketersediaan wilayah yang lebih tinggi. Untuk informasi selengkapnya, lihat alat penentuan harga dan ketersediaan wilayah.

Batasan

  • Memperbarui kumpulan simpul Windows yang ada untuk menambahkan GPU tidak didukung.
  • Tidak didukung pada Kubernetes versi 1.28 ke bawah.

Sebelum Anda mulai

  • Artikel ini mengasumsikan Anda memiliki kluster AKS yang sudah ada. Jika Anda tidak memiliki kluster, buat kluster menggunakan Azure CLI, Azure PowerShell, atau portal Azure.
  • Anda memerlukan Azure CLI versi 1.0.0b2 atau yang lebih baru yang diinstal dan dikonfigurasi untuk menggunakan --skip-gpu-driver-install bidang dengan az aks nodepool add perintah . Jalankan az --version untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI.
  • Anda memerlukan Azure CLI versi 9.0.0b5 atau yang lebih baru diinstal dan dikonfigurasi untuk menggunakan --driver-type bidang dengan az aks nodepool add perintah . Jalankan az --version untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI.

Dapatkan informasi masuk untuk kluster Anda

  • Dapatkan kredensial untuk kluster AKS Anda menggunakan az aks get-credentials perintah . Contoh perintah berikut mendapatkan kredensial untuk myAKSCluster di grup sumber daya myResourceGroup :

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

Menggunakan GPU Windows dengan penginstalan driver otomatis

Menggunakan GPU NVIDIA melibatkan penginstalan berbagai komponen perangkat lunak NVIDIA seperti plugin perangkat DirectX untuk Kubernetes, penginstalan driver GPU, dan banyak lagi. Saat Anda membuat kumpulan simpul Windows dengan VM yang mendukung GPU yang didukung, komponen ini dan driver NVIDIA CUDA atau GRID yang sesuai diinstal. Untuk ukuran VM seri NC dan ND, driver CUDA diinstal. Untuk ukuran VM seri NV, driver GRID diinstal.

Penting

Fitur pratinjau AKS tersedia berdasarkan layanan mandiri. Pratinjau disediakan "apa adanya" dan "sebagaimana tersedia," dan mereka dikecualikan dari perjanjian tingkat layanan dan garansi terbatas. Pratinjau AKS sebagian dicakup oleh dukungan pelanggan berdasarkan upaya terbaik. Dengan demikian, fitur-fitur ini tidak dimaksudkan untuk penggunaan produksi. Untuk informasi lebih lanjut, lihat artikel dukungan berikut ini:

Memasang ekstensi aks-preview Azure CLI

  • Daftarkan atau perbarui ekstensi aks-preview menggunakan az extension add perintah atau az extension update .

    # Register the aks-preview extension
    az extension add --name aks-preview
    
    # Update the aks-preview extension
    az extension update --name aks-preview
    

Daftarkan WindowsGPUPreview bendera fitur

  1. Daftarkan WindowsGPUPreview bendera fitur menggunakan az feature register perintah .

    az feature register --namespace "Microsoft.ContainerService" --name "WindowsGPUPreview"
    

    Dibutuhkan beberapa menit agar status menampilkan Terdaftar.

  2. Verifikasi status pendaftaran menggunakan az feature show perintah .

    az feature show --namespace "Microsoft.ContainerService" --name "WindowsGPUPreview"
    
  3. Saat status mencerminkan Terdaftar, refresh pendaftaran penyedia sumber daya Microsoft.ContainerService menggunakan az provider register perintah .

    az provider register --namespace Microsoft.ContainerService
    

Membuat kumpulan simpul yang mendukung GPU Windows (pratinjau)

Untuk membuat kumpulan simpul yang mendukung GPU Windows, Anda perlu menggunakan ukuran VM yang didukung GPU dan menentukan os-type sebagai Windows. Windows os-sku default adalah Windows2022, tetapi semua opsi Windows os-sku didukung.

  1. Buat kumpulan simpul yang diaktifkan GPU Windows menggunakan az aks nodepool add perintah .

    az aks nodepool add \
       --resource-group myResourceGroup \
       --cluster-name myAKSCluster \
       --name gpunp \
       --node-count 1 \
       --os-type Windows \
       --kubernetes-version 1.29.0 \
       --node-vm-size Standard_NC6s_v3
    
  2. Periksa apakah GPU Anda dapat di-schedulable.

  3. Setelah mengonfirmasi bahwa GPU Anda dapat di-schedulable, Anda dapat menjalankan beban kerja GPU Anda.

Tentukan Jenis Driver GPU (pratinjau)

Secara default, AKS menentukan jenis driver GPU default untuk setiap VM yang mendukung GPU yang didukung. Karena kompatibilitas beban kerja dan driver penting untuk berfungsinya beban kerja GPU, Anda dapat menentukan jenis driver untuk simpul GPU Windows Anda. Fitur ini tidak didukung untuk kumpulan simpul GPU Linux.

Saat membuat kumpulan agen Windows dengan dukungan GPU, Anda memiliki opsi untuk menentukan jenis driver GPU menggunakan --driver-type bendera .

Opsi yang tersedia adalah:

  • GRID: Untuk aplikasi yang memerlukan dukungan virtualisasi.
  • CUDA: Dioptimalkan untuk tugas komputasi dalam komputasi ilmiah dan aplikasi intensif data.

Catatan

Saat Anda mengatur --driver-type bendera, Anda bertanggung jawab untuk memastikan bahwa jenis driver yang dipilih kompatibel dengan ukuran dan konfigurasi VM tertentu dari kumpulan simpul Anda. Meskipun AKS mencoba memvalidasi kompatibilitas, ada skenario di mana pembuatan kumpulan simpul mungkin gagal karena ketidakcocokan antara jenis driver yang ditentukan dan VM atau perangkat keras yang mendasarinya.

Untuk membuat kumpulan simpul yang mendukung GPU Windows dengan jenis Driver GPU tertentu, gunakan az aks nodepool add perintah .

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name gpunp \
    --node-count 1 \
    --os-type Windows \
    --kubernetes-version 1.29.0 \
    --node-vm-size Standard_NC6s_v3 \
    --driver-type GRID

Misalnya, perintah di atas membuat kumpulan simpul dengan dukungan GPU menggunakan GRID jenis driver GPU. Memilih jenis driver ini mengambil alih default jenis CUDA driver untuk sku VM seri NC.

Menggunakan GPU Windows dengan penginstalan driver manual

Saat membuat kumpulan simpul Windows dengan ukuran VM seri N (GPU NVIDIA) di AKS, driver GPU dan plugin perangkat Kubernetes DirectX diinstal secara otomatis. Untuk melewati penginstalan otomatis ini, gunakan langkah-langkah berikut:

  1. Lewati penginstalan driver GPU (pratinjau) menggunakan --skip-gpu-driver-install.
  2. Penginstalan manual plugin perangkat Kubernetes DirectX.

Lewati penginstalan driver GPU (pratinjau)

AKS mengaktifkan penginstalan driver GPU otomatis secara default. Dalam beberapa kasus, seperti menginstal driver Anda sendiri, Anda mungkin ingin melewati penginstalan driver GPU.

Penting

Fitur pratinjau AKS tersedia berdasarkan layanan mandiri. Pratinjau disediakan "apa adanya" dan "sebagaimana tersedia," dan mereka dikecualikan dari perjanjian tingkat layanan dan garansi terbatas. Pratinjau AKS sebagian dicakup oleh dukungan pelanggan berdasarkan upaya terbaik. Dengan demikian, fitur-fitur ini tidak dimaksudkan untuk penggunaan produksi. Untuk informasi lebih lanjut, lihat artikel dukungan berikut ini:

  1. Daftarkan atau perbarui ekstensi aks-preview menggunakan az extension add perintah atau az extension update .

    # Register the aks-preview extension
    az extension add --name aks-preview
    
    # Update the aks-preview extension
    az extension update --name aks-preview
    
  2. Buat kumpulan simpul menggunakan az aks nodepool add perintah dengan --skip-gpu-driver-install bendera untuk melewati penginstalan driver GPU otomatis.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name gpunp \
        --node-count 1 \
        --os-type windows \
        --os-sku windows2022 \
        --skip-gpu-driver-install
    

Catatan

--node-vm-size Jika yang Anda gunakan belum di-onboarding di AKS, Anda tidak dapat menggunakan GPU dan --skip-gpu-driver-install tidak berfungsi.

Menginstal plugin perangkat Kubernetes DirectX secara manual

Anda dapat menyebarkan DaemonSet untuk plugin perangkat Kubernetes DirectX, yang menjalankan pod pada setiap simpul untuk menyediakan driver yang diperlukan untuk GPU.

  • Tambahkan kumpulan simpul ke kluster Anda menggunakan az aks nodepool add perintah .

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name gpunp \
        --node-count 1 \
        --os-type windows \
        --os-sku windows2022
    

Membuat namespace layanan dan menyebarkan plugin perangkat Kubernetes DirectX

  1. Buat namespace layanan menggunakan kubectl create namespace perintah .

    kubectl create namespace gpu-resources
    
  2. Buat file bernama k8s-directx-device-plugin.yaml dan tempelkan manifes YAML berikut yang disediakan sebagai bagian dari plugin perangkat NVIDIA untuk proyek Kubernetes:

    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:
          # 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.  This annotation works in tandem with the toleration below.
          annotations:
            scheduler.alpha.kubernetes.io/critical-pod: ""
          labels:
            name: nvidia-device-plugin-ds
        spec:
          tolerations:
          # Allow this pod to be rescheduled while the node is in "critical add-ons only" mode.
          # This, along with the annotation above marks this pod as a critical add-on.
          - key: CriticalAddonsOnly
            operator: Exists
          - key: nvidia.com/gpu
            operator: Exists
            effect: NoSchedule
          - key: "sku"
            operator: "Equal"
            value: "gpu"
            effect: "NoSchedule"
          containers:
          - image: mcr.microsoft.com/oss/nvidia/k8s-device-plugin:v0.14.1
            name: nvidia-device-plugin-ctr
            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. Buat DaemonSet dan konfirmasikan plugin perangkat NVIDIA berhasil dibuat menggunakan kubectl apply perintah .

    kubectl apply -f nvidia-device-plugin-ds.yaml
    
  4. Sekarang setelah Anda berhasil menginstal plugin perangkat NVIDIA, Anda dapat memeriksa apakah GPU Anda dapat di-schedulable.

Konfirmasi bahwa GPU dapat dijadwalkan

Setelah membuat kluster, konfirmasikan bahwa GPU dapat di-schedulable di Kubernetes.

  1. Cantumkan simpul di kluster Anda menggunakan kubectl get nodes perintah .

    kubectl get nodes
    

    Output Anda akan terlihat mirip dengan contoh output berikut:

    NAME                   STATUS   ROLES   AGE   VERSION
    aks-gpunp-28993262-0   Ready    agent   13m   v1.20.7
    
  2. Konfirmasikan bahwa GPU dapat di-schedulable menggunakan kubectl describe node perintah .

    kubectl describe node aks-gpunp-28993262-0
    

    Di bawah bagian Kapasitas, GPU harus dicantumkan sebagai microsoft.com/directx: 1. Output Anda akan terlihat mirip dengan contoh output ringkas berikut:

    Capacity:
    [...]
     microsoft.com.directx/gpu:                 1
    [...]
    

Gunakan Container Insights untuk memantau penggunaan GPU

Container Insights dengan AKS memantau metrik penggunaan GPU berikut:

Nama metrik Dimensi metrik (tag) Deskripsi
containerGpuDutyCycle container.azm.ms/clusterId, , container.azm.ms/clusterNamecontainerName, gpuId, , gpuModel,gpuVendor Persentase waktu selama periode sampel sebelumnya (60 detik) di mana GPU sibuk/aktif memproses untuk kontainer. Siklus tugas berupa angka antara 1 dan 100.
containerGpuLimits container.azm.ms/clusterId, , container.azm.ms/clusterNamecontainerName Setiap kontainer dapat menentukan batas sebagai satu GPU atau lebih. Tidak dimungkinkan untuk meminta atau membatasi sebagian kecil dari GPU.
containerGpuRequests container.azm.ms/clusterId, , container.azm.ms/clusterNamecontainerName Setiap kontainer dapat meminta satu GPU atau lebih. Tidak dimungkinkan untuk meminta atau membatasi sebagian kecil dari GPU.
containerGpumemoryTotalBytes container.azm.ms/clusterId, , container.azm.ms/clusterNamecontainerName, gpuId, , gpuModel,gpuVendor Jumlah Memori GPU dalam byte yang tersedia untuk digunakan untuk kontainer tertentu.
containerGpumemoryUsedBytes container.azm.ms/clusterId, , container.azm.ms/clusterNamecontainerName, gpuId, , gpuModel,gpuVendor Jumlah Memori GPU dalam byte yang digunakan oleh kontainer tertentu.
nodeGpuAllocatable container.azm.ms/clusterId, , container.azm.ms/clusterNamegpuVendor Jumlah GPU dalam simpul yang dapat digunakan Kubernetes.
nodeGpuCapacity container.azm.ms/clusterId, , container.azm.ms/clusterNamegpuVendor Jumlah Total GPU dalam suatu simpul.

Membersihkan sumber daya

  • Hapus objek Kubernetes terkait yang Anda buat di artikel ini menggunakan kubectl delete job perintah .

    kubectl delete jobs windows-gpu-workload
    

Langkah berikutnya