本指南將幫助您在 VSCode 中對 twinkle-eval 進行 debug。
-
VSCode 擴充功能
- Python 擴充功能 (ms-python.python)
- Python Debugger 擴充功能
-
Python 環境
- 確保已安裝所有依賴套件
- 建議使用虛擬環境
首先執行測試腳本來確認環境設定:
python debug_test.py這個腳本會檢查:
- 基本模組匯入
- 配置檔案載入
- 工廠類別功能
- 資料集功能
- 主函數功能
-
在 VSCode 中按
Ctrl+Shift+D(或Cmd+Shift+Don Mac) 開啟 Run and Debug 面板 -
從下拉選單中選擇適合的 debug 配置:
- Debug Twinkle Eval (基本評測) - 使用預設配置進行評測
- Debug Twinkle Eval (自定義配置) - 使用自定義配置檔案
- Debug Twinkle Eval (下載資料集) - 下載 HuggingFace 資料集
- Debug Twinkle Eval (查詢功能) - 列出可用的 LLM 類型和評測策略
- Debug Twinkle Eval (建立配置) - 建立新的配置檔案
- Debug Twinkle Eval (模組測試) - 以模組方式執行
- Debug 特定檔案 - 對當前開啟的檔案進行 debug
-
按
F5開始 debug
F5- 開始 debug(使用預設配置)Ctrl+F5- 執行而不 debug
{
"name": "Debug Twinkle Eval (基本評測)",
"args": ["--config", "config.yaml"]
}- 使用
config.yaml進行基本評測 - 適合測試完整的評測流程
{
"name": "Debug Twinkle Eval (自定義配置)",
"args": ["--config", "${input:configPath}", "--export", "json", "csv"]
}- 會提示您輸入配置檔案路徑
- 輸出多種格式的結果
{
"name": "Debug Twinkle Eval (下載資料集)",
"args": ["--download-dataset", "cais/mmlu", "--dataset-subset", "anatomy"]
}- 下載 MMLU 資料集的 anatomy 子集
- 適合測試資料集下載功能
在程式碼中點擊行號左側或按 F9 來設定中斷點:
# 在 main.py 的第 423 行設定中斷點
download_huggingface_dataset(
dataset_name=args.download_dataset, # ← 在這裡設定中斷點
subset=args.dataset_subset,
split=args.dataset_split,
output_dir=args.output_dir,
)F10- 逐步執行(Step Over)F11- 逐步進入(Step Into)Shift+F11- 逐步跳出(Step Out)F5- 繼續執行
在 Debug 面板中:
- Variables - 查看當前作用域的變數
- Watch - 監控特定變數的值
- Call Stack - 查看函數呼叫堆疊
右鍵點擊中斷點,選擇 "Edit Breakpoint" 來設定條件:
# 例如:只在特定條件下中斷
args.download_dataset == "cais/mmlu"如果遇到 ModuleNotFoundError:
- 確認
PYTHONPATH設定正確 - 檢查虛擬環境是否啟動
- 確認所有依賴套件已安裝
如果配置檔案載入失敗:
- 檢查
config.yaml格式是否正確 - 確認檔案路徑是否正確
- 使用
--init重新建立配置檔案
如果遇到權限相關錯誤:
- 確認對
datasets/和results/目錄有寫入權限 - 檢查 API 金鑰是否正確設定
- 選擇 "Debug Twinkle Eval (下載資料集)" 配置
- 在
datasets.py的download_huggingface_dataset函數中設定中斷點 - 按
F5開始 debug - 使用
F10逐步執行,觀察變數值變化
- 選擇 "Debug Twinkle Eval (基本評測)" 配置
- 在
main.py的run_evaluation方法中設定中斷點 - 按
F5開始 debug - 使用
F11進入_evaluate_dataset方法
- 選擇 "Debug Twinkle Eval (建立配置)" 配置
- 在
config.py的load_config函數中設定中斷點 - 按
F5開始 debug - 觀察配置檔案的載入過程
在 debug 過程中,可以使用 Debug Console 執行 Python 程式碼:
# 檢查當前變數
print(args)
print(config)
# 測試函數
from twinkle_eval.datasets import find_all_evaluation_files
files = find_all_evaluation_files("datasets")
print(f"找到 {len(files)} 個檔案")在程式碼中加入 logging 來追蹤執行流程:
import logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
def some_function():
logger.debug("進入函數")
# ... 程式碼 ...
logger.debug("函數執行完成")在程式碼中插入 pdb 來進行互動式 debug:
import pdb
def some_function():
# ... 程式碼 ...
pdb.set_trace() # 程式會在這裡暫停
# ... 更多程式碼 ...💡 提示:如果遇到問題,請檢查 VSCode 的 Debug Console 輸出,通常會提供有用的錯誤資訊。