All Products
Search
Document Center

Container Service for Kubernetes:Kirim pekerjaan TensorFlow standalone menggunakan Arena

Last Updated:Jun 21, 2026

Topik ini menjelaskan cara mengirim pekerjaan pelatihan TensorFlow standalone dengan Arena dan memvisualisasikannya menggunakan TensorBoard.

Prasyarat

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:jalur-mount. nama-pvc adalah nama PVC yang sudah ada. Anda dapat menjalankan arena data list untuk melihat daftar PVC yang tersedia. jalur-mount adalah jalur tujuan di dalam kontainer tempat kode pelatihan Anda membaca data.

Catatan

Jalankan arena data list untuk melihat PVC yang tersedia di kluster.

NAME           ACCESSMODE     DESCRIPTION  OWNER  AGE
training-data  ReadWriteMany                      35m

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

Catatan

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.

Penting

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

  1. Jalankan perintah berikut untuk melihat daftar semua pekerjaan yang dikirim menggunakan Arena.

    arena list

    Output yang diharapkan:

    NAME      STATUS   TRAINER  DURATION  GPU(Requested)  GPU(Allocated)  NODE
    tf-mnist  RUNNING  TFJOB    3s        1               1               192.168.xxx.xxx
  2. Jalankan perintah berikut untuk memeriksa sumber daya GPU yang digunakan oleh pekerjaan.

    arena top job

    Output 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
  3. Jalankan perintah berikut untuk memeriksa sumber daya GPU yang digunakan oleh kluster.

    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           1
    cn-beijing.192.168.xxx.xxx  192.168.xxx.xxx  <none>  Ready   2           0
    ---------------------------------------------------------------------------------------------------
    Allocated/Total GPUs In Cluster:
    1/4 (25.0%)
  4. Jalankan perintah berikut untuk melihat detail pekerjaan pelatihan.

    arena get -n default tf-mnist

    Output 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:31243
    Catatan

    Karena TensorBoard diaktifkan, output mencantumkan URL TensorBoard. URL ini tidak ditampilkan jika TensorBoard dinonaktifkan.

Langkah 4: Lihat TensorBoard

Gunakan browser web untuk melihat dasbor TensorBoard.

  1. Jalankan perintah berikut untuk meneruskan layanan TensorBoard di kluster ke port 9090 pada mesin lokal Anda.

    Penting

    Penerusan port dengan kubectl port-forward tidak 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
  2. Buka http://localhost:9090 di 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
Catatan
  • Untuk mengalirkan log pekerjaan secara real time, tambahkan parameter -f.

  • Untuk melihat hanya N baris terakhir dari log, tambahkan parameter -t N atau --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