Menjalankan tugas pelatihan

AI Platform Training menyediakan pelatihan model sebagai layanan asinkron (batch). Halaman ini menjelaskan cara mengonfigurasi dan mengirimkan tugas pelatihan dengan menjalankan gcloud ai-platform jobs submit training dari command line atau dengan mengirimkan permintaan ke API di projects.jobs.create.

Sebelum memulai

Sebelum dapat mengirimkan tugas pelatihan, Anda harus mengemas aplikasi dan menguploadnya serta dependensi yang tidak biasa ke bucket Cloud Storage. Catatan: Jika menggunakan Google Cloud CLI untuk mengirimkan tugas, Anda dapat mengemas aplikasi dan mengirimkan tugas dengan langkah yang sama.

Mengonfigurasi tugas

Anda meneruskan parameter ke layanan pelatihan dengan menetapkan anggota resource Job, yang mencakup item dalam resource TrainingInput.

Jika menggunakan Google Cloud CLI untuk mengirimkan tugas pelatihan, Anda dapat:

  • Tentukan parameter pelatihan yang paling umum sebagai flag dari perintah gcloud ai-platform jobs submit training.
  • Teruskan parameter yang tersisa dalam file konfigurasi YAML, yang diberi nama config.yaml berdasarkan konvensi. File konfigurasi mencerminkan struktur representasi JSON resource Job. Anda meneruskan jalur file konfigurasi dalam flag --config pada perintah gcloud ai-platform jobs submit training. Jadi, jika jalur ke file konfigurasi adalah config.yaml, Anda harus menetapkan --config=config.yaml.

Mengumpulkan data konfigurasi tugas

Properti berikut digunakan untuk menentukan tugas Anda.

