Alibaba Cloud Container Compute Service (ACS) menyediakan daya komputasi kontainer dalam model tanpa server. Saat menggunakan sumber daya GPU, Anda dapat menentukan model GPU dan versi driver yang didukung oleh ACS di konfigurasi pod. Kemampuan ini mengurangi manajemen infrastruktur dan biaya O&M secara signifikan. Topik ini menjelaskan cara menentukan model GPU dan versi driver saat membuat pod.
Deskripsi model GPU
ACS mendukung berbagai model GPU. Anda dapat menggunakannya dengan Pemesanan kapasitas GPU atau memintanya sesuai kebutuhan saat membuat pod. Metode penggunaan bervariasi tergantung pada kelas komputasi, seperti yang dijelaskan di bawah ini.
Kelas GPU jaringan berkinerja tinggi
Kelas ini hanya mendukung pemesanan node. Setelah pembelian, Anda harus mengaitkan pemesanan dengan kluster. Setiap pemesanan sumber daya direpresentasikan sebagai node virtual independen di kluster yang dapat digunakan oleh pod. Untuk informasi lebih lanjut, lihat Pemesanan kapasitas GPU-HPN.
Kelas GPU
Kelas ini mendukung baik bayar sesuai penggunaan maupun pemesanan kapasitas. Setelah pod dibuat, ia secara otomatis menggunakan pemesanan kapasitas yang tersedia.
Untuk mendapatkan daftar model GPU yang saat ini didukung, kirim tiket.
Tentukan model GPU untuk pod
Untuk kelas GPU jaringan berkinerja tinggi, Anda hanya dapat meminta sumber daya menggunakan pemesanan node. Setiap sumber daya yang dipesan direpresentasikan sebagai node virtual independen di kluster. Label dari node virtual menentukan model GPU. Anda dapat menggunakan sumber daya ini dengan mengonfigurasi penjadwalan afinitas node. Untuk informasi lebih lanjut, lihat Jadwalkan aplikasi ke node virtual GPU jaringan berkinerja tinggi berdasarkan label atribut.
Untuk kelas GPU yang dipercepat, Anda harus secara eksplisit menentukan model GPU di labels dan nodeSelector pod. Bagian berikutnya menjelaskan cara melakukannya.
Kelas komputasi | Bidang protokol | Contoh |
Jenis GPU jaringan berkinerja tinggi | spec.nodeSelector | |
Jenis GPU | metadata.labels[ alibabacloud.com/gpu-model-series] | |
Deskripsi versi driver
Aplikasi GPU biasanya bergantung pada Compute Unified Device Architecture (CUDA) untuk berjalan. CUDA adalah platform komputasi paralel dan model pemrograman yang diperkenalkan oleh NVIDIA pada tahun 2007. Gambar berikut menunjukkan arsitektur CUDA. API lapisan driver dan API lapisan runtime dalam tumpukan perangkat lunak CUDA berbeda dalam beberapa hal berikut.
Driver API: Menawarkan fungsionalitas yang lebih komprehensif, tetapi kompleks untuk digunakan.
CUDA Runtime API: Membungkus beberapa API driver, menyembunyikan operasi inisialisasi driver tertentu, dan lebih mudah digunakan.
CUDA Driver API disediakan oleh paket NVIDIA Driver. Pustaka CUDA dan CUDA Runtime disediakan oleh paket CUDA Toolkit.

