All Products
Search
Document Center

Container Service for Kubernetes:Aktifkan fitur penjadwalan GPU

Last Updated:Aug 21, 2026

Saat men-deploy beban kerja GPU di ACK managed Pro cluster, tetapkan label penjadwalan GPU (exclusive, shared, topology-aware) dan label model kartu GPU untuk mengoptimalkan pemanfaatan serta penargetan penjadwalan. Penjadwalan shared dan topology-aware memerlukan versi Pro; penjadwalan berdasarkan model kartu didukung pada semua jenis kluster.

Ikhtisar label penjadwalan

Label penjadwalan GPU mengidentifikasi model GPU dan kebijakan alokasi untuk manajemen sumber daya detail halus.

Mode penjadwalan

Nilai label

Kasus penggunaan

Exclusive scheduling (Default)

ack.node.gpu.schedule: default

Untuk tugas yang kritis terhadap kinerja dan memerlukan akses eksklusif ke GPU, seperti pelatihan model dan komputasi kinerja tinggi (HPC).

Shared scheduling

ack.node.gpu.schedule: cgpu

ack.node.gpu.schedule: core_mem

ack.node.gpu.schedule: share

ack.node.gpu.schedule: mps

Ideal untuk tugas ringan konkuren seperti skenario multi-tenancy dan inferensi.

  • cgpu: Daya komputasi bersama dengan memori GPU terisolasi, berbasis Alibaba Cloud cGPU.

  • core_mem: Daya komputasi dan memori GPU terisolasi.

  • share: Daya komputasi dan memori GPU bersama tanpa isolasi.

  • mps: Daya komputasi bersama dengan memori GPU terisolasi, berbasis NVIDIA Multi-Process Service (MPS) dengan Alibaba Cloud cGPU.

ack.node.gpu.placement: binpack

ack.node.gpu.placement: spread

Mengoptimalkan alokasi sumber daya pada node multi-GPU dengan penjadwalan bersama cgpu, core_mem, share, atau mps diaktifkan.

  • binpack: (Default) Mengisi satu GPU dengan Pod sebelum mengalokasikan GPU berikutnya, mengurangi fragmentasi sumber daya. Ideal untuk memaksimalkan pemanfaatan atau penghematan energi.

  • spread: Menyebarluaskan Pod di seluruh GPU untuk mengurangi dampak kegagalan satu kartu. Cocok untuk beban kerja berkelanjutan tinggi.

Topology-aware scheduling

ack.node.gpu.schedule: topology

Menetapkan kombinasi GPU optimal ke sebuah Pod berdasarkan topologi fisik GPU dalam sebuah node. Ideal untuk tugas yang sensitif terhadap latensi komunikasi antar-GPU.

Card model scheduling

aliyun.accelerator/nvidia_name: <GPU card name>

Gunakan label ini untuk mengatur memori GPU dan jumlah kartu untuk pekerjaan.
aliyun.accelerator/nvidia_mem: <GPU memory per card>
aliyun.accelerator/nvidia_count: <total number of GPU cards>

Menjadwalkan pekerjaan ke node dengan model GPU tertentu atau menghindari node dengan model tertentu.

Aktifkan fitur penjadwalan

Sebuah node hanya mendukung satu mode penjadwalan GPU (exclusive, shared, atau topology-aware) dalam satu waktu. Mengaktifkan suatu mode akan mengatur sumber daya ekstensi yang dilaporkan oleh mode lain menjadi 0.

Exclusive scheduling

Tanpa label penjadwalan GPU, exclusive scheduling adalah mode default. Satu kartu GPU merupakan unit alokasi terkecil untuk Pod.

Jika Anda telah mengaktifkan mode penjadwalan GPU lain, hanya menghapus label tidak akan mengembalikan exclusive scheduling. Tetapkan label ke ack.node.gpu.schedule: default melalui kelompok node untuk mengembalikannya.

Shared scheduling

