Halaman ini menunjukkan cara mendapatkan prediksi batch dari model klasifikasi video menggunakan Konsol Google Cloud atau Vertex AI API. Prediksi batch adalah permintaan asinkron. Anda meminta prediksi batch secara langsung dari resource model tanpa perlu men-deploy model ke endpoint.
Model video AutoML tidak mendukung prediksi online.
Mendapatkan prediksi batch
Untuk membuat permintaan prediksi batch, tentukan sumber input dan format output tempat Vertex AI menyimpan hasil prediksi.
Persyaratan data input
Input untuk permintaan batch menentukan item yang akan dikirim ke model Anda untuk mendapatkan prediksi. Prediksi batch untuk jenis model video AutoML menggunakan file JSON Lines untuk menentukan daftar video yang akan dibuat prediksinya, lalu menyimpan file JSON Lines tersebut di bucket Cloud Storage. Anda dapat menentukan Infinity
untuk kolom timeSegmentEnd
guna menentukan akhir video. Contoh berikut menunjukkan satu baris dalam file JSON Lines input.
{'content': 'gs://sourcebucket/datasets/videos/source_video.mp4', 'mimeType': 'video/mp4', 'timeSegmentStart': '0.0s', 'timeSegmentEnd': '2.366667s'}
Meminta prediksi batch
Untuk permintaan prediksi batch, Anda dapat menggunakan Konsol Google Cloud atau Vertex AI API. Bergantung pada jumlah item input yang Anda kirimkan, tugas prediksi batch dapat memerlukan waktu beberapa saat untuk diselesaikan.
Konsol Google Cloud
Gunakan Konsol Google Cloud untuk meminta prediksi batch.
Di Konsol Google Cloud, di bagian Vertex AI, buka halaman Batch Predictions.
Klik Create untuk membuka jendela New batch predictions dan selesaikan langkah-langkah berikut:
- Masukkan nama untuk prediksi batch.
- Untuk Model name, pilih nama model yang akan digunakan untuk prediksi batch ini.
- Untuk Source path, tentukan lokasi Cloud Storage tempat file input JSON Lines Anda berada.
- Untuk Destination path, tentukan lokasi Cloud Storage tempat hasil prediksi batch disimpan. Format Output ditentukan oleh tujuan model Anda. Model AutoML untuk tujuan gambar menghasilkan file JSON Lines.
API
Gunakan Vertex AI API untuk mengirim permintaan prediksi batch.
REST
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- LOCATION_ID: Region tempat Model disimpan dan tugas prediksi batch dijalankan. Misalnya,
us-central1
. - PROJECT_ID: project ID Anda
- BATCH_JOB_NAME: Nama tampilan untuk tugas batch
- MODEL_ID: ID yang digunakan oleh model untuk membuat prediksi
- THRESHOLD_VALUE (opsional): Model hanya menampilkan prediksi yang memiliki skor keyakinan dengan minimal nilai ini
- SEGMENT_CLASSIFICATION (opsional): Nilai Boolean yang
menentukan apakah akan meminta klasifikasi tingkat segmen atau tidak. Vertex AI
menampilkan label dan skor keyakinannya untuk keseluruhan segmen waktu
video yang Anda tentukan dalam instance input. Default-nya adalah
true
. - SHOT_CLASSIFICATION (opsional): Nilai Boolean yang menentukan
apakah akan meminta klasifikasi tingkat pengambilan gambar. Vertex AI menentukan
batas untuk setiap pengambilan gambar kamera di seluruh segmen waktu video
yang Anda tentukan dalam instance input. Vertex AI kemudian menampilkan
label dan skor keyakinannya untuk setiap pengambilan gambar yang terdeteksi, beserta
waktu mulai dan berakhirnya pengambilan gambar tersebut. Defaultnya adalah
false
. - ONE_SEC_INTERVAL_CLASSIFICATION (opsional): Nilai Boolean
yang menentukan apakah akan meminta klasifikasi untuk video pada interval satu detik
atau tidak. Vertex AI menampilkan label dan skor keyakinannya untuk
setiap detik dari keseluruhan segmen waktu video yang Anda
tentukan dalam instance input. Defaultnya adalah
false
. - URI: Cloud Storage URI tempat file JSON Lines input Anda berada.
- BUCKET: Bucket Cloud Storage Anda
- PROJECT_NUMBER: Nomor project yang dibuat secara otomatis untuk project Anda
Metode HTTP dan URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs
Isi JSON permintaan:
{ "displayName": "BATCH_JOB_NAME", "model": "projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID", "modelParameters": { "confidenceThreshold": THRESHOLD_VALUE, "segmentClassification": SEGMENT_CLASSIFICATION, "shotClassification": SHOT_CLASSIFICATION, "oneSecIntervalClassification": ONE_SEC_INTERVAL_CLASSIFICATION }, "inputConfig": { "instancesFormat": "jsonl", "gcsSource": { "uris": ["URI"], }, }, "outputConfig": { "predictionsFormat": "jsonl", "gcsDestination": { "outputUriPrefix": "OUTPUT_BUCKET", }, }, }
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Simpan isi permintaan dalam file bernama request.json
,
dan jalankan perintah berikut:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs"
PowerShell
Simpan isi permintaan dalam file bernama request.json
,
dan jalankan perintah berikut:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs" | Select-Object -Expand Content
Anda akan menerima respons JSON yang mirip seperti berikut:
{ "name": "projects/PROJECT_NUMBER/locations/us-central1/batchPredictionJobs/BATCH_JOB_ID", "displayName": "BATCH_JOB_NAME", "model": "projects/PROJECT_NUMBER/locations/us-central1/models/MODEL_ID", "inputConfig": { "instancesFormat": "jsonl", "gcsSource": { "uris": [ "CONTENT" ] } }, "outputConfig": { "predictionsFormat": "jsonl", "gcsDestination": { "outputUriPrefix": "BUCKET" } }, "state": "JOB_STATE_PENDING", "createTime": "2020-05-30T02:58:44.341643Z", "updateTime": "2020-05-30T02:58:44.341643Z", "modelDisplayName": "MODEL_NAME", "modelObjective": "MODEL_OBJECTIVE" }
Anda dapat melakukan polling untuk status tugas batch menggunakan
BATCH_JOB_ID hingga state
tugas menjadi
JOB_STATE_SUCCEEDED
.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai Vertex AI menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Java Vertex AI.
Untuk melakukan autentikasi ke Vertex AI, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai Vertex AI menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Node.js Vertex AI.
Untuk melakukan autentikasi ke Vertex AI, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Python
Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Python API.
Mengambil hasil prediksi batch
Vertex AI mengirimkan output prediksi batch ke tujuan yang Anda tentukan.
Ketika tugas prediksi batch selesai, output prediksi disimpan di bucket Cloud Storage yang Anda tentukan dalam permintaan Anda.
Contoh hasil prediksi batch
Berikut ini contoh hasil prediksi batch dari model klasifikasi video.
{ "instance": { "content": "gs://bucket/video.mp4", "mimeType": "video/mp4", "timeSegmentStart": "1s", "timeSegmentEnd": "5s" } "prediction": [{ "id": "1", "displayName": "cat", "type": "segment-classification", "timeSegmentStart": "1s", "timeSegmentEnd": "5s", "confidence": 0.7 }, { "id": "1", "displayName": "cat", "type": "shot-classification", "timeSegmentStart": "1s", "timeSegmentEnd": "4s", "confidence": 0.9 }, { "id": "2", "displayName": "dog", "type": "shot-classification", "timeSegmentStart": "4s", "timeSegmentEnd": "5s", "confidence": 0.6 }, { "id": "1", "displayName": "cat", "type": "one-sec-interval-classification", "timeSegmentStart": "1s", "timeSegmentEnd": "1s", "confidence": 0.95 }, { "id": "1", "displayName": "cat", "type": "one-sec-interval-classification", "timeSegmentStart": "2s", "timeSegmentEnd": "2s", "confidence": 0.9 }, { "id": "1", "displayName": "cat", "type": "one-sec-interval-classification", "timeSegmentStart": "3s", "timeSegmentEnd": "3s", "confidence": 0.85 }, { "id": "2", "displayName": "dog", "type": "one-sec-interval-classification", "timeSegmentStart": "4s", "timeSegmentEnd": "4s", "confidence": 0.6 }] }