TF_CONFIG dan pelatihan terdistribusi

Saat Anda menjalankan tugas pelatihan, Pelatihan AI Platform akan menetapkan variabel lingkungan yang disebut TF_CONFIG pada setiap instance virtual machine (VM) yang merupakan bagian dari tugas Anda. Kode pelatihan Anda, yang berjalan di setiap VM, dapat menggunakan variabel lingkungan TF_CONFIG untuk mengakses detail tentang tugas pelatihan dan peran VM yang menjalankannya.

TensorFlow menggunakan variabel lingkungan TF_CONFIG untuk memfasilitasi pelatihan terdistribusi, tetapi Anda mungkin tidak perlu mengaksesnya secara langsung dalam kode pelatihan Anda. Dokumen ini menjelaskan variabel lingkungan TF_CONFIG dan penggunaannya dalam tugas TensorFlow terdistribusi dan tugas penyesuaian hyperparameter.

Format TF_CONFIG

Pelatihan AI Platform menetapkan variabel lingkungan TF_CONFIG pada setiap VM dari setiap tugas pelatihan untuk memenuhi spesifikasi yang diperlukan TensorFlow untuk pelatihan terdistribusi. Namun, Pelatihan AI Platform juga menetapkan kolom tambahan dalam variabel lingkungan TF_CONFIG di luar yang diperlukan TensorFlow.

Variabel lingkungan TF_CONFIG adalah string JSON dengan format berikut:

TF_CONFIG kolom
cluster

Deskripsi cluster TensorFlow. Kamus yang memetakan satu atau beberapa nama tugas (chief, worker, ps, atau master) ke daftar alamat jaringan tempat tugas ini dijalankan. Untuk tugas pelatihan tertentu, kamus ini sama untuk setiap VM.

Ini adalah argumen pertama yang valid untuk konstruktor tf.train.ClusterSpec. Perlu diketahui bahwa kamus ini tidak pernah berisi evaluator sebagai kunci, karena evaluator tidak dianggap sebagai bagian dari cluster pelatihan meskipun Anda menggunakannya untuk tugas Anda.

Pelajari perbedaan antara chief dan master di bagian lain dalam dokumen ini.

task

Deskripsi tugas VM tempat variabel lingkungan ini ditetapkan. Untuk tugas pelatihan tertentu, kamus ini berbeda untuk setiap VM. Anda dapat menggunakan informasi ini untuk menyesuaikan kode yang dijalankan pada setiap VM dalam tugas pelatihan terdistribusi. Anda juga dapat menggunakannya untuk mengubah perilaku kode pelatihan untuk berbagai uji coba tugas penyesuaian hyperparameter.

Kamus ini mencakup pasangan nilai kunci berikut:

task kolom
type

Jenis tugas yang dijalankan VM ini. Nilai ini ditetapkan ke worker pada pekerja, ps pada server parameter, dan evaluator pada evaluator. Pada worker master tugas Anda, nilainya ditetapkan ke chief atau master; Pelajari lebih lanjut perbedaan antara keduanya di bagian chief versus master dalam dokumen ini.

index

Indeks tugas berbasis nol. Misalnya, jika tugas pelatihan Anda menyertakan dua worker, nilai ini ditetapkan ke 0 pada salah satunya dan 1 pada tugas lainnya.

trial

ID uji coba penyesuaian hyperparameter yang saat ini berjalan di VM ini. Kolom ini hanya ditetapkan jika tugas pelatihan saat ini adalah tugas penyesuaian hyperparameter.

Untuk tugas penyesuaian hyperparameter, Pelatihan AI Platform menjalankan kode pelatihan Anda berulang kali dalam banyak uji coba dengan hyperparameter yang berbeda setiap kali. Kolom ini berisi nomor uji coba saat ini, mulai dari 1 untuk uji coba pertama.

cloud

ID yang digunakan secara internal oleh AI Platform Training. Anda dapat mengabaikan kolom ini.

job

TrainingInput yang Anda berikan untuk membuat tugas pelatihan saat ini, direpresentasikan sebagai kamus.

environment

String cloud.

Untuk tugas pelatihan container kustom, Pelatihan AI Platform menetapkan variabel lingkungan tambahan yang disebut CLUSTER_SPEC, yang memiliki format serupa dengan TF_CONFIG, tetapi dengan beberapa perbedaan penting. Pelajari variabel lingkungan CLUSTER_SPEC.

Contoh

Kode contoh berikut mencetak variabel lingkungan TF_CONFIG ke log pelatihan Anda:

