Membuat kumpulan simpul GPU multi-instans di Azure Kubernetes Service (AKS)
GPU A100 NVIDIA dapat dibagi menjadi tujuh instans independen. Setiap instans memiliki Stream Multiprocessor (SM) sendiri, yang bertanggung jawab untuk menjalankan instruksi secara paralel, dan memori GPU. Untuk informasi selengkapnya tentang NVIDIA A100, lihat GPU NVIDIA A100.
Artikel ini memancang Anda tentang cara membuat kumpulan simpul GPU multi-instans menggunakan ukuran VM yang kompatibel dengan MIG dalam kluster Azure Kubernetes Service (AKS).
- 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 menggunakanaz aks install-cli
perintah . - Helm v3 diinstal dan dikonfigurasi. Untuk informasi selengkapnya, lihat Menginstal Helm.
- Kumpulan simpul GPU multi-instans saat ini tidak didukung di Azure Linux.
- Anda tidak dapat menggunakan Cluster Autoscaler dengan kumpulan simpul GPU multi-instans.
Profil instans GPU menentukan bagaimana GPU dipartisi. Tabel berikut menunjukkan profil instans GPU yang Standard_ND96asr_v4
tersedia 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 SM 1g (multiproscessor streaming) dan memori 5gb. Dalam hal ini, GPU dipartisi menjadi tujuh instans.
Profil instans GPU yang tersedia untuk ukuran VM ini meliputi MIG1g
, , MIG2g
MIG3g
, MIG4g
, dan MIG7g
.
Penting
Anda tidak dapat mengubah profil instans GPU yang diterapkan setelah pembuatan kumpulan simpul.
Buat grup sumber daya Azure menggunakan
az group create
perintah .az group create --name myResourceGroup --location southcentralus
Buat kluster AKS menggunakan
az aks create
perintah .az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --generate-ssh-keys
Konfigurasikan
kubectl
untuk menyambungkan ke kluster AKS Anda menggunakanaz aks get-credentials
perintah .az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
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. Contoh di bawah ini membuat kumpulan simpul dengan ukuran VM GPU yang kompatibel denganStandard_ND96asr_v4
MIG.az aks nodepool add \ --name aks-mignode \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --node-vm-size Standard_ND96asr_v4 \ --node-count 1 \ --gpu-instance-profile MIG1g
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
.
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
Tambahkan repositori helm plugin perangkat NVIDIA menggunakan
helm repo add
perintah danhelm repo update
.helm repo add nvdp https://nvidia.github.io/k8s-device-plugin helm repo update
Instal plugin perangkat NVIDIA menggunakan
helm install
perintah .helm install nvdp nvdp/nvidia-device-plugin \ --version=0.15.0 \ --generate-name \ --set migStrategy=${MIG_STRATEGY} \ --set gfd.enabled=true \ --namespace nvidia-device-plugin \ --create-namespace
Catatan
Penginstalan helm plugin perangkat NVIDIA versi 0.15.0 ke atas mengonsolidasikan plugin perangkat dan repositori GFD. Penginstalan helm terpisah dari komponen perangkat lunak GFD tidak disarankan dalam tutorial ini.
kubectl
Verifikasi koneksi ke kluster Anda menggunakankubectl get
perintah untuk mengembalikan daftar node kluster.kubectl get nodes -o wide
Konfirmasikan bahwa simpul memiliki kemampuan GPU multi-instans menggunakan
kubectl describe node
perintah . Contoh perintah berikut menjelaskan simpul bernama aks-mignode, yang menggunakan MIG1g sebagai profil instans GPU.kubectl describe node aks-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
Contoh berikut didasarkan pada gambar dasar CUDA versi 12.1.1 untuk Ubuntu 22.04, ditandai sebagai 12.1.1-base-ubuntu22.04
.
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
Sebarkan aplikasi menggunakan
kubectl apply
perintah dan tentukan nama manifes YAML Anda.kubectl apply -f single-strategy-example.yaml
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)
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
Sebarkan aplikasi menggunakan
kubectl apply
perintah dan tentukan nama manifes YAML Anda.kubectl apply -f mixed-strategy-example.yaml
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.
Jika Anda tidak melihat kemampuan GPU multi-instans setelah membuat kumpulan simpul, konfirmasikan versi API tidak lebih lama dari 2021-08-01.
Untuk mempelajari selengkapnya tentang GPU di Azure Kubernetes Service, lihat:
Umpan balik Azure Kubernetes Service
Azure Kubernetes Service adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: