Pelatihan terdistribusi dengan container

Halaman ini menjelaskan cara container kustom mendukung struktur pelatihan terdistribusi pada Pelatihan AI Platform.

Dengan container kustom, Anda dapat melakukan pelatihan terdistribusi dengan framework ML apa pun yang mendukung distribusi. Meskipun terminologi yang digunakan di sini didasarkan pada model terdistribusi TensorFlow, Anda dapat menggunakan framework ML lain yang memiliki struktur distribusi serupa. Misalnya, pelatihan terdistribusi di MXNet menggunakan penjadwal, pekerja, dan server. Hal ini sesuai dengan struktur pelatihan terdistribusi untuk container kustom Pelatihan AI Platform, yang menggunakan server master, worker, dan parameter.

Struktur cluster pelatihan

Jika menjalankan tugas pelatihan terdistribusi dengan AI Platform Training, Anda harus menentukan beberapa mesin (node) dalam cluster pelatihan. Layanan pelatihan mengalokasikan resource untuk jenis mesin yang Anda tentukan. Tugas Anda yang sedang berjalan pada node tertentu disebut replika. Sesuai dengan model TensorFlow terdistribusi, setiap replika di cluster pelatihan diberi satu peran atau tugas dalam pelatihan terdistribusi:

  • Pekerja master: Hanya satu replika yang ditetapkan sebagai pekerja master (juga dikenal sebagai pekerja utama). Tugas ini mengelola tugas lainnya dan melaporkan status tugas secara keseluruhan.

  • Pekerja: Satu atau beberapa replika dapat ditetapkan sebagai pekerja. Replika ini melakukan bagian tugasnya seperti yang Anda tetapkan dalam konfigurasi tugas.

  • Server parameter: Satu atau beberapa replika dapat ditetapkan sebagai server parameter. Replika ini menyimpan parameter model dan mengoordinasikan status model bersama antara pekerja.

  • Evaluator: Satu atau beberapa replika dapat ditetapkan sebagai evaluator. Replika ini dapat digunakan untuk mengevaluasi model Anda. Jika Anda menggunakan TensorFlow, perhatikan bahwa TensorFlow umumnya mengharapkan Anda menggunakan tidak lebih dari satu evaluator.

Pemetaan API

Empat peran berbeda yang dapat Anda tetapkan pada mesin di cluster pelatihan sesuai dengan empat kolom yang dapat Anda tentukan di TrainingInput, yang mewakili parameter input untuk tugas pelatihan:

  • masterConfig.imageUri merepresentasikan URI image container yang akan dijalankan pada pekerja master.
  • workerConfig.imageUri, parameterServerConfig.imageUri, dan evaluatorConfig.imageUri mewakili URI gambar container yang akan dijalankan di pekerja, server parameter, dan evaluator. Jika tidak ada nilai yang ditetapkan untuk kolom ini, AI Platform Training akan menggunakan nilai masterConfig.imageUri.

Anda juga dapat menetapkan nilai untuk setiap kolom ini dengan tanda yang sesuai di gcloud ai-platform jobs submit training:

  • Untuk konfigurasi pekerja master, gunakan --master-image-uri.
  • Untuk konfigurasi pekerja, gunakan --worker-image-uri.
  • Untuk konfigurasi server parameter, gunakan --parameter-server-image-uri.
  • Saat ini tidak ada flag untuk menentukan URI image container bagi evaluator. Anda dapat menentukan evaluatorConfig.imageUri dalam file konfigurasi config.yaml.

Lihat contoh cara mengirimkan tugas pelatihan terdistribusi dengan container kustom.

Memahami CLUSTER_SPEC

AI Platform Training mengisi variabel lingkungan, CLUSTER_SPEC, di setiap replika untuk menjelaskan cara keseluruhan cluster disiapkan. Seperti TF_CONFIG TensorFlow, CLUSTER_SPEC menjelaskan setiap replika dalam cluster, termasuk indeks dan perannya (pekerja master, pekerja, server parameter, atau evaluator).

Saat Anda menjalankan pelatihan terdistribusi dengan TensorFlow, TF_CONFIG akan diurai menjadi tf.train.ClusterSpec. Demikian pula, saat menjalankan pelatihan terdistribusi dengan framework ML lain, Anda harus mengurai CLUSTER_SPEC untuk mengisi variabel atau setelan lingkungan yang diperlukan oleh framework.

Format CLUSTER_SPEC

Variabel lingkungan CLUSTER_SPEC adalah string JSON dengan format berikut:

Kunci Deskripsi
"cluster" Deskripsi cluster untuk container kustom Anda. Seperti `TF_CONFIG`, objek ini diformat sebagai spesifikasi cluster TensorFlow, dan dapat diteruskan ke konstruktor tf.train.ClusterSpec.
"task" Menjelaskan tugas node tertentu tempat kode Anda dijalankan. Anda dapat menggunakan informasi ini untuk menulis kode bagi pekerja tertentu dalam tugas yang didistribusikan. Entri ini merupakan kamus dengan kunci berikut:
"type" Jenis tugas yang dilakukan oleh node ini. Kemungkinan nilainya adalah master, worker, ps, dan evaluator.
"index" Indeks tugas berbasis nol. Sebagian besar tugas pelatihan terdistribusi memiliki satu tugas master, satu atau beberapa server parameter, dan satu atau beberapa pekerja.
"trial" ID uji coba penyesuaian hyperparameter yang saat ini berjalan. Saat mengonfigurasi penyesuaian hyperparameter untuk tugas, Anda akan menetapkan jumlah uji coba untuk dilatih. Nilai ini memberi Anda cara untuk membedakan kode antara uji coba yang sedang berjalan. ID adalah nilai string yang berisi nomor uji coba, mulai dari 1.
"job" Parameter tugas yang Anda gunakan saat memulai tugas. Pada umumnya, Anda dapat mengabaikan entri ini, karena entri ini mereplikasi data yang diteruskan ke aplikasi Anda melalui argumen command line-nya.

Perbandingan dengan TF_CONFIG

Perhatikan bahwa Pelatihan AI Platform juga menetapkan variabel lingkungan TF_CONFIG pada setiap replika dari semua tugas pelatihan. AI Platform Training hanya menetapkan variabel lingkungan CLUSTER_SPEC pada replika tugas pelatihan container kustom. Kedua variabel lingkungan tersebut memiliki beberapa nilai yang sama, tetapi memiliki format yang berbeda.

Saat Anda melakukan pelatihan dengan penampung kustom, replika master diberi label dalam variabel lingkungan TF_CONFIG dengan nama tugas master secara default. Anda dapat mengonfigurasinya agar diberi label dengan nama tugas chief dengan menetapkan kolom trainingInput.useChiefInTfConfig ke true saat Anda membuat tugas pelatihan, atau dengan menggunakan satu atau beberapa replika evaluator dalam tugas Anda. Hal ini sangat membantu jika penampung kustom Anda menggunakan TensorFlow 2.

Selain opsi konfigurasi ini, pelatihan terdistribusi dengan TensorFlow bekerja dengan cara yang sama saat Anda menggunakan container kustom seperti saat Anda menggunakan versi runtime Pelatihan AI Platform. Lihat detail dan contoh selengkapnya tentang cara menggunakan TF_CONFIG untuk pelatihan terdistribusi tentang Pelatihan AI Platform.

Langkah selanjutnya