全部产品
Search
文档中心

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

更新时间:Mar 11, 2026

Topik ini menjelaskan cara mengirim pekerjaan pelatihan terdistribusi TensorFlow berbasis model PS-Worker menggunakan Arena dan memvisualisasikan pekerjaan tersebut melalui TensorBoard.

Prasyarat

Informasi latar belakang

Contoh ini mengunduh kode sumber dari URL Git. Set data disimpan dalam sistem penyimpanan bersama (PV dan PVC berbasis NAS). Contoh ini mengasumsikan Anda memiliki instans PVC bernama training-data (penyimpanan bersama). Instans ini berisi direktori tf_data, yang menyimpan set data yang digunakan dalam contoh ini.

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. Setiap node memiliki dua GPU idle yang tersedia untuk pekerjaan pelatihan.

Langkah 2: Kirim pekerjaan pelatihan TensorFlow

Kirim pekerjaan TensorFlow dengan menjalankan perintah dalam format arena submit tfjob/tf [--flag] command.

Kirim pekerjaan pelatihan terdistribusi TensorFlow dalam mode PS-Worker menggunakan contoh kode berikut. Contoh ini mencakup satu node PS dan dua node Worker.

arena submit tf \
    --name=tf-mnist-dist \
    --namespace=default \
    --working-dir=/root \
    --ps=1 \
    --ps-image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/tensorflow-mnist-example:2.15.0-gpu \
    --workers=2 \
    --worker-image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/tensorflow-mnist-example:2.15.0-gpu \
    --gpus=1 \
    --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-dist-tensorboard created
deployment.apps/tf-mnist-dist-tensorboard created
tfjob.kubeflow.org/tf-mnist-dist created
INFO[0004] The Job tf-mnist-dist has been submitted successfully
INFO[0004] You can run `arena get tf-mnist-dist --type tfjob -n default` to check the job status

Deskripsi parameter terdapat pada tabel berikut.

Parameter

Wajib

Deskripsi

Nilai default

--name

Wajib

Tentukan nama pekerjaan yang dikirim. Nama harus unik secara global dan tidak boleh diduplikasi.

None

--working-dir

Opsi

Tentukan direktori tempat perintah saat ini dijalankan.

/root

--gpus

Opsional

Tentukan jumlah kartu GPU yang digunakan oleh node Worker pekerjaan.

0

--workers

Opsional

Tentukan jumlah node Worker pekerjaan.

1

--image

Wajib jika --worker-image dan --ps-image tidak ditentukan secara terpisah.

Tentukan alamat image lingkungan pelatihan. Jika --worker-image atau --ps-image tidak ditentukan, baik node Worker maupun node PS menggunakan alamat image ini.

None

--worker-image

Wajib jika --image tidak ditentukan.

Tentukan alamat image yang digunakan oleh node Worker pekerjaan. Jika --image juga ada, nilai ini akan menimpa --image.

None

--sync-mode

Opsional

Mode sinkronisasi kode. Anda dapat menentukan git atau rsync. Topik ini menggunakan mode Git.

None

--sync-source

Opsional

Alamat repositori untuk sinkronisasi kode. Gunakan parameter ini bersama --sync-mode. Contoh ini menggunakan mode Git. Parameter ini dapat berupa alamat proyek GitHub apa pun atau alamat hosting kode yang didukung Git, seperti alamat proyek Alibaba Cloud Code. Kode proyek diunduh ke direktori code/ di bawah --working-dir. Untuk contoh ini, lokasinya adalah: /root/code/tensorflow-sample-code.

None

--ps

Wajib untuk pekerjaan terdistribusi

Tentukan jumlah node parameter server (PS).

0

--ps-image

Wajib jika --image tidak ditentukan.

Tentukan alamat image node PS. Jika --image juga ada, nilai ini akan menimpa --image.

None

--data

Opsional

Pasang volume penyimpanan bersama PVC ke lingkungan yang sedang berjalan. Parameter ini terdiri dari dua bagian, dipisahkan oleh tanda titik dua (:). Sisi kiri tanda titik dua adalah nama PVC yang telah Anda siapkan. Lihat daftar PVC yang tersedia di kluster saat ini dengan menjalankan perintah arena data list. Sisi kanan tanda titik dua adalah path tempat Anda ingin memasang PVC di lingkungan yang sedang berjalan, yang juga merupakan path lokal tempat kode pelatihan Anda membaca data. Metode pemasangan ini memungkinkan kode Anda mengakses data PVC.

