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 terpantau. Model Vertex AI harus berupa salah satu dari hal berikut:
gemini-1.5-pro-002
gemini-1.5-flash-002
gemini-1.0-pro-002
(Pratinjau)
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 model Vertex AI Gemini API yang diawasi.
Izin yang diperlukan
Untuk membuat koneksi, Anda memerlukan keanggotaan dalam peran Identity and Access Management (IAM) berikut:
roles/bigquery.connectionAdmin
Untuk memberikan izin ke akun layanan koneksi, Anda memerlukan izin berikut:
resourcemanager.projects.setIamPolicy
Untuk membuat model menggunakan BigQuery ML, Anda memerlukan izin IAM berikut:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.models.updateMetadata
Untuk menjalankan inferensi, Anda memerlukan izin berikut:
bigquery.tables.getData
pada tabelbigquery.models.getData
pada modelbigquery.jobs.create
Sebelum memulai
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
-
Aktifkan API BigQuery, BigQuery Connection,Vertex AI, and Compute Engine.
Membuat koneksi
Buat koneksi resource Cloud dan dapatkan akun layanan koneksi.
Pilih salah satu opsi berikut:
Konsol
Buka halaman BigQuery.
Untuk membuat koneksi, klik
Tambahkan, lalu klik Koneksi ke sumber data eksternal.Dalam daftar Connection type, pilih Vertex AI remote models, remote functions and BigLake (Cloud Resource).
Di kolom Connection ID, masukkan nama untuk koneksi Anda.
Klik Create connection.
Klik Go to connection.
Di panel Connection info, salin ID akun layanan untuk digunakan di langkah berikutnya.
bq
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 AndaPROJECT_ID
: project ID Google Cloud AndaCONNECTION_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...
Ambil dan salin ID akun layanan untuk digunakan di 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."}
Terraform
Gunakan resource google_bigquery_connection
.
Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Contoh berikut membuat koneksi resource Cloud bernama
my_cloud_resource_connection
di region US
:
Untuk menerapkan konfigurasi Terraform di project Google Cloud, selesaikan langkah-langkah di bagian berikut.
Menyiapkan Cloud Shell
- Luncurkan Cloud Shell.
-
Tetapkan project Google Cloud default 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).
-
Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki
ekstensi
.tf
—misalnyamain.tf
. Dalam tutorial ini, file ini disebut sebagaimain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
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.
- Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
- Simpan perubahan Anda.
-
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
-
Tinjau konfigurasi dan pastikan resource yang akan dibuat atau
diupdate oleh Terraform sesuai yang Anda inginkan:
terraform plan
Koreksi konfigurasi jika diperlukan.
-
Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan
yes
pada prompt:terraform apply
Tunggu hingga Terraform menampilkan pesan "Apply complete!".
- Buka project Google Cloud Anda untuk melihat hasilnya. Di Konsol Google Cloud, buka resource Anda di UI untuk memastikan bahwa Terraform telah membuat atau mengupdatenya.
Memberikan akses akun layanan koneksi
Berikan izin pada akun layanan Anda untuk mengakses Vertex AI. Kegagalan memberikan izin akan menyebabkan error. Pilih salah satu opsi berikut:
Konsol
Buka halaman IAM & Admin.
Klik
Berikan Akses.Untuk New principals, masukkan ID akun layanan yang Anda salin sebelumnya.
Klik Pilih peran.
Di Filter, ketik
Vertex AI Service Agent
, lalu pilih peran tersebut.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 dari BigQuery Connection Delegation Service Agent, sehingga Anda dapat menetapkan peran agen layanan ke akun tersebut.
Membuat model dengan penyesuaian yang diawasi
Di Konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, jalankan kueri berikut untuk membuat model jarak jauh:
CREATE OR REPLACE MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME` REMOTE WITH CONNECTION `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 untuk project tempat membuat model.DATASET_ID
: ID set data yang akan berisi model. Set data ini harus berada di region upload model dan tugas pipeline 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, ini adalah nilai di bagian terakhir dari ID koneksi yang sepenuhnya memenuhi syarat yang ditampilkan di ID Koneksi—misalnya,
projects/myproject/locations/connection_location/connections/myconnection
.ENDPOINT
: nilaiSTRING
yang menentukan nama model yang akan digunakan.MAX_ITERATIONS
: nilaiINT64
yang menentukan jumlah langkah yang akan dijalankan untuk penyesuaian terpantau. NilaiMAX_ITERATIONS
harus antara1
dan∞
.Model Gemini dilatih menggunakan epoch, bukan langkah, sehingga BigQuery ML mengonversi nilai
MAX_ITERATIONS
menjadi epoch. Nilai default untukMAX_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 ingin menggunakan dua epoch, tentukan200
untuk nilai argumen. Jika Anda memberikan nilai yang bukan kelipatan jumlah baris dalam data input, BigQuery ML akan membulatkan ke atas ke epoch terdekat. Misalnya, jika Anda memiliki 100 baris data input dan menentukan101
untuk nilaiMAX_ITERATIONS
, pelatihan akan dilakukan dengan dua iterasi pelatihan.Untuk mengetahui informasi selengkapnya tentang parameter yang digunakan untuk menyesuaikan model Gemini, lihat Membuat tugas penyesuaian.
DATA_SPLIT_METHOD
: nilaiSTRING
yang menentukan metode yang digunakan untuk membagi data input menjadi set pelatihan dan evaluasi. Opsi yang valid adalah sebagai berikut:AUTO_SPLIT
: BigQuery ML akan otomatis memisahkan data. Cara pemisahan data bervariasi bergantung pada jumlah baris dalam tabel input. Ini adalah nilai defaultnya.RANDOM
: data diacak sebelum dibagi menjadi set. Untuk menyesuaikan pemisahan data, Anda dapat menggunakan opsi ini dengan opsiDATA_SPLIT_EVAL_FRACTION
.CUSTOM
: data dibagi menggunakan kolom yang disediakan dalam opsiDATA_SPLIT_COL
. NilaiDATA_SPLIT_COL
harus berupa nama kolom berjenisBOOL
. Baris dengan nilaiTRUE
atauNULL
digunakan sebagai data evaluasi, dan baris dengan nilaiFALSE
digunakan sebagai data pelatihan.SEQ
: memisahkan data menggunakan kolom yang disediakan dalam opsiDATA_SPLIT_COL
. NilaiDATA_SPLIT_COL
harus berupa nama kolom dari salah satu jenis berikut:NUMERIC
BIGNUMERIC
STRING
TIMESTAMP
Data diurutkan dari yang terkecil ke terbesar berdasarkan kolom yang ditentukan.
Baris n 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
: nilaiFLOAT64
yang menentukan fraksi data yang akan digunakan sebagai data evaluasi saat melakukan penyesuaian terpandu. Harus berupa nilai dalam rentang[0, 1.0]
. Nilai defaultnya adalah0.2
.Gunakan opsi ini saat Anda menentukan
RANDOM
atauSEQ
sebagai nilai untuk opsiDATA_SPLIT_METHOD
. Untuk menyesuaikan pemisahan data, Anda dapat menggunakan opsiDATA_SPLIT_METHOD
dengan opsiDATA_SPLIT_EVAL_FRACTION
.DATA_SPLIT_COL
: nilaiSTRING
yang menentukan nama kolom yang akan digunakan untuk mengurutkan data input ke dalam set pelatihan atau evaluasi. Gunakan saat Anda menentukanCUSTOM
atauSEQ
sebagai nilai untuk opsiDATA_SPLIT_METHOD
.EVALUATION_TASK
: nilaiSTRING
yang menentukan jenis tugas yang ingin Anda sesuaikan dengan model yang akan dilakukan. Opsi yang valid adalah:TEXT_GENERATION
CLASSIFICATION
SUMMARIZATION
QUESTION_ANSWERING
UNSPECIFIED
Nilai defaultnya adalah
UNSPECIFIED
.INPUT_PROMPT_COL
: nilaiSTRING
yang berisi nama kolom perintah dalam tabel data pelatihan yang akan digunakan saat melakukan penyesuaian terpandu. Nilai defaultnya adalahprompt
.INPUT_LABEL_COLS
: nilaiARRAY<<STRING>
yang berisi nama kolom label dalam tabel data pelatihan yang akan digunakan dalam penyesuaian terpandu. Anda hanya dapat menentukan satu elemen dalam array. Nilai defaultnya adalah array kosong. Hal ini menyebabkanlabel
menjadi nilai default argumenLABEL_COLUMN
.PROMPT_COLUMN
: kolom dalam tabel data pelatihan yang berisi perintah untuk mengevaluasi konten di kolomLABEL_COLUMN
. Kolom ini harus berjenisSTRING
atau ditransmisikan keSTRING
. Jika menentukan nilai untuk opsiINPUT_PROMPT_COL
, Anda harus menentukan nilai yang sama untukPROMPT_COLUMN
. Jika tidak, nilai ini harusprompt
. Jika tabel Anda tidak memiliki kolomprompt
, 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 berjenisSTRING
atau ditransmisikan keSTRING
. Jika menentukan nilai untuk opsiINPUT_LABEL_COLS
, Anda harus menentukan nilai yang sama untukLABEL_COLUMN
. Jika tidak, nilai ini haruslabel
. Jika tabel Anda tidak memiliki kolomlabel
, 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 dioptimalkan
Di Konsol Google Cloud, buka halaman BigQuery.
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 untuk 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 dengan menggunakan opsi
prompt_col
selama pelatihan model. Jikaprompt_col
tidak ditentukan, kolom bernamaprompt
dalam data pelatihan akan digunakan. Error akan ditampilkan jika tidak ada kolom bernamaprompt
.Tabel harus memiliki kolom yang namanya cocok dengan nama kolom label yang diberikan selama pelatihan model. Anda dapat memberikan nilai ini dengan menggunakan opsi
input_label_cols
selama pelatihan model. Jikainput_label_cols
tidak ditentukan, kolom bernamalabel
dalam data pelatihan akan digunakan. Error akan ditampilkan jika tidak ada kolom bernamalabel
.TASK_TYPE
: nilaiSTRING
yang menentukan jenis tugas yang ingin Anda evaluasi modelnya. Opsi yang valid adalah:TEXT_GENERATION
CLASSIFICATION
SUMMARIZATION
QUESTION_ANSWERING
UNSPECIFIED
TOKENS
: nilaiINT64
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 adalah128
.TEMPERATURE
: nilaiFLOAT64
dalam rentang[0.0,1.0]
yang mengontrol tingkat keacakan dalam pemilihan token. Defaultnya adalah0
.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 untuktemperature
dapat memberikan hasil yang lebih beragam atau kreatif. Nilai0
untuktemperature
bersifat deterministik, yang berarti bahwa respons probabilitas tertinggi selalu dipilih.TOP_K
: nilaiINT64
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 adalah40
.TOP_P
: nilaiFLOAT64
dalam rentang[0.0,1.0]
membantu menentukan token mana dari kumpulan yang ditentukan olehTOP_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 adalah0.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 dioptimalkan. Nama kolom fitur dalam model dapat ditetapkan menggunakan opsiPROMPT_COL
saat membuat model. Jika tidak, nama kolom fitur dalam model adalahprompt
secara default, atau Anda dapat menggunakan alias untuk menggunakan kolom dengan nama yang berbeda.TOKENS
: nilaiINT64
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 adalah128
.TEMPERATURE
: nilaiFLOAT64
dalam rentang[0.0,2.0]
yang mengontrol tingkat keacakan dalam pemilihan token. Defaultnya adalah0
.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 untuktemperature
dapat memberikan hasil yang lebih beragam atau kreatif. Nilai0
untuktemperature
bersifat deterministik, yang berarti bahwa respons probabilitas tertinggi selalu dipilih.TOP_P
: nilaiFLOAT64
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 adalah0.95
.FLATTEN_JSON
: nilaiBOOL
yang menentukan apakah akan menampilkan teks yang dihasilkan dan atribut keamanan di kolom terpisah. Defaultnya adalahFALSE
.STOP_SEQUENCES
: nilaiARRAY<STRING>
yang menghapus string yang ditentukan jika disertakan dalam respons dari model. String dicocokkan persis, termasuk kapitalisasi. Defaultnya adalah array kosong.GROUND_WITH_GOOGLE_SEARCH
: nilaiBOOL
yang menentukan apakah model Vertex AI menggunakan Grounding dengan Google Penelusuran saat membuat respons. Perujukan memungkinkan model menggunakan informasi tambahan dari internet saat menghasilkan respons, untuk membuat respons model lebih spesifik dan faktual. Jikaflatten_json_output
dan kolom ini ditetapkan keTrue
, kolomml_generate_text_grounding_result
tambahan akan disertakan dalam hasil, yang memberikan sumber yang digunakan model untuk mengumpulkan informasi tambahan. Defaultnya adalahFALSE
.SAFETY_SETTINGS
: nilaiARRAY<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 ini memfilter konten yang melanggar setelan ini. Anda hanya dapat menentukan setiap kategori satu kali. Misalnya, Anda tidak dapat menentukanSTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold)
danSTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_ONLY_HIGH' AS threshold)
. Jika tidak ada setelan keamanan untuk kategori tertentu, setelan keamananBLOCK_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
Batas 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 nilai minimum pemblokiran.
Contoh berikut menunjukkan permintaan dengan karakteristik ini:
- Menggunakan kolom
prompt
dari tabelprompts
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
: nilaiINT64
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 adalah128
.TEMPERATURE
: nilaiFLOAT64
dalam rentang[0.0,2.0]
yang mengontrol tingkat keacakan dalam pemilihan token. Defaultnya adalah0
.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 untuktemperature
dapat memberikan hasil yang lebih beragam atau kreatif. Nilai0
untuktemperature
bersifat deterministik, yang berarti bahwa respons probabilitas tertinggi selalu dipilih.TOP_P
: nilaiFLOAT64
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 adalah0.95
.FLATTEN_JSON
: nilaiBOOL
yang menentukan apakah akan menampilkan teks yang dihasilkan dan atribut keamanan di kolom terpisah. Defaultnya adalahFALSE
.STOP_SEQUENCES
: nilaiARRAY<STRING>
yang menghapus string yang ditentukan jika disertakan dalam respons dari model. String dicocokkan persis, termasuk kapitalisasi. Defaultnya adalah array kosong.GROUND_WITH_GOOGLE_SEARCH
: nilaiBOOL
yang menentukan apakah model Vertex AI menggunakan Grounding dengan Google Penelusuran saat membuat respons. Perujukan memungkinkan model menggunakan informasi tambahan dari internet saat menghasilkan respons, untuk membuat respons model lebih spesifik dan faktual. Jikaflatten_json_output
dan kolom ini ditetapkan keTrue
, kolomml_generate_text_grounding_result
tambahan akan disertakan dalam hasil, yang memberikan sumber yang digunakan model untuk mengumpulkan informasi tambahan. Defaultnya adalahFALSE
.SAFETY_SETTINGS
: nilaiARRAY<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 ini memfilter konten yang melanggar setelan ini. Anda hanya dapat menentukan setiap kategori satu kali. Misalnya, Anda tidak dapat menentukanSTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold)
danSTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_ONLY_HIGH' AS threshold)
. Jika tidak ada setelan keamanan untuk kategori tertentu, setelan keamananBLOCK_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
Batas 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 nilai minimum pemblokiran.
Contoh 1
Contoh berikut menunjukkan permintaan dengan karakteristik ini:
- Meminta ringkasan teks di kolom
body
pada tabelarticles
. - 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));