Bagikan melalui


Membuat kumpulan simpul GPU multi-instans di Azure Kubernetes Service (AKS)

GPU A100 Nvidia dapat dibagi hingga tujuh instans independen. Setiap instans memiliki memori dan Stream Multiprocessor (SM) sendiri. Untuk informasi selengkapnya tentang Nvidia A100, lihat GPU Nvidia A100.

Artikel ini memancang Anda tentang cara membuat kumpulan simpul GPU multi-instans di kluster Azure Kubernetes Service (AKS).

Prasyarat dan batasan

  • Akun Azure dengan langganan aktif. Jika Anda tidak memilikinya, Anda dapat membuatnya secara gratis.
  • Azure CLI versi 2.2.0 atau yang lebih baru diinstal dan dikonfigurasi. Jalankan az --version untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI.
  • Klien baris perintah Kubernetes, kubectl, diinstal dan dikonfigurasi. Jika Anda menggunakan Azure Cloud Shell, kubectl sudah terpasang. Jika Anda ingin menginstalnya secara lokal, Anda dapat menggunakan az aks install-cli perintah .
  • Helm v3 diinstal dan dikonfigurasi. Untuk informasi selengkapnya, lihat Menginstal Helm.
  • Anda tidak dapat menggunakan Cluster Autoscaler dengan kumpulan simpul multi-instans.

Profil instans GPU

Profil instans GPU menentukan bagaimana GPU dipartisi. Tabel berikut menunjukkan profil instans GPU yang Standard_ND96asr_v4tersedia untuk :

Nama profil Pecahan SM Pecahan memori Jumlah instans yang dibuat
MIG 1g.5gb 1/7 1/8 7
MIG 2g.10gb 2/7 2/8 3
MIG 3g.20gb 3/7 4/8 2
MIG 4g.20gb 4/7 4/8 1
MIG 7g.40gb 7/7 8/8 1

Sebagai contoh, profil MIG 1g.5gb instans GPU menunjukkan bahwa setiap instans GPU memiliki 1g SM (Sumber daya komputasi) dan memori 5gb. Dalam hal ini, GPU dipartisi menjadi tujuh instans.

Profil instans GPU yang tersedia untuk ukuran instans ini meliputi MIG1g, , MIG3gMIG2g, MIG4g, dan MIG7g.

Penting

Anda tidak dapat mengubah profil instans GPU yang diterapkan setelah pembuatan kumpulan simpul.

Membuat kluster AKS

  1. Buat grup sumber daya Azure menggunakan az group create perintah .

    az group create --name myResourceGroup --location southcentralus
    
  2. Buat kluster AKS menggunakan az aks create perintah .

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster\
        --node-count 1 \
        --generate-ssh-keys
    

Membuat kumpulan node GPU multi-instans

Anda dapat menggunakan Azure CLI atau permintaan HTTP ke ARM API untuk membuat kumpulan simpul.

  • Buat kumpulan simpul GPU multi-instans menggunakan az aks nodepool add perintah dan tentukan profil instans GPU.

    az aks nodepool add \
        --name mignode \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --node-vm-size Standard_ND96asr_v4 \
        --gpu-instance-profile MIG1g
    

Menentukan strategi GPU multi-instans (MIG)

Sebelum menginstal plugin Nvidia, Anda perlu menentukan strategi GPU multi-instans (MIG) mana yang akan digunakan untuk partisi GPU: Strategi tunggal atau strategi Campuran. Kedua strategi tersebut tidak memengaruhi cara Anda menjalankan beban kerja CPU, tetapi bagaimana sumber daya GPU ditampilkan.

  • Strategi tunggal: Strategi tunggal memperlakukan setiap instans GPU sebagai GPU. Jika Anda menggunakan strategi ini, sumber daya GPU ditampilkan sebagai nvidia.com/gpu: 1.
  • Strategi campuran: Strategi campuran mengekspos instans GPU dan profil instans GPU. Jika Anda menggunakan strategi ini, sumber daya GPU ditampilkan sebagai nvidia.com/mig1g.5gb: 1.

Menginstal plugin perangkat NVIDIA dan penemuan fitur GPU

  1. Atur strategi MIG Anda sebagai variabel lingkungan. Anda dapat menggunakan strategi tunggal atau campuran.

    # Single strategy
    export MIG_STRATEGY=single
    
    # Mixed strategy
    export MIG_STRATEGY=mixed
    
  2. Tambahkan plugin perangkat Nvidia dan repositori helm penemuan fitur GPU menggunakan helm repo add perintah dan helm repo update .

    helm repo add nvdp https://nvidia.github.io/k8s-device-plugin
    helm repo add nvgfd https://nvidia.github.io/gpu-feature-discovery
    helm repo update
    
  3. Instal plugin perangkat Nvidia menggunakan helm install perintah .

    helm install \
    --version=0.14.0 \
    --generate-name \
    --set migStrategy=${MIG_STRATEGY} \
    nvdp/nvidia-device-plugin
    
  4. Instal penemuan fitur GPU menggunakan helm install perintah .

    helm install \
    --version=0.2.0 \
    --generate-name \
    --set migStrategy=${MIG_STRATEGY} \
    nvgfd/gpu-feature-discovery
    

