使用 GCP 的學習可解釋性工具 (LIT) 對 LLM 提示偵錯

1. 總覽

本研究室將詳細說明如何在 Google Cloud Platform (GCP) 上部署 LIT 應用程式伺服器,以便與 Vertex AI Gemini 基礎模型和自管的第三方大型語言模型 (LLM) 互動。並提供如何使用 LIT UI 進行快速偵錯和模型解讀的操作說明。

在本實驗室中,使用者將學習如何:

  • 在 GCP 上設定 LIT 伺服器。
  • 將 LIT 伺服器連線至 Vertex AI Gemini 模型或其他自架式 LLM。
  • 利用 LIT UI 分析、偵錯及解讀提示,以改善模型效能和洞察資料。

什麼是 LIT?

LIT 是一項可視覺化呈現互動式模型解釋資訊的工具,支援文字、圖片和表格資料。您可以將其當作獨立伺服器執行,也可以在 Google Colab、Jupyter 和 Google Cloud Vertex AI 等筆記本環境中執行。您可以從 PyPIGitHub 取得 LIT。

這個工具原本是為了瞭解分類和迴歸模型而建構,但最近的更新則新增了調試 LLM 提示的工具,讓您探索使用者、模型和系統內容如何影響生成行為。

什麼是 Vertex AI 和 Model Garden?

Vertex AI 是機器學習 (ML) 平台,可讓您訓練及部署 ML 模型和 AI 應用程式,並自訂 LLM 用於 AI 技術輔助應用程式。Vertex AI 結合了資料工程、數據資料科學和機器學習工程工作流程,讓團隊能夠使用共同的工具組進行協作,並運用 Google Cloud 的優勢擴充應用程式。

Vertex Model Garden 是機器學習模型程式庫,可協助您探索、測試、自訂及部署 Google 專屬模型和特定第三方模型和資產。

您需要採取的行動

您將使用 Google Cloud ShellCloud Run,從 LIT 的預先建構映像檔部署 Docker 容器。

Cloud Run 是代管運算平台,可讓您直接在 Google 可擴充的基礎架構 (包括GPU) 上執行容器。

資料集

這個示範會預設使用 LIT 提示偵錯的範例資料集,您也可以透過 UI 載入自己的資料集。

事前準備

您需要有 Google Cloud 專案才能使用本參考指南。您可以建立新專案,或選取已建立的專案。

2. 啟動 Google Cloud 控制台和 Cloud Shell

您將在這個步驟中啟動 Google Cloud 控制台,並使用 Google Cloud Shell。

2-a:啟動 Google Cloud 控制台

啟動瀏覽器,前往 Google Cloud 控制台

Google Cloud 控制台是功能強大且安全的網頁式管理介面,可讓您快速管理 Google Cloud 資源。這是隨時隨地處理開發運作工作所需的工具。

2-b:啟動 Google Cloud Shell

Cloud Shell 是一個線上開發與作業環境,可透過瀏覽器隨時隨地存取。Cloud Shell 的線上終端機已預先載入 kubectl、gcloud 指令列工具等公用程式,方便您管理資源。您也可以使用線上 Cloud Shell 編輯器開發、建構、偵錯及部署雲端式應用程式。Cloud Shell 提供開發人員可立即使用的線上環境,內含預先安裝的常用工具組合,以及 5 GB 的永久儲存空間。您將在後續步驟中使用命令提示字元。

使用選單列右上方的圖示 (在下方螢幕截圖中以藍色標示),啟動 Google Cloud Shell。

Google Cloud 控制台推出

您應該會在頁面底部看到含有 Bash 殼層的終端機。

Google Cloud Console

2-c:設定 Google Cloud 專案

您必須使用 gcloud 指令設定專案 ID 和專案區域。

# Set your GCP Project ID.
gcloud config set project your-project-id

# Set your GCP Project Region.
gcloud config set run/region your-project-region

3. 使用 Cloud Run 部署 LIT 應用程式伺服器 Docker 映像檔

3-a:將 LIT 應用程式部署至 Cloud Run

您必須先將最新版本的 LIT-App 設為要部署的版本。

# Set latest version as your LIT_SERVICE_TAG.
export LIT_SERVICE_TAG=latest
# List all the public LIT GCP App server docker images.
gcloud container images  list-tags  us-east4-docker.pkg.dev/lit-demos/lit-app/gcp-lit-app

設定版本標記後,您需要為服務命名。

# Set your lit service name. While 'lit-app-service' is provided as a placeholder, you can customize the service name based on your preferences.
export LIT_SERVICE_NAME=lit-app-service

完成後,您可以執行下列指令,將容器部署至 Cloud Run。

