Menggunakan penyesuaian dan evaluasi untuk meningkatkan performa model

Dokumen ini menunjukkan cara membuat model jarak jauh BigQuery ML yang merujuk pada model gemini-2.0-flash-001 Vertex AI. Kemudian, Anda menggunakan penyesuaian terawasi untuk menyesuaikan model dengan data pelatihan baru, diikuti dengan mengevaluasi model dengan fungsi ML.EVALUATE.

Penyesuaian dapat membantu Anda mengatasi skenario saat Anda perlu menyesuaikan model Vertex AI yang dihosting, seperti saat perilaku model yang diharapkan sulit didefinisikan secara ringkas dalam perintah, atau saat perintah tidak menghasilkan hasil yang diharapkan secara cukup konsisten. Penyesuaian yang diawasi juga memengaruhi model dengan cara berikut:

  • Mengarahkan model untuk menampilkan gaya respons tertentu—misalnya, lebih ringkas atau lebih panjang.
  • Mengajarkan perilaku baru kepada model—misalnya, merespons perintah sebagai persona tertentu.
  • Menyebabkan model memperbarui dirinya sendiri dengan informasi baru.

Dalam tutorial ini, tujuannya adalah membuat model menghasilkan teks yang gaya dan kontennya sedekat mungkin dengan konten kebenaran dasar yang diberikan.

Peran yang diperlukan

Untuk menjalankan tutorial ini, Anda memerlukan peran Identity and Access Management (IAM) berikut:

  • Membuat dan menggunakan set data, koneksi, dan model BigQuery: Admin BigQuery (roles/bigquery.admin).
  • Memberikan izin ke akun layanan koneksi: Project IAM Admin (roles/resourcemanager.projectIamAdmin).

Peran yang telah ditetapkan ini berisi izin yang diperlukan untuk melakukan tugas dalam dokumen ini. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

Izin yang diperlukan

  • Buat set data: bigquery.datasets.create
  • Membuat tabel: bigquery.tables.create
  • Membuat, mendelegasikan, dan menggunakan koneksi: bigquery.connections.*
  • Menetapkan koneksi default: bigquery.config.*
  • Tetapkan izin akun layanan: resourcemanager.projects.getIamPolicy dan resourcemanager.projects.setIamPolicy
  • Buat model dan jalankan inferensi:
    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
    • bigquery.models.updateMetadata

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Sebelum memulai

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  2. Make sure that billing is enabled for your Google Cloud project.

  3. Enable the BigQuery, BigQuery Connection, Vertex AI, and Compute Engine APIs.

    Enable the APIs

Biaya

Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:

  • BigQuery: You incur costs for the queries that you run in BigQuery.
  • BigQuery ML: You incur costs for the model that you create and the processing that you perform in BigQuery ML.
  • Vertex AI: You incur costs for calls to and supervised tuning of the gemini-1.0-flash-002 model.

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga.

Pengguna Google Cloud baru mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Untuk informasi selengkapnya, lihat referensi berikut:

Membuat set data

Buat set data BigQuery untuk menyimpan model ML Anda.

Konsol

  1. Di Google Cloud konsol, buka halaman BigQuery.

    Buka halaman BigQuery

  2. Di panel Explorer, klik nama project Anda.

  3. Klik View actions > Create dataset.

    Opsi menu Create dataset.

  4. Di halaman Create dataset, lakukan hal berikut:

    • Untuk Dataset ID, masukkan bqml_tutorial.

    • Untuk Location type, pilih Multi-region, lalu pilih US (multiple regions in United States).

    • Jangan ubah setelan default yang tersisa, lalu klik Create dataset.

bq

Untuk membuat set data baru, gunakan perintah bq mk dengan flag --location. Untuk daftar lengkap kemungkinan parameter, lihat referensi perintah bq mk --dataset.

  1. Buat set data bernama bqml_tutorial dengan lokasi data yang ditetapkan ke US dan deskripsi BigQuery ML tutorial dataset:

    bq --location=US mk -d \
     --description "BigQuery ML tutorial dataset." \
     bqml_tutorial

    Perintah ini menggunakan pintasan -d, bukan flag --dataset. Jika Anda menghapus -d dan --dataset, perintah defaultnya adalah membuat set data.

  2. Pastikan set data telah dibuat:

    bq ls

API

Panggil metode datasets.insert dengan resource set data yang ditentukan.

{
  "datasetReference": {
     "datasetId": "bqml_tutorial"
  }
}

