Melatih model TensorFlow dengan Layanan Pembelajaran Azure Machine

Untuk pelatihan deep neural network (DNN) dengan TensorFlow, Azure Machine Learning menyediakan TensorFlow Estimator alat TensorFlow kelas yang ditentukan pengguna. TensorFlow evaluasi TensorFlow di Azure SDK (jangan dikelirukan dengan kelas tf.estimator.Estimator ) membuatnya mudah untuk menyerahkan pekerjaan pelatihan TensorFlow untuk node-tunggal dan berjalan di sumber daya komputasi Azure.




Pelatihan satu situs


Belajar dengan TensorFlow asesmen TensorFlow mirip dengan menggunakan Estimator , jadi pertama-tama bacalah artikel how-to dan pelajari konsep-konsepnya.


Untuk menyelesaikan tugas TensorFlow, Anda harus membuat objek TensorFlow . Anda seharusnya sudah membuat objek compute_target dari sumber daya komputasi target .


 from azureml.train.dnn import TensorFlow script_params = { '--batch-size': 50, '--learning-rate': 0.01, } tf_est = TensorFlow(source_directory='./my-tf-proj', script_params=script_params, compute_target=compute_target, entry_script='train.py', conda_packages=['scikit-learn'], use_gpu=True) 

Tentukan parameter berikut dalam konstruktor TensorFlow.

ParameterDESKRIPSI
source_directoryDirektori lokal yang berisi semua kode yang diperlukan untuk menyelesaikan pelatihan. Folder ini disalin dari komputer lokal ke sumber daya komputasi jarak jauh.
script_paramsKamus yang menetapkan argumen baris perintah untuk entry_script pelatihan entry_script sebagai pasangan <argumen baris perintah, nilai>.
compute_targetTarget perhitungan jarak jauh tempat skrip pelatihan akan dijalankan. Dalam kasus kami, ini adalah sekelompok Lingkungan Belajar Komputer Mesin Azure ( AmlCompute ).
entry_scriptJalur ke file (relatif ke source_directory ) dari skrip pelatihan yang akan dieksekusi pada sumber daya komputasi jarak jauh. File ini dan file tambahan yang menjadi sandarannya harus berada di folder ini.
conda_packagesDaftar paket Python yang diperlukan agar skrip pelatihan diinstal menggunakan conda. Dalam hal ini, skrip pelatihan menggunakan sklearn untuk mengunduh data, jadi Anda harus menentukan paket ini untuk instalasi. Parameter pip_packages dari konstruktor dapat digunakan untuk semua paket pip yang diperlukan.
use_gpuAtur bendera ini ke True untuk menggunakan GPU untuk pelatihan. Standarnya adalah False .

Karena Anda bekerja dengan alat evaluasi TensorFlow, wadah yang digunakan untuk pelatihan secara default akan berisi paket TensorFlow dan dependensi terkait yang diperlukan untuk pelatihan dalam CPU dan GPU.


Kemudian kirimkan pekerjaan TensorFlow:


 run = exp.submit(tf_est) 

Pelatihan yang didistribusikan


Alat Evaluasi TensorFlow juga memungkinkan Anda melatih model dalam kluster CPU dan GPU mesin virtual Azure. Pelatihan TensorFlow yang didistribusikan disampaikan melalui beberapa panggilan API, dengan layanan Azure Machine Learning di latar belakang mengelola infrastruktur dan fitur orkestrasi yang diperlukan untuk menyelesaikan beban kerja ini.


Layanan Pembelajaran Mesin Azure mendukung dua metode pembelajaran terdistribusi di TensorFlow.



Horovod


Horovod adalah platform berbasis-ring-allreduce-based-based learning-source yang dikembangkan oleh Uber.


Untuk menjalankan pelatihan terdistribusi TensorFlow menggunakan platform Horovod, buat objek TensorFlow sebagai berikut:


 from azureml.train.dnn import TensorFlow tf_est = TensorFlow(source_directory='./my-tf-proj', script_params={}, compute_target=compute_target, entry_script='train.py', node_count=2, process_count_per_node=1, distributed_backend='mpi', use_gpu=True) 

Kode di atas menunjukkan opsi baru berikut di konstruktor TensorFlow.

