2024-06-02|閱讀時間 ‧ 約 28 分鐘

使用 BigQuery 串接 Vertex AI 進行文本生成 (分析 Google Cloud 公開資料庫)

Overview

在文中將會使用 BigQueryhosted remote functionsVertex AI大型語言模型(LLM)進行文本生成(text-bison) 來分析並生成 GitHub 程式碼公開資料庫的摘要和程式語言識別。

資料庫來自 GitHub Archive Project,該項目包含超過 280 萬個開源 GitHub 存儲庫的完整快照,存儲在 Google BigQuery 公共數據集中。

Preparing the data

  1. 在 BigQuery 控制台中,點擊“+ADD”,點擊 “Public Datasets” 並搜索 “github_repos”。
  1. 在搜尋結果中,選擇 “GitHub Activity Data”,並點擊 “View Datasets


  1. 展開 github_repos 數據集並選擇 sample_contents 表,點擊 “Preview”,可以預覽部分的數據。


Create the BigQuery dataset

  1. 點擊 Project ID 旁的三個點,選擇 "Create Dataset"。
  2. 輸入 "bq_llm" 作為 Dataset ID,然後點擊 "Create Dataset",該 Dataset 將用於儲存下一步創建的模型。


Create the external connection

  1. 點擊 “+ ADD” 按鈕,選擇“Connections to external data sources”。
  2. 選擇連接類型為 “Vertex AI remote models, remote functions and BigLake (Cloud Resource)” 並將 Connection ID 設置為 “llm-connection”。
  3. 點擊 “CREATE CONNECTION”。


  1. 複製剛剛建立 Connection 的 Service Account ID
  2. 瀏覽到 IAM & Admin 的 console 頁面,在 IAM 頁面上點擊 “+ GRANT ACCESS”。
  3. 貼上 Connection 的 Service Account ID 並賦予 Vertex AI User 權限,點擊 “SAVE


Create a remote ML model

  1. 在 BigQuery 頁面,點擊 “+ Compose new query” ,建立一個新查詢。
  2. 輸入以下語法
CREATE OR REPLACE MODEL bq_llm.llm_model
REMOTE WITH CONNECTION `us.llm-connection`
OPTIONS (remote_service_type = 'CLOUD_AI_LARGE_LANGUAGE_MODEL_V1');
這會創建一個名稱為 llm_model 的模型在。該模型利用 Vertex AI 的 CLOUD_AI_LARGE_LANGUAGE_MODEL_V1 作為遠程函數。完成後,您會在剛剛建立的dataset (bq_llm)看到該模型。



Generate text using the ML model

  1. 在 BigQuery 頁面,建立一個新查詢,並執行以下語法進行文本的生成。
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));

  1. 該 SQL 語法的解釋:
  • ml_generate_text_result 是從 text generation model 獲取的回應( JSON 格式),包含生成的文本和安全屬性:
    • content 代表生成的文本結果。
    • safetyAttributes 內建的內容過濾器,以避免 LLM 產生任何無意的或意想不到的回應。
  • ML.GENERATE_TEXT 是 BigQuery 中用於訪問 Vertex AI LLM 以執行文本生成任務的函數。
  • CONCAT 函數將提供的提示詞附加到數據庫記錄中。
  • github_repos 是公共數據集的名稱,而 sample_contents 是使用的 Table 名稱。
  • temperature 是控制回應隨機性的提詞參數—數值越小,相關性越高。
  • max_output_tokens 是您希望回應中包含的詞數。
  1. 執行語句查詢後,模型生成結果如下:

延伸閱讀

Tutorial: Analyze an object table by using a remote function | Bigquery

Generate text by using the ML.GENERATE_TEXT function | Bigquery

The ML.GENERATE_TEXT function | Bigquery

Model versions and lifecycle | Generative AI on Vertex AI

Text | Generative AI on Vertex AI

REF:

https://www.cloudskillsboost.google/focuses/74646?parent=catalog

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.