TensorFlow adalah framework pembelajaran mendalam open source yang banyak digunakan untuk berbagai tugas pelatihan pembelajaran mendalam. Topik ini menjelaskan cara mengirim pekerjaan pelatihan TensorFlow single-node menggunakan Arena dan memvisualisasikannya melalui TensorBoard.
Prasyarat
Kluster Kubernetes yang berisi GPU telah dibuat. Untuk informasi selengkapnya, lihat Buat kluster Kubernetes yang berisi GPU.
Node kluster dapat mengakses jaringan publik. Untuk informasi selengkapnya, lihat Aktifkan akses Internet untuk kluster.
Klien Arena telah diinstal. Untuk informasi selengkapnya, lihat Konfigurasikan klien Arena.
Persistent Volume Claim (PVC) bernama
training-datatelah dibuat, dan dataset MNIST disimpan di path tf_data. Untuk informasi selengkapnya, lihat Konfigurasikan penyimpanan bersama NAS.
Informasi latar belakang
Contoh ini mengunduh kode sumber dari URL Git. Dataset disimpan dalam sistem penyimpanan bersama yang menggunakan Persistent Volume (PV) dan Persistent Volume Claim (PVC) pada NAS. Contoh ini mengasumsikan bahwa Anda memiliki PVC bernama training-data yang berisi dataset dalam direktori tf_data.
Prosedur
Langkah 1: Lihat sumber daya GPU
arena top nodeOutput yang diharapkan:
NAME IPADDRESS ROLE STATUS GPU(Total) GPU(Allocated)
cn-beijing.192.168.xxx.xxx 192.168.xxx.xxx <none> Ready 0 0
cn-beijing.192.168.xxx.xxx 192.168.xxx.xxx <none> Ready 0 0
cn-beijing.192.168.xxx.xxx 192.168.xxx.xxx <none> Ready 2 0
cn-beijing.192.168.xxx.xxx 192.168.xxx.xxx <none> Ready 2 0
---------------------------------------------------------------------------------------------------
Allocated/Total GPUs In Cluster:
0/4 (0.0%)Output menunjukkan bahwa kluster memiliki dua node GPU, masing-masing dengan dua GPU idle yang tersedia untuk pekerjaan pelatihan.
Langkah 2: Kirim pekerjaan pelatihan TensorFlow
Jalankan perintah arena submit tfjob/tf [--flag] untuk mengirim pekerjaan TensorFlow.
Kode berikut memberikan contoh cara mengirim pekerjaan TensorFlow single-node dengan satu GPU.
arena submit tf \
--name=tf-mnist \
--working-dir=/root \
--workers=1 \
--gpus=1 \
--image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/tensorflow-mnist-example:2.15.0-gpu \
--sync-mode=git \
--sync-source=https://github.com/kubeflow/arena.git \
--env=GIT_SYNC_BRANCH=master \
--data=training-data:/mnt \
--tensorboard \
--logdir=/mnt/tf_data/logs \
"python /root/code/arena/examples/tensorflow/mnist/main.py --data /mnt/tf_data/mnist.npz --dir /mnt/tf_data/logs"Output yang diharapkan:
service/tf-mnist-tensorboard created
deployment.apps/tf-mnist-tensorboard created
tfjob.kubeflow.org/tf-mnist created
INFO[0005] The Job tf-mnist has been submitted successfully
INFO[0005] You can run `arena get tf-mnist --type tfjob -n default` to check the job statusTabel berikut menjelaskan parameter-parameter tersebut.
Parameter | Wajib | Deskripsi | Bawaan |
--name | Wajib | Nama pekerjaan yang akan dikirim. Nama harus unik secara global. | None |
--working-dir | Opsional | Direktori tempat perintah dieksekusi. | /root |
--gpus | Opsional | Jumlah GPU yang dibutuhkan oleh node pekerja pekerjaan. | 0 |
--image | Wajib | Alamat Registri lingkungan pelatihan. | None |
--sync-mode | Opsional | Mode sinkronisasi kode. Anda dapat menentukan git atau rsync. Contoh ini menggunakan mode Git. | None |
--sync-source | Opsional | Alamat repositori untuk sinkronisasi kode. Parameter ini harus digunakan bersama dengan --sync-mode. Contoh ini menggunakan mode Git. Nilai parameter ini dapat berupa alamat proyek GitHub apa pun atau layanan hosting kode berbasis Git lainnya, seperti proyek Alibaba Cloud Code. Kode proyek diunduh ke direktori code/ di bawah --working-dir. Dalam contoh ini, path-nya adalah /root/code/arena. | None |
--data | Opsional | Memasang volume penyimpanan bersama (PVC) ke lingkungan yang sedang berjalan. Parameter ini terdiri dari dua bagian yang dipisahkan oleh tanda titik dua ( Catatan Jalankan Jika tidak ada PVC yang tersedia, buatlah satu. Untuk informasi selengkapnya, lihat Konfigurasikan penyimpanan bersama NAS. | None |
--tensorboard | Opsional | Menjalankan Layanan TensorBoard untuk tugas pelatihan guna visualisasi data. Anda dapat menggunakan parameter ini bersama dengan --logdir untuk menentukan path event yang dibaca oleh TensorBoard. Jika Anda tidak menentukan parameter ini, Layanan TensorBoard tidak akan dijalankan. | None |
--logdir | Opsional | Parameter ini harus digunakan bersama dengan --tensorboard. Parameter ini menentukan path tempat TensorBoard membaca data event. | /training_logs |
Jika Anda menggunakan repositori Git pribadi, atur variabel lingkungan GIT_SYNC_USERNAME dan GIT_SYNC_PASSWORD untuk menentukan nama pengguna dan kata sandi Git.
arena submit tf \
--name=tf-mnist \
--working-dir=/root \
--workers=1 \
--gpus=1 \
--image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/tensorflow-mnist-example:2.15.0-gpu \
--sync-mode=git \
--sync-source=https://github.com/kubeflow/arena.git \
--env=GIT_SYNC_BRANCH=master \
--env=GIT_SYNC_USERNAME=yourname \
--env=GIT_SYNC_PASSWORD=yourpwd \
--data=training-data:/mnt \
--tensorboard \
--logdir=/mnt/tf_data/logs \
"python /root/code/arena/examples/tensorflow/mnist/main.py --data /mnt/tf_data --dir /mnt/tf_data/logs"Perintah arena menggunakan git-sync untuk menyinkronkan kode sumber. Anda dapat mengatur variabel lingkungan yang didefinisikan dalam proyek git-sync.
Contoh ini menarik kode sumber dari repositori GitHub. Jika pengambilan kode gagal karena masalah jaringan, unduh kode tersebut secara manual ke sistem penyimpanan bersama. Image demo yang disediakan dalam topik ini sudah berisi kode contoh /code/github.com/kubeflow/arena/examples/tensorflow/mnist/main.py. Anda dapat langsung mengirim pekerjaan pelatihan sebagai berikut:
arena submit tf \
--name=tf-mnist \
--working-dir=/root \
--workers=1 \
--gpus=1 \
--image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/tensorflow-mnist-example:2.15.0-gpu \
--data=training-data:/mnt \
--tensorboard \
--logdir=/mnt/tf_data/logs \
"python /code/github.com/kubeflow/arena/examples/tensorflow/mnist/main.py --data /mnt/tf_data/mnist.npz --dir /mnt/tf_data/logs"Langkah 3: Lihat pekerjaan pelatihan TensorFlow
Jalankan perintah berikut untuk melihat semua pekerjaan yang dikirim menggunakan Arena.
arena listOutput yang diharapkan:
NAME STATUS TRAINER DURATION GPU(Requested) GPU(Allocated) NODE tf-mnist RUNNING TFJOB 3s 1 1 192.168.xxx.xxxJalankan perintah berikut untuk memeriksa sumber daya GPU yang digunakan oleh pekerjaan tersebut.
arena top jobOutput yang diharapkan:
NAME STATUS TRAINER AGE GPU(Requested) GPU(Allocated) NODE tf-mnist RUNNING TFJOB 29s 1 1 192.168.xxx.xxx Total Allocated/Requested GPUs of Training Jobs: 1/1Jalankan perintah berikut untuk memeriksa sumber daya GPU yang digunakan oleh kluster.
arena top nodeOutput yang diharapkan:
NAME IPADDRESS ROLE STATUS GPU(Total) GPU(Allocated) cn-beijing.192.168.xxx.xxx 192.168.xxx.xxx <none> Ready 0 0 cn-beijing.192.168.xxx.xxx 192.168.xxx.xxx <none> Ready 0 0 cn-beijing.192.168.xxx.xxx 192.168.xxx.xxx <none> Ready 2 1 cn-beijing.192.168.xxx.xxx 192.168.xxx.xxx <none> Ready 2 0 --------------------------------------------------------------------------------------------------- Allocated/Total GPUs In Cluster: 1/4 (25.0%)Jalankan perintah berikut untuk melihat detail pekerjaan pelatihan.
arena get -n default tf-mnistOutput yang diharapkan:
Name: tf-mnist Status: RUNNING Namespace: default Priority: N/A Trainer: TFJOB Duration: 22s CreateTime: 2026-01-26 16:01:42 EndTime: Instances: NAME STATUS AGE IS_CHIEF GPU(Requested) NODE ---- ------ --- -------- -------------- ---- tf-mnist-chief-0 Running 45s true 1 cn-beijing.192.168.xxx.xxx Tensorboard: Your tensorboard will be available on: http://192.168.xxx.xxx:31243CatatanKarena TensorBoard diaktifkan dalam contoh ini, dua baris terakhir pada detail pekerjaan menampilkan titik akhir web untuk TensorBoard. Jika TensorBoard tidak diaktifkan, informasi ini tidak ditampilkan.
Langkah 4: Lihat TensorBoard
Lihat TensorBoard di browser.
Jalankan perintah berikut di mesin lokal Anda untuk memetakan Layanan TensorBoard di kluster ke port 9090 di mesin lokal Anda.
PentingPenerusan port yang diatur menggunakan kubectl port-forward tidak andal, aman, atau dapat diperluas di lingkungan produksi. Perintah ini hanya untuk pengembangan dan debugging. Jangan gunakan perintah ini untuk mengatur penerusan port di lingkungan produksi. Untuk informasi selengkapnya tentang solusi jaringan yang digunakan untuk produksi di kluster ACK, lihat Manajemen Ingress.
kubectl port-forward -n default svc/tf-mnist-tensorboard 9090:6006Di browser, buka
http://localhost:9090untuk melihat TensorBoard, seperti yang ditunjukkan pada gambar berikut.
Langkah 5: Lihat log pekerjaan pelatihan
Jalankan perintah berikut untuk melihat log pekerjaan.
arena logs -n default tf-mnistOutput yang diharapkan:
Train Epoch: 14 [55680/60000 (93%)] Loss: 0.029811
Train Epoch: 14 [56320/60000 (94%)] Loss: 0.029721
Train Epoch: 14 [56960/60000 (95%)] Loss: 0.029682
Train Epoch: 14 [57600/60000 (96%)] Loss: 0.029781
Train Epoch: 14 [58240/60000 (97%)] Loss: 0.029708
Train Epoch: 14 [58880/60000 (98%)] Loss: 0.029761
Train Epoch: 14 [59520/60000 (99%)] Loss: 0.029684
Test Accuracy: 9842/10000 (98.42%)
938/938 - 3s - loss: 0.0299 - accuracy: 0.9924 - val_loss: 0.0446 - val_accuracy: 0.9842 - lr: 0.0068 - 3s/epoch - 3ms/stepUntuk melihat log pekerjaan secara real time, tambahkan parameter
-f.Untuk melihat hanya N baris terakhir dari log, tambahkan parameter
-t Natau--tail N.Untuk informasi penggunaan selengkapnya, jalankan
arena logs --help.
(Opsional) Langkah 6: Bersihkan lingkungan
Setelah pekerjaan pelatihan selesai dan tidak lagi diperlukan, jalankan perintah berikut untuk menghapusnya:
arena delete -n default tf-mnistOutput yang diharapkan:
INFO[0002] The training job tf-mnist has been deleted successfully