Alibaba Cloud Container Service (ACS) mendukung berbagi GPU pada node GPU-HPN. Fitur ini memungkinkan Anda menjalankan beberapa Pod pada satu perangkat GPU. Dalam skenario penjadwalan GPU eksklusif, sebuah Pod harus meminta seluruh GPU. Jika Pod tidak memerlukan sumber daya dari GPU penuh, terjadi pemborosan sumber daya. Berbagi GPU memungkinkan Anda meminta daya komputasi heterogen dengan detail halus untuk Pod Anda dan mendukung batasan requests dan limits yang fleksibel. Kemampuan ini memenuhi kebutuhan isolasi dan berbagi sumber daya di berbagai skenario aplikasi.
Pendahuluan
Topik ini hanya berlaku untuk kluster ACS.
Berbagi GPU menyediakan deskripsi sumber daya yang lebih detail halus. Fitur ini memungkinkan satu Pod meminta sumber daya dalam satuan lebih kecil dari satu GPU penuh, seperti 0,5 dari daya komputasi GPU. Fitur ini tidak mendukung permintaan agregat dari beberapa GPU, misalnya meminta 0,5 daya komputasi dari dua GPU berbeda secara bersamaan.
Modul berbagi GPU mempertahankan versi driver untuk Pod yang menggunakan berbagi GPU. Anda tidak dapat menentukan versi driver untuk masing-masing Pod.
Fitur ini sedang dalam pratinjau publik di wilayah Ulanqab dan Shanghai Finance Cloud. Untuk menggunakan fitur ini di wilayah lain, silakan submit a ticket.
Saat menggunakan berbagi GPU, Pod tidak mengakses langsung perangkat GPU tertentu. Sebaliknya, Pod berinteraksi dengan perangkat tersebut melalui modul berbagi GPU, yang terdiri atas modul proxy dan modul manajemen sumber daya. Modul proxy diintegrasikan ke dalam Pod secara default, mencegat panggilan API yang terkait dengan perangkat GPU, lalu meneruskannya ke modul sumber daya backend. Modul sumber daya menjalankan instruksi GPU pada perangkat GPU fisik sebenarnya dan membatasi penggunaan sumber daya GPU berdasarkan deskripsi sumber daya Pod.
Modul sumber daya untuk berbagi GPU juga mengonsumsi sebagian sumber daya CPU dan memori, yang secara otomatis dicadangkan saat fitur diaktifkan. Untuk informasi selengkapnya, lihat Konfigurasi node.
Konfigurasi sumber daya dan QoS
Sumber daya GPU bersama dijelaskan menggunakan batasan Kubernetes requests/limits. Anda dapat mengonfigurasi daya komputasi dan memori GPU dalam persentase. Fitur ini juga mendukung deskripsi sumber daya di mana limits lebih besar daripada requests, yang dapat menyebabkan beberapa Pod bersaing untuk sumber daya GPU secara bersamaan. ACS menetapkan Quality of Service (QoS) untuk sumber daya GPU bersama. Saat beberapa Pod pada satu node menggunakan sumber daya GPU secara bersamaan, Pod tersebut akan masuk antrian dan mekanisme preemption dapat dipicu. Berikut adalah contohnya:
...
resources:
requests: # Mengontrol jumlah Pod yang dapat dijadwalkan pada node.
alibabacloud.com/gpu-core.percentage: 10 # Persentase daya komputasi yang dibutuhkan Pod.
alibabacloud.com/gpu-memory.percentage: 10 # Persentase memori GPU yang dibutuhkan Pod.
limits: # Mengontrol batas atas sumber daya yang dapat digunakan saat runtime. Untuk informasi lebih lanjut tentang efeknya, lihat petunjuk konfigurasi.
alibabacloud.com/gpu-core.percentage: 100 # Batas atas penggunaan daya komputasi.
alibabacloud.com/gpu-memory.percentage: 100 # Batas atas penggunaan memori GPU. Melebihi batas ini menyebabkan error CUDA OOM.
...Seperti mekanisme manajemen proses pada sistem operasi, modul berbagi GPU mengklasifikasikan Pod ke dalam tiga status: hibernasi, siap, dan berjalan. Proses transisi status ditunjukkan pada gambar berikut.
Saat Pod dimulai, statusnya masuk ke hibernasi.
Saat Pod mencoba menggunakan sumber daya GPU, statusnya berubah menjadi siap. Modul berbagi GPU kemudian mengalokasikan sumber daya GPU ke Pod berdasarkan kebijakan prioritas.
Setelah sumber daya GPU dialokasikan ke Pod, statusnya berubah menjadi berjalan.
Jika masih ada Pod dalam status siap setelah semua sumber daya dialokasikan, mekanisme preemption dipicu untuk memastikan keadilan sumber daya di antara Pod.
Saat sebuah Pod dipreempt, proses yang menggunakan sumber daya GPU akan dihentikan, dan Pod kembali ke status hibernasi.
Kebijakan antrian
Pod dalam status siap diurutkan berdasarkan kebijakan First In, First Out (FIFO). Modul berbagi GPU mengalokasikan sumber daya ke Pod yang pertama kali memasuki status siap. Jika sumber daya saat ini tidak mencukupi, kebijakan preemption dipicu.
Kebijakan preemption
Saat sumber daya tidak dapat memenuhi permintaan Pod dalam status siap, modul berbagi GPU mencoba melakukan preemption terhadap Pod lain. Pertama, modul tersebut menyaring Pod yang sedang berjalan berdasarkan kondisi tertentu. Kemudian, modul memberi skor dan mengurutkan Pod yang memenuhi syarat, lalu melakukan preemption satu per satu hingga permintaan sumber daya Pod dalam antrian terpenuhi.
Jika tidak ada Pod yang sedang berjalan yang memenuhi kondisi penyaringan, Pod dalam status siap tetap berada dalam antrian dan menunggu sumber daya. Rinciannya sebagai berikut.
Jenis kebijakan | Deskripsi |
Kebijakan penyaringan | Pod yang sedang berjalan telah terus-menerus menggunakan sumber daya GPU selama 2 jam. Nilai ini dapat dikustomisasi. Untuk informasi selengkapnya, lihat Konfigurasi QoS. |
Kebijakan penilaian | Durasi Pod terus-menerus menggunakan sumber daya GPU. Pod yang telah menggunakan sumber daya lebih lama akan dipreempt terlebih dahulu. |
Model berbagi sumber daya
Berbagi GPU didasarkan pada model bersama dan memungkinkan beberapa Pod berjalan pada satu kartu GPU secara bersamaan. ACS saat ini mendukung model berbagi berikut:
Nama model | Efek | Konfigurasi sumber daya GPU bersama | Kebijakan antrian | Kebijakan preemption | Skenario |
share-pool | Memperlakukan semua GPU pada node sebagai pool bersama. Pod dapat menggunakan GPU fisik apa pun yang memiliki sumber daya idle. |
| FIFO | Mendukung konfigurasi kustom. | Skenario pengembangan Notebook. Dikombinasikan dengan konfigurasi request/limit dalam QoS sumber daya, model ini mendukung penggunaan sumber daya GPU oleh banyak pengguna pada jam sepi. Saat sumber daya tidak mencukupi, mekanisme QoS seperti antrian dan preemption dipicu. Untuk informasi selengkapnya, lihat Contoh: Gunakan model share-pool untuk penggunaan sumber daya jam sepi dalam skenario Notebook. |
static | Skenario GPU slicing. Menetapkan perangkat GPU tetap ke Pod, yang tidak berubah selama runtime. Penjadwal memprioritaskan penempatan Pod pada GPU yang sama untuk menghindari fragmentasi. |
Peringatan Jika request lebih kecil dari limit untuk daya komputasi atau memori GPU, terjadi persaingan sumber daya antar Pod. Hal ini bahkan dapat menyebabkan Pod dihentikan karena error kehabisan memori (OOM). | Tidak didukung | Tidak didukung | Aplikasi AI skala kecil di mana beberapa Pod berbagi perangkat GPU untuk meningkatkan pemanfaatan sumber daya. Karena batasan `request`==`limit`, Pod dapat memperoleh sumber daya GPU kapan saja selama runtime tanpa perlu mengantri. |
Contoh: Gunakan model share-pool untuk penggunaan sumber daya jam sepi dalam skenario Notebook
Dalam pengembangan Notebook, aplikasi biasanya tidak menggunakan sumber daya dalam waktu lama. Anda dapat menggunakan model share-pool agar Pod berjalan pada kartu GPU berbeda selama jam sepi. Pod hanya masuk antrian siap untuk menunggu sumber daya saat benar-benar membutuhkannya.
Berikut adalah kasus penggunaan untuk skenario Notebook:
Pod A dan B dikonfigurasi dengan `requests=0,5` dan `limits=0,5`. Pod C dan D dikonfigurasi dengan `requests=0,5` dan `limits=1`. Berdasarkan nilai `requests`, Pod-Pod ini dapat dijadwalkan ke satu node GPU-HPN yang memiliki dua GPU.
Waktu T1:
Pod A dan Pod C sedang menggunakan sumber daya. Pod B dan Pod D berada dalam antrian siap, menunggu penjadwalan.
Modul berbagi GPU mencoba mengalokasikan sumber daya ke Pod D, yang berada di urutan terdepan antrian. Namun, GPU 0 hanya memiliki sumber daya idle sebesar 0,5 GPU. Meskipun `request` Pod D adalah 0,5—yang dapat dipenuhi oleh kapasitas yang tersedia—`limit`-nya adalah 1. Menjalankan Pod A dan Pod D pada GPU yang sama akan menyebabkan persaingan sumber daya. Oleh karena itu, modul berbagi GPU tetap mempertahankan Pod D dalam antrian.
Waktu T2 - Tahap 1:
Tugas Pod C selesai, dan Pod tersebut masuk antrian hibernasi.
Setelah GPU 1 menjadi idle, sumber dayanya dialokasikan ke Pod D.
Waktu T2 - Tahap 2:
Sumber daya dialokasikan ke Pod B. Karena `limit` Pod B adalah 0,5, Pod tersebut dapat berjalan bersamaan dengan Pod A pada GPU 0 tanpa persaingan sumber daya.
Contoh: Gunakan berbagi GPU
Contoh ini menunjukkan cara menggunakan fitur berbagi GPU. Prosedurnya mencakup mengaktifkan fitur berbagi GPU (share-pool) pada node GPU-HPN, mengirimkan Pod yang menggunakan sumber daya GPU bersama, lalu menonaktifkan fitur tersebut pada node.
Langkah 1: Tambahkan label ke node GPU-HPN
Lihat node GPU-HPN.
PentingSebelum mengaktifkan fitur ini, Anda harus menghapus semua Pod pada node yang meminta sumber daya GPU eksklusif. Anda tidak perlu menghapus Pod yang hanya meminta sumber daya CPU dan memori.
kubectl get node -l alibabacloud.com/node-type=reservedOutput yang diharapkan:
NAME STATUS ROLES AGE VERSION cn-wulanchabu-c.cr-xxx Ready agent 59d v1.28.3-aliyunTambahkan label
alibabacloud.com/gpu-share-policy=share-poolke nodecn-wulanchabu-c.cr-xxxuntuk mengaktifkan fitur berbagi GPU.$ kubectl label node cn-wulanchabu-c.cr-xxx alibabacloud.com/gpu-share-policy=share-pool
Langkah 2: Periksa status pengaktifan node
Tunggu hingga fitur diaktifkan pada node, lalu periksa status pengaktifannya. Anda dapat melihat sumber daya GPU bersama di bidang capacity. Di bidang conditions, GPUSharePolicyValid bernilai True, yang menunjukkan bahwa fitur telah diaktifkan.
$ kubectl get node cn-wulanchabu-c.cr-xxx -o yamlSetelah kebijakan berbagi GPU berlaku, status node diperbarui. Output yang diharapkan:
# Output aktual dapat berbeda.
apiVersion: v1
kind: Node
spec:
# ...
status:
allocatable:
# Deskripsi sumber daya GPU bersama
alibabacloud.com/gpu-core.percentage: "1600"
alibabacloud.com/gpu-memory.percentage: "1600"
# Setelah fitur diaktifkan, sumber daya CPU, memori, dan penyimpanan dicadangkan untuk modul berbagi GPU.
cpu: "144"
memory: 1640Gi
nvidia.com/gpu: "16"
ephemeral-storage: 4608Gi
capacity:
# Deskripsi sumber daya GPU bersama
alibabacloud.com/gpu-core.percentage: "1600"
alibabacloud.com/gpu-memory.percentage: "1600"
cpu: "176"
memory: 1800Gi
nvidia.com/gpu: "16"
ephemeral-storage: 6Ti
conditions:
# Menunjukkan apakah konfigurasi kebijakan berbagi GPU valid.
- lastHeartbeatTime: "2025-01-07T04:13:04Z"
lastTransitionTime: "2025-01-07T04:13:04Z"
message: gpu share policy is valid.
reason: Valied
status: "True"
type: GPUSharePolicyValid
# Menunjukkan kebijakan berbagi GPU yang berlaku pada node saat ini.
- lastHeartbeatTime: "2025-01-07T04:13:04Z"
lastTransitionTime: "2025-01-07T04:13:04Z"
message: gpu share policy is share-pool.
reason: share-pool
status: "True"
type: GPUSharePolicyUntuk informasi selengkapnya tentang item konfigurasi sumber daya GPU bersama, lihat Konfigurasi node.
Langkah 3: Deploy Pod dengan spesifikasi sumber daya GPU bersama
Buat file bernama gpu-share-demo.yaml. Konfigurasikan agar menggunakan model
share-poolyang sama dengan konfigurasi node.apiVersion: v1 kind: Pod metadata: labels: alibabacloud.com/compute-class: "gpu-hpn" # Tetapkan model berbagi GPU untuk Pod ke share-pool, yang sama dengan konfigurasi node. alibabacloud.com/gpu-share-policy: "share-pool" # static name: gpu-share-demo namespace: default spec: containers: - name: demo image: registry-cn-wulanchabu-vpc.ack.aliyuncs.com/acs/stress:v1.0.4 args: - '1000h' command: - sleep # Tentukan sumber daya GPU bersama gpu-core.percentage dan gpu-memory.percentage dalam deskripsi sumber daya. # Untuk informasi selengkapnya tentang efek request dan limit, lihat petunjuk konfigurasi. resources: limits: cpu: '5' memory: 50Gi alibabacloud.com/gpu-core.percentage: 100 alibabacloud.com/gpu-memory.percentage: 100 requests: cpu: '5' memory: 50Gi alibabacloud.com/gpu-core.percentage: 10 alibabacloud.com/gpu-memory.percentage: 10Deploy Pod contoh.
kubectl apply -f gpu-share-demo.yaml
Langkah 4: Periksa penggunaan sumber daya GPU bersama Pod
Login ke kontainer untuk memeriksa penggunaan sumber daya GPU bersama Pod.
kubectl exec -it pod gpu-share-demo -- /bin/bashGunakan perintah seperti `nvidia-smi` untuk melihat alokasi dan penggunaan sumber daya GPU kontainer. Output aktual dapat berbeda.
Untuk Pod jenis share-pool, bidang BusID menampilkan `Pending` saat Pod tidak menggunakan sumber daya GPU.
Perintah spesifik tergantung pada jenis kartu GPU. Misalnya, nvidia-smi berlaku untuk perangkat GPU seri NVIDIA. Untuk jenis kartu lain, submit a ticket untuk bantuan.
(Opsional) Langkah 5: Nonaktifkan kebijakan berbagi GPU pada node
Sebelum menonaktifkan kebijakan, Anda harus menghapus semua Pod pada node yang meminta sumber daya GPU bersama. Anda tidak perlu menghapus Pod yang hanya meminta sumber daya CPU dan memori.
Hapus Pod yang menggunakan fitur berbagi GPU.
$ kubectl delete pod gpu-share-demoNonaktifkan fitur berbagi GPU pada node.
$ kubectl label node cn-wulanchabu-c.cr-xxx alibabacloud.com/gpu-share-policy=nonePeriksa kembali status konfigurasi kebijakan node.
$ kubectl get node cn-wulanchabu-c.cr-xxx -o yamlOutput yang diharapkan:
apiVersion: v1 kind: Node spec: # ... status: allocatable: # Setelah fitur dinonaktifkan, sumber daya CPU dan memori yang dicadangkan dikembalikan ke nilai awalnya. cpu: "176" memory: 1800Gi nvidia.com/gpu: "16" ephemeral-storage: 4608Gi capacity: cpu: "176" memory: 1800Gi nvidia.com/gpu: "16" ephemeral-storage: 6Ti conditions: # Menunjukkan apakah konfigurasi kebijakan berbagi GPU valid. - lastHeartbeatTime: "2025-01-07T04:13:04Z" lastTransitionTime: "2025-01-07T04:13:04Z" message: gpu share policy config is valid. reason: Valid status: "True" type: GPUSharePolicyValid # Menunjukkan kebijakan berbagi GPU yang berlaku pada node saat ini. - lastHeartbeatTime: "2025-01-07T04:13:04Z" lastTransitionTime: "2025-01-07T04:13:04Z" message: gpu share policy is none. reason: none status: "False" type: GPUSharePolicy
Petunjuk konfigurasi rinci
Konfigurasi node
Konfigurasi pengaktifan
Untuk mengaktifkan berbagi GPU, Anda dapat mengonfigurasi label pada node. Rinciannya sebagai berikut.
Item konfigurasi | Deskripsi | Nilai valid | Contoh |
alibabacloud.com/gpu-share-policy | Kebijakan berbagi sumber daya GPU. |
| |
Jika Pod yang menggunakan GPU eksklusif sudah ada pada node, Anda harus menghapusnya sebelum mengaktifkan kebijakan berbagi.
Jika Pod yang menggunakan sumber daya GPU bersama sudah ada pada node, Anda tidak dapat mengubah atau menonaktifkan kebijakan berbagi GPU. Anda harus menghapus Pod tersebut terlebih dahulu.
Anda tidak perlu menghapus Pod yang hanya meminta sumber daya CPU dan memori.
Konfigurasi QoS
Pada node GPU-HPN, Anda dapat mengonfigurasi parameter Quality of Service (QoS) untuk berbagi GPU dalam anotasi node. Gunakan format berikut.
apiVersion: v1
kind: Node
...
metadata:
annotations:
alibabacloud.com/gpu-share-qos-config: '{"preemptEnabled": true, "podMaxDurationMinutes": 120, "reservedEphemeralStorage": "1.5Ti"}'
...Berikut penjelasan rincinya:
Parameter | Tipe | Nilai valid | Deskripsi |
preemptEnabled | Boolean |
| Hanya berlaku untuk model share-pool. Menentukan apakah preemption diaktifkan. Nilai default adalah true, yang mengaktifkan preemption. |
podMaxDurationMinutes | Int | Bilangan bulat lebih besar dari 0. Satuan: menit. | Hanya berlaku untuk model share-pool. Pod hanya dapat dipreempt jika telah menggunakan GPU lebih lama dari durasi ini. Nilai default adalah 120, yaitu 2 jam. |
reservedEphemeralStorage | resource.Quantity | Lebih besar atau sama dengan 0. Satuan dalam format string Kubernetes, seperti 500Gi. | Kapasitas terjadwal untuk penyimpanan sementara lokal node. Nilai default adalah 1,5 TiB. |
Lihat sumber daya bersama pada node
Setelah fitur diaktifkan, nama sumber daya GPU bersama yang sesuai ditambahkan ke bidang `allocatable` dan `capacity` node. Overhead sumber daya dasar dikurangi dari bidang `allocatable`. Nama sumber daya dijelaskan sebagai berikut.
Item konfigurasi | Deskripsi | Metode perhitungan |
alibabacloud.com/gpu-core.percentage | Daya komputasi sumber daya GPU bersama, dalam format persentase. Bidang ini ditambahkan saat fitur diaktifkan dan dihapus saat fitur dinonaktifkan. | Jumlah perangkat × 100. Misalnya, untuk mesin dengan 16 GPU, nilainya adalah 1600. |
alibabacloud.com/gpu-memory.percentage | Memori GPU sumber daya GPU bersama, dalam format persentase. Bidang ini ditambahkan saat fitur diaktifkan dan dihapus saat fitur dinonaktifkan. | Jumlah perangkat × 100. Misalnya, untuk mesin dengan 16 GPU, nilainya adalah 1600. |
cpu | Setelah fitur diaktifkan, overhead dasar dikurangi dari | Jumlah perangkat × 2. Misalnya, untuk mesin dengan 16 GPU, 32 core dicadangkan. |
memory | Jumlah perangkat × 10 GB. Misalnya, untuk mesin dengan 16 GPU, 160 GB dicadangkan. | |
ephemeral-storage | 1,5 TB disk space per node. |
Kiat kebenaran
Bidang | Nilai | Deskripsi |
type | GPUSharePolicyValid | Menunjukkan apakah konfigurasi berbagi GPU saat ini valid. |
status | "True", "False" |
|
reason | Valid, InvalidParameters, InvalidExistingPods, ResourceNotEnough |
|
message | - | Pesan yang mudah dipahami pengguna. |
| UTC | Waktu terakhir |
Kebijakan berbagi GPU yang berlaku saat ini
Bidang | Nilai | Deskripsi |
type | GPUSharePolicy | Menunjukkan apakah konfigurasi berbagi GPU saat ini valid. |
status | "True", "False" |
|
reason | none, share-pool, static |
|
message | - | Pesan yang mudah dipahami pengguna. |
| UTC | Waktu terakhir |
Jika sumber daya node tidak berubah seperti yang dijelaskan di atas setelah Anda mengaktifkan atau menonaktifkan fitur, modifikasi konfigurasi telah gagal. Anda dapat memeriksa pesan kondisi validitas di bidang conditions.
Konfigurasi Pod
Setelah fitur diaktifkan, Anda dapat menggunakannya dengan mengonfigurasi label sumber daya GPU bersama pada Pod.
apiVersion: v1
kind: Pod
metadata:
labels:
# Hanya kelas komputasi gpu-hpn yang didukung.
alibabacloud.com/compute-class: "gpu-hpn"
# Tetapkan model berbagi GPU untuk Pod ke share-pool, yang sama dengan konfigurasi node.
alibabacloud.com/gpu-share-policy: "share-pool"
name: gpu-share-demo
namespace: default
spec:
containers:
- name: demo
image: registry-cn-wulanchabu-vpc.ack.aliyuncs.com/acs/stress:v1.0.4
args:
- '1000h'
command:
- sleep
resources:
limits:
cpu: '5'
memory: 50Gi
alibabacloud.com/gpu-core.percentage: 100
alibabacloud.com/gpu-memory.percentage: 100
requests:
cpu: '5'
memory: 50Gi
alibabacloud.com/gpu-core.percentage: 10
alibabacloud.com/gpu-memory.percentage: 10Item konfigurasi dijelaskan sebagai berikut:
Kelas komputasi
Item konfigurasi | Nilai | Deskripsi |
metadata.labels.alibabacloud.com/compute-class | gpu-hpn | Hanya kelas komputasi gpu-hpn yang didukung. |
Kebijakan berbagi GPU
Item konfigurasi | Tipe | Nilai valid | Deskripsi |
metadata.labels.alibabacloud.com/gpu-share-policy | String |
| Menentukan model berbagi GPU untuk Pod. Hanya node yang cocok dengan model ini yang dipertimbangkan untuk penjadwalan. |
Kebutuhan sumber daya
Konfigurasikan sumber daya GPU bersama dalam requests sumber daya kontainer untuk menggambarkan kebutuhan dan batas daya komputasi serta memori GPU. Pengaturan ini mengontrol jumlah Pod yang dapat dijadwalkan pada node. Jumlah Pod pada node juga dibatasi oleh dimensi sumber daya lain, seperti CPU, memori, dan jumlah maksimum Pod.
Kategori kebutuhan | Item konfigurasi | Tipe | Nilai valid | Deskripsi |
requests | alibabacloud.com/gpu-core.percentage | Int | kebijakan share-pool: [10, 100] kebijakan static: [10, 100) | Persentase daya komputasi. Ini menunjukkan proporsi daya komputasi GPU tunggal yang diminta. Minimum 10%. |
alibabacloud.com/gpu-memory.percentage | Persentase memori GPU. Ini menunjukkan proporsi memori GPU tunggal yang diminta. Minimum 10%. | |||
limits | alibabacloud.com/gpu-core.percentage | Persentase daya komputasi. Ini menunjukkan batas proporsi daya komputasi GPU tunggal yang diminta. Minimum 10%. | ||
alibabacloud.com/gpu-memory.percentage | Persentase memori GPU. Ini menunjukkan batas proporsi memori GPU tunggal yang diminta. Minimum 10%. |
Batasan konfigurasi
Selain batasan pada masing-masing item konfigurasi, batasan berikut berlaku saat Pod meminta sumber daya.
Anda harus menentukan memori GPU dan daya komputasi (
alibabacloud.com/gpu-core.percentagedanalibabacloud.com/gpu-memory.percentage) baik direquestsmaupunlimits.Pod dapat memiliki paling banyak satu kontainer yang menggunakan sumber daya GPU bersama. Biasanya ini adalah kontainer utama. Kontainer lain, seperti kontainer sidecar, hanya dapat meminta sumber daya non-GPU seperti CPU dan memori.
Kontainer tidak dapat meminta sumber daya GPU eksklusif (seperti
nvidia.com/gpu) dan sumber daya GPU bersama (alibabacloud.com/gpu-core.percentage,alibabacloud.com/gpu-memory.percentage) secara bersamaan.
FAQ
Apa yang terjadi pada Pod dalam antrian siap jika tidak ada sumber daya GPU yang tersedia?
Saat Pod berbagi GPU menunggu sumber daya, Pod tersebut secara berkala mencetak pesan. Berikut adalah contoh pesannya.
You have been waiting for ${1} seconds. Approximate position: ${2}Parameter ${1} menunjukkan waktu tunggu, dan parameter ${2} menunjukkan posisi saat ini dalam antrian siap.
Apa saja metrik pemantauan Pod yang spesifik untuk mode berbagi GPU?
Untuk Pod yang menggunakan sumber daya GPU bersama, Anda dapat menggunakan metrik berikut untuk melihat penggunaan sumber dayanya.
Metrik | Deskripsi | Contoh |
DCGM_FI_POOLING_STATUS | Hanya disediakan dalam mode share-pool. Menunjukkan status Pod dalam mode berbagi GPU, termasuk hibernasi, siap, dan berjalan. Rinciannya sebagai berikut:
| |
DCGM_FI_POOLING_POSITION | Hanya disediakan dalam mode share-pool. Menunjukkan bahwa Pod sedang menunggu sumber daya dalam antrian siap. Nilainya menunjukkan posisi Pod dalam antrian siap, dimulai dari 1. Metrik ini hanya muncul saat POOLING_STATUS=1. | |
Bagaimana perbedaan metrik pemanfaatan GPU saat Pod menggunakan berbagi GPU?
Metrik pemanfaatan GPU untuk Pod tetap sama seperti sebelumnya. Namun, untuk Pod yang menggunakan berbagi GPU, label dan makna metriknya berbeda.
Dalam data pemantauan Pod yang disediakan oleh ACS, metrik seperti pemanfaatan daya komputasi GPU dan penggunaan memori GPU adalah nilai absolut berdasarkan seluruh kartu GPU, yang sama seperti dalam skenario GPU eksklusif.
Penggunaan memori GPU yang terlihat dalam Pod menggunakan perintah seperti `nvidia-smi` adalah nilai absolut, yang sama seperti dalam skenario GPU eksklusif. Namun, pemanfaatan daya komputasi adalah nilai relatif, di mana penyebutnya adalah limit Pod.
Informasi perangkat, seperti nomor ID dalam metrik pemanfaatan GPU Pod, sesuai dengan ID aktual pada node. Penomoran tidak selalu dimulai dari 0.
Untuk model berbagi share-pool, nomor perangkat dalam metrik dapat berubah karena Pod menggunakan perangkat GPU berbeda dari pool secara elastis.
Jika berbagi GPU diaktifkan hanya pada beberapa node dalam kluster, bagaimana cara menghindari konflik penjadwalan dengan Pod GPU eksklusif?
Penjadwal default dalam kluster ACS secara otomatis mencocokkan tipe Pod dan node untuk menghindari konflik penjadwalan.
Jika Anda menggunakan penjadwal kustom, Pod GPU eksklusif mungkin dijadwalkan ke node berbagi GPU karena kapasitas node mencakup sumber daya perangkat GPU dan sumber daya GPU bersama. Anda dapat memilih salah satu solusi berikut:
Solusi 1: Tulis plugin penjadwal yang secara otomatis mendeteksi label konfigurasi dan protokol
conditionnode ACS untuk menyaring node dengan tipe yang tidak sesuai. Untuk informasi selengkapnya, lihat Scheduling Framework.Solusi 2: Gunakan label atau taint Kubernetes. Tambahkan label atau taint ke node tempat berbagi GPU diaktifkan. Lalu, konfigurasikan kebijakan afinitas berbeda untuk Pod GPU eksklusif dan Pod GPU bersama.
Informasi apa yang tersedia saat Pod berbagi GPU dipreempt?
Untuk model berbagi share-pool, saat preemption dipicu, Pod memiliki Event dan Condition. Event berada dalam format data tidak terstruktur. Untuk membaca data terstruktur, Anda dapat mengambilnya dari bidang reason dan status Condition yang sesuai. Rinciannya sebagai berikut.
# Menunjukkan bahwa sumber daya GPU Pod saat ini dipreempt. Nama Pod yang melakukan preemption adalah <new-pod-name>.
Warning GPUSharePreempted 5m15s gpushare GPU is preempted by <new-pod-name>.
# Menunjukkan bahwa Pod saat ini melakukan preemption terhadap sumber daya GPU Pod lain. Nama Pod yang dipreempt adalah <old-pod-name>.
Warning GPUSharePreempt 3m47s gpushare GPU is preempted from <old-pod-name>.- type: Interruption.GPUShareReclaim # Jenis event untuk preemption Pod berbagi GPU.
status: "True" # True menunjukkan bahwa aksi preemption atau preemption-by terjadi.
reason: GPUSharePreempt # GPUSharePreempt menunjukkan bahwa Pod ini melakukan preemption terhadap Pod lain. GPUSharePreempted menunjukkan bahwa Pod ini dipreempt oleh Pod lain.
message: GPU is preempted from <old-pod-name>. # Pesan yang mudah dipahami pengguna, mirip dengan event.
lastTransitionTime: "2025-04-22T08:12:09Z" # Waktu saat preemption terjadi.
lastProbeTime: "2025-04-22T08:12:09Z"Bagaimana cara menjalankan lebih banyak Pod pada node dalam skenario Notebook?
Untuk Pod yang diaktifkan berbagi GPU, ACS juga memungkinkan Anda mengonfigurasi spesifikasi CPU dan memori di mana `request` lebih kecil dari `limit`. Hal ini membantu memanfaatkan sumber daya node secara optimal. Perhatikan bahwa saat total `limit` sumber daya untuk Pod yang dikirim ke node melebihi sumber daya allocatable node, Pod akan bersaing untuk sumber daya CPU dan memori. Anda dapat menganalisis persaingan sumber daya CPU dan memori dengan meninjau data pemanfaatan sumber daya node. Untuk informasi selengkapnya, lihat Metrik pemantauan tingkat node ACS GPU-HPN. Untuk Pod, persaingan sumber daya CPU tercermin dalam CPU Steal Time Pod. Persaingan sumber daya memori memicu error kehabisan memori (OOM) tingkat mesin, yang menyebabkan beberapa Pod dihentikan. Rencanakan prioritas Pod dan spesifikasi sumber daya berdasarkan karakteristik aplikasi Anda untuk menghindari dampak negatif terhadap kualitas layanan Pod akibat persaingan sumber daya.