Menjalankan evaluasi

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:

    1. Instal Google Cloud CLI, lalu lakukan inisialisasi dengan menjalankan perintah berikut:

      gcloud init
      
    2. 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:

  1. Di konsol Google Cloud, buka halaman Kuota IAM & Admin.

    Melihat Kuota di Konsol

  2. Di kolom Filter, tentukan Dimensi (ID model) dan Metrik (ID kuota untuk model Gemini): base_model:gemini-1.5-pro dan Metric:aiplatform.googleapis.com/generate_content_requests_per_minute_per_project_per_base_model.

  3. Untuk kuota yang ingin Anda tingkatkan, klik tombol menu more actions.

  4. Di menu drop-down, klik Edit kuota. Panel Perubahan kuota akan terbuka.

  5. Di bagian Edit kuota, masukkan nilai kuota baru.

  6. Klik Submit request.

  7. Permintaan Penambahan Kuota akan dikonfirmasi melalui email dan biasanya memerlukan waktu dua hari kerja untuk diproses.

  8. 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.

Langkah selanjutnya