Saat menjalankan aplikasi GPU pada kluster ACS, pertimbangkan hal berikut:
Saat menginstal CUDA Toolkit dalam gambar kontainer, gunakan gambar dasar CUDA yang disediakan oleh NVIDIA. Gambar dasar ini memiliki CUDA Toolkit pra-instal. Anda kemudian dapat membangun gambar kontainer aplikasi Anda berdasarkan salah satu gambar dasar ini. Anda dapat memilih gambar dasar CUDA yang berbeda untuk menggunakan versi CUDA Toolkit yang berbeda.
Saat membuat aplikasi, tentukan versi driver yang diperlukan oleh pod. Untuk informasi lebih lanjut, lihat Tentukan versi driver untuk pod.
Untuk informasi tentang kompatibilitas versi antara CUDA Toolkit dan driver NVIDIA, lihat dokumen resmi NVIDIA Catatan Rilis CUDA Toolkit.
Versi API runtime CUDA yang digunakan oleh aplikasi sama dengan versi gambar dasar CUDA yang digunakan untuk membangun gambar kontainer. Sebagai contoh, jika gambar kontainer aplikasi Anda dibangun berdasarkan gambar dasar CUDA NVIDIA/CUDA:12.2.0-base-Ubuntu20.04, maka versi API runtime CUDA yang digunakan oleh aplikasi adalah 12.2.0.
Tentukan versi driver untuk pod
Dalam ACS, Anda dapat menentukan versi driver yang diperlukan menggunakan label pod saat aplikasi menggunakan sumber daya GPU. Gunakan format berikut.
Kelas komputasi | Bidang protokol | Contoh |
Jenis GPU | metadata.labels[alibabacloud.com/gpu-driver-version] | |
Jenis GPU jaringan berkinerja tinggi | |
Versi driver GPU
Saat menentukan versi driver untuk pod, pastikan bahwa versi yang ditentukan ada dalam daftar versi driver yang didukung oleh ACS. Untuk informasi lebih lanjut, lihat Deskripsi versi driver GPU.
Versi driver GPU default untuk pod
ACS memungkinkan Anda mengonfigurasi properti tertentu untuk pod berdasarkan aturan tertentu. Jika versi driver default tidak memenuhi kebutuhan Anda, Anda dapat menambahkan konfigurasi berikut ke kube-system/acs-profile untuk menetapkan versi driver GPU yang berbeda untuk jenis pod GPU tertentu. Untuk informasi lebih lanjut, lihat Konfigurasikan Selector.
Konfigurasi berikut menetapkan versi driver menjadi 1.5.0 untuk semua pod kelas komputasi gpu-hpn di kluster.
apiVersion: v1
kind: ConfigMap
metadata:
name: acs-profile
namespace: kube-system
data:
# Pertahankan konfigurasi sistem lainnya tetap tidak berubah.
selectors: |
[
{
"name": "gpu-hpn-driver",
"objectSelector": {
"matchLabels": {
"alibabacloud.com/compute-class": "gpu-hpn"
}
},
"effect": {
"labels": {
"alibabacloud.com/gpu-driver-version": "1.5.0"
}
}
}
]Contoh
Buat file bernama gpu-pod-with-model-and-driver.yaml dengan konten YAML berikut. Manifes tersebut menggambarkan pod dengan kelas komputasi gpu yang meminta sumber daya GPU model example-model dan versi driver 535.161.08.
apiVersion: v1 kind: Pod metadata: name: gpu-pod-with-model-and-driver labels: # Tentukan compute-class sebagai gpu. alibabacloud.com/compute-class: "gpu" # Tentukan model GPU sebagai example-model. Ganti dengan model sebenarnya, seperti T4. alibabacloud.com/gpu-model-series: "example-model" # Tentukan versi driver sebagai 535.161.08. alibabacloud.com/gpu-driver-version: "535.161.08" spec: containers: - image: registry.cn-beijing.aliyuncs.com/acs/tensorflow-mnist-sample:v1.5 name: tensorflow-mnist command: - sleep - infinity resources: requests: cpu: 1 memory: 1Gi nvidia.com/gpu: 1 limits: cpu: 1 memory: 1Gi nvidia.com/gpu: 1Jalankan perintah berikut untuk menerapkan gpu-pod-with-model-and-driver.yaml ke kluster.
kubectl apply -f gpu-pod-with-model-and-driver.yamlJalankan perintah berikut untuk memeriksa status pod.
kubectl get podOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE gpu-pod-with-model-and-driver 1/1 Running 0 87sJalankan perintah berikut untuk melihat informasi GPU pod.
CatatanDalam perintah berikut,
/usr/bin/nvidia-smiadalah parameter perintah yang telah dikemas sebelumnya dalam contoh gambar.kubectl exec -it gpu-pod-with-model-and-driver -- /usr/bin/nvidia-smiOutput yang diharapkan:
+---------------------------------------------------------------------------------------+ | NVIDIA-SMI xxx.xxx.xx Driver Version: 535.161.08 CUDA Version: xx.x | |-----------------------------------------+----------------------+----------------------+ ... |=========================================+======================+======================| | x NVIDIA example-model xx | xxxxxxxx:xx:xx.x xxx | x | | xxx xxx xx xxx / xxxx | xxxx / xxx| x% xxxxxxxx| | | | xxx | +-----------------------------------------+----------------------+----------------------+Output yang diharapkan menunjukkan bahwa model GPU adalah example-model dan versi driver adalah 535.161.08, yang sesuai dengan konfigurasi dalam label pod.
PentingOutput sebelumnya hanya merupakan contoh. Output aktual bervariasi berdasarkan lingkungan operasi Anda.