Penjadwalan bersama hanya tersedia untuk ACK managed cluster Pro. Lihat Batasan.

  1. Instal komponen ack-ai-installer

    1. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

    2. Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Applications > Cloud-native AI Suite.

    3. Di halaman Cloud-native AI Suite, klik Deploy. Di halaman Cloud-native AI Suite, pilih Scheduling Policy Extension (Batch Task Scheduling, GPU Sharing, Topology-aware GPU Scheduling).

      Untuk mengonfigurasi kebijakan penjadwalan cGPU, lihat Instal dan gunakan komponen cGPU.
    4. Di halaman Cloud-native AI Suite, klik Deploy Cloud-native AI Suite.

      Di daftar komponen pada halaman Cloud-native AI Suite, pastikan komponen ack-ai-installer telah terinstal.

  2. Aktifkan penjadwalan bersama

    1. Di halaman Clusters, klik nama kluster target Anda. Di panel navigasi sisi kiri, pilih Nodes > Node Pools.

    2. Di halaman Node Pools, klik Create Node Pool, konfigurasi label node, lalu klik Confirm.

      Pertahankan nilai default untuk pengaturan lainnya. Lihat Ikhtisar label penjadwalan untuk kasus penggunaan label.
      • Konfigurasi penjadwalan bersama dasar.

        Klik ikon Tambah Node Labels untuk Node Labels, atur Key menjadi ack.node.gpu.schedule, dan pilih salah satu nilai label berikut: cgpu, core_mem, share, atau mps (memerlukan menginstal komponen MPS Control Daemon).

      • Konfigurasi penjadwalan bersama multi-kartu.

        Untuk node dengan beberapa kartu GPU, konfigurasikan penjadwalan multi-kartu untuk mengoptimalkan alokasi sumber daya.

        Klik ikon Tambah Node Labels untuk Node Labels, atur Key menjadi ack.node.gpu.placement, dan pilih salah satu nilai label berikut: binpack atau spread.

  3. Verifikasi penjadwalan bersama

    cgpu/share/mps

    Verifikasi bahwa penjadwalan bersama cgpu, share, atau mps telah diaktifkan. Ganti <NODE_NAME> dengan nama node Anda.

    kubectl get nodes <NODE_NAME> -o yaml | grep -q "aliyun.com/gpu-mem"

    Output yang diharapkan:

    aliyun.com/gpu-mem: "60"

    Nilai bukan nol mengonfirmasi bahwa penjadwalan bersama cgpu, share, atau mps telah diaktifkan.

    core_mem

    Verifikasi bahwa penjadwalan bersama core_mem telah diaktifkan. Ganti <NODE_NAME> dengan nama node Anda.

    kubectl get nodes <NODE_NAME> -o yaml | grep -E 'aliyun\.com/gpu-core\.percentage|aliyun\.com/gpu-mem'

    Output yang diharapkan:

    aliyun.com/gpu-core.percentage:"80"
    aliyun.com/gpu-mem:"6"

    Nilai aliyun.com/gpu-core.percentage dan aliyun.com/gpu-mem bukan nol mengonfirmasi bahwa penjadwalan bersama core_mem telah diaktifkan.

    binpack

    Gunakan tool kueri sumber daya GPU untuk memeriksa alokasi sumber daya GPU pada node:

    kubectl inspect cgpu

    Output yang diharapkan:

    NAME                   IPADDRESS      GPU0(Allocated/Total)  GPU1(Allocated/Total)  GPU2(Allocated/Total)  GPU3(Allocated/Total)  GPU Memory(GiB)
    cn-shanghai.192.0.2.109  192.0.2.109  15/15                   9/15                   0/15                   0/15                   24/60
    --------------------------------------------------------------------------------------
    Allocated/Total GPU Memory In Cluster:
    24/60 (40%)

    GPU0 dialokasikan penuh (15/15) sebelum GPU1 (9/15), mengonfirmasi strategi binpack aktif.

    spread

    Gunakan tool kueri sumber daya GPU untuk memeriksa alokasi sumber daya GPU pada node:

    kubectl inspect cgpu

    Output yang diharapkan:

    NAME                   IPADDRESS      GPU0(Allocated/Total)  GPU1(Allocated/Total)  GPU2(Allocated/Total)  GPU3(Allocated/Total)  GPU Memory(GiB)
    cn-shanghai.192.0.2.109  192.0.2.109  4/15                   4/15                   0/15                   4/15                   12/60
    --------------------------------------------------------------------------------------
    Allocated/Total GPU Memory In Cluster:
    12/60 (20%)

    Sumber daya didistribusikan secara merata (4/15) di GPU0, GPU1, dan GPU3, mengonfirmasi kebijakan spread aktif.

