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 resourceJob
. Anda meneruskan jalur file konfigurasi dalam flag--config
pada 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 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 statusQUEUED
danPREPARING
. 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 statusRUNNING
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 ke1800s
(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 statusRUNNING
. 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 adalahconfig.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 khususgcloud
dan awal dariUSER_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.
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 Pelatihan AI Platform:
cloudml = discovery.build('ml', 'v1')
Buat permintaan dan kirimkan. Perhatikan bahwa
job_spec
dibuat pada langkah sebelumnya saat Anda memformat parameter konfigurasirequest = cloudml.projects().jobs().create(body=job_spec, parent=project_id) response = request.execute()
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
- Pantau atau visualisasikan tugas pelatihan Anda saat tugas tersebut berjalan.
- Lihat detail selengkapnya tentang menentukan jenis mesin.
- Lihat cara mengonfigurasi tugas penyesuaian hyperparameter.
- Bersiaplah untuk men-deploy model terlatih Anda untuk prediksi.