Menyesuaikan model menggunakan data Anda

Dokumen ini menunjukkan cara membuat model jarak jauh BigQuery ML yang merujuk pada model Vertex AI, lalu mengonfigurasi model untuk melakukan penyesuaian yang diawasi. Model Vertex AI harus berupa salah satu dari berikut ini:

  • gemini-2.0-flash-001
  • gemini-2.0-flash-lite-001
  • gemini-1.5-pro-002
  • gemini-1.5-flash-002

Setelah membuat model jarak jauh, Anda menggunakan fungsi ML.EVALUATE untuk mengevaluasi model dan mengonfirmasi bahwa performa model sesuai dengan kasus penggunaan Anda. Kemudian, Anda dapat menggunakan model tersebut bersama dengan fungsi ML.GENERATE_TEXT untuk menganalisis teks dalam tabel BigQuery.

Untuk mengetahui informasi selengkapnya, lihat Penyesuaian yang diawasi model Vertex AI Gemini API.

Peran yang diperlukan

Untuk membuat dan mengevaluasi model yang di-tuning, Anda memerlukan peran Identity and Access Management (IAM) berikut:

  • Buat dan gunakan set data, tabel, dan model BigQuery: Editor Data BigQuery (roles/bigquery.dataEditor) di project Anda.
  • Membuat, mendelegasikan, dan menggunakan koneksi BigQuery: BigQuery Connections Admin (roles/bigquery.connectionsAdmin) di project Anda.

    Jika Anda belum mengonfigurasi koneksi default, Anda dapat membuat dan menyetelnya sebagai bagian dari menjalankan pernyataan CREATE MODEL. Untuk melakukannya, Anda harus memiliki peran Admin BigQuery (roles/bigquery.admin) di project Anda. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi koneksi default.

  • Memberikan izin ke akun layanan koneksi: Admin IAM Project (roles/resourcemanager.projectIamAdmin) di project yang berisi endpoint Vertex AI. Ini adalah project saat ini untuk model jarak jauh yang Anda buat dengan menentukan nama model sebagai endpoint. Ini adalah project yang diidentifikasi dalam URL untuk model jarak jauh yang Anda buat dengan menentukan URL sebagai endpoint.

  • Membuat tugas BigQuery: Pengguna Tugas BigQuery (roles/bigquery.jobUser) di project Anda.

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, mendelegasikan, dan menggunakan koneksi: bigquery.connections.*
  • 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

Membuat set data

Buat set data BigQuery untuk memuat resource 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.

  4. Di halaman Create dataset, lakukan hal berikut:

    • Untuk ID Set Data, ketik nama untuk set data.

    • Untuk Location type, pilih lokasi untuk set data.

    • Klik Create dataset.

bq

  1. Untuk membuat set data baru, gunakan perintah bq mk dengan flag --location:

    bq --location=LOCATION mk -d DATASET_ID

    Ganti kode berikut:

    • LOCATION: lokasi set data.
    • DATASET_ID: ID set data yang Anda buat.
  2. Pastikan set data telah dibuat:

    bq ls

Membuat koneksi

Anda dapat melewati langkah ini jika telah mengonfigurasi koneksi default, atau memiliki peran Admin BigQuery.

Buat koneksi resource Cloud untuk digunakan model jarak jauh, lalu dapatkan akun layanan koneksi. Buat koneksi di lokasi yang sama dengan set data yang Anda buat di langkah sebelumnya.

Pilih salah satu opsi berikut:

Konsol

  1. Buka halaman BigQuery.

    Buka BigQuery

  2. Di panel Penjelajah, klik Tambahkan data:

    Elemen UI Tambahkan data.

    Dialog Tambahkan data akan terbuka.

  3. Di panel Filter Menurut, di bagian Jenis Sumber Data, pilih Aplikasi Bisnis.

    Atau, di kolom Telusuri sumber data, Anda dapat memasukkan Vertex AI.

  4. Di bagian Sumber data unggulan, klik Vertex AI.

  5. Klik kartu solusi Vertex AI Models: BigQuery Federation.

  6. Dalam daftar Connection type, pilih Vertex AI remote models, remote functions and BigLake (Cloud Resource).

  7. Di kolom Connection ID, masukkan nama untuk koneksi Anda.

  8. Klik Create connection.

  9. Klik Go to connection.

  10. Di panel Connection info, salin ID akun layanan untuk digunakan di langkah berikutnya.

