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 mengirim permintaan ke API di projects.jobs.create.

Sebelum memulai

Sebelum dapat mengirimkan tugas pelatihan, Anda harus memaketkan aplikasi dan menguploadnya serta dependensi yang tidak biasa ke bucket Cloud Storage. Catatan: Jika menggunakan Google Cloud CLI untuk mengirimkan tugas, Anda dapat memaketkan aplikasi dan mengirimkan tugas dalam 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 perintah gcloud ai-platform jobs submit training.
  • Teruskan parameter yang tersisa dalam file konfigurasi YAML, yang diberi nama config.yaml menurut konvensi. File konfigurasi mencerminkan struktur representasi JSON resource Job. Anda meneruskan jalur file konfigurasi dalam tanda --config dari 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 tugas (jobId)
Nama yang akan digunakan untuk tugas (hanya huruf besar/kecil, angka, dan garis bawah, dimulai dengan huruf).
Konfigurasi cluster (scaleTier)
Tingkat skala yang menentukan jenis cluster pemrosesan untuk menjalankan tugas Anda. Ini dapat berupa tingkat skala CUSTOM, dalam hal ini Anda juga menentukan secara eksplisit jumlah dan jenis mesin yang akan digunakan.
Konfigurasi disk (diskConfig)
Konfigurasi disk booting untuk setiap VM pelatihan. Kolom ini bersifat opsional; secara default, setiap VM berjalan dengan disk booting pd-ssd 100 GB. Menentukan kolom ini dapat dikenai biaya disk tambahan.
Paket aplikasi pelatihan (packageUris)
Aplikasi pelatihan yang dikemas dan di-staging di lokasi Cloud Storage. Jika Anda menggunakan Google Cloud CLI, langkah pengemasan aplikasi sebagian besar akan otomatis. Lihat detailnya dalam panduan untuk memaketkan aplikasi Anda.
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 tanda --module-name. Lihat panduan untuk mengemas aplikasi.
Wilayah (region)
Region Compute Engine tempat Anda ingin tugas dijalankan. Anda harus menjalankan tugas pelatihan di region yang sama dengan bucket Cloud Storage yang menyimpan data pelatihan. Lihat region yang tersedia untuk layanan Pelatihan AI Platform.
Direktori tugas (jobDir)
Jalur ke lokasi Cloud Storage yang akan digunakan untuk output tugas. Sebagian besar aplikasi pelatihan menyimpan checkpoint selama pelatihan dan menyimpan model terlatih 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 otomatis meneruskan jalur yang Anda tetapkan untuk direktori tugas ke aplikasi pelatihan sebagai argumen command line bernama job_dir. Anda dapat mengurainya bersama dengan argumen lain aplikasi dan menggunakannya dalam kode Anda. Keuntungan menggunakan direktori lowongan adalah layanan pelatihan 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 dalam versi runtime 1.13 hingga 1.14. Python 3.7 tersedia dalam 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 tetap dalam status QUEUED dan PREPARING. AI Platform Training tidak selalu langsung mulai menjalankan tugas Anda karena keterbatasan resource; tentukan kolom ini jika Anda tidak mau menunggu lebih lama dari durasi tertentu agar tugas berjalan. Durasi terbatas dimulai saat Anda membuat tugas. Jika tugas belum memasuki status RUNNING pada akhir periode ini, AI Platform Training akan membatalkan tugas. Kolom ini bersifat opsional dan setelan defaultnya adalah tidak ada batas. Jika menentukan kolom ini, Anda harus menetapkan nilai minimal 1800s (30 menit).
Waktu proses 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. Kolom ini bersifat opsional dan setelan defaultnya tujuh hari (604800s).
Akun layanan (serviceAccount)
Alamat email akun layanan untuk Pelatihan AI Platform yang akan digunakan saat menjalankan aplikasi pelatihan Anda. Tindakan ini dapat memberikan akses aplikasi pelatihan Anda ke resource Google Cloud tanpa memberikan akses langsung ke agen layanan AI Platform project Anda. Kolom ini bersifat opsional. Pelajari lebih lanjut persyaratan untuk akun layanan kustom.

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. 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 satu dari --package-path atau --packages. Jika menggunakan --package-path, Anda juga harus menyertakan --job-dir atau --staging-bucket. Selain itu, Anda harus memberikan flag --region atau menetapkan region default untuk klien gcloud Anda. Opsi ini—dan opsi lain yang Anda berikan sebagai flag command line—akan mengganti 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. Tidak diperlukan file konfigurasi. Lihat panduan untuk mengirim tugas di bagian berikutnya.

Contoh 2: Contoh berikut menunjukkan isi file konfigurasi untuk tugas dengan cluster pemrosesan kustom. File konfigurasi menyertakan beberapa, tetapi tidak semua detail konfigurasi, dengan asumsi bahwa Anda memberikan detail lain yang diperlukan sebagai tanda 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 menentukan Python versi 3.7, yang tersedia saat Anda menggunakan runtime AI Platform Training versi 1.15 atau yang lebih baru. Alat ini juga mengonfigurasi virtual machine worker dan server parameter; hanya konfigurasikan mesin ini 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 seperti resource Job. Ini berbentuk kamus dengan dua kunci: jobId dan trainingInput, dengan data masing-masing adalah nama untuk tugas dan kamus kedua dengan kunci untuk objek di 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 apa pun yang Anda inginkan. Namun, kunci kamus harus diberi nama persis seperti yang ditunjukkan, agar cocok dengan nama dalam resource Job dan TrainingInput.

Contoh sebelumnya menentukan Python versi 3.7, yang tersedia saat Anda menggunakan runtime AI Platform Training versi 1.15 atau yang lebih baru. Alat ini juga mengonfigurasi virtual machine worker dan server parameter; hanya konfigurasikan mesin ini jika Anda melakukan pelatihan terdistribusi menggunakan TensorFlow atau container kustom. Baca selengkapnya tentang jenis mesin.

Mengirimkan tugas

Saat mengirimkan tugas pelatihan, Anda menentukan dua kumpulan flag:

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

Buat tugas Anda:

gcloud

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

Pertama, sebaiknya tentukan beberapa variabel lingkungan yang berisi detail konfigurasi Anda. Untuk membuat nama tugas, kode berikut akan 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"

Kiriman tugas berikut sesuai dengan konfigurasi contoh 1 di atas, tempat Anda memilih tingkat skala yang telah dikonfigurasi sebelumnya (basic) dan Anda memutuskan untuk memberikan semua detail konfigurasi melalui flag command line. Tidak perlu file config.yaml:

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

Kiriman tugas berikut sesuai dengan konfigurasi contoh 2 di atas, dengan beberapa konfigurasi ada 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 dalam file konfigurasi (config.yaml) dan sebagai tanda command line, nilai pada command line akan menggantikan nilai dalam file konfigurasi.
  • Flag -- kosong menandai akhir flag spesifik gcloud dan awal USER_ARGS yang ingin Anda teruskan ke aplikasi.
  • Flag khusus untuk AI Platform Training, seperti --module-name, --runtime-version, dan --job-dir, harus ditempatkan sebelum flag -- kosong. Layanan AI Platform Training menafsirkan flag ini.
  • Flag --job-dir, jika ditentukan, harus berada sebelum flag -- kosong, karena AI Platform Training menggunakan --job-dir untuk memvalidasi jalur.
  • Aplikasi Anda juga harus menangani flag --job-dir, jika ditentukan. Meskipun flag muncul sebelum -- kosong, --job-dir juga diteruskan ke aplikasi Anda sebagai flag 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 guna 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 AI Platform Training:

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

    request = cloudml.projects().jobs().create(body=job_spec,
                  parent=project_id)
    response = request.execute()
    
  4. Menangkap error HTTP apa pun. Cara termudah 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