# Use below cmd to deploy the LIT App to Cloud Run.
gcloud run deploy $LIT_SERVICE_NAME \
--image us-east4-docker.pkg.dev/lit-demos/lit-app/gcp-lit-app:$LIT_SERVICE_TAG \
--port 5432 \
--cpu 8 \
--memory 32Gi \
--no-cpu-throttling \
--no-allow-unauthenticated

LIT 也允許您在啟動伺服器時新增資料集。如要這麼做,請使用 name:path 格式 (例如 data_foo:/bar/data_2024.jsonl) 設定 DATASETS 變數,以便納入要載入的資料。資料集格式應為 .jsonl,其中每項記錄都包含 prompt 和選用的 targetsource 欄位。如要載入多個資料集,請以半形逗號分隔。如果未設定,系統會載入 LIT 提示偵錯範例資料集

# Set the dataset.
export DATASETS=[DATASETS]

設定 MAX_EXAMPLES 後,您就能設定從每個評估集合載入的示例數量上限。

# Set the max examples.
export MAX_EXAMPLES=[MAX_EXAMPLES]

接著,您可以在部署指令中新增

--set-env-vars "DATASETS=$DATASETS" \
--set-env-vars "MAX_EXAMPLES=$MAX_EXAMPLES" \

3-b:查看 LIT 應用程式服務

建立 LIT 應用程式伺服器後,您可以在 Cloud 控制台的 Cloud Run 專區中找到這項服務。

選取您剛剛建立的 LIT App 服務。請確認服務名稱與 LIT_SERVICE_NAME 相同。

Google Cloud 控制台 Cloud Run 清單

您可以按一下剛部署的服務,找到服務網址。

Google Cloud Find Service 網址

接著,您應該可以看見 LIT 使用者介面。如果發生錯誤,請參閱「疑難排解」一節。

LIT 示範主頁

您可以查看「LOGS」部分,監控活動、查看錯誤訊息,以及追蹤部署作業的進度。

Google Cloud 控制台 Cloud Run 記錄

您可以查看「指標」部分,查看服務的指標。

Google Cloud 控制台 Cloud Run 指標

3-c:載入資料集

按一下 LIT UI 中的 Configure 選項,然後選取 Dataset。指定名稱並提供資料集網址,即可載入資料集。資料集格式應為 .jsonl,其中每項記錄都包含 prompt 和選用的 targetsource 欄位。

LIT 負載資料集

4. 在 Vertex AI Model Garden 中準備 Gemini 模型

Google 的 Gemini 基礎模型可透過 Vertex AI API 取得。LIT 提供 VertexAIModelGarden 模型包裝函式,可使用這些模型進行產生。只要指定所需版本 (例如「gemini-1.5-pro-001」) 使用這些模型的一大優點,就是不需要額外努力就能部署。根據預設,您可以在 GCP 上立即存取 Gemini 1.0 Pro 和 Gemini 1.5 Pro 等模型,不必進行額外的設定步驟。

4-a:授予 Vertex AI 權限

如要在 GCP 中查詢 Gemini,您必須將 服務帳戶授予 Vertex AI 權限。請確認服務帳戶名稱為 Default compute service account。複製帳戶的服務帳戶電子郵件地址。

GCP 的服務帳戶

IAM 許可清單中,將服務帳戶電子郵件地址新增為具有 Vertex AI User 角色的使用者。

新增服務帳戶電子郵件地址

4-b:載入 Gemini 模型

您將按照下列步驟載入 Gemini 模型並調整參數。

    1. 按一下 LIT UI 中的 Configure 選項。
    1. 選取「Select a base model」選項下方的「gemini」選項。
    1. 您必須在 new_name 中命名模型。
    1. 將所選 Gemini 模型輸入為 model_name
    1. 按一下「Load Model」。
    1. 按一下「Submit」。

LIT 負載 Gemini 模型

5. 在 GCP 上部署自行代管的 LLM 模型伺服器

您可以使用 LIT 的模型伺服器 Docker 映像檔,自行代管 LLM,並使用 LIT 的醒目顯示和標記函式,深入瞭解模型行為。模型伺服器映像檔可搭配 KerasNLPHugging Face Transformers 模型使用,包括程式庫提供和自行代管的權重 (例如 Google Cloud Storage 中的權重)。

5-a:設定模型

每個容器都會載入一個模型,並使用環境變數進行設定。

您應設定 MODEL_CONFIG,指定要載入的模型。格式應為 name:path,例如 model_foo:model_foo_path。路徑可以是網址、本機檔案路徑,或是已設定深度學習架構的預設值名稱 (詳情請參閱下表)。我們已針對所有支援的 DL_FRAMEWORK 值,使用 Gemma、GPT2、Llama 和 Mistral 對這個伺服器進行測試。其他型號應該也能運作,但可能需要調整。

