Komponen evaluasi model menggunakan kebenaran nyata dan hasil prediksi batch sebagai input, kemudian membuat metrik evaluasi. Data kebenaran nyata adalah data yang "diberi label dengan benar" seperti yang ditentukan oleh manusia, dan biasanya disediakan sebagai kolom target dalam set data pengujian yang Anda gunakan untuk melatih model. Untuk mengetahui informasi selengkapnya, lihat Evaluasi model di Vertex AI.
Vertex AI menyediakan komponen evaluasi model berikut:
Dukungan jenis model
Tabel berikut menunjukkan jenis model yang didukung untuk setiap komponen evaluasi model:
Komponen evaluasi model | Jenis model yang didukung |
---|---|
ModelEvaluationClassificationOp |
|
ModelEvaluationRegressionOp |
|
ModelEvaluationForecastingOp |
|
Menghapus kolom target
Untuk beberapa jenis model, komponen BatchPredictionJob
mengharuskan Anda mengecualikan kolom target (kebenaran nyata) dari set data Anda.
Konfigurasi dan format slice untuk set data tabulasi Anda
Slice adalah subset data tabulasi dengan karakteristik tertentu. Slice metrik menawarkan metrik evaluasi yang lebih terperinci untuk model klasifikasi pelatihan kustom dan tabel AutoML.
Misalnya, pertimbangkan set data adopsi hewan peliharaan tempat model dilatih untuk memprediksi apakah hewan peliharaan akan diadopsi dalam waktu seminggu. Meskipun melihat metrik untuk seluruh set data bisa bermanfaat, Anda mungkin tertarik dengan metrik yang terkait dengan spesies dan usia hewan peliharaan tersebut. Dengan kata lain, Anda tertarik pada subset set data ini:
Fitur | Nilai |
---|---|
age (in years) |
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 |
species |
"dog", "cat", "rabbit" |
Analisis yang mendetail ini dapat membantu mengidentifikasi lokasi yang paling rentan mengalami error, atau memastikan model memiliki performa yang baik pada subset data yang penting.
Mengonfigurasi slice
Untuk mengonfigurasi slice, buat file JSON dengan konfigurasi berikut:
{ "FEATURE": { "KIND": { CONFIG } } }
Dengan keterangan:
FEATURE adalah fitur yang ingin Anda buat slice-nya. Contoh,
age
.KIND adalah salah satu dari berikut ini:
value
value
membuat satu slice pada satu nilai fitur. Tentukan CONFIG sebagai pasangan nilai kunci dengan kuncinya adalahfloat_value
ataustring_value
. Sebagai contoh,"float_value": 1.0
Contoh konfigurasi berikut akan membuat satu slice yang berisi data dengan
age
dari1
:{ "age": { "value": { "float_value": 1.0 } } }
range
range
membuat satu slice yang menyertakan data dalam rentang tertentu. Tentukan CONFIG sebagai dua key-value pair dengan kuncinya adalahlow
danhigh
.Contoh konfigurasi berikut membuat satu slice yang berisi data dengan
age
yang merupakan nilai antara1
dan3
:{ "age": { "range": { "low": 1, "high": 3 } } }
all_values
all_values
membuat slice terpisah pada setiap kemungkinan label untuk fitur. Tentukan CONFIG sebagai"value": true
.Contoh konfigurasi berikut membuat tiga slice—masing-masing untuk
"dog"
,"cat"
, dan"rabbit"
:{ "species": { "all_values": { "value": true } } }
Anda juga dapat menggunakan beberapa fitur untuk membuat satu atau beberapa slice.
Konfigurasi berikut akan membuat satu slice yang berisi data dengan
age
berada di antara 1
dan 3
, sedangkan species
-nya adalah "dog"
:
{ "age": { "range": { "low": 1, "high": 3 } }, "species": { "value": { "string_value": "dog" } } }
Konfigurasi berikut akan membuat beberapa slice—satu untuk setiap spesies
unik dalam set data, dengan age
adalah 1
.
{ "species": { "all_values": { "value": true } }, "age": { "value": { "float_value": 1.0 } } }
Slice yang dihasilkan berisi data berikut dari contoh set data:
Slice 1:
age:1
danspecies:"dog"
Slice 2:
age:1
danspecies:"cat"
Slice 3:
age:1
danspecies:"rabbit"
Slice format
Untuk memformat slice pada komponen ModelEvaluationClassificationOp
, lakukan
hal berikut:
Buat
slicing_spec
. Contoh:from google.cloud.aiplatform_v1.types.ModelEvaluationSlice.Slice import SliceSpec from google.cloud.aiplatform_v1.types.ModelEvaluationSlice.Slice.SliceSpec import SliceConfig slicing_spec = SliceSpec(configs={ 'feature_a': SliceConfig(SliceSpec.Value(string_value='label_a') ) })
Buat daftar untuk menyimpan konfigurasi slice. Contoh:
slicing_specs = []
Format setiap
slicing_spec
sebagai JSON atau kamus. Contoh:slicing_spec_json = json_format.MessageToJson(slicing_spec) slicing_spec_dict = json_format.MessageToDict(slicing_spec)
Gabungkan setiap
slicing_spec
ke dalam daftar. Contoh:slicing_specs.append(slicing_spec_json)
Teruskan
slicing_specs
sebagai parameter ke komponenModelEvaluationClassificationOp
. Contoh:ModelEvaluationClassificationOp(slicing_specs=slicing_specs)
Slice konfigurasi metrik keseimbangan format
Agar dapat mengevaluasi model Anda untuk keseimbangan, gunakan komponen berikut:
DetectDataBiasOp
: menampilkan metrik bias data untuk slice yang Anda teruskan ke komponen.DetectModelBiasOp
: menampilkan metrik bias model untuk slice yang Anda teruskan ke komponen.
Untuk memformat slice pada komponen DetectDataBiasOp
dan DetectModelBiasOp
, lakukan hal berikut:
Buat
BiasConfig
. Contoh:from google.cloud.aiplatform_v1.types.ModelEvaluation import BiasConfig from google.cloud.aiplatform_v1.types.ModelEvaluationSlice.Slice import SliceSpec from google.cloud.aiplatform_v1.types.ModelEvaluationSlice.Slice.SliceSpec import SliceConfig bias_config = BiasConfig(bias_slices=SliceSpec(configs={ 'feature_a': SliceConfig(SliceSpec.Value(string_value='label_a') ) }))
Buat daftar untuk menyimpan konfigurasi bias. Contoh:
bias_configs = []
Format setiap
bias_config
sebagai JSON atau kamus. Contoh:bias_config_json = json_format.MessageToJson(bias_config) bias_config_dict = json_format.MessageToDict(bias_config)
Gabungkan setiap
bias_config
ke dalam daftar. Contoh:bias_configs.append(bias_config_json)
Teruskan
bias_configs
sebagai parameter ke komponenDetectDataBiasOp
atauDetectModelBiasOp
. Contoh:DetectDataBiasOp(bias_configs=bias_configs) DetectModelBiasOp(bias_configs=bias_configs)
Parameter input yang diperlukan
Parameter input yang diperlukan untuk komponen evaluasi model bervariasi berdasarkan jenis model yang Anda evaluasi.
Model AutoML
Saat melatih model AutoML, Vertex AI menggunakan skema default. Beberapa parameter input untuk komponen evaluasi model hanya diperlukan jika Anda menggunakan skema non-default untuk melatih model.
Anda dapat melihat dan mendownload file skema dari lokasi Cloud Storage
berikut:
gs://google-cloud-aiplatform/schema/modelevaluation/
Tab berikut menunjukkan contoh file output prediksi batch dan parameter input yang diperlukan untuk setiap jenis model:
Berbentuk tabel
Klasifikasi
Skema default mencakup kolom berikut:
scores
: arrayclasses
: array
Berikut adalah contoh file output prediksi batch dengan kolom target male
:
{ "instance": { "male": "1", "age": "49", "heartRate": "67", "education": "medium_high", "totChol": "282", "diaBP": "79", "BPMeds": "0", "currentSmoker": "current_high", "cigsPerDay": "25", "prevalentStroke": "stroke_0", "prevalentHyp": "hyp_0", "TenYearCHD": "FALSE", "diabetes": "0", "sysBP": "134", "BMI": "26.87", "glucose": "78" }, "prediction": { "scores": [0.3666940927505493, 0.6333059072494507], "classes": ["0", "1"] } }
Tabel ini menjelaskan parameter yang diperlukan untuk
komponen ModelEvaluationClassificationOp
dengan
model tabulasi:
Parameter komponen evaluasi | Diperlukan |
---|---|
target_field_name |
Ya |
prediction_label_column |
Tidak diperlukan untuk skema default. Gunakan prediction.classes untuk skema non-default. |
prediction_score_column |
Tidak diperlukan untuk skema default. Gunakan prediction.scores untuk skema non-default. |
evaluation_class_labels |
Tidak diperlukan untuk skema default. Gunakan ["0","1"] untuk skema non-default. |
Regresi
Skema default mencakup kolom berikut:
value
: floatlower_bound
: floatupper_bound
: float
Berikut adalah contoh file output prediksi batch dengan kolom target age
:
{ "instance": { "BPMeds": "0", "diabetes": "0", "diaBP": "65", "cigsPerDay": "45", "prevalentHyp": "hyp_0", "age": "46", "male": "1", "sysBP": "112.5", "glucose": "78", "BMI": "27.48", "TenYearCHD": "FALSE", "totChol": "209", "education": "high", "prevalentStroke": "stroke_0", "heartRate": "75", "currentSmoker": "current_high" }, "prediction": { "value": 44.96103286743164, "lower_bound": 44.61349868774414, "upper_bound": 44.590206146240234 } }
Tabel ini menjelaskan parameter yang diperlukan untuk
komponen ModelEvaluationRegressionOp
dengan
model tabulasi:
Parameter komponen evaluasi | Diperlukan |
---|---|
target_field_name |
Ya |
prediction_label_column |
Tidak diperlukan untuk model regresi. |
prediction_score_column |
Tidak diperlukan untuk skema default. Gunakan prediction.value untuk skema non-default. |
evaluation_class_labels |
Tidak diperlukan untuk model regresi. |
Prakiraan
Untuk model perkiraan tabulasi, komponen BatchPredictionJob
mengharuskan Anda mengecualikan kolom target (kebenaran nyata)
dari set data Anda.
Skema default mencakup kolom berikut:
id
: stringdisplayNames
: stringtype
: enumtimeSegmentStart
: stringtimeSegmentEnd
: stringconfidence
: float
Berikut adalah contoh file CSV dengan
sale_dollars
sebagai kolom target:
date,store_name,city,zip_code,county,sale_dollars 2020-03-17,Thriftway,,,,774.08999999999992 2020-03-10,Thriftway,,,,1160.67 2020-03-03,Thriftway,,,,2247.24 2020-06-08,New Star / Fort Dodge,,,,753.98 2020-06-01,New Star / Fort Dodge,,,,967.73 2020-01-10,Casey's General Store #1280 / Fort Dodge,,,,1040.92 2020-10-30,KUM & GO #76 / ADAIR,Adair,50002,ADAIR,1387.02
Komponen TargetFieldDataRemoverOp
menghapus kolom target sebelum mengirim file ke komponen BatchPredictionJob
:
date,store_name,city,zip_code,county 2020-03-17,Thriftway,nan,nan,nan 2020-03-10,Thriftway,nan,nan,nan 2020-03-03,Thriftway,nan,nan,nan 2020-06-08,New Star / Fort Dodge,nan,nan,nan 2020-06-01,New Star / Fort Dodge,nan,nan,nan 2020-01-10,Casey's General Store #1280 / Fort Dodge,nan,nan,nan 2020-10-30,KUM & GO #76 / ADAIR,Adair,50002.0,ADAIR
Berikut adalah contoh file output prediksi batch tanpa kolom target sale_dollars
:
{ "instance": { "content": "gs://kbn-us-central1-test/datasets/text/happy_11556.txt", "mimeType":"text/plain" }, "prediction": { "ids": ["7903916851837534208","3292230833410146304","986387824196452352","2139309328803299328","5598073842623840256","6750995347230687232","4559431178561519616"], "displayNames": ["affection","bonding","achievement","exercise","nature","enjoy_the_moment","leisure"], "confidences": [0.99483216,0.005162797,4.1117933E-6,3.9997E-7,2.4624453E-7,1.9969502E-7,1.16997434E-7] } }
Tabel ini menjelaskan parameter yang diperlukan untuk
komponen ModelEvaluationForecastingOp
dengan
model tabulasi:
Parameter komponen evaluasi | Diperlukan |
---|---|
target_field_name |
Ya |
prediction_label_column |
Tidak diperlukan untuk model perkiraan. |
prediction_score_column |
Tidak diperlukan untuk skema default. Gunakan "prediction.value" untuk skema non-default. |
evaluation_class_labels |
Tidak diperlukan untuk model perkiraan. |
ground_truth_gcs_source |
Ya: link Cloud Storage ke set data asli dengan kolom target. |
ground_truth_format |
Ya: format set data asli. Misalnya,
"jsonl" , "csv" , atau "bigquery" . |
Teks
Klasifikasi
Untuk model klasifikasi teks, komponen BatchPredictionJob
mengharuskan Anda mengecualikan kolom target (kebenaran nyata)
dari set data Anda. Anda dapat menggunakan komponen TargetFieldDataRemoverOp
untuk alur kerja yang lebih efisien.
Skema default mencakup kolom berikut:
ids
: array stringdisplayName
: array stringconfidence
: array float
Berikut adalah contoh set data dengan
label
sebagai kolom target:
{ "content": "gs://kbn-us-central1-test/datasets/text/happy_0.txt", "mimeType": "text/plain", "label": "affection" }
Komponen TargetFieldDataRemoverOp
menghapus kolom target sebelum mengirim file ke komponen BatchPredictionJob
:
{ "content": "gs://kbn-us-central1-test/datasets/text/happy_0.txt", "mimeType": "text/plain" }
Berikut adalah contoh file output prediksi batch tanpa kolom target label
:
{ "instance": { "content": "gs://kbn-us-central1-test/datasets/text/happy_11556.txt", "mimeType":"text/plain" }, "prediction": { "ids": ["7903916851837534208","3292230833410146304","986387824196452352","2139309328803299328","5598073842623840256","6750995347230687232","4559431178561519616"], "displayNames": ["affection","bonding","achievement","exercise","nature","enjoy_the_moment","leisure"], "confidences": [0.99483216,0.005162797,4.1117933E-6,3.9997E-7,2.4624453E-7,1.9969502E-7,1.16997434E-7] } }
Tabel ini menjelaskan parameter yang diperlukan untuk
komponen ModelEvaluationClassificationOp
dengan
model teks:
Parameter komponen evaluasi | Diperlukan |
---|---|
target_field_name |
Ya |
prediction_label_column |
Tidak diperlukan untuk skema default. Gunakan "prediction.displayNames" untuk skema non-default. |
prediction_score_column |
Tidak diperlukan untuk skema default. Gunakan "prediction.confidences" untuk skema non-default. |
evaluation_class_labels |
Tidak diperlukan untuk skema default, atau saat
prediction_label_column disediakan. |
ground_truth_gcs_source |
Ya: link Cloud Storage ke set data asli dengan kolom target. |
ground_truth_format |
Ya: format set data asli. Misalnya,
"jsonl" , "csv" , atau "bigquery" . |
Video
Klasifikasi
Untuk model klasifikasi video, komponen BatchPredictionJob
mengharuskan Anda mengecualikan kolom target (kebenaran nyata)
dari set data Anda. Anda dapat menggunakan komponen TargetFieldDataRemoverOp
untuk alur kerja yang lebih efisien.
Skema default mencakup kolom berikut:
id
: stringdisplayName
: stringtype
: enumtimeSegmentStart
: stringtimeSegmentEnd
: stringconfidence
: float
Berikut adalah contoh set data dengan
ground_truth
sebagai kolom target:
{ "content": "gs://automl-video-demo-data/hmdb51/Aerial_Cartwheel_Tutorial_By_Jujimufu_cartwheel_f_nm_np1_ri_med_0.avi", "ground_truth": "cartwheel", "timeSegmentStart": "0.0", "timeSegmentEnd": "inf" }
Komponen TargetFieldDataRemoverOp
menghapus kolom target sebelum mengirim file ke komponen BatchPredictionJob
:
{ "content": "gs://automl-video-demo-data/hmdb51/Aerial_Cartwheel_Tutorial_By_Jujimufu_cartwheel_f_nm_np1_ri_med_0.avi", "timeSegmentStart": "0.0", "timeSegmentEnd": "inf" }
Berikut adalah contoh file output prediksi batch tanpa kolom target label
:
{ "instance": { "content": "gs://automl-video-demo-data/hmdb51/20_Marine_Corps_Pull_Ups___JimmyDShea_pullup_f_cm_np1_ba_bad_3.avi" "mimeType": "video/avi", "timeSegmentStart": "0.0", "timeSegmentEnd": "inf" }, "prediction": [ { "id":"5015420640832782336", "displayName":"pullup", "type":"segment-classification", "timeSegmentStart":"0s", "timeSegmentEnd":"2.600s", "confidence":0.98152995 }, { "id":"2709577631619088384", "displayName":"cartwheel", "type":"segment-classification", "timeSegmentStart":"0s", "timeSegmentEnd":"2.600s", "confidence":0.0047166348 }, { "id":"403734622405394432", "displayName":"golf", "type":"segment-classification", "timeSegmentStart":"0s", "timeSegmentEnd":"2.600s", "confidence":0.0046260506 }, { "id":"1556656127012241408", "displayName":"ride_horse", "type":"segment-classification", "timeSegmentStart":"0s", "timeSegmentEnd":"2.600s", "confidence":0.004590442 }, { "id":"7321263650046476288", "displayName":"kick_ball", "type":"segment-classification", "timeSegmentStart":"0s", "timeSegmentEnd":"2.600s", "confidence":0.004536863 } ] }
Tabel ini menjelaskan parameter yang diperlukan untuk
komponen ModelEvaluationClassificationOp
dengan
model video:
Parameter komponen evaluasi | Diperlukan |
---|---|
target_field_name |
Ya |
prediction_label_column |
Tidak diperlukan untuk skema default. Gunakan "prediction.displayName" untuk skema non-default. |
prediction_score_column |
Tidak diperlukan untuk skema default. Gunakan "prediction.confidence" untuk skema non-default. |
evaluation_class_labels |
Tidak diperlukan jika skema default digunakan, atau saat
prediction_label_column disediakan. |
ground_truth_gcs_source |
Ya: link Cloud Storage ke set data asli dengan kolom target. |
ground_truth_format |
Ya: format set data asli. Misalnya,
"jsonl" , "csv" , atau "bigquery" . |
Model yang dilatih khusus
Untuk model yang dilatih khusus, komponen BatchPredictionJob
mengharuskan Anda mengecualikan kolom target (kebenaran nyata) dari set data Anda. Anda
dapat menggunakan komponen TargetFieldDataRemoverOp
untuk alur kerja
yang lebih efisien.
Contoh berikut menunjukkan file output prediksi batch dan parameter input yang diperlukan untuk model klasifikasi tabulasi yang dilatih khusus:
Berbentuk tabel
Klasifikasi
Skema umumnya mencakup kolom berikut:
instance
: array data input dalam urutan yang sama seperti kolom set data pelatihan model.prediction
: array data input dalam urutan yang sama seperti kolom set data pelatihan model.
Berikut adalah contoh set data CSV dengan
species
sebagai kolom target:
petal_length,petal_width,sepal_length,sepal_width,species 6.4,2.8,5.6,2.2,2 5.0,2.3,3.3,1.0,1 4.9,2.5,4.5,1.7,2 4.9,3.1,1.5,0.1,0
Komponen TargetFieldDataRemoverOp
menghapus kolom target sebelum mengirim file ke komponen prediksi batch:
petal_length,petal_width,sepal_length,sepal_width 6.4,2.8,5.6,2.2 5.0,2.3,3.3,1.0 4.9,2.5,4.5,1.7 4.9,3.1,1.5,0.1
Berikut adalah contoh file output prediksi batch tanpa kolom target species
:
{ "instance": [5.6, 2.5, 3.9, 1.1], "prediction": [0.0005816521588712931, 0.9989032745361328, 0.0005150380893610418] } { "instance": [5.0, 3.6, 1.4, 0.2], "prediction": [0.999255359172821, 0.000527293945197016, 0.00021737271163146943] } { "instance": [6.0, 2.9, 4.5, 1.5], "prediction": [0.00025063654175028205, 0.9994204044342041, 0.00032893591560423374] }
Tabel ini menjelaskan parameter yang diperlukan untuk
komponen ModelEvaluationClassificationOp
dengan
model video:
Parameter komponen evaluasi | Diperlukan |
---|---|
target_field_name |
Ya |
prediction_label_column |
Harus kosong; kolom ini tidak ada di model yang dilatih khusus. |
prediction_score_column |
Tidak diperlukan untuk skema default; disetel otomatis untuk format JSONL , CSV , atau BIGQUERY . |
evaluation_class_labels |
Ya. Harus sama panjang dengan array prediksi output. |
ground_truth_gcs_source |
Ya: link Cloud Storage ke set data asli dengan kolom target. |
ground_truth_format |
Ya: format set data asli. Misalnya,
"jsonl" , "csv" , atau "bigquery" . |
Evaluasi model tanpa prediksi batch yang dihasilkan Vertex AI
Anda dapat menggunakan komponen pipeline evaluasi model dengan prediksi batch yang tidak Anda hasilkan di Vertex AI. Namun, perhatikan bahwa input untuk komponen pipeline evaluasi model harus berupa direktori prediksi batch yang berisi file yang cocok dengan imbuhan berikut:
prediction.results-
explanation.results-
predictions_
Referensi API
Untuk referensi komponen, lihat halaman referensi Google Cloud Pipeline Components SDK untuk komponen Evaluasi model.
Untuk mengetahui contoh cara menggunakan komponen Evaluasi Model, lihat notebook yang tercantum dalam artikel Membuat evaluasi.
Histori versi dan catatan rilis
Untuk mempelajari lebih lanjut histori versi dan perubahan pada Google Cloud Pipeline Components SDK, lihat Catatan Rilis Google Cloud Pipeline Components SDK.