全部产品
Search
文档中心

Container Compute Service:Gunakan berbagi GPU pada node GPU-HPN

更新时间:Dec 16, 2025

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

Penting
  • 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.

image

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.

image
  • 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.

requests <= limits

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.

requests == limits

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:

image

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:

  1. Pod A dan Pod C sedang menggunakan sumber daya. Pod B dan Pod D berada dalam antrian siap, menunggu penjadwalan.

  2. 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:

  1. Tugas Pod C selesai, dan Pod tersebut masuk antrian hibernasi.

  2. 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.

image

Langkah 1: Tambahkan label ke node GPU-HPN

  1. Lihat node GPU-HPN.

    Penting

    Sebelum 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=reserved

    Output yang diharapkan:

    NAME                     STATUS   ROLES   AGE   VERSION
    cn-wulanchabu-c.cr-xxx   Ready    agent   59d   v1.28.3-aliyun
  2. Tambahkan label alibabacloud.com/gpu-share-policy=share-pool ke node cn-wulanchabu-c.cr-xxx untuk 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 yaml

Setelah 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: GPUSharePolicy

Untuk informasi selengkapnya tentang item konfigurasi sumber daya GPU bersama, lihat Konfigurasi node.

Langkah 3: Deploy Pod dengan spesifikasi sumber daya GPU bersama

  1. Buat file bernama gpu-share-demo.yaml. Konfigurasikan agar menggunakan model share-pool yang 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: 10
  2. Deploy 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/bash

Gunakan perintah seperti `nvidia-smi` untuk melihat alokasi dan penggunaan sumber daya GPU kontainer. Output aktual dapat berbeda.

Catatan

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

Penting

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.

  1. Hapus Pod yang menggunakan fitur berbagi GPU.

    $ kubectl delete pod gpu-share-demo
  2. Nonaktifkan fitur berbagi GPU pada node.

    $ kubectl label node cn-wulanchabu-c.cr-xxx alibabacloud.com/gpu-share-policy=none
  3. Periksa kembali status konfigurasi kebijakan node.

    $ kubectl get node cn-wulanchabu-c.cr-xxx -o yaml

    Output 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.

  • none: Menonaktifkan fitur berbagi GPU pada node.

  • share-pool: Memperlakukan semua GPU pada node sebagai pool bersama. Pod tidak ditetapkan ke perangkat GPU tertentu dan dapat menggunakan GPU fisik apa pun yang memiliki sumber daya idle.

  • static: Skenario GPU slicing. Pod berjalan pada perangkat GPU tetap.

apiVersion: v1
kind: Node
metadata:
  labels:
    # Aktifkan fitur dan gunakan kebijakan share-pool. Anda dapat menentukan kebijakan lain pada nilai.
    alibabacloud.com/gpu-share-policy: share-pool
Penting
  • 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

  • true

  • false

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 .status.allocatable untuk modul berbagi GPU. Pencadangan dibatalkan secara otomatis saat fitur dinonaktifkan.

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"

  • True: Konfigurasi berbagi GPU saat ini valid.

  • False: Konfigurasi berbagi GPU saat ini tidak valid. Anda dapat melihat alasannya di condition.reason.

reason

Valid, InvalidParameters, InvalidExistingPods, ResourceNotEnough

  • Valid: Konfigurasi kebijakan berbagi saat ini valid.

  • InvalidParameters: Konfigurasi kebijakan berbagi saat ini memiliki kesalahan sintaksis.

  • InvalidExistingPods: Terdapat jenis Pod GPU lain pada node saat ini. Fitur tidak dapat diaktifkan atau dinonaktifkan.

  • ResourceNotEnough: Node saat ini memiliki sumber daya tidak mencukupi untuk memenuhi overhead dasar fitur berbagi GPU. Anda harus menghapus beberapa Pod sebelum mengaktifkan fitur. Untuk informasi selengkapnya tentang sumber daya terjadwal, lihat Konfigurasi node.

message

-

Pesan yang mudah dipahami pengguna.

  • lastTransitionTime

  • lastHeartbeatTime

UTC

Waktu terakhir condition diperbarui.

Kebijakan berbagi GPU yang berlaku saat ini

Bidang

Nilai

Deskripsi

type

GPUSharePolicy

Menunjukkan apakah konfigurasi berbagi GPU saat ini valid.

status

"True", "False"

  • True: Fitur berbagi GPU diaktifkan pada node saat ini.

  • False: Fitur berbagi GPU tidak diaktifkan pada node saat ini.

reason

none, share-pool, static

  • none: Fitur berbagi GPU tidak diaktifkan pada node saat ini.

  • share-pool: Kebijakan berbagi share-pool berlaku pada node saat ini.

  • static: Kebijakan berbagi static berlaku pada node saat ini.

message

-

Pesan yang mudah dipahami pengguna.

  • lastTransitionTime

  • lastHeartbeatTime

UTC

Waktu terakhir condition diperbarui.

Penting

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: 10

Item 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

  • none

  • share-pool

  • static

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.percentage dan alibabacloud.com/gpu-memory.percentage) baik di requests maupun limits.

  • 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:

  • 0 "Hibernation": Pod tidak memiliki permintaan sumber daya GPU.

  • 1 "Ready": Pod sedang menunggu sumber daya GPU.

  • 2 "Normal": Pod sedang menggunakan sumber daya GPU, dan durasi penggunaan terus-menerus belum melebihi `podMaxDurationMinutes`.

  • 3 "Preemptible": Pod sedang menggunakan sumber daya GPU, dan durasi penggunaan terus-menerus telah melebihi `podMaxDurationMinutes`. Namun, karena tidak ada Pod lain dalam antrian, Pod tersebut dapat terus menggunakan sumber daya.

DCGM_FI_POOLING_STATUS{NodeName="cn-wulanchabu-c.cr-xxx",pod="gpu-share-demo",namespace="default"} 1

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.

DCGM_FI_POOLING_POSITION{NodeName="cn-wulanchabu-c.cr-xxx",pod="gpu-share-demo",namespace="default"} 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 condition node 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.