import json
import os

tf_config_str = os.environ.get('TF_CONFIG')
tf_config_dict  = json.loads(tf_config_str)

# Convert back to string just for pretty printing
print(json.dumps(tf_config_dict, indent=2))

Dalam tugas penyesuaian hyperparameter yang berjalan pada runtime versi 2.1 atau yang lebih baru dan menggunakan worker master, dua worker, dan satu server parameter, kode ini menghasilkan log berikut untuk salah satu worker selama penyesuaian hyperparameter pertama. Contoh output menyembunyikan kolom job agar lebih ringkas dan mengganti beberapa ID dengan nilai generik.

{
  "cluster": {
    "chief": [
      "cmle-training-chief-[ID_STRING_1]-0:2222"
    ],
    "ps": [
      "cmle-training-ps-[ID_STRING_1]-0:2222"
    ],
    "worker": [
      "cmle-training-worker-[ID_STRING_1]-0:2222",
      "cmle-training-worker-[ID_STRING_1]-1:2222"
    ]
  },
  "environment": "cloud",
  "job": {
    ...
  },
  "task": {
    "cloud": "[ID_STRING_2]",
    "index": 0,
    "trial": "1",
    "type": "worker"
  }
}

chief versus master

VM pekerja master di Pelatihan AI Platform sesuai dengan jenis tugas chief di TensorFlow. Meskipun TensorFlow dapat menunjuk tugas worker untuk bertindak sebagai chief, AI Platform Training selalu secara eksplisit menetapkan chief.

master adalah jenis tugas yang tidak digunakan lagi di TensorFlow. master mewakili tugas yang menjalankan peran serupa dengan chief tetapi juga bertindak sebagai evaluator dalam beberapa konfigurasi. TensorFlow 2 tidak mendukung variabel lingkungan TF_CONFIG yang berisi tugas master.

Pelatihan AI Platform menggunakan chief di kolom cluster dan task pada variabel lingkungan TF_CONFIG jika salah satu hal berikut berlaku:

Jika tidak, karena alasan kompatibilitas, Pelatihan AI Platform akan menggunakan jenis tugas master yang tidak digunakan lagi, bukan chief.

Kapan menggunakan TF_CONFIG

Seperti yang disebutkan di bagian sebelumnya, Anda mungkin tidak perlu berinteraksi dengan variabel lingkungan TF_CONFIG secara langsung dalam kode pelatihan. Hanya akses variabel lingkungan TF_CONFIG jika strategi distribusi TensorFlow dan alur kerja penyesuaian hyperparameter standar Pelatihan AI Platform, keduanya yang dijelaskan di bagian berikutnya, tidak berfungsi untuk tugas Anda.

Pelatihan yang terdistribusi

AI Platform Training menetapkan variabel lingkungan TF_CONFIG untuk memperluas spesifikasi yang diperlukan TensorFlow untuk pelatihan terdistribusi.

Untuk melakukan pelatihan terdistribusi dengan TensorFlow, gunakan tf.distribute.Strategy API. Secara khusus, sebaiknya gunakan Keras API bersama dengan MultiWorkerMirroredStrategy atau, jika Anda menentukan server parameter untuk tugas Anda, ParameterServerStrategy. Namun, perlu diperhatikan bahwa TensorFlow saat ini hanya menyediakan dukungan eksperimental untuk strategi ini.

Strategi distribusi ini menggunakan variabel lingkungan TF_CONFIG untuk menetapkan peran ke setiap VM dalam tugas pelatihan Anda, dan untuk memfasilitasi komunikasi antara VM. Anda tidak perlu mengakses variabel lingkungan TF_CONFIG secara langsung dalam kode pelatihan karena TensorFlow akan menanganinya untuk Anda.

Hanya uraikan variabel lingkungan TF_CONFIG secara langsung jika Anda ingin menyesuaikan perilaku berbagai VM yang menjalankan tugas pelatihan Anda.

Penyesuaian hyperparameter

Saat Anda menjalankan tugas penyesuaian hyperparameter, Pelatihan AI Platform akan memberikan argumen yang berbeda ke kode pelatihan Anda untuk setiap uji coba. Kode pelatihan Anda tidak perlu mengetahui uji coba yang sedang berjalan. Selain itu, Pelatihan AI Platform menyediakan alat untuk memantau progres tugas penyesuaian hyperparameter.

Jika diperlukan, kode Anda dapat membaca nomor uji coba saat ini dari kolom trial pada kolom task dari variabel lingkungan TF_CONFIG.

Langkah selanjutnya