全部产品
Search
文档中心

Container Service for Kubernetes:Mencapai multi-GPU sharing

更新时间:Jul 02, 2025

Container Service for Kubernetes (ACK) managed Pro clusters mendukung GPU sharing. Anda dapat menggunakan fitur ini untuk berbagi sumber daya GPU dan mengisolasi memori. Topik ini menjelaskan cara mengonfigurasi kebijakan multi-GPU sharing.

Prasyarat

Pengenalan multi-GPU sharing

Penting

Multi-GPU sharing memerlukan sumber daya komputasi bersama dengan memori GPU yang terisolasi.

Selama fase pengembangan model, aplikasi mungkin hanya memerlukan beberapa GPU tanpa menggunakan seluruh kapasitasnya. Mengalokasikan semua GPU ke lingkungan pengembangan dapat menyebabkan pemborosan sumber daya. Untuk menghindari masalah ini, gunakan multi-GPU sharing.

Multi-GPU sharing memungkinkan aplikasi untuk meminta N GiB memori GPU yang didistribusikan di M GPU, di mana setiap GPU mengalokasikan N/M GiB. Nilai dari N/M harus berupa bilangan bulat, dan semua M GPU harus berada pada node Kubernetes yang sama. Sebagai contoh, ketika meminta 8 GiB memori dan menentukan 2 GPU, setiap GPU akan mengalokasikan 4 GiB.

  • Berbagi GPU tunggal: Pod dapat meminta sumber daya GPU yang dialokasikan oleh satu GPU saja.

  • Berbagi multi-GPU: Pod dapat meminta sumber daya GPU yang dialokasikan secara merata oleh beberapa GPU.

Konfigurasikan kebijakan berbagi multi-GPU

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

  2. Di halaman Clusters, temukan cluster yang diinginkan dan klik namanya. Di panel kiri, pilih Workloads > Jobs.

  3. Di halaman Jobs, klik Create from YAML. Salin konten berikut ke bagian Template dan klik Create:

    Klik untuk melihat konten YAML

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: tensorflow-mnist-multigpu
    spec:
      parallelism: 1
      template:
        metadata:
          labels:
            app: tensorflow-mnist-multigpu
            # Tambahkan label pod dan batasan sumber daya untuk meminta 8 GiB memori yang dialokasikan oleh 2 GPU. Setiap GPU mengalokasikan 4 GiB memori.
            aliyun.com/gpu-count: "2"
        spec:
          containers:
          - name: tensorflow-mnist-multigpu
            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: 8 # Meminta 8 GiB memori.
            workingDir: /root
          restartPolicy: Never

    Deskripsi template YAML:

    • Template YAML mendefinisikan pekerjaan TensorFlow MNIST. Pekerjaan tersebut meminta 8 GiB memori yang dialokasikan oleh 2 GPU. Setiap GPU mengalokasikan 4 GiB memori.

    • Tambahkan label pod aliyun.com/gpu-count: 2 untuk meminta dua GPU.

    • Tambahkan batasan sumber daya aliyun.com/gpu-mem: 8 untuk meminta 8 GiB memori.

Verifikasi kebijakan berbagi multi-GPU

  1. Di halaman Clusters, temukan cluster yang diinginkan dan klik namanya. Di panel kiri, pilih Workloads > Pods.

  2. Klik Terminal di kolom Actions dari pod yang Anda buat, seperti tensorflow-mnist-multigpu-***, untuk masuk ke pod dan jalankan perintah berikut:

    nvidia-smi

    Output yang diharapkan:

    Wed Jun 14 03:24:14 2023
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 470.161.03   Driver Version: 470.161.03   CUDA Version: 11.4     |
    |-------------------------------+----------------------+----------------------+
    | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
    |                               |                      |               MIG M. |
    |===============================+======================+======================|
    |   0  Tesla V100-SXM2...  On   | 00000000:00:09.0 Off |                    0 |
    | N/A   38C    P0    61W / 300W |    569MiB /  4309MiB |      2%      Default |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
    |   1  Tesla V100-SXM2...  On   | 00000000:00:0A.0 Off |                    0 |
    | N/A   36C    P0    61W / 300W |    381MiB /  4309MiB |      0%      Default |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
    
    +-----------------------------------------------------------------------------+
    | Processes:                                                                  |
    |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
    |        ID   ID                                                   Usage      |
    |=============================================================================|
    +-----------------------------------------------------------------------------+

    Output menunjukkan bahwa pod hanya dapat menggunakan dua GPU. Setiap GPU dapat menyediakan 4.309 MiB memori, yang diminta oleh pod. Ukuran memori aktual dari setiap GPU adalah 16.160 MiB.

  3. Klik Logs di kolom Actions dari pod untuk melihat log pod. Informasi berikut ditampilkan:

    totalMemory: 4.21GiB freeMemory: 3.91GiB
    totalMemory: 4.21GiB freeMemory: 3.91GiB

    Informasi perangkat menunjukkan bahwa setiap GPU mengalokasikan 4 GiB memori. Ukuran memori aktual dari setiap GPU adalah 16.160 MiB. Ini berarti isolasi memori telah diterapkan.