OpenCompass 評測
https://github.com/InternLM/Tutorial/blob/camp2/opencompass/readme.md
工具架構(gòu)
- 模型層:大模型評測所涉及的主要模型種類,OpenCompass 以基座模型和對話模型作為重點(diǎn)評測對象羡蛾。
- 能力層:OpenCompass 從本方案從通用能力和特色能力兩個(gè)方面來進(jìn)行評測維度設(shè)計(jì)漓帅。在模型通用能力方面,從語言、知識忙干、理解器予、推理、安全等多個(gè)能力維度進(jìn)行評測捐迫。在特色能力方面乾翔,從長文本、代碼施戴、工具反浓、知識增強(qiáng)等維度進(jìn)行評測。
- 方法層:OpenCompass 采用客觀評測與主觀評測兩種評測方式赞哗±自颍客觀評測能便捷地評估模型在具有確定答案(如選擇,填空懈玻,封閉式問答等)的任務(wù)上的能力巧婶,主觀評測能評估用戶對模型回復(fù)的真實(shí)滿意度乾颁,OpenCompass 采用基于模型輔助的主觀評測和基于人類反饋的主觀評測兩種方式涂乌。
- 工具層:OpenCompass 提供豐富的功能支持自動(dòng)化地開展大語言模型的高效評測。包括分布式評測技術(shù)英岭,提示詞工程湾盒,對接評測數(shù)據(jù)庫,評測榜單發(fā)布诅妹,評測報(bào)告生成等諸多功能罚勾。
評測方法
主客觀相結(jié)合
針對具有確定性答案的能力維度和場景,通過構(gòu)造豐富完善的評測集吭狡,對模型能力進(jìn)行綜合評價(jià)尖殃。針對體現(xiàn)模型能力的開放式或半開放式的問題、模型安全問題等划煮,采用主客觀相結(jié)合的評測方式送丰。
客觀評測
- 判別式評測:該評測方式基于將問題與候選答案組合在一起,計(jì)算模型在所有組合上的困惑度(perplexity)弛秋,并選擇困惑度最小的答案作為模型的最終輸出器躏。例如,若模型在 問題? 答案1 上的困惑度為 0.1蟹略,在 問題? 答案2 上的困惑度為 0.2登失,最終我們會(huì)選擇 答案1 作為模型的輸出。
- 生成式評測:該評測方式主要用于生成類任務(wù)挖炬,如語言翻譯揽浙、程序生成、邏輯分析題等。具體實(shí)踐時(shí)捏萍,使用問題作為模型的原始輸入太抓,并留白答案區(qū)域待模型進(jìn)行后續(xù)補(bǔ)全。我們通常還需要對其輸出進(jìn)行后處理令杈,以保證輸出滿足數(shù)據(jù)集的要求走敌。
主管評測
語言表達(dá)生動(dòng)精彩,變化豐富逗噩,大量的場景和能力無法憑借客觀指標(biāo)進(jìn)行評測掉丽。針對如模型安全和模型語言能力的評測,以人的主觀感受為主的評測更能體現(xiàn)模型的真實(shí)能力异雁,并更符合大模型的實(shí)際使用場景捶障。 OpenCompass 采取的主觀評測方案是指借助受試者的主觀判斷對具有對話能力的大語言模型進(jìn)行能力評測。在具體實(shí)踐中纲刀,我們提前基于模型的能力維度構(gòu)建主觀測試問題集合项炼,并將不同模型對于同一問題的不同回復(fù)展現(xiàn)給受試者,收集受試者基于主觀感受的評分示绊。由于主觀測試成本高昂锭部,本方案同時(shí)也采用使用性能優(yōu)異的大語言模擬人類進(jìn)行主觀打分。在實(shí)際評測中面褐,本文將采用真實(shí)人類專家的主觀評測與基于模型打分的主觀評測相結(jié)合的方式開展模型能力評估拌禾。 在具體開展主觀評測時(shí),OpenComapss 采用單模型回復(fù)滿意度統(tǒng)計(jì)和多模型滿意度比較兩種方式開展具體的評測工作展哭。
Quick Start
在 OpenCompass 中評估一個(gè)模型通常包括以下幾個(gè)階段:配置 -> 推理 -> 評估 -> 可視化湃窍。
- 配置:這是整個(gè)工作流的起點(diǎn)。您需要配置整個(gè)評估過程匪傍,選擇要評估的模型和數(shù)據(jù)集您市。此外,還可以選擇評估策略役衡、計(jì)算后端等茵休,并定義顯示結(jié)果的方式。
- 推理與評估:在這個(gè)階段映挂,OpenCompass 將會(huì)開始對模型和數(shù)據(jù)集進(jìn)行并行推理和評估泽篮。推理階段主要是讓模型從數(shù)據(jù)集產(chǎn)生輸出,而評估階段則是衡量這些輸出與標(biāo)準(zhǔn)答案的匹配程度柑船。這兩個(gè)過程會(huì)被拆分為多個(gè)同時(shí)運(yùn)行的“任務(wù)”以提高效率帽撑,但請注意,如果計(jì)算資源有限鞍时,這種策略可能會(huì)使評測變得更慢亏拉。如果需要了解該問題及解決方案扣蜻,可以參考 FAQ: 效率。
- 可視化:評估完成后及塘,OpenCompass 將結(jié)果整理成易讀的表格莽使,并將其保存為 CSV 和 TXT 文件。你也可以激活飛書狀態(tài)上報(bào)功能笙僚,此后可以在飛書客戶端中及時(shí)獲得評測狀態(tài)報(bào)告芳肌。 接下來,我們將展示 OpenCompass 的基礎(chǔ)用法肋层,展示書生浦語在 C-Eval 基準(zhǔn)任務(wù)上的評估亿笤。它們的配置文件可以在 configs/eval_demo.py 中找到。
安裝
數(shù)據(jù)準(zhǔn)備
解壓數(shù)據(jù)集
列出支持的數(shù)據(jù)集
啟動(dòng)評測
python run.py
--datasets ceval_gen \
--hf-path /share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b \ # HuggingFace 模型路徑
--tokenizer-path /share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b \ # HuggingFace tokenizer 路徑(如果與模型路徑相同栋猖,可以省略)
--tokenizer-kwargs padding_side='left' truncation='left' trust_remote_code=True \ # 構(gòu)建 tokenizer 的參數(shù)
--model-kwargs device_map='auto' trust_remote_code=True \ # 構(gòu)建模型的參數(shù)
--max-seq-len 1024 \ # 模型可以接受的最大序列長度
--max-out-len 16 \ # 生成的最大 token 數(shù)
--batch-size 2 \ # 批量大小
--num-gpus 1 # 運(yùn)行模型所需的 GPU 數(shù)量
--debug
測評結(jié)果
在1.8b書生模型在C_EVAL數(shù)據(jù)集上的性能: