Vertex AI menyediakan dua opsi untuk memproyeksikan nilai mendatang menggunakan model perkiraan yang telah dilatih: prediksi online, dan prediksi batch.
Prediksi online adalah permintaan sinkron. Gunakan prediksi online saat Anda membuat permintaan sebagai respons terhadap input aplikasi, atau dalam situasi lain ketika Anda memerlukan inferensi yang tepat waktu.
Permintaan prediksi batch adalah permintaan asinkron. Gunakan prediksi batch jika Anda tidak memerlukan respons langsung, dan ingin memproses data yang terakumulasi dengan menggunakan satu permintaan.
Halaman ini menunjukkan Anda cara untuk memproyeksikan nilai mendatang menggunakan prediksi online. Untuk mempelajari cara memproyeksikan nilai menggunakan prediksi batch, lihat Mendapatkan prediksi batch untuk model perkiraan.
Anda harus men-deploy model ke endpoint sebelum Anda dapat menggunakannya untuk prediksi. Endpoint adalah sekumpulan resource fisik.
Anda dapat meminta penjelasan, alih-alih meminta prediksi. Nilai kepentingan fitur lokal penjelasan memberi tahu Anda seberapa besar setiap fitur berkontribusi terhadap hasil prediksi tersebut. Untuk ringkasan konseptual, lihat Atribusi fitur untuk perkiraan.
Untuk mempelajari harga prediksi online, lihat Harga untuk Tabular Workflows.
Sebelum memulai
Agar dapat membuat permintaan prediksi online, Anda harus melatih model terlebih dahulu.
Membuat atau memilih endpoint
Gunakan fungsi
aiplatform.Endpoint.create()
untuk membuat endpoint. Jika Anda sudah memiliki endpoint, gunakan fungsi
aiplatform.Endpoint()
untuk memilihnya.
Kode berikut ini memberikan contoh:
# Import required modules
from google.cloud import aiplatform
from google.cloud.aiplatform import models
PROJECT_ID = "PROJECT_ID"
REGION = "REGION"
# Initialize the Vertex SDK for Python for your project.
aiplatform.init(project=PROJECT_ID, location=REGION)
endpoint = aiplatform.Endpoint.create(display_name='ENDPOINT_NAME')
Ganti kode berikut:
- PROJECT_ID: Project ID Anda.
- REGION: Region tempat Anda menggunakan Vertex AI.
- ENDPOINT_NAME: Nama tampilan endpoint tersebut.
Memilih model yang telah dilatih
Gunakan fungsi
aiplatform.Model()
untuk memilih model yang telah dilatih:
# Create reference to the model trained ahead of time.
model_obj = models.Model("TRAINED_MODEL_PATH")
Ganti kode berikut:
- TRAINED_MODEL_PATH: Contohnya,
projects/PROJECT_ID/locations/REGION/models/[TRAINED_MODEL_ID]
Men-deploy model ke endpoint
Gunakan fungsi
deploy()
untuk men-deploy model yang telah dilatih. Kode berikut ini memberikan contoh:
deployed_model = endpoint.deploy(
model_obj,
machine_type='MACHINE_TYPE',
traffic_percentage=100,
min_replica_count='MIN_REPLICA_COUNT',
max_replica_count='MAX_REPLICA_COUNT',
sync=True,
deployed_model_display_name='DEPLOYED_MODEL_NAME',
)
Ganti kode berikut:
- MACHINE_TYPE: Contohnya,
n1-standard-8
. Mempelajari jenis-jenis mesin lebih lanjut. - MIN_REPLICA_COUNT: Jumlah minimum node untuk deployment ini.
Jumlah node dapat ditingkatkan atau diturunkan sesuai kebutuhan oleh beban
prediksi, hingga jumlah maksimum node, dan tidak pernah kurang dari jumlah
node ini. Nilai ini harus lebih besar dari, atau sama dengan 1. Jika variabel
min_replica_count
tidak ditetapkan, nilainya akan ditetapkan secara default ke1
. - MAX_REPLICA_COUNT: Jumlah node maksimum untuk deployment ini.
Jumlah node dapat ditingkatkan atau diturunkan sesuai kebutuhan oleh beban
prediksi, hingga jumlah node ini, dan tidak pernah kurang dari jumlah minimum
node. Jika Anda tidak menetapkan variabel
max_replica_count
, jumlah maksimum node akan ditetapkan ke nilaimin_replica_count
. - DEPLOYED_MODEL_NAME: Nama untuk
DeployedModel
. Anda juga dapat menggunakan nama tampilanModel
untukDeployedModel
.
Deployment model mungkin memerlukan waktu sekitar sepuluh menit.
Mendapatkan prediksi online
Untuk mendapatkan prediksi, gunakan fungsi
predict()
,
dan berikan satu atau beberapa instance input. Kode berikut ini menampilkan contoh:
predictions = endpoint.predict(instances=[{...}, {...}])
Setiap instance input adalah kamus Python dengan skema yang sama dengan model yang dilatih. Pasangan nilai kunci tersedia pada perkiraan yang sesuai dengan kolom waktu, dan pasangan nilai kunci tidak tersedia pada perkiraan yang berisi nilai kolom prediksi yang ditargetkan. Vertex AI memperkirakan setiap instance input menjadi milik satu deret waktu. Urutan pasangan nilai kunci dalam instance tidaklah penting.
Instance input tunduk pada batasan berikut ini:
- Semua pasangan nilai kunci yang tersedia pada perkiraan harus memiliki jumlah titik data yang sama.
- Semua pasangan nilai kunci yang tidak tersedia pada perkiraan harus memiliki jumlah titik data yang sama.
- Pasangan nilai kunci yang tersedia pada perkiraan harus memiliki titik data setidaknya sebanyak pasangan nilai kunci yang tidak tersedia pada perkiraan.
Untuk mempelajari lebih lanjut tentang jenis kolom yang digunakan dalam perkiraan, lihat Jenis dan ketersediaan fitur pada perkiraan.
Kode berikut ini menunjukkan kumpulan dari dua instance input.
Kolom Category
berisi data atribut. Kolom Timestamp
berisi
data yang tersedia pada perkiraan. Tiga poin adalah data context dan
dua poin adalah data horizon. Kolom Sales
berisi data yang
tidak tersedia pada perkiraan. Ketiga poin tersebut adalah data context. Untuk mempelajari cara
konteks dan horizon digunakan dalam perkiraan, lihat
Horizon perkiraan, jendela konteks, dan jendela perkiraan.
instances=[
{
# Attribute
"Category": "Electronics",
# Available at forecast: three days of context, two days of horizon
"Timestamp": ['2023-08-03', '2023-08-04', '2023-08-05', '2023-08-06', '2023-08-07'],
# Unavailable at forecast: three days of context
"Sales": [490.50, 325.25, 647.00],
},
{
# Attribute
"Category": "Food",
# Available at forecast: three days of context, two days of horizon
"Timestamp": ['2023-08-03', '2023-08-04', '2023-08-05', '2023-08-06', '2023-08-07'],
# Unavailable at forecast: three days of context
"Sales": [190.50, 395.25, 47.00],
}
])
Untuk setiap instance, Vertex AI merespons dengan dua prediksi untuk Sales
,
yang sesuai dengan dua stempel waktu horizon ("2023-08-06" dan "2023-08-07").
Untuk performa yang optimal, jumlah titik data context dan jumlah titik data horizon di setiap instance input harus sesuai dengan konteksnya, dan panjang horizon yang digunakan untuk melatih model tersebut. Jika ada ketidakcocokan, Vertex AI akan menggabungkan atau memotong instance agar sesuai dengan ukuran model.
Jika jumlah titik data context dalam instance input Anda kurang dari atau lebih besar dari jumlah titik data context yang digunakan untuk pelatihan model, pastikan bahwa jumlah poin ini konsisten di semua pasangan nilai kunci yang tersedia saat perkiraan dan semua pasangan nilai kunci yang tidak tersedia saat perkiraan.
Misalnya, pertimbangkan model yang dilatih dengan data context selama empat hari, dan data horizon selama dua hari. Anda dapat membuat permintaan prediksi hanya dengan data context selama tiga hari. Dalam kasus ini, pasangan nilai kunci yang tidak tersedia saat prakiraan berisi tiga nilai. Pasangan nilai kunci yang tersedia pada perkiraan harus berisi lima nilai.
Output prediksi online
Vertex AI memberikan output prediksi online di dalam kolom value
:
{
'value': [...]
}
Panjang respons prediksi bergantung pada horizon yang digunakan di dalam pelatihan model, dan horizon dari instance input tersebut. Panjang dari respons prediksi adalah yang terkecil dari dua nilai ini.
Perhatikan contoh berikut ini:
- Anda melatih model dengan
context
=15
danhorizon
=50
. Instance input Anda memilikicontext
=15
danhorizon
=20
. Respons prediksi memiliki panjang20
. - Anda melatih model dengan
context
=15
danhorizon
=50
. Instance input Anda memilikicontext
=15
danhorizon
=100
. Respons prediksi memiliki50
.
Output prediksi online untuk model TFT
Untuk model yang dilatih dengan
Temporal Fusion Transformer (TFT),
Vertex AI memberikan penafsiran TFT tft_feature_importance
selain prediksi di dalam kolom value
:
{
"tft_feature_importance": {
"attribute_weights": [...],
"attribute_columns": [...],
"context_columns": [...],
"context_weights": [...],
"horizon_weights": [...],
"horizon_columns": [...]
},
"value": [...]
}
attribute_columns
: Fitur perkiraan yang merupakan invarian waktu.attribute_weights
: Bobot yang terkait dengan masing-masing dariattribute_columns
.context_columns
: Fitur perkiraan yang nilai jendela konteksnya berfungsi sebagai input ke Encoder TFT Long Short-Term Memory (LSTM).context_weights
: Bobot nilai kepentingan fitur yang terkait dengan setiapcontext_columns
untuk instance yang diprediksi.horizon_columns
: Fitur perkiraan yang nilai horizon perkiraannya berfungsi sebagai input untuk Decoder TFT Long Short-Term Memory (LSTM).horizon_weights
: Bobot nilai kepentingan fitur yang terkait dengan setiaphorizon_columns
untuk instance yang diprediksi.
Output prediksi online untuk model yang telah dioptimalkan untuk kehilangan kuantil
Untuk model yang dioptimalkan untuk kerugian kuantil, Vertex AI memberikan output prediksi online berikut ini:
{
"value": [...],
"quantile_values": [...],
"quantile_predictions": [...]
}
-
value
: Jika kumpulan kuantil Anda menyertakan median,value
adalah nilai prediksi di median. Jika tidak,value
adalah nilai prediksi pada kuantil terendah dalam kumpulan. Misalnya, jika kumpulan kuantil Anda adalah[0.1, 0.5, 0.9]
,value
adalah prediksi untuk0.5
kuantil. Jika kumpulan kuantil Anda adalah[0.1, 0.9]
,value
adalah prediksi untuk0.1
kuantil. quantile_values
: Nilai dari kuantil, yang telah ditetapkan selama berlangsungnya pelatihan model.-
quantile_predictions
: Nilai prediksi yang terkait dengan quantile_values.
Misalnya, pertimbangkan model yang kolom targetnya adalah nilai penjualan.
Nilai kuantil ditentukan sebagai [0.1, 0.5, 0.9]
. Vertex AI menampilkan
prediksi kuantil berikut: [4484, 5615, 6853]
. Di sini, kumpulan kuantil mencakup median, sehingga value
adalah prediksi untuk 0.5
kuantil (5615
). Prediksi kuantil dapat diinterpretasikan sebagai berikut:
- P(nilai penjualan < 4484) = 10%
- P(nilai penjualan < 5615) = 50%
- P(nilai penjualan < 6853) = 90%
Output prediksi online untuk model dengan inferensi probabilistik
Jika model Anda menggunakan inferensi probabilistik, kolom value
akan berisi minimizer tujuan pengoptimalan. Misalnya, jika tujuan pengoptimalan Anda adalah minimize-rmse
, kolom value
berisi nilai rata-rata. Jika
minimize-mae
, kolom value
akan berisi nilai
median.
Jika model Anda menggunakan inferensi probabilistik dengan kuantil, Vertex AI akan memberikan prediksi dan nilai kuantil, selain metode untuk meminimalkan tujuan pengoptimalan. Nilai kuantil ditetapkan selama pelatihan model. Prediksi kuantil adalah nilai prediksi yang terkait dengan nilai kuantil.
Mendapatkan penjelasan online
Untuk mendapatkan penjelasan, gunakan fungsi
explain()
,
dan berikan satu atau beberapa instance input. Kode berikut ini menampilkan contoh:
explanations = endpoint.explain(instances=[{...}, {...}])
Format instance input untuk prediksi online dan penjelasan online adalah sama. Untuk mempelajari lebih lanjut, lihat Mendapatkan prediksi online.
Untuk ringkasan konseptual tentang atribusi fitur, lihat Atribusi fitur untuk perkiraan.
Output penjelasan online
Kode berikut ini menunjukkan Anda cara untuk menampilkan hasil penjelasan:
# Import required modules
import json
from google.protobuf import json_format
def explanation_to_dict(explanation):
"""Converts the explanation proto to a human-friendly json."""
return json.loads(json_format.MessageToJson(explanation._pb))
for response in explanations.explanations:
print(explanation_to_dict(response))
Hasil penjelasan memiliki format berikut ini:
{
"attributions": [
{
"baselineOutputValue": 1.4194682836532593,
"instanceOutputValue": 2.152980089187622,
"featureAttributions": {
...
"store_id": [
0.007947325706481934
],
...
"dept_id": [
5.960464477539062e-08
],
"item_id": [
0.1100526452064514
],
"date": [
0.8525647521018982
],
...
"sales": [
0.0
]
},
"outputIndex": [
2
],
"approximationError": 0.01433318599207033,
"outputName": "value"
},
...
]
}
Jumlah elemen attributions
bergantung pada horizon yang digunakan dalam pelatihan model,
dan horizon instance input. Jumlah elemen adalah yang
terkecil dari dua nilai ini.
Kolom featureAttributions
di dalam elemen attributions
berisi satu nilai
untuk setiap kolom di dalam set data input. Vertex AI menghasilkan
penjelasan untuk semua jenis fitur: attribute, yang tersedia saat perkiraan,
dan yang tidak tersedia saat perkiraan. Untuk mempelajari kolom elemen
attributions
lebih lanjut, lihat
Atribusi.
Menghapus endpoint
Gunakan fungsi
undeploy_all()
dan delete()
untuk menghapus endpoint Anda. Kode berikut ini menampilkan contoh:
endpoint.undeploy_all()
endpoint.delete()
Langkah selanjutnya
- Mempelajari penetapan harga untuk prediksi online.