全部产品
Search
文档中心

Container Service for Kubernetes:Gunakan Arena untuk mengirimkan pekerjaan pelatihan TensorFlow mandiri di kluster Kubernetes

更新时间:Jul 02, 2025

Topik ini menjelaskan cara menggunakan klien Arena untuk mengirimkan pekerjaan pelatihan TensorFlow mandiri serta cara menggunakan TensorBoard untuk memvisualisasikan hasil pelatihan.

Prasyarat

Informasi latar belakang

Dalam topik ini, kode pelatihan sumber diunduh dari repositori Git. Dataset disimpan dalam File Storage NAS (NAS) volume bersama yang dipasang menggunakan PV dan PVC. Dalam contoh ini, sebuah PVC bernama training-data dibuat. PVC ini menggunakan PV bersama. Dataset disimpan dalam direktori tf_data dari PV bersama.

Prosedur

  1. Jalankan perintah berikut untuk menanyakan sumber daya GPU yang tersedia di kluster:

    arena top node

    Keluaran 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           0
    cn-huhehaote.192.1xx.x.xx  192.1xx.x.xx  <none>  ready   2           0
    cn-huhehaote.192.1xx.x.xx  192.1xx.x.xx  <none>  ready   2           0
    -----------------------------------------------------------------------------------------
    Allocated/Total GPUs In Cluster:
    0/6 (0%)

    Keluaran tersebut menunjukkan bahwa tiga node dengan akselerasi GPU dapat digunakan untuk menjalankan pekerjaan pelatihan.

  2. Jalankan perintah arena submit tfjob/tf [--flag] untuk mengirimkan pekerjaan TensorFlow.

    Contoh kode berikut memberikan contoh cara mengirimkan pekerjaan TensorFlow yang berjalan pada satu node dengan satu GPU.

      arena submit tf \
        --name=tf-git \
        --working-dir=/root \
        --gpus=1 \
        --image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/tensorflow:1.5.0-devel-gpu \
        --sync-mode=git \
        --sync-source=https://code.aliyun.com/xiaozhou/tensorflow-sample-code.git \
        --data=training-data:/mnt \
        --tensorboard \
        --logdir=/mnt/tf_data/logs \
        "python code/tensorflow-sample-code/tfjob/docker/mnist/main.py --log_dir /mnt/tf_data/logs  --data_dir /mnt/tf_data/"

    Keluaran yang diharapkan:

    configmap/tf-git-tfjob created
    configmap/tf-git-tfjob labeled
    service/tf-git-tensorboard created
    deployment.apps/tf-git-tensorboard created
    tfjob.kubeflow.org/tf-git created
    INFO[0000] The Job tf-git has been submitted successfully
    INFO[0000] You can run `arena get tf-git --type tfjob` to check the job status

    Tabel berikut menjelaskan parameter dalam blok kode sampel sebelumnya.

    Parameter

    Diperlukan

    Deskripsi

    Default

    --name

    Ya

    Menentukan nama pekerjaan yang ingin Anda kirimkan. Nama tersebut harus unik secara global.

    N/A

    --working-dir

    Tidak

    Menentukan direktori tempat perintah dieksekusi.

    /root

    --gpus

    Tidak

    Menentukan jumlah GPU yang digunakan oleh node pekerja tempat pekerjaan pelatihan berjalan.

    0

    --image

    Ya

    Menentukan alamat gambar yang digunakan untuk menerapkan runtime.

    N/A

    --sync-mode

    Tidak

    Menentukan mode sinkronisasi. Nilai valid: git dan rsync. Mode git digunakan dalam contoh ini.

    N/A

    --sync-source

    Tidak

    Menentukan alamat repositori tempat kode sumber disinkronkan. Parameter ini digunakan bersama dengan parameter --sync-mode. Mode git digunakan dalam contoh ini. Oleh karena itu, Anda harus menentukan alamat repositori Git, seperti URL proyek di GitHub atau Alibaba Cloud. Kode sumber diunduh ke direktori code/ di bawah --working-dir. Direktori tersebut adalah /root/code/tensorflow-sample-code dalam contoh ini.

    N/A

    --data

    Tidak

    Memasang PV bersama ke runtime tempat pekerjaan pelatihan berjalan. Nilai parameter ini terdiri dari dua bagian yang dipisahkan oleh titik dua (:). Tentukan nama PVC di sisi kiri titik dua. Untuk menanyakan nama PVC, jalankan perintah arena data list. Perintah ini menanyakan PVC yang tersedia untuk kluster tertentu. Tentukan jalur tempat PV yang diklaim oleh PVC dipasang di sisi kanan titik dua. Dengan cara ini, pekerjaan pelatihan Anda dapat mengambil data yang disimpan di PV yang sesuai yang diklaim oleh PVC.

    Catatan

    Jalankan perintah arena data list untuk menanyakan PVC yang tersedia untuk kluster tertentu.

    NAME           ACCESSMODE     DESCRIPTION  OWNER  AGE
    training-data  ReadWriteMany                      35m

    Jika tidak ada PVC yang tersedia, Anda dapat membuatnya. Untuk informasi lebih lanjut, lihat Konfigurasi volume NAS bersama.

    N/A

    --tensorboard

    Tidak

    Menentukan bahwa TensorBoard digunakan untuk memvisualisasikan hasil pelatihan. Anda dapat menyetel parameter --logdir untuk menentukan jalur tempat TensorBoard membaca file event. Jika Anda tidak menentukan parameter ini, TensorBoard tidak digunakan.

    N/A

    --logdir

    Tidak

    Menentukan jalur tempat TensorBoard membaca file event. Anda harus menentukan parameter ini dan parameter --tensorboard.

    /training_logs

    Penting

    Jika Anda menggunakan repositori Git non-publik, jalankan perintah berikut untuk mengirimkan pekerjaan pelatihan:

     arena submit tf \
            ...
            --sync-mode=git \
            --sync-source=https://code.aliyun.com/xiaozhou/tensorflow-sample-code.git \
            --env=GIT_SYNC_USERNAME=yourname \
            --env=GIT_SYNC_PASSWORD=yourpwd \
            "python code/tensorflow-sample-code/tfjob/docker/mnist/main.py

    Dalam blok kode sebelumnya, klien Arena menyinkronkan kode sumber menggunakan proyek git-sync. Anda dapat menyesuaikan variabel lingkungan yang didefinisikan dalam proyek git-sync.

  3. Jalankan perintah berikut untuk menanyakan status semua pekerjaan yang telah dikirimkan:

    arena list

    Keluaran yang diharapkan:

    NAME    STATUS   TRAINER  AGE  NODE
    tf-git  RUNNING  TFJOB    20s  192.1xx.x.xx
  4. Jalankan perintah berikut untuk menanyakan sumber daya GPU yang digunakan oleh pekerjaan:

    arena top job

    Keluaran yang diharapkan:

    NAME    GPU(Requests)  GPU(Allocated)  STATUS   TRAINER  AGE  NODE
    tf-git  1              1               RUNNING  tfjob    1m   192.1xx.x.xx
    
    
    Total Allocated GPUs of Training Job:
    1
    
    Total Requested GPUs of Training Job:
    1
  5. Jalankan perintah berikut untuk menanyakan sumber daya GPU di kluster:

    arena top node

    Keluaran 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           0
    cn-huhehaote.192.1xx.x.xx  192.1xx.x.xx  <none>  ready   2           0
    -----------------------------------------------------------------------------------------
    Allocated/Total GPUs In Cluster:
    1/6 (16%)
  6. Jalankan perintah berikut untuk menanyakan informasi rinci tentang pekerjaan:

    arena get tf-git

    Keluaran yang diharapkan:

    STATUS: SUCCEEDED
    NAMESPACE: default
    PRIORITY: N/A
    TRAINING DURATION: 1m
    
    NAME    STATUS     TRAINER  AGE  INSTANCE        NODE
    tf-git  SUCCEEDED  TFJOB    18m  tf-git-chief-0  192.16x.x.xx
    
    Your tensorboard will be available on:
    http://192.16x.x.xx:31619
    Catatan

    TensorBoard digunakan dalam contoh ini. Oleh karena itu, Anda dapat menemukan URL TensorBoard di dua baris terakhir informasi pekerjaan. Jika TensorBoard tidak digunakan, dua baris terakhir tidak dikembalikan.

  7. Gunakan browser untuk melihat hasil pelatihan di TensorBoard.

    1. Jalankan perintah berikut untuk memetakan TensorBoard ke port lokal 9090:

      Penting

      Pengaturan penerusan port menggunakan kubectl port-forward tidak andal, aman, atau dapat diperluas dalam lingkungan produksi. Ini hanya untuk pengembangan dan debugging. Jangan gunakan perintah ini untuk mengatur penerusan port dalam lingkungan produksi. Untuk informasi lebih lanjut tentang solusi jaringan yang digunakan untuk produksi di kluster ACK, lihat Manajemen Ingress.

      kubectl port-forward svc/tf-git-tensorboard 9090:6006
    2. Kunjungi localhost:9090 di browser Anda untuk melihat data di TensorBoard seperti yang ditunjukkan pada gambar berikut.

      tensorboard

  8. Jalankan perintah berikut untuk mencetak log pekerjaan:

    arena logs tf-git

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

    Anda dapat menjalankan perintah arena logs $job_name -f untuk mencetak log pekerjaan secara real-time dan menjalankan perintah arena logs $job_name -t N untuk mencetak N baris dari bagian bawah log. Anda juga dapat menjalankan perintah arena logs --help untuk menanyakan parameter untuk mencetak log.

    Contoh kode berikut memberikan contoh cara mencetak N baris dari bagian bawah log:

    arena logs tf-git -t 5

    Keluaran 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