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.
Parameter | DESKRIPSI |
---|
source_directory | Direktori lokal yang berisi semua kode yang diperlukan untuk menyelesaikan pelatihan. Folder ini disalin dari komputer lokal ke sumber daya komputasi jarak jauh. |
script_params | Kamus yang menetapkan argumen baris perintah untuk entry_script pelatihan entry_script sebagai pasangan <argumen baris perintah, nilai>. |
compute_target | Target perhitungan jarak jauh tempat skrip pelatihan akan dijalankan. Dalam kasus kami, ini adalah sekelompok Lingkungan Belajar Komputer Mesin Azure ( AmlCompute ). |
entry_script | Jalur 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_packages | Daftar 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_gpu | Atur 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.
Parameter | DESKRIPSI | nilai default |
---|
node_count | Jumlah node yang akan digunakan untuk tugas pelatihan. | 1 |
process_count_per_node | Jumlah proses (atau peran kerja) yang berjalan pada setiap node. | 1 |
distributed_backend | Sisi 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.
Parameter | DESKRIPSI | nilai default |
---|
worker_count | Jumlah peran pekerjaan. | 1 |
parameter_server_count | Jumlah server parameter. | 1 |
distributed_backend | Bagian 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