Topology-aware scheduling

Penjadwalan topology-aware hanya tersedia untuk ACK managed cluster Pro. Lihat Persyaratan versi komponen sistem.

  1. Instal komponen ack-ai-installer.

  2. Aktifkan topology-aware scheduling

    Tambahkan label penjadwalan topology-aware melalui kelompok node: Di label node kelompok node target, atur Key menjadi ack.node.gpu.schedule dengan nilai topology.

    Mengaktifkan penjadwalan GPU topology-aware pada sebuah node akan menonaktifkan beban kerja GPU non-topology-aware. Untuk mengembalikan exclusive scheduling, ubah nilai label menjadi default melalui kelompok node.
  3. Verifikasi topology-aware scheduling

    Verifikasi bahwa penjadwalan topology-aware telah diaktifkan. Ganti <NODE_NAME> dengan nama node Anda.

    kubectl get nodes <NODE_NAME> -o yaml | grep aliyun.com/gpu

    Output yang diharapkan:

    aliyun.com/gpu: "2"

    Nilai aliyun.com/gpu bukan nol mengonfirmasi bahwa penjadwalan topology-aware telah diaktifkan.

Card model scheduling

Jadwalkan pekerjaan ke node dengan model GPU tertentu, atau hindari model tertentu.

  1. Lihat model kartu GPU

    Kueri model kartu GPU dari node kluster.

    Bidang NVIDIA_NAME menampilkan model kartu GPU.
    kubectl get nodes -L aliyun.accelerator/nvidia_name

    Output yang diharapkan:

    NAME                        STATUS   ROLES    AGE   VERSION            NVIDIA_NAME
    cn-shanghai.192.XX.XX.176   Ready    <none>   17d   v1.26.3-aliyun.1   Tesla-V100-SXM2-32GB
    cn-shanghai.192.XX.XX.177   Ready    <none>   17d   v1.26.3-aliyun.1   Tesla-V100-SXM2-32GB

    Metode pemeriksaan alternatif

    Di halaman Clusters, klik nama kluster target. Di panel navigasi sisi kiri, pilih Workloads > Pods. Untuk Pod yang sedang berjalan (misalnya, tensorflow-mnist-multigpu-***), klik Terminal di kolom Actions. Pilih kontainer target dari daftar drop-down dan jalankan perintah berikut.

    • Kueri model kartu: nvidia-smi --query-gpu=gpu_name --format=csv,noheader --id=0 | sed -e 's/ /-/g'

    • Kueri memori GPU setiap kartu: nvidia-smi --id=0 --query-gpu=memory.total --format=csv,noheader | sed -e 's/ //g'

    • Kueri jumlah total kartu GPU pada node: nvidia-smi -L | wc -l

  2. Aktifkan penjadwalan model kartu

    1. Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Workloads > Jobs.

    2. Di halaman Jobs, klik Create from YAML. Gunakan contoh berikut untuk membuat aplikasi dan mengaktifkan card model scheduling.

      Tentukan model kartu

      Pastikan aplikasi Anda berjalan pada node dengan model kartu GPU tertentu.

      Di aliyun.accelerator/nvidia_name: "Tesla-V100-SXM2-32GB", ganti Tesla-V100-SXM2-32GB dengan model kartu aktual node Anda.

      Detail YAML

      apiVersion: batch/v1
      kind: Job
      metadata:
        name: tensorflow-mnist
      spec:
        parallelism: 1
        template:
          metadata:
            labels:
              app: tensorflow-mnist
          spec:
            nodeSelector:
              aliyun.accelerator/nvidia_name: "Tesla-V100-SXM2-32GB" # Menjalankan aplikasi pada GPU Tesla V100-SXM2-32GB.
            containers:
            - name: tensorflow-mnist
              image: registry.cn-beijing.aliyuncs.com/acs/tensorflow-mnist-sample:v1.5
              command:
              - python
              - tensorflow-sample-code/tfjob/docker/mnist/main.py
              - --max_steps=1000
              - --data_dir=tensorflow-sample-code/data
              resources:
                limits:
                  nvidia.com/gpu: 1
              workingDir: /root
            restartPolicy: Never

      Setelah pekerjaan dibuat, pilih Workloads > Pods . Daftar Pod mengonfirmasi bahwa Pod dijadwalkan ke node dengan model kartu GPU yang sesuai.

      Kecualikan model kartu

      Gunakan label model kartu GPU dengan afinitas node untuk mencegah penjadwalan pada model kartu tertentu.

      Di values: - "Tesla-V100-SXM2-32GB", ganti Tesla-V100-SXM2-32GB dengan model kartu aktual node Anda.

      Detail YAML

      apiVersion: batch/v1
      kind: Job
      metadata:
        name: tensorflow-mnist
      spec:
        parallelism: 1
        template:
          metadata:
            labels:
              app: tensorflow-mnist
          spec:
            affinity:
              nodeAffinity:
                requiredDuringSchedulingIgnoredDuringExecution:
                  nodeSelectorTerms:
                  - matchExpressions:
                    - key: aliyun.accelerator/nvidia_name  # Label penjadwalan model kartu
                      operator: NotIn
                      values:
                      - "Tesla-V100-SXM2-32GB"            # Mencegah Pod dijadwalkan ke node dengan kartu Tesla-V100-SXM2-32GB.
            containers:
            - name: tensorflow-mnist
              image: registry.cn-beijing.aliyuncs.com/acs/tensorflow-mnist-sample:v1.5
              command:
              - python
              - tensorflow-sample-code/tfjob/docker/mnist/main.py
              - --max_steps=1000
              - --data_dir=tensorflow-sample-code/data
              resources:
                limits:
                  nvidia.com/gpu: 1
              workingDir: /root
            restartPolicy: Never

      Setelah pekerjaan dibuat, aplikasi tidak dijadwalkan ke node dengan aliyun.accelerator/nvidia_name bernilai Tesla-V100-SXM2-32GB, tetapi dapat berjalan pada node GPU dengan model kartu lain.

