Secara default, unit alokasi memori minimum adalah 1 GiB untuk penjadwalan GPU bersama. Jika Anda memerlukan alokasi memori GPU yang lebih halus, Anda dapat menyesuaikan unit alokasi memori minimum. Topik ini menjelaskan cara mengubah unit alokasi memori minimum menjadi 128 MiB untuk penjadwalan GPU bersama.
Prasyarat
Sebuah ACK managed Pro cluster yang menjalankan Kubernetes 1.18.8 atau versi lebih baru telah dibuat. Untuk informasi lebih lanjut, lihat Buat sebuah ACK Managed Cluster dan UpgradeCluster.
Catatan penggunaan
Jika bidang aliyun.com/gpu-mem ditentukan untuk sebuah pod, maka pod tersebut meminta sumber daya GPU. Jika kluster Anda berisi pod yang meminta sumber daya GPU, Anda harus menghapus pod-pod tersebut sebelum mengubah unit alokasi memori minimum untuk penjadwalan GPU bersama. Jika tidak, buku besar penjadwal mungkin menjadi kacau.
Anda hanya dapat menyesuaikan unit alokasi memori minimum untuk node-node yang memiliki GPU sharing is enabled but memory isolation is disabled. Node-node ini memiliki label ack.node.gpu.schedule=share. Baik GPU sharing and memory isolation diaktifkan untuk node-node yang memiliki label ack.node.gpu.schedule=cgpu. Karena batasan modul isolasi memori, setiap GPU hanya dapat membuat maksimal 16 pod meskipun Anda mengubah unit alokasi memori minimum menjadi 128 MiB.
Jika Anda mengatur unit alokasi memori minimum menjadi 128 MiB, node-node dalam kluster tidak dapat diskalakan secara otomatis meskipun penskalaan otomatis diaktifkan. Sebagai contoh, jika Anda mengatur bidang aliyun.com/gpu-mem menjadi 32 untuk sebuah pod, dan memori GPU yang tersedia dalam kluster tidak cukup untuk memenuhi permintaan memori pod, tidak ada node baru yang ditambahkan dan pod tetap dalam keadaan Pending.
Jika Anda menggunakan kluster yang dibuat sebelum 20 Oktober 2021, Anda harus mengajukan tiket untuk memulai ulang penjadwal. Unit alokasi memori minimum yang baru akan berlaku hanya setelah penjadwal dimulai ulang.
Menyesuaikan unit alokasi memori minimum
ack-ai-installer belum diinstal
Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel navigasi di sebelah kiri, pilih .
Di bagian bawah halaman, klik Deploy. Pada halaman yang muncul, pilih Scheduling Policy Extension (Batch Task Scheduling, GPU Sharing, Topology-aware GPU Scheduling) dan klik Advanced.
Tambahkan parameter
gpuMemoryUnit: 128MiBpada bagian berikut, lalu klik OK.
Setelah konfigurasi, klik Deploy Cloud-native AI Suite.
Tunggu hingga status dari ack-ai-installer berubah dari Deploying menjadi Deployed, yang menunjukkan bahwa ack-ai-installer telah diterapkan.
ack-ai-installer sudah diinstal
Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel navigasi di sebelah kiri, pilih .
Di halaman Cloud-native AI Suite, temukan ack-ai-installer dalam daftar komponen dan klik Uninstall di kolom Aksi. Dalam pesan Uninstall Component, klik Confirm.
Setelah ack-ai-installer di-uninstall, klik Deploy di kolom Aksi. Di panel Parameters, tambahkan
gpuMemoryUnit: 128MiBke kode.
Klik OK.
Tunggu hingga status dari ack-ai-installer berubah dari Deploying menjadi Deployed, yang menunjukkan bahwa ack-ai-installer telah diterapkan.
Contoh
Kode sampel berikut memberikan contoh tentang cara meminta memori GPU untuk sebuah pod. Dalam contoh ini, bidang aliyun.com/gpu-mem diatur menjadi 16, dan unit alokasi memori minimum adalah 128 MiB. Oleh karena itu, jumlah total memori GPU yang diminta oleh pod adalah 2 GiB.
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: binpack
labels:
app: binpack
spec:
replicas: 1
serviceName: "binpack-1"
podManagementPolicy: "Parallel"
selector: # definisikan bagaimana deployment menemukan pod yang dikelola
matchLabels:
app: binpack-1
template: # Spesifikasi pod.
metadata:
labels:
app: binpack-1
spec:
containers:
- name: binpack-1
image: registry.cn-beijing.aliyuncs.com/ai-samples/gpushare-sample:tensorflow-1.5
command:
- bash
- gpushare/run.sh
resources:
limits:
# 128 MiB
aliyun.com/gpu-mem: 16 # 16 * 128 MiB = 2 GiB