大模型的評測應該怎么弄?
之前在Baichuan 7B的時候,有個哥們在github發布了一個issue,說這個模型有C-eval測試集泄漏的問題,具體證據為:
當然,百川也不避諱,讓大家充分討論這個問題。
官方給出了一個解釋:
其實沒什么毛病,另外我在剛發布的13B模型上測試了這個,還是存在同樣的問題。另外我嘗試了用13B的base模型讓模型續寫,一看就是訓練了不少題庫。。
首先C-eval本身題目是公開的離線測試,答案是不可見在線提交的形式來評測,這樣能一定程度上規避泄漏的問題。
但由于大模型的特殊性,其訓練數據講究大而全,巴不得全網的數據都塞進去。
目前評測大模型的方法,除了手動體驗,人工評測,其他都是數據集題目的形式。
數據集旨在考察大模型的百科全書式的知識理解程度,為了好評測,把他們轉化成客觀選擇題的形式。
這樣的排行榜會存在一個很尷尬的問題,那就是一眾中文大模型在排行榜上吊打GPT3.5甚至GPT4,實際體驗卻不盡人意。
比如經典的C-eval排行榜目前是這樣的:
但大家心里都有一桿秤,幾斤幾兩都門兒清。
這就是為什么現在賣數據最火的是題庫數據,仔細想想,這就跟高考刷題一樣。
這里引用下八友科技CEO(國內著名數據提供商,大模型數據市占率50%)的觀點:
我認為大模型的主戰場分3個階段。
第一個階段是重點突破“有正確答案”的領域。比如中高考,這個通過簡單的得分情況,可以讓模型的能力進行比較,這一步非常關鍵?,F在教輔類數據非常關鍵,也就在于此。
除了這個,還有就是場景結合的,這個因為有場景優勢的企業有獨家數據,有獨家業內人士,也就是有正確“答案”,可以判斷好壞,因此這也是一個重點戰場。
第二個階段是重點突破“沒有正確答案”的領域。這個階段評價遇到了困難,但是基于第一個階段,且有了足夠多數據,可以認為大模型給出的預測,或者判斷,理解是具有高水平的,只是這個沒法或者很難給出標準答案,這個領域更加藝術的感覺,你會覺得大模型給出的回答更好,但是你也不知道最好是什么樣子的。
第三個階段是重點突破涉及生產力相關的領域,也就是跳過了第一階段證明階段,和第二階段的炫耀階段,直接推動社會生產力發展。
目前數據提供商最值錢的數據就是題庫了,國內大模型很懂得投機取巧,反正你是知識類客觀題評測,我把全網的題庫數據都塞進去。
實在買不到買不全的數據,我還可以用測試集的每一道題目去反向爬取互聯網相關內容,爬不到原題也能找到差不多的數據,再把他們都塞進去,針對性刷題。
這就是離線測試集問題的所在了,這對大模型來說,相當于開卷考試。
真正的考試連題干也不能讓你看到。
所以針對客觀題的大模型評測應該怎么做呢?
我們設想大模型參與的閉卷考試。
作為一個kaggle老玩家,這里推薦一個kaggle比賽,昨天剛上新的熱乎的數據,https://www.kaggle.com/competitions/kaggle-llm-science-exam/ ,數據來自于參考維基百科話題,用gpt生成+人工過濾的科學領域多選題,附帶參考訓練集,測試集隱藏不可見,提交模型在線推斷,最高支持10B左右模型推斷。
眾所周知,kaggle是谷歌家的,谷歌這是在眾籌大模型了。。。
拋開數據本身質量不管,這個模式也存在一個問題,對發起方的經濟實力有一定要求,比如上百B的模型咋推斷?
另外如果模型對部署有特定要求怎么辦?
還有就是提交模型和推斷代碼,無疑于把自己的核心科技提供給第三方了,所以這里存在一個信任的問題。
另外考察數據的話,kaggle上這個評測領域也過于局限了,不夠全,更像是一個大榜單中小數據。
評測的數據本身要注意什么呢?這里引用了的一些思考 :
原文:https://mp.weixin.qq.com/s/Q4IU6dbwy5U-iQ0ah_TGBA
大模型評測其中四點比較重要:能力邊界、case邊界、指令形式、自動化量化。
能力邊界
在今天這個大模型效果目前,我們需要測它的哪些能力?聽到比較多的有代碼能力,推理能力,寫作能力,多輪對話能力等等,這些能力字面意思很好理解,但是如果我們想真真整理出一個好的技能樹也是比較困難的,比如說文本分類和閱讀理解這個歸納到哪個能力?有的會說放到NLP基本任務,那有的閱讀理解case(比如先需要在文本中找到對應的信息,然后進行一定的加減等邏輯運算才能得到結果)需要很強的推理能力,這個是該放到閱讀理解還是放到推理能力?
所以劃分的能力是否具有一個很好的覆蓋性和正交性是這里需要考慮的點。
case邊界
假設當前我們在測兩個模型的數學能力,極端情況下,測試的100道case都是類似 “1+1等于幾?”,我們拿這些case同時問gpt4和市面上一個其他的模型,得到的回答都是2,于是我們得出結論:兩個模型數學能力接近。這顯然不靠譜 ?。?!
又或者我們現在在測試寫作能力,測試case是“幫我寫一個懸疑故事”,結果兩個模型都寫出來了,都是有點懸疑的,那么得到結論寫作能力接近,這結論顯然也不靠譜。
為什么不靠譜呢?假設我們現在同樣是在考察數學能力和寫作能力,但是case分別是:(104+903)*2-18^2-10、幫我寫一個懸疑故事,故事背景發生在唐朝,主人公是一名錦衣衛,故事的開頭要是從一件很小的事帶入然后發現了更多背后的故事。寫出前三章故事。
還有各種各樣的復雜指令,比如中英混著問,就能更好的測評模型的雙語能力。
隨著測試的case變得復雜后模型所能cover的能力可能機會看出明顯的差距,自然也就得到不同的結論了,起碼不會草率的得出比如數學能力一樣。
所以測試的case是否具有多樣性和復雜性是這里需要考慮的點。
指令形式
這里單獨把指令形式拿出來,是想提一下prompt engineering這件事。
我們知道如今這些大模型對prompt很是敏感,同一個問題回答錯了,可能換種問法比如加個“一步步推理”引導語他就又能回答對了,又比如通過few-shot這種形式先給它幾個例子然后再問類似的問題,就能很好的回答。
每個模型對prompt的敏感度又不一樣,對于同一個問題,同一個模型得到的結論可能都是不一樣的,那怎么辦呢?
這里筆者的建議是不要本末倒置,我們現在做的事情是測評,尤其是在做多個模型之間的對比,那么prompt就應該是符合人提問習慣的指令形式,對于某個問題人類怎么喜歡問就怎么來,如果模型不能get到,那就是你的指令對齊或者泛化做的不好,而不是說要花很大力氣去寫prompt迎合各個模型。
那么返回頭來說,如果現在的工作是在測當前這個模型到底有沒有這個知識,舉個不太恰當的例子,假設你正在研發一個大模型,發現問“中國的capital是哪里?”他居然回答是蘋果,那這個時候需要定位這個問題,你就可以先用中文問問“中國的首都是哪里?”看看能不能回答對,又或者先舉幾個類似的例子告訴模型,然后再問它,如果能夠回答說嗎模型本身是有“北京是中國的首都”這個通用知識的,可能是英文或者雙語能力不行,所以這里通常的做法是,會用few-shot的指令形式去測底座模型,先看看底座模型是否有這個能力,如果沒有,那后面訓練什么的都是很難。又比如你是一個運營工作人員,現在也只能用A這個模型來完成某一件事,那就可以花點時間來做prompt engineering,來使得輸出最大化的滿足你的需求。
所以作為測評,指令設計不應該特意過多的去迎合模型(除非有如上的特殊目的等等),甚至應該像上一節說的,要多樣性,才能更好的探究到模型的理解能力
自動化量化
最后的評估都需要有一個量化的結論,理論來說,人工評估是最保險的,甚至一些能力需要一些專業人員(代碼能力、各個學科的題目等等),但是這樣效率過于低下且成本過高,尤其是對于模型的迭代。目前業界的做法通常是chatgpt或者gpt4去打分,所以這里的難度就變成了打分prompt怎么寫,它需要考慮的點有兩個,一個是怎么寫使得gpt4能夠更好的理解當前的,另外一個是怎么約束好輸出,方便我們直接可以根據輸出進行量化,比如做選擇題等等。
怎么評價一個模型的好壞,不僅困難,而且十分重要,絕對是一個核心的科技,這現在也是除了oepnai各家沒怎么搞定的一個問題。
這個問題很關鍵,是因為基座大模型的訓練耗時耗力,如果不能想出很好的提早檢驗方式的話,做實驗的速度會慢特別多,所有的時間成本都可以折合成算力上。
所以你做實驗慢了,相當于比別人少了GPU,足夠觸目驚心吧。
openai不僅僅卡多,還有實驗效率倍增的buff,相當于 卡 * 效率倍數。
我們從公開的資料能了解到,openai是通過小模型來推演大模型,訓練的部分階段推演全部階段,從而預測最終大模型的好壞。
具體的技術細節openai也沒有透露特別多,是核心科技之一,大模型評測是非常重要和有影響力的一個方向,建議大家持續關注。
編輯:黃飛
?
評論
查看更多