Topik ini menjelaskan cara mengirim pekerjaan pelatihan TensorFlow standalone dengan Arena dan memvisualisasikannya menggunakan TensorBoard.
Prasyarat
-
Anda telah membuat kluster Kubernetes dengan GPU. Untuk informasi selengkapnya, lihat Buat kluster Kubernetes dengan GPU.
-
Node kluster dapat mengakses jaringan publik. Untuk informasi selengkapnya, lihat Aktifkan akses jaringan publik untuk kluster.
-
Klien Arena telah diinstal. Untuk informasi selengkapnya, lihat Konfigurasikan klien Arena.
-
Anda telah membuat instans PVC bernama
training-data, dan set data MNIST disimpan di jalur tf_data. Untuk informasi selengkapnya, lihat Konfigurasikan penyimpanan bersama NAS.
Latar Belakang
Contoh ini mengunduh kode sumber dari repositori Git dan menggunakan set data dari sistem penyimpanan bersama berbasis PV dan PVC yang dikelola NAS. Contoh ini mengasumsikan bahwa Anda memiliki instans PVC bernama training-data (volume penyimpanan bersama) yang berisi set data dalam direktori bernama tf_data.
Prosedur
Langkah 1: Lihat sumber daya GPU
arena top node
Output 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 tersebut menunjukkan bahwa kluster memiliki dua node GPU. Setiap node memiliki dua kartu GPU idle yang tersedia untuk pekerjaan pelatihan.
Langkah 2: Kirim pekerjaan TensorFlow
Jalankan perintah arena submit tfjob/tf [--flag] untuk mengirim pekerjaan TensorFlow.
Gunakan perintah berikut untuk mengirim pekerjaan TensorFlow standalone yang menggunakan satu node dan satu kartu 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 status
Tabel berikut menjelaskan parameter-parameter tersebut.
|
Parameter |
Wajib |
Deskripsi |
Bawaan |
|
--name |
Ya |
Nama pekerjaan. Nama ini harus unik secara global. |
N/A |
|
--working-dir |
Tidak |
Direktori tempat perintah dijalankan. |
/root |
|
--gpus |
Tidak |
Jumlah kartu GPU yang digunakan oleh node pekerja pekerjaan. |
0 |
|
--image |
Ya |
URL image untuk lingkungan pelatihan. |
N/A |
|
--sync-mode |
Tidak |
Mode sinkronisasi kode sumber. Nilai yang valid adalah git dan rsync. Contoh ini menggunakan git. |
N/A |
|
--sync-source |
Tidak |
URL repositori kode sumber. Parameter ini wajib ditentukan saat Anda menetapkan --sync-mode. Untuk mode git, parameter ini dapat berupa URL repositori kode berbasis Git apa pun, seperti proyek GitHub atau proyek Alibaba Cloud Code. Kode proyek diunduh ke direktori code/ dalam jalur yang ditentukan oleh --working-dir. Dalam contoh ini, jalurnya adalah /root/code/arena. |
N/A |
|
--data |
Tidak |
Memasang volume penyimpanan bersama (PVC) ke dalam kontainer pekerjaan. Format nilainya adalah nama-pvc Catatan
Jalankan
Jika tidak ada PVC yang tersedia, Anda harus membuatnya terlebih dahulu. Untuk informasi selengkapnya, lihat Konfigurasikan penyimpanan bersama NAS. |
N/A |
|
--tensorboard |
Tidak |
Mengaktifkan layanan TensorBoard untuk visualisasi data. Gunakan parameter ini bersama --logdir untuk menentukan jalur ke file event yang dibaca oleh TensorBoard. |
N/A |
|
--logdir |
Tidak |
Menentukan jalur ke file event untuk TensorBoard. Parameter ini wajib ditentukan saat --tensorboard ditentukan. |
/training_logs |
Untuk menggunakan repositori Git privat, atur kredensial Anda dengan variabel lingkungan GIT_SYNC_USERNAME dan GIT_SYNC_PASSWORD.
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"
Arena menggunakan git-sync untuk menyinkronkan kode sumber, sehingga Anda dapat menggunakan variabel lingkungan apa pun yang didukung oleh proyek git-sync.
Jika pengunduhan kode gagal karena masalah jaringan, Anda dapat mengunduhnya secara manual ke sistem penyimpanan bersama Anda. Atau, image contoh yang disediakan sudah mencakup kode contoh di /code/github.com/kubeflow/arena/examples/tensorflow/mnist/main.py, sehingga Anda dapat langsung mengirim pekerjaan seperti yang ditunjukkan di bawah ini:
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: Periksa status pekerjaan
-
Jalankan perintah berikut untuk melihat daftar 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.xxx -
Jalankan perintah berikut untuk memeriksa sumber daya GPU yang digunakan oleh pekerjaan.
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/1 -
Jalankan 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, output mencantumkan URL TensorBoard. URL ini tidak ditampilkan jika TensorBoard dinonaktifkan.
Langkah 4: Lihat TensorBoard
Gunakan browser web untuk melihat dasbor TensorBoard.
-
Jalankan perintah berikut untuk meneruskan layanan TensorBoard di kluster ke port 9090 pada mesin lokal Anda.
PentingPenerusan port dengan
kubectl port-forwardtidak cocok untuk produksi karena kurang andal, aman, dan skalabel. Gunakan hanya untuk pengembangan dan debugging. Untuk solusi jaringan tingkat produksi di kluster Kubernetes, lihat Manajemen Ingress.kubectl port-forward -n default svc/tf-mnist-tensorboard 9090:6006 -
Buka
http://localhost:9090di browser Anda untuk melihat dasbor TensorBoard.Panel SCALARS di TensorBoard menampilkan dua kurva: train (merah) dan test (biru). Metrik accuracy_1 konvergen ke lebih dari 0,96 setelah sekitar 1.000 langkah, dan metrik cross_entropy_1 turun menjadi sekitar 0,05 hingga 0,10. Hal ini menunjukkan bahwa model MNIST berhasil dilatih. Di panel kiri, Anda dapat menyesuaikan opsi tampilan seperti Smoothing (saat ini 0,6) dan Horizontal Axis (saat ini STEP). Jalur log-nya adalah
/mnt/tf_data/logs.
Langkah 5: Lihat log pekerjaan
Jalankan perintah berikut untuk mendapatkan log pekerjaan.
arena logs -n default tf-mnist
Output 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/step
-
Untuk mengalirkan log pekerjaan secara real time, tambahkan parameter
-f. -
Untuk melihat hanya N baris terakhir dari log, tambahkan parameter
-t Natau--tail N. -
Untuk opsi lainnya, jalankan
arena logs --help.
(Opsional) Langkah 6: Bersihkan lingkungan
Setelah pekerjaan pelatihan selesai, Anda dapat menghapusnya dengan menjalankan perintah berikut:
arena delete -n default tf-mnist
Output yang diharapkan:
INFO[0002] The training job tf-mnist has been deleted successfully