Nama pekerjaan (jobId)
Nama yang akan digunakan untuk tugas (campuran huruf besar, angka, dan garis bawah, yang dimulai dengan huruf).
Konfigurasi cluster (scaleTier)
Tingkat skala yang menentukan jenis cluster pemrosesan untuk menjalankan tugas Anda. Ini dapat berupa tingkat skala CUSTOM, yang dalam hal ini Anda juga secara eksplisit menentukan jumlah dan jenis mesin yang akan digunakan.
Konfigurasi disk (diskConfig)
Konfigurasi boot disk untuk setiap VM pelatihan. Kolom ini bersifat opsional; secara default, setiap VM berjalan dengan disk booting pd-ssd 100 GB. Menentukan kolom ini dapat menimbulkan biaya disk tambahan.
Paket aplikasi pelatihan (packageUris)
Aplikasi pelatihan terpaket yang di-stage di lokasi Cloud Storage. Jika Anda menggunakan Google Cloud CLI, langkah pengemasan aplikasi sebagian besar akan berjalan otomatis. Lihat detail dalam panduan untuk memaketkan aplikasi.
Nama modul (pythonModule)
Nama modul utama dalam paket Anda. Modul utama adalah file Python yang Anda panggil untuk memulai aplikasi. Jika Anda menggunakan perintah gcloud untuk mengirimkan tugas, tentukan nama modul utama dalam flag --module-name. Lihat panduan untuk memaketkan aplikasi.
Wilayah (region)
Region Compute Engine tempat Anda ingin menjalankan tugas. Anda harus menjalankan tugas pelatihan di region yang sama dengan bucket Cloud Storage yang menyimpan data pelatihan Anda. Lihat region yang tersedia untuk layanan Pelatihan AI Platform.
Direktori pekerjaan (jobDir)
Jalur ke lokasi Cloud Storage yang akan digunakan untuk output tugas. Sebagian besar aplikasi pelatihan menyimpan checkpoint selama pelatihan dan menyimpan model yang dilatih ke file di akhir tugas. Anda memerlukan lokasi Cloud Storage untuk menyimpannya. Project Google Cloud Anda harus memiliki akses tulis ke bucket ini. Layanan pelatihan secara otomatis meneruskan jalur yang Anda tetapkan untuk direktori tugas ke aplikasi pelatihan sebagai argumen command line bernama job_dir. Anda dapat mengurainya bersama argumen lain aplikasi dan menggunakannya dalam kode Anda. Keuntungan menggunakan direktori tugas adalah layanan pelatihan akan memvalidasi direktori sebelum memulai aplikasi Anda.
Versi runtime (runtimeVersion)
Versi runtime Pelatihan AI Platform yang akan digunakan untuk tugas.
Versi Python (pythonVersion)
Versi Python yang akan digunakan untuk tugas. Python 3.5 tersedia di runtime versi 1.13 hingga 1.14. Python 3.7 tersedia di runtime versi 1.15 dan yang lebih baru.
Waktu tunggu maksimum (scheduling.maxWaitTime)
Durasi tunggu maksimum dalam detik dengan akhiran s (misalnya, 3600s) yang menentukan berapa lama Anda mengizinkan tugas untuk tetap berada dalam status QUEUED dan PREPARING. AI Platform Training tidak selalu mulai menjalankan tugas Anda karena keterbatasan resource; tentukan kolom ini jika Anda tidak bersedia menunggu lebih lama dari durasi tertentu agar tugas dapat dijalankan. Durasi terbatas dimulai saat Anda membuat tugas. Jika lowongan belum memasuki status RUNNING pada akhir periode ini, AI Platform Training akan membatalkan tugas tersebut. Kolom ini bersifat opsional dan default-nya tidak dibatasi. Jika menentukan kolom ini, Anda harus menetapkan nilai setidaknya ke 1800s (30 menit).
Waktu berjalan maksimum (scheduling.maxRunningTime)
Durasi berjalan maksimum dalam detik dengan akhiran s (misalnya, 7200s) untuk tugas pelatihan Anda. Durasi terbatas dimulai saat tugas memasuki status RUNNING. Jika tugas masih berjalan setelah jangka waktu ini, AI Platform Training akan membatalkan tugas tersebut. Kolom ini bersifat opsional dan defaultnya adalah tujuh hari (604800s).
Akun layanan (serviceAccount)
Alamat email akun layanan untuk AI Platform Training yang akan digunakan saat menjalankan aplikasi pelatihan Anda. Hal ini dapat memberi aplikasi pelatihan Anda akses ke resource Google Cloud tanpa memberikan akses langsung ke akun layanan yang dikelola Google AI Platform pada project Anda. Kolom ini bersifat opsional. Pelajari persyaratan untuk akun layanan kustom lebih lanjut.

Memformat parameter konfigurasi

Cara Anda menentukan detail konfigurasi bergantung pada cara Anda memulai tugas pelatihan:

gcloud

Berikan detail konfigurasi tugas ke perintah gcloud ai-platform jobs submit training. Anda dapat melakukannya dengan dua cara:

  • Dengan tanda command line.
  • Dalam file YAML yang mewakili resource Job. Anda dapat memberi nama file ini sesuai keinginan Anda. Berdasarkan konvensi, namanya adalah config.yaml.

Meskipun Anda menggunakan file YAML, detail tertentu harus diberikan sebagai flag command line. Misalnya, Anda harus memberikan tanda --module-name dan setidaknya salah satu dari --package-path atau --packages. Jika menggunakan --package-path, Anda juga harus menyertakan --job-dir atau --staging-bucket. Selain itu, Anda harus memberikan tanda --region atau menetapkan region default untuk klien gcloud. Opsi ini—dan opsi lainnya yang Anda berikan sebagai tanda command line—akan menggantikan nilai untuk opsi tersebut dalam file konfigurasi Anda.

Contoh 1: Dalam contoh ini, Anda memilih cluster mesin yang telah dikonfigurasi sebelumnya dan memberikan semua detail yang diperlukan sebagai flag command line saat mengirimkan tugas. File konfigurasi tidak diperlukan. Lihat panduan untuk mengirimkan tugas di bagian berikutnya.

Contoh 2: Contoh berikut menampilkan konten file konfigurasi untuk tugas dengan cluster pemrosesan kustom. File konfigurasi menyertakan sebagian, tetapi tidak semua detail konfigurasi, dengan asumsi bahwa Anda menyediakan detail lainnya yang diperlukan sebagai flag command line saat mengirimkan tugas.

trainingInput:
  scaleTier: CUSTOM
  masterType: complex_model_m
  workerType: complex_model_m
  parameterServerType: large_model
  workerCount: 9
  parameterServerCount: 3
  runtimeVersion: '2.11'
  pythonVersion: '3.7'
  scheduling:
    maxWaitTime: 3600s
    maxRunningTime: 7200s

Contoh sebelumnya menetapkan Python versi 3.7, yang tersedia saat Anda menggunakan runtime AI Platform Training versi 1.15 atau yang lebih baru. Emulator ini juga mengonfigurasi virtual machine server pekerja dan parameter. Mesin tersebut hanya dikonfigurasi jika Anda melakukan pelatihan terdistribusi menggunakan TensorFlow atau container kustom. Baca selengkapnya tentang jenis mesin.

Python

Saat Anda mengirimkan tugas pelatihan menggunakan Library Klien Google API untuk Python, tetapkan konfigurasi Anda dalam kamus dengan struktur yang sama dengan resource Job. Ini berbentuk kamus dengan dua kunci: jobId dan trainingInput, dengan datanya masing-masing adalah nama untuk tugas dan kamus kedua dengan kunci untuk objek dalam resource TrainingInput.

Contoh berikut menunjukkan cara membuat representasi Tugas untuk tugas dengan cluster pemrosesan kustom.

training_inputs = {
    'scaleTier': 'CUSTOM',
    'masterType': 'complex_model_m',
    'workerType': 'complex_model_m',
    'parameterServerType': 'large_model',
    'workerCount': 9,
    'parameterServerCount': 3,
    'packageUris': ['gs://my/trainer/path/package-0.0.0.tar.gz'],
    'pythonModule': 'trainer.task',
    'args': ['--arg1', 'value1', '--arg2', 'value2'],
    'region': 'us-central1',
    'jobDir': 'gs://my/training/job/directory',
    'runtimeVersion': '2.11',
    'pythonVersion': '3.7',
    'scheduling': {'maxWaitTime': '3600s', 'maxRunningTime': '7200s'},
}

job_spec = {'jobId': 'my_job_name', 'trainingInput': training_inputs}

Perhatikan bahwa training_inputs dan job_spec adalah ID arbitrer: Anda dapat memberi nama kamus ini sesuai keinginan. Namun, kunci kamus harus dinamai persis seperti yang ditunjukkan, agar cocok dengan nama dalam resource Job dan TrainingInput.

Contoh sebelumnya menetapkan Python versi 3.7, yang tersedia saat Anda menggunakan runtime AI Platform Training versi 1.15 atau yang lebih baru. Emulator ini juga mengonfigurasi virtual machine server pekerja dan parameter. Mesin tersebut hanya dikonfigurasi jika Anda melakukan pelatihan terdistribusi menggunakan TensorFlow atau container kustom. Baca selengkapnya tentang jenis mesin.

Mengirimkan tugas

Saat mengirimkan tugas pelatihan, Anda menentukan dua set flag:

  • Parameter konfigurasi tugas. AI Platform Training memerlukan nilai ini untuk menyiapkan resource di cloud dan men-deploy aplikasi Anda di setiap node di cluster pemrosesan.
  • Argumen pengguna, atau parameter aplikasi. AI Platform Training akan meneruskan nilai flag ini ke aplikasi Anda.

Buat tugas Anda:

gcloud

Kirim tugas pelatihan menggunakan perintah gcloud ai-platform jobs submit training.

Pertama, sebaiknya Anda menentukan beberapa variabel lingkungan yang berisi detail konfigurasi. Untuk membuat nama tugas, kode berikut menambahkan tanggal dan waktu ke nama model:

PACKAGE_PATH="/path/to/your/application/sources"
now=$(date +"%Y%m%d_%H%M%S")
JOB_NAME="your_name_$now"
MODULE_NAME="trainer.task"
JOB_DIR="gs://your/chosen/job/output/path"
REGION="us-east1"
RUNTIME_VERSION="2.11"

Pengiriman tugas berikut sesuai dengan konfigurasi contoh 1 di atas, tempat Anda memilih tingkat skala yang telah dikonfigurasi sebelumnya (basic) dan Anda memutuskan untuk menyediakan semua detail konfigurasi melalui tanda command line. File config.yaml tidak diperlukan:

gcloud ai-platform jobs submit training $JOB_NAME \
        --scale-tier basic \
        --package-path $PACKAGE_PATH \
        --module-name $MODULE_NAME \
        --job-dir $JOB_DIR \
        --region $REGION \
        -- \
        --user_first_arg=first_arg_value \
        --user_second_arg=second_arg_value

Pengiriman tugas berikut sesuai dengan konfigurasi contoh 2 di atas, dengan beberapa konfigurasi berada dalam file dan Anda memberikan detail lainnya melalui flag command line:

gcloud ai-platform jobs submit training $JOB_NAME \
        --package-path $PACKAGE_PATH \
        --module-name $MODULE_NAME \
        --job-dir $JOB_DIR \
        --region $REGION \
        --config config.yaml \
        -- \
        --user_first_arg=first_arg_value \
        --user_second_arg=second_arg_value

Catatan:

  • Jika Anda menentukan opsi di file konfigurasi (config.yaml) dan sebagai tanda command line, nilai pada command line akan menggantikan nilai dalam file konfigurasi.
  • Flag -- yang kosong menandai akhir dari flag khusus gcloud dan awal dari USER_ARGS yang ingin diteruskan ke aplikasi Anda.
  • Tanda khusus untuk Pelatihan AI Platform, seperti --module-name, --runtime-version, dan --job-dir, harus ditempatkan sebelum tanda -- kosong. Layanan AI Platform Training menafsirkan tanda ini.
  • Flag --job-dir, jika ditentukan, harus ditempatkan sebelum flag -- kosong, karena AI Platform Training menggunakan --job-dir untuk memvalidasi jalur.
  • Aplikasi Anda juga harus menangani flag --job-dir, jika ditentukan. Meskipun tanda ini ditempatkan sebelum -- kosong, --job-dir juga diteruskan ke aplikasi Anda sebagai tanda command line.
  • Anda dapat menentukan USER_ARGS sebanyak yang Anda butuhkan. AI Platform Training meneruskan --user_first_arg, --user_second_arg, dan seterusnya, ke aplikasi Anda.

Python

Anda dapat menggunakan Library Klien Google API untuk Python untuk memanggil AI Platform Training and Prediction API tanpa membuat permintaan HTTP secara manual. Sebelum menjalankan contoh kode berikut, Anda harus menyiapkan autentikasi.

  1. Simpan project ID Anda dalam format yang diperlukan API (('projects/_projectname'):

    project_name = 'my_project_name'
    project_id = 'projects/{}'.format(project_name)
    
  2. Dapatkan representasi Python dari layanan Pelatihan AI Platform:

    cloudml = discovery.build('ml', 'v1')
    
  3. Buat permintaan dan kirimkan. Perhatikan bahwa job_spec dibuat pada langkah sebelumnya saat Anda memformat parameter konfigurasi

    request = cloudml.projects().jobs().create(body=job_spec,
                  parent=project_id)
    response = request.execute()
    
  4. Tangkap error HTTP apa pun. Cara paling sederhana adalah dengan menempatkan perintah sebelumnya dalam blok try:

    try:
        response = request.execute()
        # You can put your code for handling success (if any) here.
    
    except errors.HttpError, err:
        # Do whatever error response is appropriate for your application.
        # For this example, just send some text to the logs.
        # You need to import logging for this to work.
        logging.error('There was an error creating the training job.'
                      ' Check the details:')
        logging.error(err._get_reason())
    

Langkah selanjutnya