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 resourceJob
. Anda meneruskan jalur file konfigurasi dalam tanda--config
dari perintahgcloud ai-platform jobs submit training
. Jadi, jika jalur ke file konfigurasi adalahconfig.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 statusQUEUED
danPREPARING
. 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 statusRUNNING
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 minimal1800s
(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 statusRUNNING
. 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 adalahconfig.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 spesifikgcloud
dan awalUSER_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.
Simpan project ID Anda dalam format yang diperlukan API ('projects/_projectname'):
project_name = 'my_project_name' project_id = 'projects/{}'.format(project_name)
Dapatkan representasi Python dari layanan AI Platform Training:
cloudml = discovery.build('ml', 'v1')
Buat permintaan Anda dan kirim. Perhatikan bahwa
job_spec
dibuat di langkah sebelumnya saat Anda memformat parameter konfigurasirequest = cloudml.projects().jobs().create(body=job_spec, parent=project_id) response = request.execute()
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
- Pantau atau visualisasikan tugas pelatihan Anda saat berjalan.
- Lihat detail selengkapnya tentang menentukan jenis mesin.
- Lihat cara mengonfigurasi tugas penyesuaian hyperparameter.
- Bersiaplah untuk men-deploy model yang telah dilatih untuk prediksi.