Topik ini menjelaskan cara menggunakan klien Arena untuk mengirimkan pekerjaan pelatihan TensorFlow mandiri serta cara menggunakan TensorBoard untuk memvisualisasikan hasil pelatihan.
Prasyarat
Sebuah persistent volume claim (PVC) telah dibuat untuk kluster ACK dan dataset yang digunakan dalam topik ini telah diunduh ke persistent volume (PV) yang sesuai. Untuk informasi lebih lanjut, lihat Konfigurasi Volume NAS Bersama.
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
Jalankan perintah berikut untuk menanyakan sumber daya GPU yang tersedia di kluster:
arena top nodeKeluaran 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.
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 statusTabel 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 perintaharena 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.CatatanJalankan perintah
arena data listuntuk menanyakan PVC yang tersedia untuk kluster tertentu.NAME ACCESSMODE DESCRIPTION OWNER AGE training-data ReadWriteMany 35mJika 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
PentingJika 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.pyDalam blok kode sebelumnya, klien Arena menyinkronkan kode sumber menggunakan proyek git-sync. Anda dapat menyesuaikan variabel lingkungan yang didefinisikan dalam proyek git-sync.
Jalankan perintah berikut untuk menanyakan status semua pekerjaan yang telah dikirimkan:
arena listKeluaran yang diharapkan:
NAME STATUS TRAINER AGE NODE tf-git RUNNING TFJOB 20s 192.1xx.x.xxJalankan perintah berikut untuk menanyakan sumber daya GPU yang digunakan oleh pekerjaan:
arena top jobKeluaran 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: 1Jalankan perintah berikut untuk menanyakan sumber daya GPU di kluster:
arena top nodeKeluaran 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%)Jalankan perintah berikut untuk menanyakan informasi rinci tentang pekerjaan:
arena get tf-gitKeluaran 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:31619CatatanTensorBoard 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.
Gunakan browser untuk melihat hasil pelatihan di TensorBoard.
Jalankan perintah berikut untuk memetakan TensorBoard ke port lokal 9090:
PentingPengaturan 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:6006Kunjungi
localhost:9090di browser Anda untuk melihat data di TensorBoard seperti yang ditunjukkan pada gambar berikut.
Jalankan perintah berikut untuk mencetak log pekerjaan:
arena logs tf-gitKeluaran 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.9816Anda dapat menjalankan perintah
arena logs $job_name -funtuk mencetak log pekerjaan secara real-time dan menjalankan perintaharena logs $job_name -t Nuntuk mencetak N baris dari bagian bawah log. Anda juga dapat menjalankan perintaharena logs --helpuntuk menanyakan parameter untuk mencetak log.Contoh kode berikut memberikan contoh cara mencetak N baris dari bagian bawah log:
arena logs tf-git -t 5Keluaran 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