Container Compute Service (ACS) mengalokasikan perangkat GPU ke Pod berdasarkan topologi GPU dari masing-masing model node GPU-HPN. Pod yang berjalan pada node yang sama bertukar data melalui saluran seperti NVLink, dan batasan partisi menjaga komunikasi GPU tetap efisien dan adil.
Prasyarat
Fitur ini hanya mendukung Pod yang menggunakan kelas komputasi gpu-hpn (compute-class) dan tipe node GPU-HPN yang sesuai.
Latar Belakang
Di dalam sebuah node GPU-HPN, perangkat GPU saling terhubung dan berkomunikasi melalui satu atau beberapa saluran. Pod yang meminta jumlah GPU berbeda dapat berjalan pada node yang sama. Untuk menjaga efisiensi dan keadilan komunikasi GPU serta mencegah gangguan antar-Pod, ACS menjadwalkan Pod berdasarkan topologi GPU node tersebut dengan membagi perangkat GPU menjadi partisi yang sesuai dengan jumlah GPU yang diminta oleh Pod, lalu mengalokasikan partisi optimal ke setiap Pod.
Gambar berikut menunjukkan sebuah node dengan delapan GPU. Setiap empat GPU membentuk satu kelompok. GPU dalam satu kelompok saling terhubung secara langsung, sedangkan kedua kelompok tersebut dihubungkan melalui PCIe.

