LLM 課程文件
評估
並獲得增強的文件體驗
開始使用
評估
對於透過 SFT 或 LoRA SFT 微調的模型,我們應該在標準基準上對其進行評估。作為機器學習工程師,您應該為您感興趣的目標領域維護一套相關的評估套件。在本頁中,我們將介紹一些最常見的基準以及如何使用它們來評估您的模型。我們還將探討如何為您的特定用例建立自定義基準。
自動基準
自動基準是用於評估語言模型在不同任務和能力方面的標準化工具。雖然它們為理解模型效能提供了有用的起點,但重要的是要認識到它們只是全面評估策略的一部分。
理解自動基準
自動基準通常由帶有預定義任務和評估指標的精選資料集組成。這些基準旨在評估模型能力的各個方面,從基本語言理解到複雜推理。使用自動基準的關鍵優勢在於它們的標準化——它們允許對不同模型進行一致的比較並提供可重現的結果。
然而,重要的是要理解基準效能並不總是直接轉化為實際效果。一個在學術基準上表現出色的模型,可能仍然會在特定的領域應用或實際用例中遇到困難。
通用知識基準
MMLU(大規模多工語言理解)測試涵蓋科學到人文學科的 57 個主題的知識。雖然全面,但它可能無法反映特定領域所需的專業知識深度。TruthfulQA 評估模型重現常見錯誤觀念的傾向,但它無法捕捉所有形式的錯誤資訊。
推理基準
BBH (Big Bench Hard) 和 GSM8K 專注於複雜的推理任務。BBH 測試邏輯思維和規劃,而 GSM8K 專門針對數學問題解決。這些基準有助於評估分析能力,但可能無法捕捉實際場景中所需的細微推理。
語言理解
HELM 提供了一個整體評估框架。HELM 等基準提供關於語言處理能力在常識、世界知識和推理方面的見解。但可能無法完全代表自然對話或特定領域術語的複雜性。
領域特定基準
讓我們看看幾個專注於數學、編碼和聊天等特定領域的基準。
MATH 基準是另一個重要的數學推理評估工具。它包含來自數學競賽的 12,500 道問題,涵蓋代數、幾何、數論、計數、機率等。MATH 之所以特別具有挑戰性,是因為它需要多步推理、形式數學符號理解以及生成逐步解決方案的能力。與簡單的算術任務不同,MATH 問題通常需要複雜的解題策略和數學概念應用。
HumanEval 基準是一個專注於編碼的評估資料集,包含 164 個程式設計問題。該基準測試模型生成功能正確的 Python 程式碼以解決給定程式設計任務的能力。HumanEval 之所以特別有價值,是因為它透過實際測試用例執行來評估程式碼生成能力和功能正確性,而不僅僅是與參考解決方案的表面相似性。問題範圍從基本的字串操作到更復雜的演算法和資料結構。
Alpaca Eval 是一個自動化評估框架,旨在評估指令遵循語言模型的質量。它使用 GPT-4 作為評判者,從有幫助性、誠實性和無害性等多個維度評估模型輸出。該框架包含一個包含 805 個精心策劃的提示的資料集,並且可以根據多個參考模型(如 Claude、GPT-4 等)評估響應。Alpaca Eval 之所以特別有用,是因為它能夠在不需要人工標註者的情況下提供一致、可擴充套件的評估,同時仍然能夠捕捉傳統指標可能遺漏的模型效能的細微之處。
替代評估方法
許多組織已開發出替代評估方法來解決標準基準的侷限性
LLM-as-Judge(以大型語言模型為評判者)
使用一個語言模型來評估另一個模型的輸出變得越來越流行。這種方法可以提供比傳統指標更細緻的反饋,儘管它也有其自身的偏見和侷限性。
評估競技場
像 Chatbot Arena 這樣的評估競技場透過眾包反饋為大型語言模型(LLM)評估提供了一種獨特的方法。在這些平臺上,使用者可以在兩個 LLM 之間進行匿名“對戰”,提出問題並投票選擇哪個模型提供了更好的答案。這種方法透過多樣化、具有挑戰性的問題捕捉真實世界的使用模式和偏好,研究表明眾包投票與專家評估之間存在高度一致性。儘管這些平臺功能強大,但它們也存在侷限性,包括潛在的使用者群偏見、傾斜的提示分佈以及主要關注實用性而非安全考量。
自定義基準套件
組織通常會開發根據其特定需求和用例量身定製的內部基準套件。這些套件可能包括領域特定知識測試或反映實際部署條件的評估場景。
自定義評估
雖然標準基準提供了有用的基線,但它們不應是您唯一的評估方法。以下是如何制定更全面的方法:
首先使用相關的標準基準來建立基線,並能夠與其他模型進行比較。
確定您的用例的具體要求和挑戰。您的模型將實際執行哪些任務?哪些型別的錯誤最具問題性?
開發反映您實際用例的自定義評估資料集。這可能包括:
- 來自您領域的真實使用者查詢
- 您遇到的常見邊緣情況
- 特別具有挑戰性場景的示例
考慮實施多層評估策略:
- 用於快速反饋的自動化指標
- 用於細緻理解的人工評估
- 針對專業應用的領域專家評審
- 在受控環境中的 A/B 測試
實施自定義評估
在本節中,我們將為我們的微調模型實現評估。我們可以使用 lighteval
在標準基準上評估我們的微調模型,該庫內建了各種任務。我們只需要定義要評估的任務和評估引數。
LightEval 任務使用特定格式定義:
{suite}|{task}|{num_few_shot}|{auto_reduce}
引數 | 描述 |
---|---|
套件 | 基準套件(例如,‘mmlu’,‘truthfulqa’) |
任務 | 套件中的特定任務(例如,‘abstract_algebra’) |
num_few_shot | 在提示中包含的示例數量(零樣本為 0) |
auto_reduce | 如果提示過長,是否自動減少少量樣本(0 或 1) |
示例:"mmlu|abstract_algebra|0|0"
在 MMLU 的抽象代數任務上進行零樣本推理評估。
評估管道示例
讓我們為我們的微調模型設定一個評估管道。我們將評估模型在與醫學領域相關的一組子任務上的表現。
以下是一個使用 Lighteval 和 VLLM 後端對與特定領域相關的自動基準進行評估的完整示例:
lighteval accelerate \
"pretrained=your-model-name" \
"mmlu|anatomy|0|0" \
"mmlu|high_school_biology|0|0" \
"mmlu|high_school_chemistry|0|0" \
"mmlu|professional_medicine|0|0" \
--max_samples 40 \
--batch_size 1 \
--output_path "./results" \
--save_generations true
結果以表格形式顯示:
| Task |Version|Metric|Value | |Stderr|
|----------------------------------------|------:|------|-----:|---|-----:|
|all | |acc |0.3333|± |0.1169|
|leaderboard:mmlu:_average:5 | |acc |0.3400|± |0.1121|
|leaderboard:mmlu:anatomy:5 | 0|acc |0.4500|± |0.1141|
|leaderboard:mmlu:high_school_biology:5 | 0|acc |0.1500|± |0.0819|
Lighteval 還包括一個 Python API,用於更詳細的評估任務,這對於以更靈活的方式操作結果非常有用。有關更多資訊,請檢視 Lighteval 文件。
✏️ 試一試! 在 Lighteval 中評估您的微調模型在特定任務上的表現。