Container Service for Kubernetes (ACK) memungkinkan Anda menjadwalkan dan mengelola sumber daya GPU menggunakan penjadwalan GPU. Mode penjadwalan GPU default sama dengan yang digunakan di Kubernetes open source. Dalam topik ini, pekerjaan TensorFlow yang dipercepat GPU digunakan sebagai contoh untuk menjelaskan cara cepat menerapkan aplikasi berat GPU.
Catatan penggunaan
Disarankan untuk meminta sumber daya GPU pada node yang dikelola oleh ACK dengan cara serupa seperti meminta sumber daya ekstensi Kubernetes. Perhatikan hal-hal berikut ketika meminta sumber daya GPU untuk aplikasi dan menggunakan sumber daya tersebut.
Jangan jalankan aplikasi berat GPU langsung pada node.
Hindari penggunaan alat baris perintah seperti
docker,podman, ataunerdctluntuk membuat kontainer atau meminta sumber daya GPU untuk kontainer. Sebagai contoh, jangan jalankan perintahdocker run --gpus allataudocker run -e NVIDIA_VISIBLE_DEVICES=alluntuk menjalankan aplikasi berat GPU.Jangan tambahkan variabel lingkungan
NVIDIA_VISIBLE_DEVICES=allatauNVIDIA_VISIBLE_DEVICES=<GPU ID>ke bagianenvdalam file YAML pod. Hindari penggunaan variabel lingkunganNVIDIA_VISIBLE_DEVICESuntuk meminta sumber daya GPU untuk pod dan menjalankan aplikasi berat GPU.Jangan atur
NVIDIA_VISIBLE_DEVICES=alldan jalankan aplikasi berat GPU saat membuat gambar kontainer jika variabel lingkunganNVIDIA_VISIBLE_DEVICEStidak ditentukan dalam file YAML pod.Jangan tambahkan
privileged: trueke bagiansecurityContextdalam file YAML pod dan jalankan aplikasi berat GPU.
Penggunaan metode-metode di atas untuk meminta sumber daya GPU dapat menimbulkan risiko keamanan berikut.
Jika salah satu metode di atas digunakan untuk meminta sumber daya GPU pada node tanpa menentukan detail dalam buku besar sumber daya perangkat penjadwal, informasi alokasi sumber daya GPU aktual mungkin berbeda dari yang tercatat dalam buku besar. Akibatnya, beberapa pod yang meminta sumber daya GPU tetap dapat dijadwalkan ke node tersebut. Hal ini dapat menyebabkan kompetisi antara aplikasi untuk mendapatkan sumber daya dari GPU yang sama, sehingga beberapa aplikasi mungkin gagal dimulai karena sumber daya GPU yang tidak mencukupi.
Metode-metode tersebut juga dapat menyebabkan masalah lain yang tidak diketahui, seperti masalah yang dilaporkan oleh komunitas NVIDIA.
Prosedur
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di panel kiri, pilih .
Di halaman Deployments, klik Create from YAML. Tempel blok kode berikut ke editor Template dan klik Create.
apiVersion: v1 kind: Pod metadata: name: tensorflow-mnist namespace: default spec: containers: - image: registry.cn-beijing.aliyuncs.com/acs/tensorflow-mnist-sample:v1.5 name: tensorflow-mnist command: - python - tensorflow-sample-code/tfjob/docker/mnist/main.py - --max_steps=100000 - --data_dir=tensorflow-sample-code/data resources: limits: nvidia.com/gpu: 1 # Meminta satu GPU untuk pod. workingDir: /root restartPolicy: AlwaysDi panel navigasi kiri halaman manajemen kluster, pilih , temukan pod yang Anda buat, lalu klik nama pod untuk melihat informasi pod.
Klik tab Logs dan lihat log pekerjaan TensorFlow. Output berikut menunjukkan bahwa pekerjaan tersebut menggunakan GPU.
