Pelatihan terdistribusi dengan container

Halaman ini menjelaskan cara penampung kustom mendukung struktur pelatihan terdistribusi di AI Platform Training.

Dengan penampung 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 dari penampung kustom AI Platform Training, yang menggunakan master, pekerja, dan server parameter.

Struktur cluster pelatihan

Jika menjalankan tugas pelatihan terdistribusi dengan AI Platform Training, Anda akan 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 dalam cluster pelatihan diberi satu peran atau tugas dalam pelatihan terdistribusi:

  • Pekerja master: Hanya satu replika yang ditetapkan sebagai pekerja master (juga dikenal sebagai chief worker). Tugas ini mengelola tugas lainnya dan melaporkan status untuk 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 antar-worker.

  • 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 ke mesin di cluster pelatihan sesuai dengan empat kolom yang dapat Anda tentukan di TrainingInput, yang mewakili parameter input untuk tugas pelatihan:

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

Anda juga dapat menetapkan nilai untuk setiap kolom ini dengan flag 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 penampung kustom.

Memahami CLUSTER_SPEC

AI Platform Training mengisi variabel lingkungan, CLUSTER_SPEC, di setiap replika untuk mendeskripsikan 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 halnya `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. Nilai yang mungkin 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 AI Platform Training juga menetapkan variabel lingkungan TF_CONFIG pada setiap replika semua tugas pelatihan. AI Platform Training hanya menetapkan variabel lingkungan CLUSTER_SPEC pada replika tugas pelatihan penampung kustom. Kedua variabel lingkungan memiliki beberapa nilai yang sama, tetapi memiliki format yang berbeda.

Saat Anda melakukan pelatihan dengan penampung kustom, replika master diberi label di variabel lingkungan TF_CONFIG dengan nama tugas master secara default. Anda dapat mengonfigurasinya agar diberi label dengan nama tugas chief sebagai gantinya dengan menetapkan kolom trainingInput.useChiefInTfConfig ke true saat 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 berfungsi 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 di Pelatihan AI Platform.

Langkah selanjutnya