LLM khusus SQL dengan BigQuery ML menggunakan Vertex AI PaLM API

1. Pengantar

Dalam codelab ini, saya telah mencantumkan langkah-langkah untuk melakukan perangkuman kode sumber dari repositori GitHub dan identifikasi bahasa pemrograman di repo ini, menggunakan Model Bahasa Besar Vertex AI untuk pembuatan teks ( text-bison) sebagai fungsi jarak jauh yang dihosting di BigQuery. Berkat Project Archive GitHub, sekarang kami memiliki ringkasan lengkap tentang lebih dari 2,8 juta repositori GitHub open source di Set Data Publik Google BigQuery. Daftar layanan yang digunakan adalah:

  1. BigQuery ML
  2. Vertex AI PaLM API

Yang akan Anda build

Anda akan membuat

  • Set Data BigQuery untuk menampung model
  • Model BigQuery yang menghosting PaLM API Vertex AI sebagai fungsi jarak jauh
  • Koneksi eksternal untuk membuat koneksi antara BigQuery dan Vertex AI

2. Persyaratan

  • Browser, seperti Chrome atau Firefox
  • Project Google Cloud yang mengaktifkan penagihan

3. Sebelum memulai

  1. Di Konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud
  2. Pastikan penagihan diaktifkan untuk project Cloud Anda. Pelajari cara memeriksa apakah penagihan diaktifkan pada sebuah project
  3. Pastikan semua API yang diperlukan (BigQuery API, Vertex AI API, BigQuery Connection API) diaktifkan
  4. Anda akan menggunakan Cloud Shell, yakni lingkungan command line yang berjalan di Google Cloud dan telah dilengkapi dengan bq. Lihat dokumentasi untuk mengetahui perintah dan penggunaan gcloud

Dari Cloud Console, klik Activate Cloud Shell di pojok kanan atas:

51622c00acec2fa.pngS

Jika project Anda belum ditetapkan, gunakan perintah berikut untuk menetapkannya:

gcloud config set project <YOUR_PROJECT_ID>
  1. Buka konsol BigQuery secara langsung dengan memasukkan URL berikut di browser Anda: https://console.cloud.google.com/bigquery

4. Menyiapkan data

Dalam kasus penggunaan ini, kami menggunakan konten kode sumber dari set data github_repos di Set Data Publik Google BigQuery. Untuk menggunakan ini, di konsol BigQuery, telusuri "github_repos" lalu tekan enter. Klik pada bintang di sebelah {i>dataset <i}yang terdaftar sebagai hasil pencarian. Lalu klik "TAMPILKAN BINTANGNYA saja" pilihan untuk melihat {i>dataset<i} itu hanya dari {i>dataset<i} publik.

dc6bf1e2fa6bba8a.png

Luaskan tabel dalam set data untuk melihat skema dan pratinjau data. Kita akan menggunakan sample_contents, yang hanya berisi sampel (10%) dari data lengkap dalam tabel {i>content<i}. Berikut adalah pratinjau datanya:

e021c689c56abf22.png

5. Membuat set data BigQuery

Set data BigQuery adalah kumpulan tabel. Semua tabel dalam set data disimpan di lokasi data yang sama. Anda juga dapat melampirkan kontrol akses kustom untuk membatasi akses ke set data dan tabelnya.

Membuat set data di region "US" (atau region mana pun sesuai preferensi kita) yang bernama bq_llm

c67e9f929629739a.png

Set data ini akan menyimpan model ML yang akan kita buat pada langkah-langkah berikutnya. Biasanya kita juga akan menyimpan data yang kita gunakan di aplikasi ML dalam tabel di set data ini sendiri. Namun dalam kasus penggunaan kita, data sudah berada dalam set data publik BigQuery, kita akan mereferensikannya langsung dari set data yang baru dibuat sesuai kebutuhan. Jika ingin melakukan project ini pada set data Anda sendiri yang berada di CSV (atau file lainnya), Anda dapat memuat data Anda ke dalam set data BigQuery ke dalam tabel dengan menjalankan perintah di bawah ini dari terminal Cloud Shell:

bq load --source_format=CSV --skip_leading_rows=1 bq_llm.table_to_hold_your_data \
./your_file.csv \ text:string,label:string

6. Membuat koneksi eksternal

Buat Koneksi Eksternal (Aktifkan BQ Connection API jika belum dilakukan) dan catat ID Akun Layanan dari detail konfigurasi koneksi:

  1. Klik tombol +ADD pada panel BigQuery Explorer (di sebelah kiri konsol BigQuery), lalu klik "Connection to external data sources" di sumber populer yang tercantum
  2. Pilih Jenis koneksi sebagai "BigLake dan fungsi jarak jauh" dan berikan "llm-conn" sebagai ID Koneksi

