全部产品
Search
文档中心

Container Service for Kubernetes:Kirim pekerjaan pelatihan TensorFlow single-node menggunakan Arena

更新时间:Jan 28, 2026

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

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 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 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 status

Tabel 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 (:). Bagian di sebelah kiri tanda titik dua adalah nama PVC yang telah Anda siapkan. Anda dapat menjalankan arena data list untuk melihat daftar PVC yang tersedia di kluster saat ini. Bagian di sebelah kanan tanda titik dua adalah path di lingkungan yang sedang berjalan tempat Anda ingin memasang PVC tersebut. Ini juga merupakan path lokal tempat kode pelatihan Anda membaca data. Dengan memasang PVC, kode Anda dapat mengakses data pada PVC tersebut.

Catatan

Jalankan arena data list untuk melihat daftar PVC yang tersedia di kluster saat ini untuk contoh ini.

NAME           ACCESSMODE     DESCRIPTION  OWNER  AGE
training-data  ReadWriteMany                      35m

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

Catatan

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.

Penting

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

  1. Jalankan perintah berikut untuk melihat 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 tersebut.

    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 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.

  1. Jalankan perintah berikut di mesin lokal Anda untuk memetakan Layanan TensorBoard di kluster ke port 9090 di mesin lokal Anda.

    Penting

    Penerusan 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:6006
  2. Di browser, buka http://localhost:9090 untuk melihat TensorBoard, seperti yang ditunjukkan pada gambar berikut.

    tensorboard

Langkah 5: Lihat log pekerjaan pelatihan

Jalankan perintah berikut untuk melihat 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 melihat log pekerjaan secara real time, tambahkan parameter -f.

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

Output yang diharapkan:

INFO[0002] The training job tf-mnist has been deleted successfully