ParameterDESKRIPSInilai default
node_countJumlah node yang akan digunakan untuk tugas pelatihan.1
process_count_per_nodeJumlah proses (atau peran kerja) yang berjalan pada setiap node.1
distributed_backendSisi server untuk menjalankan pembelajaran terdistribusi, yang ditawarkan oleh alat penilaian MPI. Untuk melakukan pelatihan paralel atau terdistribusi (misalnya, node_count > 1 atau process_count_per_node > 1, atau keduanya) menggunakan MPI (dan Horovod), atur distributed_backend='mpi' Azure Machine Learning menggunakan MPI Open MPI implementasi.None

Dalam contoh di atas, pelatihan yang didistribusikan akan dilakukan dengan dua peran kerja - satu peran kerja untuk setiap node.


Horovod dan dependensinya akan diinstal secara otomatis, jadi Anda cukup mengimpornya ke train.py pelatihan train.py sebagai berikut:


 import tensorflow as tf import horovod 

Akhirnya, kirimkan pekerjaan TensorFlow Anda:


 run = exp.submit(tf_est) 

Server Parameter


Anda juga dapat memulai pelatihan terdistribusi TensorFlow Anda sendiri yang menggunakan model server parameter. Dalam metode ini, pelatihan dilakukan dalam sekelompok server parameter dan peran kerja. Selama pelatihan, peran pekerja menghitung gradien, dan server parameter melakukan pemrosesan statistik gradien.


Buat objek TensorFlow:


 from azureml.train.dnn import TensorFlow tf_est = TensorFlow(source_directory='./my-tf-proj', script_params={}, compute_target=compute_target, entry_script='train.py', node_count=2, worker_count=2, parameter_server_count=1, distributed_backend='ps', use_gpu=True) 

Perhatikan parameter berikut dalam konstruktor TensorFlow dalam kode di atas.

ParameterDESKRIPSInilai default
worker_countJumlah peran pekerjaan.1
parameter_server_countJumlah server parameter.1
distributed_backendBagian server yang akan digunakan untuk pelatihan terdistribusi. Untuk melakukan pelatihan terdistribusi menggunakan server parameter, atur nilai distributed_backend='ps' .None

Catatan tentang TF_CONFIG


Anda juga akan memerlukan alamat dan port jaringan cluster untuk tf.train.ClusterSpec , sehingga layanan Pembelajaran Mesin Azure secara otomatis menetapkan TF_CONFIG lingkungan TF_CONFIG .


TF_CONFIG lingkungan TF_CONFIG adalah string JSON. Berikut ini adalah contoh variabel untuk server parameter.


 TF_CONFIG='{ "cluster": { "ps": ["host0:2222", "host1:2222"], "worker": ["host2:2222", "host3:2222", "host4:2222"], }, "task": {"type": "ps", "index": 0}, "environment": "cloud" }' 

Jika Anda menggunakan API tingkat tinggi tf.estimator TensorFlow, tf.estimator akan menguraikan variabel TF_CONFIG ini dan membentuk spesifikasi kluster.


Jika Anda menggunakan API level rendah untuk pelatihan, Anda perlu menganalisis variabel TF_CONFIG dan membuat tf.train.ClusterSpec dalam kode pelatihan. Dalam contoh ini, tindakan ini dilakukan dalam skrip pelatihan sebagai berikut:


 import os, json import tensorflow as tf tf_config = os.environ.get('TF_CONFIG') if not tf_config or tf_config == "": raise ValueError("TF_CONFIG not found.") tf_config_json = json.loads(tf_config) cluster_spec = tf.train.ClusterSpec(cluster) 

Setelah menyelesaikan skrip pelatihan dan membuat objek TensorFlow, kirimkan tugas pelatihan:


 run = exp.submit(tf_est) 

Contohnya


Untuk buku catatan pembelajaran terdistribusi yang mendalam, lihat repositori GitHub



Pelajari cara menjalankan buku catatan dengan mengikuti arahan dalam artikel tentang cara mempelajari layanan ini dengan buku catatan Jupyter .


Informasi tambahan


Source: https://habr.com/ru/post/id442120/


All Articles