Anda dapat menggunakan modul Evaluasi AI Generatif dari Vertex AI SDK untuk Python guna mengevaluasi model bahasa generatif dan aplikasi secara terprogram dengan API layanan evaluasi AI Generatif. Halaman ini menunjukkan cara menjalankan evaluasi dengan Vertex AI SDK.
Sebelum memulai
Menginstal Vertex AI SDK
Untuk menginstal modul Evaluasi AI Generik dari Vertex AI SDK untuk Python, jalankan perintah berikut:
!pip install -q google-cloud-aiplatform[evaluation]
Untuk mengetahui informasi selengkapnya, lihat Menginstal Vertex AI SDK untuk Python.
Melakukan autentikasi Vertex AI SDK
Setelah menginstal Vertex AI SDK untuk Python, Anda harus melakukan autentikasi. Topik berikut menjelaskan cara mengautentikasi dengan Vertex AI SDK jika Anda bekerja secara lokal dan jika Anda bekerja di Colaboratory:
Jika Anda mengembangkan secara lokal, siapkan Kredensial Default Aplikasi (ADC) di lingkungan lokal Anda:
Instal Google Cloud CLI, lalu lakukan inisialisasi dengan menjalankan perintah berikut:
gcloud init
Buat kredensial autentikasi lokal untuk Akun Google Anda:
gcloud auth application-default login
Layar login akan ditampilkan. Setelah Anda login, kredensial Anda disimpan dalam file kredensial lokal yang digunakan oleh ADC. Untuk mengetahui informasi selengkapnya tentang cara menggunakan ADC di lingkungan lokal, lihat Lingkungan pengembangan lokal.
Jika Anda bekerja di Colaboratory, jalankan perintah berikut di sel Colaboratory untuk mengautentikasi:
from google.colab import auth auth.authenticate_user()
Perintah ini akan membuka jendela tempat Anda dapat menyelesaikan autentikasi.
Memahami akun layanan
Akun layanan digunakan oleh layanan evaluasi AI Generatif untuk mendapatkan prediksi dari Gemini API di Vertex AI untuk metrik evaluasi berbasis model. Akun layanan ini disediakan secara otomatis pada permintaan pertama ke layanan evaluasi Gen AI.
Nama | Deskripsi | Alamat email | Peran |
---|---|---|---|
Agen Layanan Vertex AI Rapid Eval | Akun layanan yang digunakan untuk mendapatkan prediksi evaluasi berbasis model. | service-PROJECT_NUMBER@gcp-sa-vertex-eval.iam.gserviceaccount.com |
roles/aiplatform.rapidevalServiceAgent |
Izin yang terkait dengan agen layanan evaluasi cepat adalah:
Peran | Izin |
---|---|
Agen Layanan Vertex AI Rapid Eval (roles/aiplatform.rapidevalServiceAgent) | aiplatform.endpoints.predict |
Menjalankan evaluasi
Gunakan class EvalTask
untuk menjalankan evaluasi untuk kasus penggunaan berikut:
Class EvalTask
Class EvalTask
membantu Anda mengevaluasi model dan aplikasi berdasarkan tugas tertentu. Untuk membuat perbandingan yang adil antara model generatif, Anda biasanya perlu mengevaluasi berbagai model dan template perintah berulang kali terhadap set data evaluasi tetap menggunakan metrik tertentu. Anda juga harus mengevaluasi beberapa metrik secara bersamaan dalam satu evaluasi yang dijalankan.
EvalTask
juga terintegrasi dengan Vertex AI Experiments untuk membantu Anda melacak konfigurasi dan hasil untuk setiap operasi evaluasi. Vertex AI Experiments membantu mengelola dan menafsirkan hasil evaluasi, sehingga Anda dapat membuat keputusan yang tepat.
Contoh berikut menunjukkan cara membuat instance class EvalTask
dan menjalankan evaluasi:
from vertexai.evaluation import (
EvalTask,
PairwiseMetric,
PairwiseMetricPromptTemplate,
PointwiseMetric,
PointwiseMetricPromptTemplate,
MetricPromptTemplateExamples,
)
eval_task = EvalTask(
dataset=DATASET,
metrics=[METRIC_1, METRIC_2, METRIC_3],
experiment=EXPERIMENT_NAME,
)
eval_result = eval_task.evaluate(
model=MODEL,
prompt_template=PROMPT_TEMPLATE,
experiment_run=EXPERIMENT_RUN,
)
Menjalankan evaluasi dengan metrik berbasis model
Untuk metrik berbasis model, gunakan class PointwiseMetric
dan PairwiseMetric
untuk menentukan metrik yang disesuaikan dengan kriteria spesifik Anda. Jalankan evaluasi menggunakan opsi berikut:
Menggunakan contoh metrik berbasis model
Anda dapat langsung menggunakan konstanta bawaan Metric Prompt Template Examples
dalam Vertex AI SDK. Atau, ubah dan gabungkan di antarmuka definisi metrik bentuk bebas.
Untuk mengetahui daftar lengkap Contoh Template Perintah Metrik yang mencakup sebagian besar kasus penggunaan utama, lihat Template perintah metrik.
Contoh Vertex AI SDK berikut menunjukkan cara menggunakan class MetricPromptTemplateExamples
untuk menentukan metrik Anda:
# View all the available examples of model-based metrics
MetricPromptTemplateExamples.list_example_metric_names()
# Display the metric prompt template of a specific example metric
print(MetricPromptTemplateExamples.get_prompt_template('fluency'))
# Use the pre-defined model-based metrics directly
eval_task = EvalTask(
dataset=EVAL_DATASET,
metrics=[MetricPromptTemplateExamples.Pointwise.FLUENCY],
)
eval_result = eval_task.evaluate(
model=MODEL,
)
Menggunakan antarmuka template metrik berbasis model
Sesuaikan metrik Anda dengan mengisi kolom seperti Criteria
dan Rating Rubrics
menggunakan class PointwiseMetricPromptTemplate
dan PairwiseMetricPromptTemplate
dalam Vertex AI SDK. Kolom tertentu, seperti Instruction
, ditetapkan nilai default jika Anda tidak memberikan input.
Atau, Anda dapat menentukan input_variables
, yang merupakan daftar kolom input yang digunakan oleh template perintah metrik untuk menghasilkan hasil evaluasi berbasis model. Secara default, kolom response
model disertakan untuk metrik pointwise, dan kolom response
dan baseline_model_response
model kandidat disertakan untuk metrik berpasangan.
Untuk informasi tambahan, lihat bagian "Menyusun struktur template perintah metrik" di Template perintah metrik.
# Define a pointwise metric with two custom criteria
custom_text_quality = PointwiseMetric(
metric="custom_text_quality",
metric_prompt_template=PointwiseMetricPromptTemplate(
criteria={
"fluency": "Sentences flow smoothly and are easy to read, avoiding awkward phrasing or run-on sentences. Ideas and sentences connect logically, using transitions effectively where needed.",
"entertaining": "Short, amusing text that incorporates emojis, exclamations and questions to convey quick and spontaneous communication and diversion.",
},
rating_rubric={
"1": "The response performs well on both criteria.",
"0": "The response is somewhat aligned with both criteria",
"-1": "The response falls short on both criteria",
},
input_variables=["prompt"],
),
)
# Display the serialized metric prompt template
print(custom_text_quality.metric_prompt_template)
# Run evaluation using the custom_text_quality metric
eval_task = EvalTask(
dataset=EVAL_DATASET,
metrics=[custom_text_quality],
)
eval_result = eval_task.evaluate(
model=MODEL,
)
Menggunakan antarmuka SDK bentuk bebas metrik berbasis model
Untuk fleksibilitas yang lebih besar dalam menyesuaikan template perintah metrik, Anda dapat menentukan metrik secara langsung menggunakan antarmuka bentuk bebas, yang menerima input string langsung.
# Define a pointwise multi-turn chat quality metric
pointwise_chat_quality_metric_prompt = """Evaluate the AI's contribution to a meaningful conversation, considering coherence, fluency, groundedness, and conciseness.
Review the chat history for context. Rate the response on a 1-5 scale, with explanations for each criterion and its overall impact.
# Conversation History
{history}
# Current User Prompt
{prompt}
# AI-generated Response
{response}
"""
freeform_multi_turn_chat_quality_metric = PointwiseMetric(
metric="multi_turn_chat_quality_metric",
metric_prompt_template=pointwise_chat_quality_metric_prompt,
)
# Run evaluation using the freeform_multi_turn_chat_quality_metric metric
eval_task = EvalTask(
dataset=EVAL_DATASET,
metrics=[freeform_multi_turn_chat_quality_metric],
)
eval_result = eval_task.evaluate(
model=MODEL,
)
Mengevaluasi model terjemahan
Untuk mengevaluasi model terjemahan, Anda dapat menentukan BLEU, MetricX, atau COMET sebagai metrik evaluasi saat menggunakan Vertex AI SDK.
#Prepare the dataset for evaluation.
sources = [
"Dem Feuer konnte Einhalt geboten werden",
"Schulen und Kindergärten wurden eröffnet.",
]
responses = [
"The fire could be stopped",
"Schools and kindergartens were open",
]
references = [
"They were able to control the fire.",
"Schools and kindergartens opened",
]
eval_dataset = pd.DataFrame({
"source": sources,
"response": responses,
"reference": references,
})
# Set the metrics.
metrics = [
"bleu",
pointwise_metric.Comet(),
pointwise_metric.MetricX(),
]
eval_task = evaluation.EvalTask(
dataset=eval_dataset,
metrics=metrics,
)
eval_result = eval_task.evaluate()
Menjalankan evaluasi dengan metrik berbasis komputasi
Anda dapat menggunakan metrik berbasis komputasi secara mandiri, atau bersama dengan metrik berbasis model.
# Combine computation-based metrics "ROUGE" and "BLEU" with model-based metrics
eval_task = EvalTask(
dataset=EVAL_DATASET,
metrics=["rouge_l_sum", "bleu", custom_text_quality],
)
eval_result = eval_task.evaluate(
model=MODEL,
)
Penyesuaian metrik tambahan
Jika perlu menyesuaikan metrik lebih lanjut, seperti memilih model hakim yang berbeda untuk metrik berbasis model, atau menentukan metrik berbasis komputasi baru, Anda dapat menggunakan class CustomMetric
di Vertex AI SDK. Untuk mengetahui detail selengkapnya, lihat notebook berikut:
Menjalankan evaluasi berbasis model dengan batas kapasitas dan kuota yang ditingkatkan
Satu permintaan evaluasi untuk metrik berbasis model menghasilkan beberapa permintaan pokok ke Gemini API di Vertex AI dan menggunakan kuota gemini-1.5-pro
model hakim. Kuota permintaan model per menit (RPM) dihitung berdasarkan per project, yang berarti bahwa permintaan ke model hakim gemini-1.5-pro
dan permintaan ke layanan evaluasi AI Generatif untuk metrik berbasis model diperhitungkan dalam kuota RPM model hakim project di region tertentu untuk gemini-1.5-pro
.
Anda harus meningkatkan kuota RPM model hakim dan menetapkan batas kapasitas layanan evaluasi evaluation_service_qps
yang lebih tinggi dalam kasus penggunaan berikut:
Peningkatan volume data: Jika memproses data dalam jumlah yang jauh lebih besar menggunakan metrik berbasis model, Anda mungkin akan mencapai kuota RPM default. Dengan meningkatkan kuota, Anda dapat menangani volume yang lebih besar tanpa penurunan performa atau gangguan.
Evaluasi yang lebih cepat: Jika aplikasi Anda memerlukan waktu penyelesaian yang lebih cepat untuk evaluasi, Anda mungkin memerlukan kuota RPM yang lebih tinggi. Hal ini terutama penting untuk aplikasi yang sensitif terhadap waktu atau aplikasi dengan interaksi real-time yang penundaan evaluasinya dapat memengaruhi pengalaman pengguna.
Tugas evaluasi yang kompleks: Kuota RPM yang lebih tinggi memastikan Anda memiliki kapasitas yang cukup untuk menangani evaluasi yang membutuhkan banyak resource untuk tugas yang kompleks atau teks dalam jumlah besar.
Konkurensi pengguna yang tinggi: Jika Anda mengantisipasi sejumlah besar pengguna yang secara bersamaan meminta evaluasi berbasis model dan inferensi model dalam project Anda, batas RPM model yang lebih tinggi sangat penting untuk mencegah bottleneck dan mempertahankan responsivitas.
Untuk meningkatkan kuota model dan menggunakan SDK layanan evaluasi AI Generatif dengan batas kapasitas yang ditingkatkan, lakukan tindakan berikut:
Di konsol Google Cloud, buka halaman Kuota IAM & Admin.
Di kolom Filter, tentukan Dimensi (ID model) dan Metrik (ID kuota untuk model Gemini):
base_model:gemini-1.5-pro
danMetric:aiplatform.googleapis.com/generate_content_requests_per_minute_per_project_per_base_model
.Untuk kuota yang ingin Anda tingkatkan, klik tombol
menu more actions.Di menu drop-down, klik Edit kuota. Panel Perubahan kuota akan terbuka.
Di bagian Edit kuota, masukkan nilai kuota baru.
Klik Submit request.
Permintaan Penambahan Kuota akan dikonfirmasi melalui email dan biasanya memerlukan waktu dua hari kerja untuk diproses.
Setelah Permintaan Penambahan Kuota disetujui melalui email, Anda dapat menetapkan parameter
evaluation_service_qps
sebagai berikut:
from vertexai.evaluation import EvalTask
# GEMINI_RPM is the requests per minute (RPM) quota for gemini-1.5-pro in your region
# Evaluation Service QPS limit is equal to (gemini-1.5-pro RPM / 60 sec / default number of samples)
CUSTOM_EVAL_SERVICE_QPS_LIMIT = GEMINI_RPM / 60 / 4
eval_task = EvalTask(
dataset=DATASET,
metrics=[METRIC_1, METRIC_2, METRIC_3],
)
eval_result = eval_task.evaluate(
evaluation_service_qps=CUSTOM_EVAL_SERVICE_QPS_LIMIT,
# Specify a retry_timeout limit for a more responsive evaluation run
# the default value is 600 (in seconds, or 10 minutes)
retry_timeout=RETRY_TIMEOUT,
)
Untuk mengetahui informasi selengkapnya tentang kuota dan batas, lihat Kuota layanan evaluasi Gen AI, dan API layanan evaluasi Gen AI.