Catatan

Jalankan arena data list untuk melihat 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, buat satu. Untuk informasi selengkapnya, lihat Konfigurasikan penyimpanan bersama NAS.

None

--tensorboard

Opsional

Aktifkan layanan TensorBoard untuk tugas pelatihan guna visualisasi data. Gunakan --logdir untuk menentukan path event yang dibaca TensorBoard. Jika Anda tidak menentukan parameter ini, layanan TensorBoard tidak diaktifkan.

None

--logdir

Opsional

Gunakan parameter ini bersama --tensorboard. Parameter ini menentukan path tempat TensorBoard membaca data event.

/training_logs

Catatan

Jika Anda menggunakan repositori Git privat, atur username dan password Git dengan mengonfigurasi variabel lingkungan GIT_SYNC_USERNAME dan GIT_SYNC_PASSWORD.

 arena submit tf \
    --name=tf-mnist-dist \
    --namespace=default \
    --working-dir=/root \
    --ps=1 \
    --ps-image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/tensorflow-mnist-example:2.15.0-gpu \
    --workers=2 \
    --worker-image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/tensorflow-mnist-example:2.15.0-gpu \
    --gpus=1 \
    --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/mnist.npz --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 penarikan kode gagal karena masalah jaringan atau alasan lain, unduh kode 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-dist \
    --namespace=default \
    --working-dir=/root \
    --ps=1 \
    --ps-image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/tensorflow-mnist-example:2.15.0-gpu \
    --workers=2 \
    --worker-image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/tensorflow-mnist-example:2.15.0-gpu \
    --gpus=1 \
    --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. Lihat semua pekerjaan pelatihan yang dikirim melalui Arena.

    arena list

    Output yang diharapkan:

    NAME     STATUS     TRAINER  AGE  NODE
    tf-dist  RUNNING    TFJOB    58s  192.1xx.x.xx
  2. Jalankan perintah berikut untuk memeriksa sumber daya GPU yang digunakan oleh pekerjaan.

    arena top job

    Output yang diharapkan:

    NAME     GPU(Requests)  GPU(Allocated)  STATUS     TRAINER  AGE  NODE
    tf-dist  2              2               RUNNING    tfjob    1m   192.1xx.x.x
    tf-git   1              0               SUCCEEDED  tfjob    2h   N/A
    
    Total Allocated GPUs of Training Job:
    2
    
    Total Requested GPUs of Training Job:
    3
  3. arena top job

    Output yang diharapkan:

    NAME     GPU(Requests)  GPU(Allocated)  STATUS     TRAINER  AGE  NODE
    tf-dist  2              2               RUNNING    tfjob    1m   192.1xx.x.x
    tf-git   1              0               SUCCEEDED  tfjob    2h   N/A
    
    Total Allocated GPUs of Training Job:
    2
    
    Total Requested GPUs of Training Job:
    3
  4. arena top node

    Output yang diharapkan:

    NAME                       IPADDRESS     ROLE    STATUS  GPU(Total)  GPU(Allocated)
    cn-huhehaote.192.1xx.x.xx  192.1xx.x.xx  master  ready   0           0
    cn-huhehaote.192.1xx.x.xx  192.1xx.x.xx  master  ready   0           0
    cn-huhehaote.192.1xx.x.xx  192.1xx.x.xx  master  ready   0           0
    cn-huhehaote.192.1xx.x.xx  192.1xx.x.xx  <none>  ready   2           1
    cn-huhehaote.192.1xx.x.xx  192.1xx.x.xx  <none>  ready   2           1
    cn-huhehaote.192.1xx.x.xx  192.1xx.x.xx  <none>  ready   2           0
    -----------------------------------------------------------------------------------------
    Allocated/Total GPUs In Cluster:
    2/6 (33%)
  5. arena get -n default tf-mnist-dist

    Output yang diharapkan

    STATUS: RUNNING
    NAMESPACE: default
    PRIORITY: N/A
    TRAINING DURATION: 1m
    
    NAME     STATUS   TRAINER  AGE  INSTANCE          NODE
    tf-dist  RUNNING  TFJOB    1m   tf-dist-ps-0      192.1xx.x.xx
    tf-dist  RUNNING  TFJOB    1m   tf-dist-worker-0  192.1xx.x.xx
    tf-dist  RUNNING  TFJOB    1m   tf-dist-worker-1  192.1xx.x.xx
    
    Your tensorboard will be available on:
    http://192.1xx.x.xx:31870
    Catatan

    Topik ini menunjukkan contoh yang mengaktifkan TensorBoard. Pada detail pekerjaan di atas, dua baris terakhir menunjukkan titik akhir web TensorBoard. Jika Anda tidak mengaktifkan TensorBoard, kedua baris ini tidak akan muncul.

  6. Jalankan perintah berikut untuk memeriksa sumber daya GPU yang digunakan oleh kluster.

  7. Jalankan perintah berikut untuk mendapatkan detail tugas.