DataFrame BigQuery

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan BigQuery DataFrames di Panduan memulai BigQuery menggunakan BigQuery DataFrames. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi BigQuery DataFrames.

Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan ADC untuk lingkungan pengembangan lokal.

import google.cloud.bigquery

bqclient = google.cloud.bigquery.Client()
bqclient.create_dataset("bqml_tutorial", exists_ok=True)

Buat tabel pengujian

Buat tabel data pelatihan dan evaluasi berdasarkan set data task955_wiki_auto_style_transfer publik dari Hugging Face.

  1. Buka Cloud Shell.

  2. Di Cloud Shell, jalankan perintah berikut untuk membuat tabel data pengujian dan evaluasi:

    python3 -m pip install pandas pyarrow fsspec huggingface_hub
    
    python3 -c "import pandas as pd; df_train = pd.read_parquet('hf://datasets/Lots-of-LoRAs/task955_wiki_auto_style_transfer/data/train-00000-of-00001.parquet').drop('id', axis=1); df_train['output'] = [x[0] for x in df_train['output']]; df_train.to_json('wiki_auto_style_transfer_train.jsonl', orient='records', lines=True);"
    
    python3 -c "import pandas as pd; df_valid = pd.read_parquet('hf://datasets/Lots-of-LoRAs/task955_wiki_auto_style_transfer/data/valid-00000-of-00001.parquet').drop('id', axis=1); df_valid['output'] = [x[0] for x in df_valid['output']]; df_valid.to_json('wiki_auto_style_transfer_valid.jsonl', orient='records', lines=True);"
    
    bq rm -t bqml_tutorial.wiki_auto_style_transfer_train
    
    bq rm -t bqml_tutorial.wiki_auto_style_transfer_valid
    
    bq load --source_format=NEWLINE_DELIMITED_JSON bqml_tutorial.wiki_auto_style_transfer_train wiki_auto_style_transfer_train.jsonl input:STRING,output:STRING
    
    bq load --source_format=NEWLINE_DELIMITED_JSON bqml_tutorial.wiki_auto_style_transfer_valid wiki_auto_style_transfer_valid.jsonl input:STRING,output:STRING
    

Membuat model dasar

Buat model jarak jauh di atas model gemini-1.0-flash-002 Vertex AI.

  1. Di Google Cloud konsol, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, jalankan pernyataan berikut untuk membuat model jarak jauh:

    CREATE OR REPLACE MODEL `bqml_tutorial.gemini_baseline`
    REMOTE WITH CONNECTION DEFAULT
    OPTIONS (ENDPOINT ='gemini-2.0-flash-001');

    Kueri memerlukan waktu beberapa detik untuk diselesaikan, setelah itu model gemini_baseline akan muncul di set data bqml_tutorial di panel Explorer. Karena kueri menggunakan pernyataan CREATE MODEL untuk membuat model, tidak akan ada hasil kueri.

Memeriksa performa model dasar pengukuran

Jalankan fungsi ML.GENERATE_TEXT dengan model jarak jauh untuk melihat performanya pada data evaluasi tanpa penyesuaian apa pun.

  1. Di Google Cloud konsol, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, jalankan pernyataan berikut:

    SELECT ml_generate_text_llm_result, ground_truth
    FROM
      ML.GENERATE_TEXT(
        MODEL `bqml_tutorial.gemini_baseline`,
        (
          SELECT
            input AS prompt, output AS ground_truth
          FROM `bqml_tutorial.wiki_auto_style_transfer_valid`
          LIMIT 10
        ),
        STRUCT(TRUE AS flatten_json_output));

    Jika Anda memeriksa data output dan membandingkan nilai ml_generate_text_llm_result dan ground_truth, Anda akan melihat bahwa meskipun model dasar menghasilkan teks yang secara akurat mencerminkan fakta yang diberikan dalam konten kebenaran faktual, gaya teksnya cukup berbeda.

Mengevaluasi model dasar

Untuk melakukan evaluasi performa model yang lebih mendetail, gunakan fungsi ML.EVALUATE. Fungsi ini menghitung metrik model yang mengukur akurasi dan kualitas teks yang dihasilkan, untuk melihat perbandingan respons model dengan respons yang ideal.

  1. Di Google Cloud konsol, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, jalankan pernyataan berikut:

    SELECT *
    FROM
      ML.EVALUATE(
        MODEL `bqml_tutorial.gemini_baseline`,
        (
          SELECT
            input AS input_text, output AS output_text
          FROM `bqml_tutorial.wiki_auto_style_transfer_valid`
        ),
        STRUCT('text_generation' AS task_type));