6b75042881eaec5f.pngS

  1. Setelah koneksi dibuat, catat Akun Layanan yang dibuat dari detail konfigurasi koneksi

7. Berikan izin

Pada langkah ini, kita akan memberikan izin ke Akun Layanan untuk mengakses layanan Vertex AI:

Buka IAM dan tambahkan Akun Layanan yang Anda salin setelah membuat koneksi eksternal sebagai Principal, lalu pilih "Vertex AI User" {i>Role <i}(Peran)

ff8e1d730879f972.png

8. Membuat model ML jarak jauh

Buat model jarak jauh yang merepresentasikan model bahasa besar (LLM) Vertex AI yang dihosting:

CREATE OR REPLACE MODEL bq_llm.llm_model
  REMOTE WITH CONNECTION `us.llm-conn`
  OPTIONS (remote_service_type = 'CLOUD_AI_LARGE_LANGUAGE_MODEL_V1');

Versi ini membuat model bernama llm_model dalam set data bq_llm yang memanfaatkan CLOUD_AI_LARGE_LANGUAGE_MODEL_V1 API Vertex AI sebagai fungsi jarak jauh. Proses ini akan memerlukan waktu beberapa detik.

9. Membuat teks menggunakan model ML

Setelah model dibuat, gunakan model tersebut untuk membuat, meringkas, atau mengategorikan teks.

SELECT
  ml_generate_text_result['predictions'][0]['content'] AS generated_text,
  ml_generate_text_result['predictions'][0]['safetyAttributes']
    AS safety_attributes,
  * EXCEPT (ml_generate_text_result)
FROM
  ML.GENERATE_TEXT(
    MODEL `bq_llm.llm_model`,
    (
  SELECT
        CONCAT('Can you read the code in the following text and generate a summary for what the code is doing and what language it is written in:', content)
        AS prompt from `bigquery-public-data.github_repos.sample_contents`
          limit 5
    ),
    STRUCT(
      0.2 AS temperature,
      100 AS max_output_tokens));

**Penjelasan:

ml_generate_text_result** adalah respons dari model pembuatan teks dalam format JSON yang berisi atribut konten dan keamanan: a. Konten mewakili hasil teks yang dihasilkan b. Atribut Keamanan merepresentasikan filter konten bawaan dengan batas yang dapat disesuaikan dan diaktifkan di Vertex AI Palm API untuk menghindari respons yang tidak diinginkan atau tidak terduga dari model bahasa besar. Respons akan diblokir jika melanggar batas keamanan

ML.GENERATE_TEXT adalah konstruksi yang Anda gunakan di BigQuery untuk mengakses LLM Vertex AI guna melakukan tugas pembuatan teks

CONCAT menambahkan pernyataan PROMPT dan kumpulan data database

github_repos adalah nama set data dan sample_contents adalah nama tabel yang menyimpan data yang akan kita gunakan dalam desain prompt

Temperature adalah parameter perintah untuk mengontrol keacakan respons - semakin kecil semakin baik dalam hal relevansi

Max_output_tokens adalah jumlah kata yang ingin Anda respons

Respons kueri akan terlihat seperti ini:

1156f6eecb548cd5.pngS

10. Meratakan hasil kueri

Mari kita meratakan hasilnya sehingga kita tidak perlu mendekode JSON secara eksplisit dalam kueri:

SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `bq_llm.llm_model`,
    (
  SELECT
        CONCAT('Can you read the code in the following text and generate a summary for what the code is doing and what language it is written in:', content)
        AS prompt from `bigquery-public-data.github_repos.sample_contents`
          limit 5
        ),
    STRUCT(
      0.2 AS temperature,
      100 AS max_output_tokens,
      TRUE AS flatten_json_output));

**Penjelasan:

Flatten_json_output** mewakili boolean, yang jika disetel true, akan menampilkan teks datar yang dapat dipahami yang diekstrak dari respons JSON.

Respons kueri akan terlihat seperti ini:

3b662ef7d3ba9263.pngS

11. Pembersihan

Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam posting ini, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud, buka halaman Manage resources
  2. Dalam daftar project, pilih project yang ingin Anda hapus, lalu klik Delete
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project

12. Selamat

Selamat! Anda telah berhasil menggunakan LLM Vertex AI Text Generation secara terprogram untuk melakukan analisis teks pada data Anda hanya menggunakan kueri SQL. Lihat dokumentasi produk LLM Vertex AI untuk mempelajari lebih lanjut model yang tersedia.