Jika tidak segera memerlukan prediksi, atau jika memiliki instance dalam jumlah besar untuk mendapatkan prediksi, Anda dapat menggunakan layanan prediksi batch. Halaman ini menjelaskan cara memulai tugas prediksi batch AI Platform Prediction. AI Platform Prediction hanya mendukung pengambilan prediksi batch dari model TensorFlow.
Pelajari prediksi online versus batch atau baca ringkasan konsep prediksi.
Sebelum memulai
Untuk meminta prediksi, Anda harus terlebih dahulu:
Buat resource model dan resource versi atau masukkan TensorFlowSavedModel di lokasi Cloud Storage yang dapat diakses project Anda.
- Jika memilih untuk menggunakan resource versi untuk prediksi batch, Anda harus membuat versi dengan jenis mesin
mls1-c1-m2
.
- Jika memilih untuk menggunakan resource versi untuk prediksi batch, Anda harus membuat versi dengan jenis mesin
Siapkan lokasi Cloud Storage yang dapat diakses project Anda untuk:
File data input. Ini dapat berupa beberapa lokasi, dan project Anda harus diizinkan untuk membaca dari setiap lokasi tersebut.
File output. Anda hanya dapat menentukan satu jalur output dan project Anda harus diberi otorisasi untuk menulis data ke jalur tersebut.
Pastikan file input Anda memiliki format yang benar untuk prediksi batch.
Mengonfigurasi tugas prediksi batch
Untuk memulai tugas prediksi batch, Anda harus mengumpulkan beberapa data konfigurasi. Ini adalah data yang sama yang terkandung dalam objek PredictionInput yang Anda gunakan ketika memanggil API secara langsung:
- Format data
Jenis format input yang Anda gunakan untuk file input. Semua file input untuk tugas tertentu harus menggunakan format data yang sama. Tetapkan ke salah satu nilai berikut:
- JSON
File input Anda adalah teks biasa dengan instance di setiap baris. Ini adalah format yang dijelaskan di halaman konsep prediksi.
- TF_RECORD
File input Anda menggunakan format TFRecord TensorFlow.
- TF_RECORD_GZIP
File input Anda adalah file TFRecord yang dikompresi GZIP.
- Jalur input
URI file data input Anda, yang harus berada di lokasi Cloud Storage. Anda dapat menentukan:
Jalur ke file tertentu:
'gs://path/to/my/input/file.json'
.Jalur ke direktori dengan karakter pengganti tanda bintang tunggal, untuk menunjukkan semua file dalam direktori tersebut:
'gs://path/to/my/input/*'
.Jalur ke nama file parsial dengan karakter pengganti tanda bintang tunggal di bagian akhir, untuk menunjukkan semua file yang dimulai dengan urutan yang disediakan:
'gs://path/to/my/input/file*'
.
Anda dapat menggabungkan beberapa URI. Di Python, Anda membuat daftarnya. Jika menggunakan Google Cloud CLI, atau memanggil API secara langsung, Anda dapat mencantumkan beberapa URI, yang dipisahkan dengan koma, tetapi tanpa spasi di antaranya. Ini adalah format yang tepat untuk flag
--input-paths
:--input-paths gs://a/directory/of/files/*,gs://a/single/specific/file.json,gs://a/file/template/data*
- Jalur output
Jalur ke lokasi Cloud Storage tempat Anda ingin layanan prediksi menyimpan hasil. Project Anda harus memiliki izin untuk menulis ke lokasi ini.
- Nama model dan nama versi
Nama model dan, secara opsional, versi yang ingin Anda dapatkan prediksinya. Jika Anda tidak menentukan versi, versi default model akan digunakan. Untuk prediksi batch, versi tersebut harus menggunakan jenis mesin
mls1-c1-m2
.Jika Anda memberikan URI Model (lihat bagian berikut), hapus kolom ini.
- URI Model
Anda bisa mendapatkan prediksi dari model yang tidak di-deploy pada AI Platform Prediction dengan menentukan URISavedModel yang ingin Anda gunakan. SaveModel harus disimpan di Cloud Storage.
Singkatnya, Anda memiliki tiga opsi untuk menentukan model yang akan digunakan untuk prediksi batch. Anda dapat menggunakan:
Nama model saja menggunakan versi default model.
Nama model dan versi yang akan menggunakan versi model tertentu.
URI model untuk menggunakanSavedModel yang ada di Cloud Storage, tetapi tidak di-deploy ke AI Platform Prediction.
- Region
Region Google Compute Engine tempat Anda ingin menjalankan tugas. Untuk mendapatkan performa terbaik, Anda harus menjalankan tugas prediksi dan menyimpan data input dan output di region yang sama, terutama untuk set data yang sangat besar. Prediksi batch AI Platform Prediction tersedia di region berikut:
- us-central1 - us-east1 - europe-west1 - asia-east1
Untuk sepenuhnya memahami region yang tersedia untuk layanan AI Platform Prediction, termasuk pelatihan model dan prediksi online, baca panduan untuk region.
- Nama Tugas
Nama pekerjaan Anda, yang harus:
- Hanya berisi huruf, angka, dan garis bawah campuran (peka huruf besar/kecil).
- Awali dengan huruf.
- Berisi tidak lebih dari 128 karakter.
- Bersikap unik di antara semua nama tugas pelatihan dan prediksi batch yang pernah digunakan dalam project Anda. Ini termasuk semua pekerjaan yang Anda buat di proyek Anda, terlepas dari keberhasilan atau status mereka.
- Ukuran tumpukan (opsional)
Jumlah data per batch. Layanan akan menyanggah
batch_size
data dalam memori sebelum memanggil model Anda. Jika tidak ditentukan, defaultnya adalah 64.- Label (opsional)
Anda dapat menambahkan label ke tugas untuk mengatur dan mengurutkan tugas ke dalam kategori saat melihat atau memantau resource. Misalnya, Anda dapat mengurutkan tugas berdasarkan tim (dengan menambahkan label seperti
engineering
atauresearch
) atau berdasarkan fase pengembangan (prod
atautest
). Untuk menambahkan label ke tugas prediksi, berikan daftar pasanganKEY=VALUE
.- Jumlah pekerja maksimum (opsional)
Jumlah maksimum node prediksi yang akan digunakan dalam cluster pemrosesan untuk tugas ini. Ini adalah cara yang Anda gunakan untuk menetapkan batas maksimum pada fitur penskalaan otomatis prediksi batch. Jika Anda tidak menentukan nilai, nilai defaultnya adalah 10. Terlepas dari nilai yang Anda tentukan, penskalaan dibatasi oleh kuota node prediksi.
- Versi runtime (opsional)
Versi AI Platform Prediction yang akan digunakan untuk tugas. Opsi ini disertakan sehingga Anda dapat menentukan versi runtime yang akan digunakan dengan model yang tidak di-deploy di AI Platform Prediction. Anda harus selalu menghilangkan nilai ini untuk versi model yang di-deploy, yang memberi tahu layanan untuk menggunakan versi yang sama dengan yang ditentukan saat versi model di-deploy.
- Nama tanda tangan (opsional)
Jika model tersimpan Anda memiliki beberapa tanda tangan, gunakan opsi ini untuk menentukan nama tanda tangan TensorFlow kustom, yang memungkinkan Anda memilih peta input/output alternatif yang ditentukan dalam TensorFlowSavedModel. Lihat dokumentasi TensorFlow terkait SavedModel untuk panduan penggunaan tanda tangan, dan panduan untuk menentukan output model kustom. Defaultnya adalah DEFAULT_SERVING_SIGNATURE_DEF_KEY, yang memiliki nilai
serving_default
.
Contoh berikut menentukan variabel untuk menyimpan data konfigurasi.
gcloud
Anda tidak perlu membuat variabel saat menggunakan alat command line gcloud untuk memulai tugas. Namun, melakukannya di sini membuat perintah pengiriman tugas jauh lebih mudah untuk dimasukkan dan dibaca.
DATA_FORMAT="text" # JSON data format
INPUT_PATHS='gs://path/to/your/input/data/*'
OUTPUT_PATH='gs://your/desired/output/location'
MODEL_NAME='census'
VERSION_NAME='v1'
REGION='us-east1'
now=$(date +"%Y%m%d_%H%M%S")
JOB_NAME="census_batch_predict_$now"
MAX_WORKER_COUNT="20"
BATCH_SIZE="32"
LABELS="team=engineering,phase=test,owner=sara"
Python
Saat menggunakan Library Klien Google API untuk Python, Anda dapat menggunakan kamus Python untuk merepresentasikan resource Job dan PredictionInput.
Format nama project dan nama model atau versi Anda dengan sintaksis yang digunakan oleh AI Platform Prediction REST API:
- project_name -> 'projects/project_name'
- model_name -> 'projects/project_name/models/model_name'
- version_name -> 'projects/project_name/models/model_name/versions/version_name'
Buat kamus untuk resource Pekerjaan dan isi dengan dua item:
Kunci bernama
'jobId'
dengan nama tugas yang ingin Anda gunakan sebagai nilainya.Kunci bernama
'predictionInput'
yang berisi objek kamus lain yang menampung semua anggota PredictionInput yang diperlukan dan anggota opsional yang ingin Anda gunakan.
Contoh berikut menunjukkan fungsi yang mengambil informasi konfigurasi sebagai variabel input dan menampilkan isi permintaan prediksi. Selain dasar-dasar tersebut, contoh tersebut juga menghasilkan ID tugas yang unik berdasarkan nama project, nama model, dan waktu saat ini.
import time import re def make_batch_job_body(project_name, input_paths, output_path, model_name, region, data_format='JSON', version_name=None, max_worker_count=None, runtime_version=None): project_id = 'projects/{}'.format(project_name) model_id = '{}/models/{}'.format(project_id, model_name) if version_name: version_id = '{}/versions/{}'.format(model_id, version_name) # Make a jobName of the format "model_name_batch_predict_YYYYMMDD_HHMMSS" timestamp = time.strftime('%Y%m%d_%H%M%S', time.gmtime()) # Make sure the project name is formatted correctly to work as the basis # of a valid job name. clean_project_name = re.sub(r'\W+', '_', project_name) job_id = '{}_{}_{}'.format(clean_project_name, model_name, timestamp) # Start building the request dictionary with required information. body = {'jobId': job_id, 'predictionInput': { 'dataFormat': data_format, 'inputPaths': input_paths, 'outputPath': output_path, 'region': region}} # Use the version if present, the model (its default version) if not. if version_name: body['predictionInput']['versionName'] = version_id else: body['predictionInput']['modelName'] = model_id # Only include a maximum number of workers or a runtime version if specified. # Otherwise let the service use its defaults. if max_worker_count: body['predictionInput']['maxWorkerCount'] = max_worker_count if runtime_version: body['predictionInput']['runtimeVersion'] = runtime_version return body
Mengirim tugas prediksi batch
Anda dapat mengirimkan tugas dengan mudah ke projects.jobs.create atau alat command line yang setara, yaitu gcloud ai-platform jobs submit prediksi.
gcloud
Contoh berikut menggunakan variabel yang ditentukan di bagian sebelumnya untuk memulai prediksi batch.
gcloud ai-platform jobs submit prediction $JOB_NAME \
--model $MODEL_NAME \
--input-paths $INPUT_PATHS \
--output-path $OUTPUT_PATH \
--region $REGION \
--data-format $DATA_FORMAT
Python
Memulai tugas prediksi batch dengan Library Klien Google API untuk Python mengikuti pola yang serupa dengan prosedur SDK klien lainnya:
Siapkan isi permintaan yang akan digunakan untuk panggilan (ini ditunjukkan di bagian sebelumnya).
Buat permintaan dengan memanggil ml.projects.jobs.create.
Jalankan pemanggilan pada permintaan untuk mendapatkan respons, pastikan untuk memeriksa error HTTP.
Gunakan respons sebagai kamus untuk mendapatkan nilai dari resource Job.
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.
import googleapiclient.discovery as discovery
project_id = 'projects/{}'.format(project_name)
ml = discovery.build('ml', 'v1')
request = ml.projects().jobs().create(parent=project_id,
body=batch_predict_body)
try:
response = request.execute()
print('Job requested.')
# The state returned will almost always be QUEUED.
print('state : {}'.format(response['state']))
except errors.HttpError as err:
# Something went wrong, print out some information.
print('There was an error getting the prediction results.' +
'Check the details:')
print(err._get_reason())
Memantau tugas prediksi batch Anda
Tugas prediksi batch dapat memerlukan waktu lama untuk diselesaikan. Anda dapat memantau progres pekerjaan menggunakan Google Cloud Console:
Buka halaman Tugas Prediksi AI Platform di Konsol Google Cloud:
Klik nama pekerjaan Anda di daftar ID Pekerjaan. Tindakan ini akan membuka halaman Detail tugas.
Status saat ini ditampilkan dengan nama pekerjaan di bagian atas halaman.
Jika ingin mengetahui detail selengkapnya, Anda dapat mengklik View logs untuk melihat entri tugas Anda di Cloud Logging.
Ada cara lain untuk melacak progres tugas prediksi batch Anda. Keduanya mengikuti pola yang sama dengan memantau tugas pelatihan. Anda akan menemukan informasi selengkapnya di halaman yang menjelaskan cara memantau tugas pelatihan. Anda mungkin perlu sedikit menyesuaikan petunjuk agar dapat menangani tugas prediksi, tetapi mekanismenya sama.
Mendapatkan hasil prediksi
Layanan menulis prediksi ke lokasi Cloud Storage yang Anda tentukan. Ada dua jenis output file yang mungkin menyertakan hasil yang menarik:
File bernama
prediction.errors_stats-NNNNN-of-NNNNN
berisi informasi tentang masalah yang dialami selama tugas.File JSON Lines yang bernama
prediction.results-NNNNN-of-NNNNN
berisi prediksi itu sendiri, seperti yang ditetapkan oleh output model Anda.
Nama file mencakup nomor indeks (ditampilkan di atas sebagai 'N' untuk setiap digit) yang
menunjukkan jumlah total file yang harus Anda temukan. Misalnya, tugas yang memiliki enam
file hasil menyertakan prediction.results-00000-of-00006
hingga
prediction.results-00005-of-00006
.
Setiap baris dari setiap file prediksi adalah objek JSON yang mewakili satu hasil prediksi. Anda dapat membuka file prediksi dengan pilihan editor teks. Untuk sekilas melihat command line, Anda
dapat menggunakan gsutil cat
:
gsutil cat $OUTPUT_PATH/prediction.results-NNNNN-of-NNNNN|less
Perlu diingat bahwa hasil prediksi Anda biasanya tidak di-output dalam urutan yang sama dengan instance input, meskipun Anda hanya menggunakan satu file input. Anda dapat menemukan prediksi untuk instance dengan mencocokkan kunci instance.
Langkah Berikutnya
- Menggunakan prediksi online.
- Dapatkan detail selengkapnya tentang proses prediksi.
- Pecahkan masalah yang muncul saat Anda meminta prediksi online.
- Pelajari cara menggunakan label untuk mengatur tugas.