bq

  1. Di lingkungan command line, buat koneksi:

    bq mk --connection --location=REGION --project_id=PROJECT_ID \
        --connection_type=CLOUD_RESOURCE CONNECTION_ID

    Parameter --project_id akan mengganti project default.

    Ganti kode berikut:

    • REGION: region koneksi Anda
    • PROJECT_ID: Google Cloud project ID Anda
    • CONNECTION_ID: ID untuk koneksi Anda

    Saat Anda membuat resource koneksi, BigQuery akan membuat akun layanan sistem unik dan mengaitkannya dengan koneksi.

    Pemecahan masalah: Jika Anda mendapatkan error koneksi berikut, update Google Cloud SDK:

    Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
    
  2. Ambil dan salin ID akun layanan untuk digunakan pada langkah berikutnya:

    bq show --connection PROJECT_ID.REGION.CONNECTION_ID

    Outputnya mirip dengan hal berikut ini:

    name                          properties
    1234.REGION.CONNECTION_ID     {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
    

Terraform

Gunakan resource google_bigquery_connection.

Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

Contoh berikut membuat koneksi resource Cloud bernama my_cloud_resource_connection di region US:


# This queries the provider for project information.
data "google_project" "default" {}

# This creates a cloud resource connection in the US region named my_cloud_resource_connection.
# Note: The cloud resource nested object has only one output field - serviceAccountId.
resource "google_bigquery_connection" "default" {
  connection_id = "my_cloud_resource_connection"
  project       = data.google_project.default.project_id
  location      = "US"
  cloud_resource {}
}

Untuk menerapkan konfigurasi Terraform di project Google Cloud , selesaikan langkah-langkah di bagian berikut.

Menyiapkan Cloud Shell

  1. Luncurkan Cloud Shell.
  2. Tetapkan project default Google Cloud tempat Anda ingin menerapkan konfigurasi Terraform.

    Anda hanya perlu menjalankan perintah ini sekali per project, dan dapat dijalankan di direktori mana pun.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Variabel lingkungan akan diganti jika Anda menetapkan nilai eksplisit dalam file konfigurasi Terraform.

Menyiapkan direktori

Setiap file konfigurasi Terraform harus memiliki direktorinya sendiri (juga disebut modul root).

  1. Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki ekstensi .tf—misalnya main.tf. Dalam tutorial ini, file ini disebut sebagai main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Jika mengikuti tutorial, Anda dapat menyalin kode contoh di setiap bagian atau langkah.

    Salin kode contoh ke dalam main.tf yang baru dibuat.

    Atau, salin kode dari GitHub. Tindakan ini direkomendasikan jika cuplikan Terraform adalah bagian dari solusi menyeluruh.

  3. Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
  4. Simpan perubahan Anda.
  5. Lakukan inisialisasi Terraform. Anda hanya perlu melakukan ini sekali per direktori.
    terraform init

    Secara opsional, untuk menggunakan versi penyedia Google terbaru, sertakan opsi -upgrade:

    terraform init -upgrade

Menerapkan perubahan

  1. Tinjau konfigurasi dan pastikan resource yang akan dibuat atau diupdate oleh Terraform sesuai yang Anda inginkan:
    terraform plan

    Koreksi konfigurasi jika diperlukan.

  2. Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan yes pada prompt:
    terraform apply

    Tunggu hingga Terraform menampilkan pesan "Apply complete!".

  3. Buka Google Cloud project Anda untuk melihat hasilnya. Di konsol Google Cloud , buka resource Anda di UI untuk memastikan bahwa Terraform telah membuat atau mengupdatenya.

Memberikan akses ke akun layanan koneksi

Berikan peran Vertex AI Service Agent ke akun layanan koneksi.

Jika Anda berencana menentukan endpoint sebagai URL saat membuat model jarak jauh, misalnya endpoint = 'https://us-central1-aiplatform.googleapis.com/v1/projects/myproject/locations/us-central1/publishers/google/models/gemini-2.0-flash', berikan peran ini di project yang sama dengan yang Anda tentukan di URL.

Jika Anda berencana menentukan endpoint menggunakan nama model saat membuat model jarak jauh, misalnya endpoint = 'gemini-2.0-flash', berikan peran ini di project yang sama tempat Anda berencana membuat model jarak jauh.

Pemberian peran dalam project lain akan menyebabkan error bqcx-1234567890-wxyz@gcp-sa-bigquery-condel.iam.gserviceaccount.com does not have the permission to access resource.

Untuk memberikan peran, ikuti langkah-langkah berikut:

Konsol

  1. Buka halaman IAM & Admin.

    Buka IAM & Admin

  2. Klik Berikan Akses.

  3. Untuk New principals, masukkan ID akun layanan yang Anda salin sebelumnya.

  4. Klik Pilih peran.

  5. Di Filter, ketik Vertex AI Service Agent, lalu pilih peran tersebut.

  6. Klik Simpan.

gcloud

Gunakan perintah gcloud projects add-iam-policy-binding:

gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/aiplatform.serviceAgent' --condition=None

Ganti kode berikut:

  • PROJECT_NUMBER: nomor project Anda.
  • MEMBER: ID akun layanan yang Anda salin sebelumnya.

Akun layanan yang terkait dengan koneksi Anda adalah instance BigQuery Connection Delegation Service Agent, jadi Anda dapat menetapkan peran agen layanan ke akun tersebut.

Membuat model dengan penyesuaian yang diawasi

  1. Di Google Cloud konsol, buka halaman BigQuery.

    Buka BigQuery

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

    CREATE OR REPLACE MODEL
    `PROJECT_ID.DATASET_ID.MODEL_NAME`
    REMOTE WITH CONNECTION {DEFAULT | `PROJECT_ID.REGION.CONNECTION_ID`}
    OPTIONS (
      ENDPOINT = 'ENDPOINT',
      MAX_ITERATIONS = MAX_ITERATIONS,
      LEARNING_RATE_MULTIPLIER = LEARNING_RATE_MULTIPLIER,
      DATA_SPLIT_METHOD = 'DATA_SPLIT_METHOD',
      DATA_SPLIT_EVAL_FRACTION = DATA_SPLIT_EVAL_FRACTION,
      DATA_SPLIT_COL = 'DATA_SPLIT_COL',
      EVALUATION_TASK = 'EVALUATION_TASK',
      PROMPT_COL = 'INPUT_PROMPT_COL',
      INPUT_LABEL_COLS = INPUT_LABEL_COLS)
    AS SELECT PROMPT_COLUMN, LABEL_COLUMN
    FROM `TABLE_PROJECT_ID.TABLE_DATASET.TABLE_NAME`;

    Ganti kode berikut:

    • PROJECT_ID: project ID project tempat model akan dibuat.
    • DATASET_ID: ID set data yang akan berisi model. Set data ini harus berada di region Vertex AI yang didukung.
    • MODEL_NAME: nama model.
    • REGION: region yang digunakan oleh koneksi.
    • CONNECTION_ID: ID koneksi BigQuery Anda. Koneksi ini harus berada di lokasi yang sama dengan set data yang Anda gunakan.

      Saat Anda melihat detail koneksi di konsol Google Cloud , nilai ini adalah nilai di bagian terakhir ID koneksi yang sepenuhnya memenuhi syarat yang ditampilkan di ID Koneksi—misalnya, projects/myproject/locations/connection_location/connections/myconnection.

    • ENDPOINT: nilai STRING yang menentukan nama model yang akan digunakan.
    • MAX_ITERATIONS: nilai INT64 yang menentukan jumlah langkah yang akan dijalankan untuk penyesuaian yang diawasi. Nilai MAX_ITERATIONS harus berada di antara 1 dan .

      Model Gemini dilatih menggunakan epoch, bukan langkah, sehingga BigQuery ML mengonversi nilai MAX_ITERATIONS menjadi epoch. Nilai default untuk MAX_ITERATIONS adalah jumlah baris dalam data input, yang setara dengan satu epoch. Untuk menggunakan beberapa epoch, tentukan kelipatan jumlah baris dalam data pelatihan Anda. Misalnya, jika Anda memiliki 100 baris data input dan Anda ingin menggunakan dua epoch, tentukan 200 untuk nilai argumen. Jika Anda memberikan nilai yang bukan kelipatan jumlah baris dalam data input, BigQuery ML akan membulatkan ke epoch terdekat. Misalnya, jika Anda memiliki 100 baris data input dan Anda menentukan 101 untuk nilai MAX_ITERATIONS, pelatihan dilakukan dengan dua iterasi pelatihan.

      Untuk mengetahui informasi selengkapnya tentang parameter yang digunakan untuk menyesuaikan model Gemini, lihat Membuat tugas penyesuaian.

    • DATA_SPLIT_METHOD: nilai STRING yang menentukan metode yang digunakan untuk memisahkan data input ke dalam set pelatihan dan evaluasi. Opsi yang valid adalah sebagai berikut:
      • AUTO_SPLIT: BigQuery ML secara otomatis membagi data. Cara data dibagi bervariasi bergantung pada jumlah baris dalam tabel input. Ini adalah nilai defaultnya.
      • RANDOM: data diacak sebelum dibagi menjadi beberapa set. Untuk menyesuaikan pembagian data, Anda dapat menggunakan opsi ini dengan opsi DATA_SPLIT_EVAL_FRACTION.
      • CUSTOM: data dibagi menggunakan kolom yang diberikan dalam opsi DATA_SPLIT_COL. Nilai DATA_SPLIT_COL harus berupa nama kolom berjenis BOOL. Baris dengan nilai TRUE atau NULL digunakan sebagai data evaluasi, dan baris dengan nilai FALSE digunakan sebagai data pelatihan.
      • SEQ: memisahkan data menggunakan kolom yang diberikan dalam opsi DATA_SPLIT_COL. Nilai DATA_SPLIT_COL harus berupa nama kolom dari salah satu jenis berikut:
        • NUMERIC
        • BIGNUMERIC
        • STRING
        • TIMESTAMP

        Data diurutkan dari terkecil hingga terbesar berdasarkan kolom yang ditentukan.

        n baris pertama digunakan sebagai data evaluasi, dengan n adalah nilai yang ditentukan untuk DATA_SPLIT_EVAL_FRACTION. Baris yang tersisa digunakan sebagai data pelatihan.

      • NO_SPLIT: tidak ada pemisahan data; semua data input digunakan sebagai data pelatihan.

      Untuk mengetahui informasi selengkapnya tentang opsi pemisahan data ini, lihat DATA_SPLIT_METHOD.

    • DATA_SPLIT_EVAL_FRACTION: nilai FLOAT64 yang menentukan bagian data yang akan digunakan sebagai data evaluasi saat melakukan penyesuaian terawasi. Harus berupa nilai dalam rentang [0, 1.0]. Nilai defaultnya adalah 0.2.

      Gunakan opsi ini jika Anda menentukan RANDOM atau SEQ sebagai nilai untuk opsi DATA_SPLIT_METHOD. Untuk menyesuaikan pemisahan data, Anda dapat menggunakan opsi DATA_SPLIT_METHOD dengan opsi DATA_SPLIT_EVAL_FRACTION.

    • DATA_SPLIT_COL: nilai STRING yang menentukan nama kolom yang akan digunakan untuk mengurutkan data input ke dalam set pelatihan atau evaluasi. Gunakan saat Anda menentukan CUSTOM atau SEQ sebagai nilai untuk opsi DATA_SPLIT_METHOD.
    • EVALUATION_TASK: nilai STRING yang menentukan jenis tugas yang ingin Anda sesuaikan untuk dilakukan oleh model. Opsi yang valid adalah:
      • TEXT_GENERATION
      • CLASSIFICATION
      • SUMMARIZATION
      • QUESTION_ANSWERING
      • UNSPECIFIED

      Nilai defaultnya adalah UNSPECIFIED.

    • INPUT_PROMPT_COL: nilai STRING yang berisi nama kolom perintah dalam tabel data pelatihan yang akan digunakan saat melakukan penyesuaian yang diawasi. Nilai defaultnya adalah prompt.
    • INPUT_LABEL_COLS: nilai ARRAY<<STRING> yang berisi nama kolom label dalam tabel data pelatihan yang akan digunakan dalam penyesuaian yang diawasi. Anda hanya dapat menentukan satu elemen dalam array. Nilai defaultnya adalah array kosong. Hal ini menyebabkan label menjadi nilai default argumen LABEL_COLUMN.
    • PROMPT_COLUMN: kolom dalam tabel data pelatihan yang berisi perintah untuk mengevaluasi konten dalam kolom LABEL_COLUMN. Kolom ini harus berjenis STRING atau dikonversi ke STRING. Jika Anda menentukan nilai untuk opsi INPUT_PROMPT_COL, Anda harus menentukan nilai yang sama untuk PROMPT_COLUMN. Jika tidak, nilai ini harus prompt. Jika tabel Anda tidak memiliki kolom prompt, gunakan alias untuk menentukan kolom tabel yang ada. Misalnya, AS SELECT hint AS prompt, label FROM mydataset.mytable.
    • LABEL_COLUMN: kolom dalam tabel data pelatihan yang berisi contoh untuk melatih model. Kolom ini harus berjenis STRING atau dikonversi ke STRING. Jika Anda menentukan nilai untuk opsi INPUT_LABEL_COLS, Anda harus menentukan nilai yang sama untuk LABEL_COLUMN. Jika tidak, nilai ini harus label. Jika tabel Anda tidak memiliki kolom label, gunakan alias untuk menentukan kolom tabel yang ada. Misalnya, AS SELECT prompt, feature AS label FROM mydataset.mytable.
    • TABLE_PROJECT_ID: project ID dari project yang berisi tabel data pelatihan.
    • TABLE_DATASET: nama set data yang berisi tabel data pelatihan.
    • TABLE_NAME: nama tabel yang berisi data yang akan digunakan untuk melatih model.

Mengevaluasi model yang di-tuning

  1. Di Google Cloud konsol, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, jalankan kueri berikut untuk mengevaluasi model yang disesuaikan:

    SELECT
    *
    FROM
    ML.EVALUATE(
      MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`,
      TABLE `TABLE_PROJECT_ID.TABLE_DATASET.TABLE_NAME`,
      STRUCT('TASK_TYPE' AS task_type, TOKENS AS max_output_tokens,
        TEMPERATURE AS temperature, TOP_K AS top_k,
        TOP_P AS top_p));

    Ganti kode berikut:

    • PROJECT_ID: project ID project yang berisi model.
    • DATASET_ID: ID set data yang berisi model.
    • MODEL_NAME: nama model.
    • TABLE_PROJECT_ID: project ID project yang berisi tabel data evaluasi.
    • TABLE_DATASET: nama set data yang berisi tabel data evaluasi.
    • TABLE_NAME: nama tabel yang berisi data evaluasi.

      Tabel harus memiliki kolom yang namanya cocok dengan nama kolom perintah yang diberikan selama pelatihan model. Anda dapat memberikan nilai ini menggunakan opsi prompt_col selama pelatihan model. Jika prompt_col tidak ditentukan, kolom bernama prompt dalam data pelatihan akan digunakan. Error akan ditampilkan jika tidak ada kolom bernama prompt.

      Tabel harus memiliki kolom yang namanya cocok dengan nama kolom label yang diberikan selama pelatihan model. Anda dapat memberikan nilai ini menggunakan opsi input_label_cols selama pelatihan model. Jika input_label_cols tidak ditentukan, kolom bernama label dalam data pelatihan akan digunakan. Error akan ditampilkan jika tidak ada kolom bernama label.

    • TASK_TYPE: nilai STRING yang menentukan jenis tugas yang ingin Anda gunakan untuk mengevaluasi model. Opsi yang valid adalah:
      • TEXT_GENERATION
      • CLASSIFICATION
      • SUMMARIZATION
      • QUESTION_ANSWERING
      • UNSPECIFIED
    • TOKENS: nilai INT64 yang menetapkan jumlah maksimum token yang dapat dibuat dalam respons. Nilai ini harus dalam rentang [1,1024]. Tentukan nilai yang lebih rendah untuk respons yang lebih singkat dan nilai yang lebih tinggi untuk respons yang lebih panjang. Defaultnya adalah 128.
    • TEMPERATURE: nilai FLOAT64 dalam rentang [0.0,1.0] yang mengontrol tingkat keacakan dalam pemilihan token. Defaultnya adalah 0.

      Nilai yang lebih rendah untuk temperature cocok untuk prompt yang memerlukan respons yang lebih deterministik dan kurang terbuka atau kreatif, sedangkan nilai yang lebih tinggi untuk temperature dapat memberikan hasil yang lebih beragam atau kreatif. Nilai 0 untuk temperature bersifat deterministik, yang berarti bahwa respons probabilitas tertinggi selalu dipilih.

    • TOP_K: nilai INT64 dalam rentang [1,40] yang menentukan kumpulan awal token yang dipertimbangkan model untuk dipilih. Tentukan nilai yang lebih rendah untuk respons dengan tingkat keacakan lebih rendah, dan nilai yang lebih tinggi untuk respons dengan tingkat keacakan lebih tinggi Defaultnya adalah 40.
    • TOP_P: nilai FLOAT64 dalam rentang [0.0,1.0] membantu menentukan token mana dari kumpulan yang ditentukan oleh TOP_K yang dipilih. Tentukan nilai yang lebih rendah untuk respons dengan tingkat keacakan lebih rendah, dan nilai yang lebih tinggi untuk respons dengan tingkat keacakan lebih tinggi Defaultnya adalah 0.95.

Buat teks

Buat teks dengan fungsi ML.GENERATE_TEXT:

Kolom prompt

Buat teks dengan menggunakan kolom tabel untuk menyediakan prompt.

SELECT *
FROM ML.GENERATE_TEXT(
  MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`,
  TABLE PROJECT_ID.DATASET_ID.TABLE_NAME,
  STRUCT(TOKENS AS max_output_tokens, TEMPERATURE AS temperature,
  TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output,
  STOP_SEQUENCES AS stop_sequences)
);

Ganti kode berikut:

  • PROJECT_ID: project ID Anda.
  • DATASET_ID: ID set data yang berisi model.
  • MODEL_NAME: nama model.
  • TABLE_NAME: nama tabel yang berisi prompt. Tabel ini harus memiliki kolom yang namanya cocok dengan nama kolom fitur dalam model yang di-tuning. Nama kolom fitur dalam model dapat ditetapkan menggunakan opsi PROMPT_COL saat membuat model. Jika tidak, nama kolom fitur dalam model adalah prompt secara default, atau Anda dapat menggunakan alias untuk menggunakan kolom dengan nama yang berbeda.
  • TOKENS: nilai INT64 yang menetapkan jumlah maksimum token yang dapat dibuat dalam respons. Nilai ini harus dalam rentang [1,8192]. Tentukan nilai yang lebih rendah untuk respons yang lebih singkat dan nilai yang lebih tinggi untuk respons yang lebih panjang. Defaultnya adalah 128.
  • TEMPERATURE: nilai FLOAT64 dalam rentang [0.0,1.0] yang mengontrol tingkat keacakan dalam pemilihan token. Defaultnya adalah 0.

    Nilai yang lebih rendah untuk temperature cocok untuk prompt yang memerlukan respons yang lebih deterministik dan kurang terbuka atau kreatif, sedangkan nilai yang lebih tinggi untuk temperature dapat memberikan hasil yang lebih beragam atau kreatif. Nilai 0 untuk temperature bersifat deterministik, yang berarti bahwa respons probabilitas tertinggi selalu dipilih.

  • TOP_P: nilai FLOAT64 dalam rentang [0.0,1.0] membantu menentukan probabilitas token yang dipilih. Tentukan nilai yang lebih rendah untuk respons acak yang lebih sedikit dan nilai yang lebih tinggi untuk respons acak yang lebih banyak. Defaultnya adalah 0.95.
  • FLATTEN_JSON: nilai BOOL yang menentukan apakah akan menampilkan teks yang dihasilkan dan atribut keamanan di kolom terpisah. Defaultnya adalah FALSE.
  • STOP_SEQUENCES: nilai ARRAY<STRING> yang menghapus string tertentu jika disertakan dalam respons dari model. String dicocokkan persis, termasuk kapitalisasi. Defaultnya adalah array kosong.
  • GROUND_WITH_GOOGLE_SEARCH: nilai BOOL yang menentukan apakah model Vertex AI menggunakan Perujukan dengan Google Penelusuran saat membuat respons. Dengan perujukan, model dapat menggunakan informasi tambahan dari internet saat membuat respons, sehingga respons model menjadi lebih spesifik dan faktual. Jika flatten_json_output dan kolom ini disetel ke True, kolom ml_generate_text_grounding_result tambahan akan disertakan dalam hasil, yang memberikan sumber yang digunakan model untuk mengumpulkan informasi tambahan. Defaultnya adalah FALSE.
  • SAFETY_SETTINGS: nilai ARRAY<STRUCT<STRING AS category, STRING AS threshold>> yang mengonfigurasi nilai minimum keamanan konten untuk memfilter respons. Elemen pertama dalam struct menentukan kategori bahaya, dan elemen kedua dalam struct menentukan nilai minimum pemblokiran yang sesuai. Model akan memfilter konten yang melanggar setelan ini. Anda hanya dapat menentukan setiap kategori satu kali. Misalnya, Anda tidak dapat menentukan STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold) dan STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_ONLY_HIGH' AS threshold). Jika tidak ada setelan keamanan untuk kategori tertentu, setelan keamanan BLOCK_MEDIUM_AND_ABOVE akan digunakan.

    Kategori yang didukung adalah sebagai berikut:

    • HARM_CATEGORY_HATE_SPEECH
    • HARM_CATEGORY_DANGEROUS_CONTENT
    • HARM_CATEGORY_HARASSMENT
    • HARM_CATEGORY_SEXUALLY_EXPLICIT

    Nilai minimum yang didukung adalah sebagai berikut:

    • BLOCK_NONE (Dibatasi)
    • BLOCK_LOW_AND_ABOVE
    • BLOCK_MEDIUM_AND_ABOVE (Default)
    • BLOCK_ONLY_HIGH
    • HARM_BLOCK_THRESHOLD_UNSPECIFIED

    Untuk mengetahui informasi selengkapnya, lihat definisi kategori keamanan dan batas pemblokiran.

  • REQUEST_TYPE: nilai STRING yang menentukan jenis permintaan inferensi yang akan dikirim ke model Gemini. Jenis permintaan menentukan kuota yang digunakan permintaan. Nilai yang valid adalah sebagai berikut:
    • DEDICATED: Fungsi ML.GENERATE_TEXT hanya menggunakan kuota Throughput yang Disediakan. Fungsi ML.GENERATE_TEXT menampilkan error Provisioned throughput is not purchased or is not active jika kuota Throughput yang Disediakan tidak tersedia.
    • SHARED: Fungsi ML.GENERATE_TEXT hanya menggunakan kuota bersama dinamis (DSQ), meskipun Anda telah membeli kuota Throughput yang Disediakan.
    • UNSPECIFIED: Fungsi ML.GENERATE_TEXT menggunakan kuota sebagai berikut:
      • Jika Anda belum membeli kuota Throughput yang Disediakan, fungsi ML.GENERATE_TEXT menggunakan kuota DSQ.
      • Jika Anda telah membeli kuota Throughput yang Disediakan, fungsi ML.GENERATE_TEXT akan menggunakan kuota Throughput yang Disediakan terlebih dahulu. Jika permintaan melebihi kuota Throughput yang Disediakan, traffic overflow menggunakan kuota DSQ.
    • Nilai defaultnya adalah UNSPECIFIED.

      Untuk mengetahui informasi selengkapnya, lihat Menggunakan Throughput yang Disediakan Vertex AI.

    Contoh berikut menunjukkan permintaan dengan karakteristik ini:

    • Menggunakan kolom prompt dari tabel prompts untuk prompt.
    • Menampilkan respons singkat dan kemungkinannya sedang.
    • Menampilkan teks yang dihasilkan dan atribut keamanan dalam kolom terpisah.
    SELECT *
    FROM
      ML.GENERATE_TEXT(
        MODEL `mydataset.mymodel`,
        TABLE mydataset.prompts,
        STRUCT(
          0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p,
          TRUE AS flatten_json_output));

