All Products
Search
Document Center

Container Service for Kubernetes:Konfigurasikan kebijakan pemilihan GPU untuk GPU sharing

Last Updated:Apr 25, 2026

Secara default, penjadwal mengalokasikan sumber daya GPU dengan mengisi satu GPU pada sebuah node sebelum beralih ke GPU lainnya. Pendekatan ini membantu mencegah fragmentasi memori GPU. Namun, dalam beberapa skenario, Anda mungkin ingin mendistribusikan Pod ke beberapa GPU untuk meminimalkan dampak terhadap beban kerja jika satu GPU mengalami kegagalan. Topik ini menjelaskan cara mengonfigurasi kebijakan pemilihan GPU untuk GPU sharing.

Prasyarat

Cara kerja

Saat menggunakan GPU sharing pada node dengan beberapa GPU, Anda dapat memilih salah satu dari dua kebijakan berikut untuk mengalokasikan GPU ke Pod:

  • Binpack: (Default) Penjadwal mengisi satu GPU pada node sebelum mengalokasikan sumber daya dari GPU lainnya. Pendekatan ini mencegah fragmentasi memori GPU.

  • Spread: Penjadwal mendistribusikan Pod secara merata ke semua GPU yang tersedia pada node. Pendekatan ini meminimalkan jumlah beban kerja yang terdampak jika satu GPU mengalami kegagalan.

Contoh berikut menunjukkan sebuah node dengan dua GPU, masing-masing memiliki memori GPU sebesar 15 GiB. Pod1 meminta 2 GiB memori GPU, dan Pod2 meminta 3 GiB.

Prosedur

Secara default, kebijakan pemilihan GPU untuk sebuah node adalah Binpack. Untuk menggunakan kebijakan Spread pada GPU sharing, ikuti langkah-langkah berikut.

Langkah 1: Buat kelompok node

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

  2. Pada halaman Clusters, klik nama kluster target. Di panel navigasi kiri, pilih Nodes > Node Pools.

  1. Pada halaman Node Pools, klik Create Node Pool di pojok kanan atas.

  2. Pada halaman Create Node Pool, atur parameter dan klik Confirm. Tabel berikut menjelaskan parameter utama. Untuk informasi tentang parameter lainnya, lihat Create and manage a node pool.

    Parameter

    Deskripsi

    Instance type

    Untuk Architecture, pilih GPU-accelerated instance dan pilih tipe instans.

    Kebijakan Spread hanya berlaku pada node dengan beberapa GPU. Pilih tipe instans yang memiliki beberapa GPU.

    Expected nodes

    Tentukan jumlah awal node dalam kelompok node. Atur nilai ini menjadi 0 jika Anda tidak ingin membuat node segera.

    Node label

    Klik 1.jpg untuk menambahkan dua label berikut:

    • Atur Key menjadi ack.node.gpu.schedule dan Value menjadi cgpu. Ini mengaktifkan GPU sharing dan isolasi memori GPU.

    • Atur Key menjadi ack.node.gpu.placement dan Value menjadi spread. Ini mengaktifkan kebijakan Spread untuk node tersebut.

Langkah 2: Kirim pekerjaan

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

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

  3. Di pojok kanan atas halaman, klik Create from YAML. Salin konten YAML berikut ke editor Template, modifikasi sesuai petunjuk dalam komentar, lalu klik Create.

    Detail YAML

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: tensorflow-mnist-spread
    spec:
      parallelism: 3
      template:
        metadata:
          labels:
            app: tensorflow-mnist-spread
        spec:
          nodeSelector:
             kubernetes.io/hostname: <NODE_NAME> # Ganti <NODE_NAME> dengan nama node GPU di kluster Anda agar efeknya lebih mudah diamati, contohnya cn-shanghai.192.0.2.109.
          containers:
          - name: tensorflow-mnist-spread
            image: registry.cn-beijing.aliyuncs.com/ai-samples/gpushare-sample:tensorflow-1.5
            command:
            - python
            - tensorflow-sample-code/tfjob/docker/mnist/main.py
            - --max_steps=100000
            - --data_dir=tensorflow-sample-code/data
            resources:
              limits:
                aliyun.com/gpu-mem: 4 # Meminta 4 GiB memori GPU.
            workingDir: /root
          restartPolicy: Never

    Penjelasan file YAML:

    • File YAML ini mendefinisikan sebuah Job yang menggunakan sampel TensorFlow MNIST. Job ini membuat tiga Pod, dan setiap Pod meminta 4 GiB memori GPU.

    • Sebuah Pod meminta 4 GiB memori GPU dengan mendefinisikan aliyun.com/gpu-mem: 4 pada bagian resources.limits spesifikasi Pod.

    • Agar efeknya dapat diamati pada satu node, file YAML menambahkan nodeSelector, kubernetes.io/hostname: <NODE_NAME>, untuk menjadwalkan Pod ke node tertentu.

Langkah 3: Verifikasi kebijakan Spread

Gunakan tool inspeksi GPU untuk mengkueri alokasi sumber daya GPU pada node:

kubectl inspect cgpu

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%)

Output tersebut menunjukkan bahwa ketiga Pod dijadwalkan ke GPU yang berbeda pada node tersebut. Hal ini mengonfirmasi bahwa kebijakan Spread sedang diterapkan.