Langkah 4: Lihat TensorBoard

Lihat TensorBoard di browser.

  1. Jalankan perintah berikut secara lokal untuk memetakan TensorBoard di kluster ke port lokal 9090.

  2. Penting
    kubectl port-forward -n default svc/tf-dist-tensorboard 9090:6006
  3. Akses localhost:9090 di browser Anda untuk melihat TensorBoard. Gambar berikut menunjukkan tampilan TensorBoard.

    tf

Langkah 5: Lihat log pekerjaan pelatihan

Jalankan perintah berikut untuk mendapatkan informasi log pekerjaan.

arena logs -n default tf-dist

Output yang diharapkan:

WARNING:tensorflow:From code/tensorflow-sample-code/tfjob/docker/mnist/main.py:120: softmax_cross_entropy_with_logits (from tensorflow.python.ops.nn_ops) is deprecated and will be removed in a future version.
Instructions for updating:
...
Accuracy at step 960: 0.9691
Accuracy at step 970: 0.9677
Accuracy at step 980: 0.9687
Accuracy at step 990: 0.968
Adding run metadata for 999
Total Train-accuracy=0.968

Saat Anda menggunakan perintah di atas untuk mendapatkan informasi log pekerjaan, log dari node worker-0 ditampilkan secara default. Untuk melihat log dari node tertentu dalam tugas pelatihan terdistribusi, pertama-tama lihat detail pekerjaan untuk mendapatkan daftar node pekerjaan, lalu gunakan perintah arena logs $job_name -i $instance_name untuk melihat log dari instans tertentu.

Kode contohnya sebagai berikut.

arena get tf-dist

Output yang diharapkan:

STATUS: SUCCEEDED
NAMESPACE: default
PRIORITY: N/A
TRAINING DURATION: 1m

NAME     STATUS     TRAINER  AGE  INSTANCE          NODE
tf-dist  SUCCEEDED  TFJOB    5m   tf-dist-ps-0      192.16x.x.xx
tf-dist  SUCCEEDED  TFJOB    5m   tf-dist-worker-0  192.16x.x.xx
tf-dist  SUCCEEDED  TFJOB    5m   tf-dist-worker-1  192.16x.x.xx

Your tensorboard will be available on:
http://192.16x.x.xx:31870

Jalankan perintah berikut untuk mendapatkan log pekerjaan.

arena logs tf-dist -i tf-dist-worker-1

Output yang diharapkan:

WARNING:tensorflow:From code/tensorflow-sample-code/tfjob/docker/mnist/main.py:120: softmax_cross_entropy_with_logits (from tensorflow.python.ops.nn_ops) is deprecated and will be removed in a future version.
Instructions for updating:
...
Accuracy at step 970: 0.9676
Accuracy at step 980: 0.968
Accuracy at step 990: 0.967
Adding run metadata for 999
Total Train-accuracy=0.967

Anda juga dapat melihat output log waktu nyata pekerjaan dengan menjalankan perintah arena logs $job_name -f. Lihat N baris terakhir log dengan menjalankan perintah arena logs $job_name -t N. Cari tahu penggunaan parameter lebih lanjut dengan menjalankan arena logs --help.

Kode contoh untuk melihat N baris terakhir log sebagai berikut.

arena logs tf-dist -t 5

Output yang diharapkan:

Accuracy at step 9970: 0.9834
Accuracy at step 9980: 0.9828
Accuracy at step 9990: 0.9816
Adding run metadata for 9999
Total Train-accuracy=0.9816

(Opsional) Langkah 6: Bersihkan lingkungan

Jika Anda tidak lagi memerlukan pekerjaan pelatihan setelah selesai, jalankan perintah berikut untuk menghapusnya:

arena delete -n default tf-mnist-dist

Output yang diharapkan:

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