Outputnya terlihat mirip dengan yang berikut ini:

   +---------------------+---------------------+-------------------------------------------+--------------------------------------------+
   | bleu4_score         | rouge-l_precision   | rouge-l_recall      | rouge-l_f1_score    | evaluation_status                          |
   +---------------------+---------------------+---------------------+---------------------+--------------------------------------------+
   | 0.23317359667074181 | 0.37809145226740043 | 0.45902937167791508 | 0.40956844061733139 | {                                          |
   |                     |                     |                     |                     |  "num_successful_rows": 176,               |
   |                     |                     |                     |                     |  "num_total_rows": 176                     |
   |                     |                     |                     |                     | }                                          |
   +---------------------+---------------------+ --------------------+---------------------+--------------------------------------------+
   

Anda dapat melihat bahwa performa model dasar tidak buruk, tetapi kesamaan teks yang dihasilkan dengan kebenaran dasar rendah, berdasarkan metrik evaluasi. Hal ini menunjukkan bahwa penyesuaian yang diawasi perlu dilakukan untuk melihat apakah Anda dapat meningkatkan performa model untuk kasus penggunaan ini.

Membuat model yang disesuaikan

Buat model jarak jauh yang sangat mirip dengan model yang Anda buat di Membuat model, tetapi kali ini tentukan klausa AS SELECT untuk memberikan data pelatihan guna menyesuaikan model.

  1. Di Google Cloud konsol, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, jalankan pernyataan berikut untuk membuat model jarak jauh:

    CREATE OR REPLACE MODEL `bqml_tutorial.gemini_tuned`
      REMOTE
        WITH CONNECTION DEFAULT
      OPTIONS (
        endpoint = 'gemini-2.0-flash-001',
        max_iterations = 500,
        data_split_method = 'no_split')
    AS
    SELECT
      input AS prompt, output AS label
    FROM `bqml_tutorial.wiki_auto_style_transfer_train`;

    Kueri memerlukan waktu beberapa menit untuk diselesaikan, setelah itu model gemini_tuned akan muncul di set data bqml_tutorial di panel Explorer. Karena kueri tersebut menggunakan pernyataan CREATE MODEL untuk membuat model, tidak akan ada hasil kueri.

Memeriksa performa model yang di-tuning

Jalankan fungsi ML.GENERATE_TEXT untuk melihat performa model yang disesuaikan pada data evaluasi.

  1. Di Google Cloud konsol, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, jalankan pernyataan berikut:

    SELECT ml_generate_text_llm_result, ground_truth
    FROM
      ML.GENERATE_TEXT(
        MODEL `bqml_tutorial.gemini_tuned`,
        (
          SELECT
            input AS prompt, output AS ground_truth
          FROM `bqml_tutorial.wiki_auto_style_transfer_valid`
          LIMIT 10
        ),
        STRUCT(TRUE AS flatten_json_output));

    Jika Anda memeriksa data output, Anda akan melihat bahwa model yang di-tune menghasilkan teks yang gaya bahasanya jauh lebih mirip dengan konten kebenaran nyata.

Mengevaluasi model yang di-tuning

Gunakan fungsi ML.EVALUATE untuk melihat perbandingan respons model yang telah disesuaikan dengan respons ideal.

  1. Di Google Cloud konsol, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, jalankan pernyataan berikut:

    SELECT *
    FROM
      ML.EVALUATE(
        MODEL `bqml_tutorial.gemini_tuned`,
        (
          SELECT
            input AS prompt, output AS label
          FROM `bqml_tutorial.wiki_auto_style_transfer_valid`
        ),
        STRUCT('text_generation' AS task_type));

Outputnya terlihat mirip dengan yang berikut ini:

   +---------------------+---------------------+-------------------------------------------+--------------------------------------------+
   | bleu4_score         | rouge-l_precision   | rouge-l_recall      | rouge-l_f1_score    | evaluation_status                          |
   +---------------------+---------------------+---------------------+---------------------+--------------------------------------------+
   | 0.416868792119966   | 0.642001000843349   | 0.55910008048151372 | 0.5907226262084847  | {                                          |
   |                     |                     |                     |                     |  "num_successful_rows": 176,               |
   |                     |                     |                     |                     |  "num_total_rows": 176                     |
   |                     |                     |                     |                     | }                                          |
   +---------------------+---------------------+ --------------------+---------------------+--------------------------------------------+
   

Anda dapat melihat bahwa meskipun set data pelatihan hanya menggunakan 1.408 contoh, ada peningkatan performa yang signifikan seperti yang ditunjukkan oleh metrik evaluasi yang lebih tinggi.

Pembersihan

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.