# Set models you want to load. While 'gemma2b is given as a placeholder, you can load your preferred model by following the instructions above.
export MODEL_CONFIG=gemma2b:gemma_2b_en

此外,LIT 模型伺服器可使用下列指令設定各種環境變數。詳情請參閱下表。請注意,每個變數都必須個別設定。

# Customize the variable value as needed.
export [VARIABLE]=[VALUE]

變數

說明

DL_FRAMEWORK

kerasnlptransformers

用於將模型權重載入指定執行階段的模擬程式庫。預設值為 kerasnlp

DL_RUNTIME

torchtensorflow

模型執行的深度學習後端架構。此伺服器載入的所有模型都會使用相同的後端,不相容的情況會導致錯誤。預設值為 torch

精確度

bfloat16float32

LLM 模型的浮點精確度。預設值為 bfloat16

BATCH_SIZE

正整數

每批處理的範例數量。預設值為 1

SEQUENCE_LENGTH

正整數

輸入提示加上產生文字的序列長度上限。預設值為 512

5-b:將模型伺服器部署至 Cloud Run

您必須先將最新版本的 Model Server 設為要部署的版本。

# Set latest as MODEL_VERSION_TAG.
export MODEL_VERSION_TAG=latest
# List all the public LIT GCP model server docker images.
gcloud container images  list-tags  us-east4-docker.pkg.dev/lit-demos/lit-app/gcp-model-server

設定版本標記後,您需要為 model-server 命名。

# Set your Service name.
export MODEL_SERVICE_NAME='gemma2b-model-server'

完成後,您可以執行下列指令,將容器部署至 Cloud Run。如果您沒有設定環境變數,系統會套用預設值。由於大多數 LLM 都需要昂貴的運算資源,因此強烈建議您使用 GPU。如果您只想在 CPU 上執行 (這對 GPT2 等小型模型來說相當實用),可以移除相關的引數 --gpu 1 --gpu-type nvidia-l4 --max-instances 7

# Deploy the model service container.
gcloud beta run deploy $MODEL_SERVICE_NAME \
--image us-east4-docker.pkg.dev/lit-demos/lit-app/gcp-model-server:$MODEL_VERSION_TAG \
--port 5432 \
--cpu 8 \
--memory 32Gi \
--no-cpu-throttling \
--gpu 1 \
--gpu-type nvidia-l4  \
--max-instances 7  \
--set-env-vars "MODEL_CONFIG=$MODEL_CONFIG" \
--no-allow-unauthenticated

此外,您也可以新增下列指令來自訂環境變數。只納入您特定需求所需的環境變數。

--set-env-vars "DL_FRAMEWORK=$DL_FRAMEWORK" \
--set-env-vars "DL_RUNTIME=$DL_RUNTIME" \
--set-env-vars "PRECISION=$PRECISION" \
--set-env-vars "BATCH_SIZE=$BATCH_SIZE" \
--set-env-vars "SEQUENCE_LENGTH=$SEQUENCE_LENGTH" \

您可能需要額外的環境變數才能存取特定模型。請參閱 Kaggle Hub (適用於 KerasNLP 模型) 和 Hugging Face Hub 的操作說明。

5-c:存取模型伺服器

建立模型伺服器後,您可以在 GCP 專案的 Cloud Run 專區中找到已啟動的服務。

選取剛剛建立的模型伺服器。請確認服務名稱與 MODEL_SERVICE_NAME 相同。

Google Cloud 控制台 Cloud Run 清單

您可以按一下剛部署的模型服務,找到服務網址。

Google Cloud Find Service 網址

您可以查看「LOGS」部分,監控活動、查看錯誤訊息,以及追蹤部署作業的進度。

Google Cloud 控制台 Cloud Run 記錄

您可以查看「指標」部分,查看服務的指標。

Google Cloud 控制台 Cloud Run 指標

5-d:載入自行代管的模型

如果您在步驟 3 中為 LIT 伺服器設定 Proxy (請參閱「疑難排解」一節),就必須執行下列指令來取得 GCP 身分權杖。

# Find your GCP identity token.
gcloud auth print-identity-token

您將按照下列步驟載入自架式模型並調整其參數。

  1. 按一下 LIT UI 中的 Configure 選項。
  2. 選取「Select a base model」選項下方的「LLM (self hosted)」選項。
  3. 您必須在 new_name 中命名模型。
  4. 將模型伺服器網址輸入為 base_url
  5. 如果您要代理 LIT 應用程式伺服器 (請參閱步驟 3 和步驟 7),請在 identity_token 中輸入取得的 ID 權杖。否則,請將這個欄位留空。
  6. 按一下「Load Model」。
  7. 按一下「Submit」。

使用 LIT 載入 LLM 模型

6. 在 GCP 上與 LIT 互動