Praktik terbaik: Gunakan kelompok node terpisah untuk setiap mode penjadwalan

Buat kelompok node terpisah untuk setiap mode penjadwalan GPU, dan kelola atribut penjadwalan melalui label kelompok node. Hindari mencampur beberapa mode penjadwalan dalam satu kelompok node. Konfigurasi yang direkomendasikan:

  • Kelompok node exclusive scheduling: Tidak diperlukan label penjadwalan GPU; node secara default menggunakan exclusive scheduling. Cocok untuk tugas yang memerlukan akses eksklusif ke GPU, seperti pelatihan model dan HPC.

  • Kelompok node shared scheduling: Atur ack.node.gpu.schedule: cgpu (atau nilai label bersama lainnya). Cocok untuk skenario yang memerlukan pemanfaatan GPU lebih tinggi, seperti layanan inferensi dan multi-tenancy.

  • Kelompok node topology-aware scheduling: Atur ack.node.gpu.schedule: topology. Cocok untuk tugas yang sensitif terhadap latensi komunikasi antar-GPU, seperti pelatihan terdistribusi.

Label card model scheduling (aliyun.accelerator/nvidia_name) dapat dikombinasikan dengan mode penjadwalan di atas untuk membatasi lebih lanjut penjadwalan Pod ke node dengan model GPU tertentu.

Mengubah mode penjadwalan
  • Untuk mengubah mode penjadwalan node tertentu, hapus node tersebut dari kelompok node saat ini dan tambahkan ke kelompok node dengan mode penjadwalan target.

  • Untuk mengubah mode penjadwalan seluruh kelompok node, modifikasi label melalui operasi kelompok node. Secara default, perubahan label pada kelompok node hanya berlaku untuk node baru. Untuk menyinkronkan perubahan ke node yang sudah ada, pilih Update Labels and Taints of Existing Nodes saat mengedit kelompok node.

    Penting

    Menggunakan kubectl label untuk langsung memodifikasi label penjadwalan node tidak disarankan dan dapat menyebabkan masalah.

    Menjalankan kubectl label node <NODE_NAME> ack.node.gpu.schedule=<value> --overwrite untuk mengganti mode penjadwalan dapat menyebabkan error alokasi sumber daya pada Pod GPU yang sedang berjalan, bahkan dapat memicu eviction Pod atau error penjadwalan yang tidak dapat dipulihkan. Gunakan label kelompok node untuk mengelola mode penjadwalan dan memastikan konsistensi di seluruh node dalam kelompok tersebut.