Kueri prompt

Buat teks dengan menggunakan kueri untuk menyediakan prompt.

SELECT *
FROM ML.GENERATE_TEXT(
  MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`,
  (PROMPT_QUERY),
  STRUCT(TOKENS AS max_output_tokens, TEMPERATURE AS temperature,
  TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output,
  STOP_SEQUENCES AS stop_sequences)
);

Ganti kode berikut:

  • PROJECT_ID: project ID Anda.
  • DATASET_ID: ID set data yang berisi model.
  • MODEL_NAME: nama model.
  • PROMPT_QUERY: kueri yang menyediakan data prompt.
  • TOKENS: nilai INT64 yang menetapkan jumlah maksimum token yang dapat dibuat dalam respons. Nilai ini harus dalam rentang [1,8192]. Tentukan nilai yang lebih rendah untuk respons yang lebih singkat dan nilai yang lebih tinggi untuk respons yang lebih panjang. Defaultnya adalah 128.
  • TEMPERATURE: nilai FLOAT64 dalam rentang [0.0,1.0] yang mengontrol tingkat keacakan dalam pemilihan token. Defaultnya adalah 0.

    Nilai yang lebih rendah untuk temperature cocok untuk prompt yang memerlukan respons yang lebih deterministik dan kurang terbuka atau kreatif, sedangkan nilai yang lebih tinggi untuk temperature dapat memberikan hasil yang lebih beragam atau kreatif. Nilai 0 untuk temperature bersifat deterministik, yang berarti bahwa respons probabilitas tertinggi selalu dipilih.

  • TOP_P: nilai FLOAT64 dalam rentang [0.0,1.0] membantu menentukan probabilitas token yang dipilih. Tentukan nilai yang lebih rendah untuk respons acak yang lebih sedikit dan nilai yang lebih tinggi untuk respons acak yang lebih banyak. Defaultnya adalah 0.95.
  • FLATTEN_JSON: nilai BOOL yang menentukan apakah akan menampilkan teks yang dihasilkan dan atribut keamanan di kolom terpisah. Defaultnya adalah FALSE.
  • STOP_SEQUENCES: nilai ARRAY<STRING> yang menghapus string tertentu jika disertakan dalam respons dari model. String dicocokkan persis, termasuk kapitalisasi. Defaultnya adalah array kosong.
  • GROUND_WITH_GOOGLE_SEARCH: nilai BOOL yang menentukan apakah model Vertex AI menggunakan Perujukan dengan Google Penelusuran saat membuat respons. Dengan perujukan, model dapat menggunakan informasi tambahan dari internet saat membuat respons, sehingga respons model menjadi lebih spesifik dan faktual. Jika flatten_json_output dan kolom ini disetel ke True, kolom ml_generate_text_grounding_result tambahan akan disertakan dalam hasil, yang memberikan sumber yang digunakan model untuk mengumpulkan informasi tambahan. Defaultnya adalah FALSE.
  • SAFETY_SETTINGS: nilai ARRAY<STRUCT<STRING AS category, STRING AS threshold>> yang mengonfigurasi nilai minimum keamanan konten untuk memfilter respons. Elemen pertama dalam struct menentukan kategori bahaya, dan elemen kedua dalam struct menentukan nilai minimum pemblokiran yang sesuai. Model akan memfilter konten yang melanggar setelan ini. Anda hanya dapat menentukan setiap kategori satu kali. Misalnya, Anda tidak dapat menentukan STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold) dan STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_ONLY_HIGH' AS threshold). Jika tidak ada setelan keamanan untuk kategori tertentu, setelan keamanan BLOCK_MEDIUM_AND_ABOVE akan digunakan.

    Kategori yang didukung adalah sebagai berikut:

    • HARM_CATEGORY_HATE_SPEECH
    • HARM_CATEGORY_DANGEROUS_CONTENT
    • HARM_CATEGORY_HARASSMENT
    • HARM_CATEGORY_SEXUALLY_EXPLICIT

    Nilai minimum yang didukung adalah sebagai berikut:

    • BLOCK_NONE (Dibatasi)
    • BLOCK_LOW_AND_ABOVE
    • BLOCK_MEDIUM_AND_ABOVE (Default)
    • BLOCK_ONLY_HIGH
    • HARM_BLOCK_THRESHOLD_UNSPECIFIED

    Untuk mengetahui informasi selengkapnya, lihat definisi kategori keamanan dan batas pemblokiran.

  • REQUEST_TYPE: nilai STRING yang menentukan jenis permintaan inferensi yang akan dikirim ke model Gemini. Jenis permintaan menentukan kuota yang digunakan permintaan. Nilai yang valid adalah sebagai berikut:
    • DEDICATED: Fungsi ML.GENERATE_TEXT hanya menggunakan kuota Throughput yang Disediakan. Fungsi ML.GENERATE_TEXT menampilkan error Provisioned throughput is not purchased or is not active jika kuota Throughput yang Disediakan tidak tersedia.
    • SHARED: Fungsi ML.GENERATE_TEXT hanya menggunakan kuota bersama dinamis (DSQ), meskipun Anda telah membeli kuota Throughput yang Disediakan.
    • UNSPECIFIED: Fungsi ML.GENERATE_TEXT menggunakan kuota sebagai berikut:
      • Jika Anda belum membeli kuota Throughput yang Disediakan, fungsi ML.GENERATE_TEXT menggunakan kuota DSQ.
      • Jika Anda telah membeli kuota Throughput yang Disediakan, fungsi ML.GENERATE_TEXT akan menggunakan kuota Throughput yang Disediakan terlebih dahulu. Jika permintaan melebihi kuota Throughput yang Disediakan, traffic overflow menggunakan kuota DSQ.
    • Nilai defaultnya adalah UNSPECIFIED.

      Untuk mengetahui informasi selengkapnya, lihat Menggunakan Throughput yang Disediakan Vertex AI.

    Contoh 1

    Contoh berikut menunjukkan permintaan dengan karakteristik ini:

    • Meminta ringkasan teks di kolom body pada tabel articles.
    • Menampilkan respons yang cukup panjang dan kemungkinannya lebih besar.
    • Menampilkan teks yang dihasilkan dan atribut keamanan dalam kolom terpisah.
    SELECT *
    FROM
      ML.GENERATE_TEXT(
        MODEL `mydataset.mymodel`,
        (
          SELECT CONCAT('Summarize this text', body) AS prompt
          FROM mydataset.articles
        ),
        STRUCT(
          0.2 AS temperature, 650 AS max_output_tokens, 0.2 AS top_p,
          TRUE AS flatten_json_output));

    Contoh 2

    Contoh berikut menunjukkan permintaan dengan karakteristik ini:

    • Menggunakan kueri untuk membuat data prompt dengan menyambungkan string yang memberikan awalan prompt dengan kolom tabel.
    • Menampilkan respons singkat dan kemungkinannya sedang.
    • Tidak menampilkan teks yang dihasilkan dan atribut keamanan dalam kolom terpisah.
    SELECT *
    FROM
      ML.GENERATE_TEXT(
        MODEL `mydataset.mytuned_model`,
        (
          SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt
          FROM mydataset.input_table
        ),
        STRUCT(
          0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p,
          FALSE AS flatten_json_output));