LIT 提供多項功能,協助您偵錯及瞭解模型行為。您可以執行簡單的操作,例如在方塊中輸入文字並查看模型預測結果,或是透過 LIT 的強大功能套件深入檢查模型,其中包括:

6-a:透過 LIT 查詢模型

載入模型和資料集後,LIT 會自動查詢資料集。您可以選取資料欄中的回應,查看各模型的回應。

LIT 檢視回應

LIT 回應

6-b:使用序列醒目顯示技巧

目前,LIT 上的序列醒目顯示技術僅支援自助代管模型。

序列醒目顯示是一種視覺化工具,可協助偵錯 LLM 提示,並醒目顯示提示中對特定輸出內容而言最重要的部分。如要進一步瞭解 Sequence Salience,請參閱完整教學課程,進一步瞭解如何使用這項功能。

如要查看重要性結果,請點選提示或回覆中的任何輸入或輸出內容,系統就會顯示重要性結果。

LIT 序列顯著性結果

6-c:手動編輯提示和目標

LIT 可讓您手動編輯現有資料點的任何 prompttarget。按一下 Add 後,系統就會將新輸入內容新增至資料集。

LIT 手動編輯

6-d:並排比較提示

您可以使用 LIT 並排比較原始和編輯後的提示。您可以手動編輯範例,並同時查看原始版本和編輯版本的預測結果和序列醒目分析。您可以修改每個資料點的提示,LIT 就會透過查詢模型產生對應的回覆。

比較資料集

6-e:並列比較多個模型

透過 LIT,您可以並排比較個別文字生成和評分示例的模型,以及特定指標的匯總示例。只要查詢各種已載入的模型,就能輕鬆比較各模型的回應差異。

LIT Compare Model Response

6-f:自動對照式產生器

您可以使用自動對照生成器建立其他輸入內容,並立即查看模型對這些內容的行為。

自動產生輸入內容

6-g:評估模型成效

您可以使用指標 (目前支援 BLEU 和 ROUGE 分數,用於文字產生) 評估整個資料集的模型成效,或是篩選或選取的任何子集範例。

LIT 檢視模式指標

7. 疑難排解

7-a:潛在的存取權問題和解決方案

由於 --no-allow-unauthenticated 會在部署至 Cloud Run 時套用,因此您可能會遇到下列禁止錯誤。

Google Cloud 禁止錯誤

存取 LIT App 服務的方法有兩種。

1. 將 Proxy 連線至本機服務

您可以使用下列指令,將服務代理至本機主機。

# Proxy the service to local host.
gcloud run services proxy $LIT_SERVICE_NAME

接著,您應該可以點選代理服務連結存取 LIT 伺服器。

2. 直接驗證使用者

您可以點選這個連結驗證使用者,直接存取 LIT 應用程式服務。這個方法也可以讓一群使用者存取服務。如果是多人協作的開發作業,這會是更有效的做法。

7-b:檢查 Model Server 是否已成功啟動

如要確保模型伺服器已成功啟動,您可以傳送要求來直接查詢模型伺服器。模型伺服器提供三個端點:predicttokenizesalience。請務必在要求中提供 prompt 欄位和 target 欄位。

# Query the model server predict endpoint.
curl -X POST  http://YOUR_MODEL_SERVER_URL/predict -H "Content-Type: application/json" -d '{"inputs":[{"prompt":"[YOUR PROMPT]", "target":[YOUR TARGET]}]}'

# Query the model server tokenize endpoint.
curl -X POST  http://YOUR_MODEL_SERVER_URL/tokenize -H "Content-Type: application/json" -d '{"inputs":[{"prompt":"[YOUR PROMPT]", "target":[YOUR TARGET]}]}'

# Query the model server salience endpoint.
curl -X POST  http://YOUR_MODEL_SERVER_URL/salience -H "Content-Type: application/json" -d '{"inputs":[{"prompt":"[YOUR PROMPT]", "target":[YOUR TARGET]}]}'

如果遇到存取問題,請參閱上方的第 7 節。

8. 恭喜

恭喜您完成程式碼研究室!放鬆片刻!

清除所用資源

如要清理實驗室,請刪除為實驗室建立的所有 Google Cloud 服務。使用 Google Cloud Shell 執行下列指令。

如果 Google Cloud 連線因閒置而中斷,請按照先前的步驟重設變數。

# Delete the LIT App Service.
gcloud run services delete $LIT_SERVICE_NAME

如果您啟動了模型伺服器,也必須刪除模型伺服器。

# Delete the Model Service.
gcloud run services delete $MODEL_SERVICE_NAME

其他資訊

請參閱以下資源,繼續學習 LIT 工具的功能:

聯絡人

如果對本程式碼研究室有任何疑問或問題,請透過 GitHub 與我們聯絡。

授權

這項內容採用的授權為 Creative Commons 姓名標示 4.0 通用授權。