ACS membagi perangkat pada node ini menjadi partisi-partisi berikut:
GPU yang diminta oleh Pod | Hasil alokasi perangkat yang tersedia |
8 | [0,1,2,3,4,5,6,7] |
4 | [0,1,2,3], [4,5,6,7] |
2 | [0,1], [2,3], [4,5], [6,7] |
1 | [0], [1], [2], [3], [4], [5], [6], [7] |
Pembuatan dan penghapusan Pod yang berulang pada sebuah node dapat menyebabkan fragmentasi partisi, sehingga Pod baru tidak dapat dijadwalkan dan tetap berada dalam status Pending. Untuk membebaskan perangkat yang dibutuhkan oleh Pod yang tertunda, tinjau hasil alokasi perangkat dari Pod yang berjalan pada node tersebut dan evict beberapa di antaranya berdasarkan prioritas bisnis Anda. FAQ pada topik ini menjelaskan cara merencanakan resource node untuk menghindari fragmentasi partisi, cara memilih Pod untuk dievict, serta bagaimana tipe, versi, dan konfigurasi penjadwal memengaruhi sejauh mana partisi dipertimbangkan selama penjadwalan.
Partisi tipe node GPU-HPN
Partisi dan model GPU berbeda-beda pada tipe node GPU-HPN yang disediakan oleh ACS. Untuk memeriksa partisi mana yang sedang digunakan pada sebuah node, lihat hasil alokasi perangkat dari Pod yang berjalan pada node tersebut.
gpu.p16en-16XL
Tipe node ini memiliki 16 GPU model P16EN. Tabel berikut mencantumkan partisi untuk jumlah GPU yang diminta oleh Pod.
Jumlah GPU yang diminta oleh Pod | Hasil alokasi perangkat yang tersedia |
16 | [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] |
8 | [0,1,2,3,4,5,6,7], [8,9,10,11,12,13,14,15] |
4 | [0,1,2,3], [4,5,6,7], [8,9,10,11], [12,13,14,15] |
2 | [0,3], [1,2], [4,7], [5,6], [8,11], [9,10], [12,15], [13,14] |
1 | [0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15] |
Lihat hasil penjadwalan sebuah Pod
Hasil alokasi perangkat
Untuk Pod GPU-HPN, hasil alokasi perangkat dicatat dalam anotasi Pod dengan format berikut:
apiVersion: v1
kind: Pod
metadata:
annotations:
alibabacloud.com/device-allocation: '{"gpus": {"minor": [0,1,2,3]}}'Pesan kegagalan penjadwalan akibat fragmentasi partisi
Pod yang tidak dapat dijadwalkan akan tetap berada dalam status Pending. Jalankan perintah berikut untuk melihat pesan kegagalan penjadwalan:
kubectl describe pod pod-demoOutput yang diharapkan (konten lain dihilangkan):
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling 26m default-scheduler 0/5 nodes are available: 2 Node(s) Insufficient Partitioned GPU Devices, 1 Node(s) xxx, 2 Node(s) xxx.Pada pesan seperti 0/5 nodes are available: xxx, Insufficient Partitioned GPU Devices menunjukkan bahwa penjadwalan gagal karena fragmentasi partisi pada node tersebut.
FAQ
Bagaimana cara merencanakan resource dan kebijakan node untuk menghindari fragmentasi partisi?
Rencanakan resource dan kebijakan node sebagai berikut:
Kelompokkan node berdasarkan jumlah GPU yang diminta — Tetapkan label berbeda pada node Anda untuk mengelola resource berdasarkan jumlah GPU yang diminta oleh Pod. Misalnya, jadwalkan Pod yang meminta 8 GPU dan Pod yang meminta 1 GPU ke node yang berbeda.
Bebaskan perangkat idle saat Pod sudah dalam status Pending — Saat fragmentasi partisi menyebabkan Pod berada dalam status Pending di kluster Anda, gunakan mekanisme seperti descheduling untuk mengevict beberapa Pod berprioritas rendah dan membebaskan perangkat idle bagi Pod yang tertunda.
Reservasi kapasitas jika Anda tidak dapat merencanakan label node — Jika Anda hanya memiliki beberapa node atau tidak dapat merencanakan label node, dan Pod Anda meminta berbagai jumlah GPU, reservasi kapasitas untuk memenuhi kebutuhan resource aplikasi Anda. Untuk informasi lebih lanjut, lihat GPU pod capacity reservation.
Bagaimana cara memilih Pod untuk dievict saat mengatasi fragmentasi partisi?
Identifikasi jumlah GPU yang diminta oleh Pod yang tertunda, misalnya 8 GPU.
Pada node target, baca anotasi
alibabacloud.com/device-allocationdari setiap Pod untuk menentukan perangkat mana yang telah dialokasikan. Untuk informasi lebih lanjut, lihat hasil alokasi perangkat.Tentukan Pod mana yang akan dievict berdasarkan hasil alokasi tersebut, dan pastikan perangkat yang dibebaskan memenuhi baik jumlah GPU yang diminta maupun batasan partisi dari Pod yang tertunda. Misalnya, permintaan 8 GPU pada P16EN mensyaratkan bahwa ID perangkat [0,1,2,3,4,5,6,7] atau [8,9,10,11,12,13,14,15] semuanya belum dialokasikan.
Evict Pod tersebut dengan menjalankan perintah seperti
evictataudelete.
Apa yang perlu saya ketahui tentang partisi saat menggunakan penjadwal kustom?
Setelah penjadwal kustom menetapkan Pod ke sebuah node, ACS mengalokasikan perangkat untuk Pod tersebut pada node itu. Selama alokasi perangkat, ACS mengemas perangkat sepadat mungkin untuk menghindari fragmentasi partisi.
Penjadwal kustom hanya perlu mempertimbangkan kapasitas GPU total sebuah node. Untuk resource GPU, lebih baik gunakan kebijakan bin-packing node MostAllocated, yang mengurangi fragmentasi partisi.
Penjadwal mana yang sadar topologi partisi GPU-HPN?
Gunakan tabel berikut untuk menentukan apakah penjadwal Anda sadar topologi partisi node GPU-HPN.
Tipe penjadwal | Kondisi | Deskripsi |
Penjadwal default ACS | Semua kondisi berikut terpenuhi:
dan salah satu dari kondisi versi berikut terpenuhi:
Untuk versi yang didukung, lihat kube-scheduler. | Penjadwal sadar status alokasi partisi pada node saat ini dan mengecualikan node yang partisinya tidak dapat memenuhi permintaan. Event kegagalan penjadwalan Pod mencakup pesan |
Penjadwal default ACK | Semua kondisi berikut terpenuhi:
Anda dapat menemukan versi yang didukung di kube-scheduler. | Penjadwal sadar status alokasi partisi pada node saat ini dan mengecualikan node yang partisinya tidak dapat memenuhi permintaan. Event kegagalan penjadwalan Pod mencakup pesan |
Tipe penjadwal lainnya | Tipe penjadwal, kondisi, atau konfigurasinya tidak memenuhi persyaratan di atas. | Penjadwal tidak sadar topologi partisi. Node GPU-HPN mengalokasikan perangkat sepadat mungkin. Jika partisi tidak dapat memenuhi permintaan, Pod tetap berada dalam status Pending pada node tersebut hingga partisi dapat memenuhinya, dan event kegagalan penjadwalan Pod mencakup pesan |