Mengonfirmasi kemampuan GPU multi-instans

  1. Konfigurasikan kubectl untuk menyambungkan ke kluster AKS Anda menggunakan az aks get-credentials perintah .

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  2. Verifikasi koneksi ke kluster Anda menggunakan kubectl get perintah untuk mengembalikan daftar node kluster.

    kubectl get nodes -o wide
    
  3. Konfirmasikan bahwa simpul memiliki kemampuan GPU multi-instans menggunakan kubectl describe node perintah . Contoh perintah berikut menjelaskan simpul bernama mignode, yang menggunakan MIG1g sebagai profil instans GPU.

    kubectl describe node mignode
    

    Output Anda harus menyerupai contoh output berikut:

    # Single strategy output
    Allocatable:
        nvidia.com/gpu: 56
    
    # Mixed strategy output
    Allocatable:
        nvidia.com/mig-1g.5gb: 56
    

Menjadwalkan pekerjaan

Contoh berikut didasarkan pada gambar dasar cuda versi 12.1.1 untuk Ubuntu22.04, ditandai sebagai 12.1.1-base-ubuntu22.04.

Strategi tunggal

  1. Buat file bernama single-strategy-example.yaml, kemudian salin dalam manifes berikut.

    apiVersion: v1
    kind: Pod
    metadata:
      name: nvidia-single
    spec:
      containers:
      - name: nvidia-single
        image: nvidia/cuda:12.1.1-base-ubuntu22.04
        command: ["/bin/sh"]
        args: ["-c","sleep 1000"]
        resources:
          limits:
            "nvidia.com/gpu": 1
    
  2. Sebarkan aplikasi menggunakan kubectl apply perintah dan tentukan nama manifes YAML Anda.

    kubectl apply -f single-strategy-example.yaml
    
  3. Verifikasi perangkat GPU yang dialokasikan menggunakan kubectl exec perintah . Perintah ini menampilkan daftar node kluster.

    kubectl exec nvidia-single -- nvidia-smi -L
    

    Contoh berikut menyerupai output yang menunjukkan penyebaran dan layanan yang berhasil dibuat:

    GPU 0: NVIDIA A100 40GB PCIe (UUID: GPU-48aeb943-9458-4282-da24-e5f49e0db44b)
    MIG 1g.5gb     Device  0: (UUID: MIG-fb42055e-9e53-5764-9278-438605a3014c)
    MIG 1g.5gb     Device  1: (UUID: MIG-3d4db13e-c42d-5555-98f4-8b50389791bc)
    MIG 1g.5gb     Device  2: (UUID: MIG-de819d17-9382-56a2-b9ca-aec36c88014f)
    MIG 1g.5gb     Device  3: (UUID: MIG-50ab4b32-92db-5567-bf6d-fac646fe29f2)
    MIG 1g.5gb     Device  4: (UUID: MIG-7b6b1b6e-5101-58a4-b5f5-21563789e62e)
    MIG 1g.5gb     Device  5: (UUID: MIG-14549027-dd49-5cc0-bca4-55e67011bd85)
    MIG 1g.5gb     Device  6: (UUID: MIG-37e055e8-8890-567f-a646-ebf9fde3ce7a)
    

Strategi campuran

  1. Buat file bernama mixed-strategy-example.yaml, kemudian salin dalam manifes berikut.

    apiVersion: v1
    kind: Pod
    metadata:
      name: nvidia-mixed
    spec:
      containers:
      - name: nvidia-mixed
        image: nvidia/cuda:12.1.1-base-ubuntu22.04
        command: ["/bin/sh"]
        args: ["-c","sleep 100"]
        resources:
          limits:
            "nvidia.com/mig-1g.5gb": 1
    
  2. Sebarkan aplikasi menggunakan kubectl apply perintah dan tentukan nama manifes YAML Anda.

    kubectl apply -f mixed-strategy-example.yaml
    
  3. Verifikasi perangkat GPU yang dialokasikan menggunakan kubectl exec perintah . Perintah ini menampilkan daftar node kluster.

    kubectl exec nvidia-mixed -- nvidia-smi -L
    

    Contoh berikut menyerupai output yang menunjukkan penyebaran dan layanan yang berhasil dibuat:

    GPU 0: NVIDIA A100 40GB PCIe (UUID: GPU-48aeb943-9458-4282-da24-e5f49e0db44b)
    MIG 1g.5gb     Device  0: (UUID: MIG-fb42055e-9e53-5764-9278-438605a3014c)
    

Penting

Tag latest untuk gambar CUDA tidak digunakan lagi di Docker Hub. Silakan lihat repositori NVIDIA untuk gambar terbaru dan tag yang sesuai.

Pemecahan Masalah

Jika Anda tidak melihat kemampuan GPU multi-instans setelah membuat kumpulan simpul, konfirmasikan versi API tidak lebih lama dari 2021-08-01.

Langkah berikutnya

Untuk informasi selengkapnya tentang kumpulan simpul AKS, lihat Mengelola kumpulan simpul untuk kluster di AKS.