Container Service for Kubernetes (ACK) mendukung penjadwalan dan manajemen operasional GPU. Mode penggunaan GPU default mengikuti pendekatan standar yang digunakan dalam komunitas Kubernetes. Topik ini menggunakan pekerjaan TensorFlow yang dipercepat GPU untuk menunjukkan cara menerapkan aplikasi GPU secara cepat.
Catatan penggunaan
Untuk node GPU yang dikelola oleh kluster Kubernetes, mintalah resource GPU untuk aplikasi Anda menggunakan metode permintaan resource ekstensi Kubernetes standar yang dijelaskan dalam topik ini. Saat meminta dan menggunakan resource GPU untuk aplikasi Anda, patuhi panduan berikut:
-
Jangan menjalankan aplikasi GPU secara langsung di node.
-
Jangan gunakan alat command line seperti
docker,podman, ataunerdctluntuk membuat kontainer atau meminta resource GPU. Misalnya, jangan jalankan perintahdocker run --gpus allataudocker run -e NVIDIA_VISIBLE_DEVICES=all, lalu jalankan program GPU. -
Jangan tambahkan variabel lingkungan seperti
NVIDIA_VISIBLE_DEVICES=allatauNVIDIA_VISIBLE_DEVICES=<GPU ID>ke bagianenvfile YAML Pod. Jangan gunakan variabel lingkunganNVIDIA_VISIBLE_DEVICESuntuk langsung meminta resource GPU bagi Pod dan menjalankan program GPU. -
Saat membuat image untuk Pod, jika variabel lingkungan
NVIDIA_VISIBLE_DEVICEStidak ditetapkan dalam file YAML Pod, jangan atur nilai default-nya menjadiNVIDIA_VISIBLE_DEVICES=all, lalu jalankan program GPU. -
Jangan atur
privileged: truedalamsecurityContextPod dan jalankan program GPU.
Penggunaan metode non-standar untuk meminta resource GPU dapat menimbulkan risiko keamanan.
-
Resource GPU yang diminta menggunakan metode tersebut tidak tercatat dalam buku besar resource perangkat penjadwal. Ketidaksesuaian antara alokasi resource GPU aktual di node dan catatan dalam buku besar dapat menyebabkan penjadwal menetapkan beban kerja GPU tambahan ke node yang sama. Akibatnya, layanan dapat gagal karena konflik sumber daya—seperti memori GPU—pada kartu GPU yang sama.
-
Operasi non-standar ini juga dapat menyebabkan masalah lain yang tidak diketahui, seperti error yang dilaporkan komunitas NVIDIA.
Prosedur
Masuk ke ACK console. Di panel navigasi kiri, klik Clusters.
-
Pada halaman Deployments, klik Create from YAML. Gunakan kode contoh berikut untuk membuat aplikasi.
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 kartu GPU untuk kontainer ini. workingDir: /root restartPolicy: Always -
Di panel navigasi kiri, pilih . Temukan Pod yang telah Anda buat dan klik namanya untuk melihat detailnya.
Klik tab Logs untuk melihat data log pekerjaan TensorFlow. Output berikut mengonfirmasi bahwa pekerjaan tersebut menggunakan GPU dengan benar.
