Jika tidak memerlukan prediksi segera, atau jika Anda memiliki sejumlah besar instance 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 mendapatkan 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 tempatkan SavedModel TensorFlow 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 oleh project Anda untuk:
File data input. Ini dapat berupa beberapa lokasi, dan project Anda harus diberi otorisasi untuk membaca dari setiap lokasi.
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 dalam 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 dengan yang terdapat dalam objek PredictionInput yang Anda gunakan saat 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 dengan 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 satu karakter pengganti tanda bintang, untuk menunjukkan semua file dalam direktori tersebut:
'gs://path/to/my/input/*'
.Jalur ke nama file parsial dengan satu karakter pengganti tanda bintang di akhir, untuk menunjukkan semua file yang dimulai dengan urutan yang diberikan:
'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 koma, tetapi tanpa spasi di antaranya. Ini adalah format yang tepat untuk tanda
--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 gunakan untuk mendapatkan prediksi. Jika Anda tidak menentukan versi, versi default model akan digunakan. Untuk prediksi batch, versi 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 di AI Platform Prediction dengan menentukan URI SavedModel yang ingin digunakan. SavedModel harus disimpan di Cloud Storage.
Singkatnya, Anda memiliki tiga opsi untuk menentukan model yang akan digunakan untuk prediksi batch. Anda dapat menggunakan:
Nama model itu sendiri untuk menggunakan versi default model.
Nama model dan versi untuk menggunakan versi model tertentu.
URI model untuk menggunakan SavedModel yang ada di Cloud Storage, tetapi tidak di-deploy ke AI Platform Prediction.
- Wilayah
Region Google Compute Engine tempat Anda ingin menjalankan tugas. Untuk 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 wilayah 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 region.
- Nama Tugas
Nama untuk tugas Anda, yang harus:
- Hanya berisi huruf, angka, dan garis bawah dengan huruf besar/kecil (peka huruf besar/kecil).
- Awali dengan huruf.
- Tidak boleh berisi lebih dari 128 karakter.
- Unik di antara semua nama tugas pelatihan dan prediksi batch yang pernah digunakan dalam project Anda. Hal ini mencakup semua tugas yang Anda buat dalam project, terlepas dari keberhasilan atau statusnya.
- Ukuran batch (opsional)
Jumlah data per batch. Layanan akan melakukan buffering jumlah data
batch_size
dalam memori sebelum memanggil model Anda. Jika tidak ditentukan, setelan 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 menurut tim (dengan menambahkan label seperti
engineering
atauresearch
) atau menurut 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 di cluster pemrosesan untuk tugas ini. Ini adalah cara Anda untuk menetapkan batas atas 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 agar 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 sinyal kepada 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 SavedModel TensorFlow. Lihat dokumentasi TensorFlow tentang SavedModel untuk panduan menggunakan 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 akan membuat perintah pengiriman tugas jauh lebih mudah 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 Tugas 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 menyimpan semua anggota yang diperlukan dari PredictionInput, dan anggota opsional apa pun yang ingin Anda gunakan.
Contoh berikut menunjukkan fungsi yang menggunakan informasi konfigurasi sebagai variabel input dan menampilkan isi permintaan prediksi. Selain dasar-dasarnya, contoh ini juga menghasilkan ID tugas 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
Mengirimkan tugas adalah panggilan sederhana ke projects.jobs.create atau alat command line yang setara, gcloud ai-platform jobs submit prediction.
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 ditampilkan di bagian sebelumnya).
Buat permintaan dengan memanggil ml.projects.jobs.create.
Panggil eksekusi pada permintaan untuk mendapatkan respons, pastikan untuk memeriksa error HTTP.
Gunakan respons sebagai kamus untuk mendapatkan nilai dari resource Tugas.
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
Tugas prediksi batch dapat memerlukan waktu lama untuk diselesaikan. Anda dapat memantau progres tugas menggunakan konsol Google Cloud:
Buka halaman Tugas Prediksi AI Platform di konsol Google Cloud:
Klik nama tugas Anda dalam daftar ID Tugas. Tindakan ini akan membuka halaman Detail tugas.
Status saat ini ditampilkan dengan nama tugas di bagian atas halaman.
Jika ingin mengetahui detail selengkapnya, Anda dapat mengklik Lihat log untuk melihat entri tugas di Cloud Logging.
Ada cara lain untuk melacak progres tugas prediksi batch Anda. Tugas ini 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 di sana agar berfungsi dengan tugas prediksi, tetapi mekanismenya sama.
Mendapatkan hasil prediksi
Layanan ini 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 ditemukan selama tugas.File JSON Lines bernama
prediction.results-NNNNN-of-NNNNN
berisi prediksi itu sendiri, seperti yang ditentukan oleh output model Anda.
Nama file menyertakan nomor indeks (ditampilkan di atas sebagai 'N' untuk setiap digit) yang
mencatat jumlah total file yang akan Anda temukan. Misalnya, tugas yang memiliki enam
file hasil mencakup 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 editor teks pilihan Anda. Untuk melihat sekilas command line, Anda
dapat menggunakan gcloud storage cat
:
gcloud storage cat $OUTPUT_PATH/prediction.results-NNNNN-of-NNNNN|less
Perlu diingat bahwa hasil prediksi biasanya tidak dihasilkan 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
- Gunakan prediksi online.
- Dapatkan detail selengkapnya tentang proses prediksi.
- Memecahkan masalah yang muncul saat Anda meminta prediksi online.
- Pelajari cara menggunakan label untuk mengatur tugas Anda.