你把 AI 評測從整份考卷縮成幾十題,新模型的分數就上升了。是模型進步,還是這次剛好抽到比較好寫的題目?BestRand 要處理的,就是小型 Eval 裡這種「幸運抽題」:用少量題目估整份成績時,怎樣降低偶爾偏得很遠的風險。
這篇寫給第一次接觸評測抽樣、願意在終端機貼幾行指令的讀者。你會先用試卷比喻理解方法,再讀懂一份 CPU 重跑結果,最後學會把平均誤差、排名與尾端風險分開驗收。不需要先懂高等數學,也不需要下載模型權重。
AlphaLab 於 2026 年 11 月 7 日,以官方程式快照 bed4eaad90ab 和內附 GPQA 分數矩陣,完成兩種選題方法、六種預算、各 1,000 個 seed 的離線計算。這是重用既有模型成績的抽題實驗;沒有重新生成模型答案,也沒有測量模型推論費用。
先說結論:小試卷可信度=平均偏差+排名保真+壞抽籤風險
BestRand=先抽候選試卷,再讓探針模型挑一份比較像題庫的試卷。探針像幾位先試寫的同學;正式要評的模型像後來的考生。先試寫的人協助選卷,正式考生的成績留到選完才看。
- Random 是直接隨機抽題;BestRand 加上探針引導的候選篩選。
- 看平均誤差,也要問「有多少次抽卷會超過我的容忍線」。
- CPU 可以重跑既有分數矩陣;自己建立新題庫的模型成績,仍有另外一筆成本。
一、BestRand 是什麼?把整份考卷縮成一張小考
Eval 是 evaluation 的簡稱,就是用題目和評分規則檢查 AI。Benchmark 是大家拿來比較的固定測試集;benchmark compression 則從中選出較小的一份,嘗試估計原本整份的成績。像餐廳試味道:不用吃完整鍋,但那一匙能不能代表整鍋,得另外檢查。
這個方向已有不同方法。2024 年的 tinyBenchmarks 研究透過挑選題目與統計估計減少評測量;其官方工具也提供小題庫與估計方式。BestRand 的學習價值,是把「直接隨機抽其實不差」和「偶爾抽得很偏」放在同一個問題裡。
BestRand 論文的方法章分析共同偏移:如果許多模型都容易答對同一批題目,一份偏容易的小考可能讓多個模型一起被高估。多放幾個相似模型來平均,也未必能消掉同一份試卷造成的偏移。白話說,很多人一起考高分,可能是大家都強,也可能是考卷比較簡單。
先讀過 AI Evals 入門,會知道題目、標準答案與評分器各管什麼。本篇多加一層:假設這些成績已經存在,小考能不能近似整份成績?它和 EarlyEval 的提前停止不同;這裡主要改的是選哪些題,而非同一題跑到哪一步停下來。
二、BestRand 的四個動作:先選卷,後看正式考生成績
怕「挑最好」其實是在偷看答案?關鍵在於最好是對誰而言。依這次固定版本的選題程式,比較的是每位探針在候選卷與候選池的平均分數差;不是找目標模型得分最高的那份。
- 「先裝一籃題目」:題庫共
N題,要保留k題,先隨機取min(4k, N)題做候選池,再取得五個探針在池內的分數。 - 「多抽幾份試卷」:從同一個池裡抽 128 份候選,每份都是
k題。所有候選重用那份探針成績。 - 「對齊五位同學的平均」:逐位比較候選平均與池平均,把五個差的平方加起來,挑距離較小的候選。這叫平方 L2 距離,可想成五格成績單的總偏離。
- 「請正式考生作答」:選定題目後,才讀取保留模型在這些題上的成績,用平均值估整份結果。

這裡有一個細節:參考點是候選池的平均,不是已知的整份題庫平均。池本身也可能抽偏;探針和新模型的行為也可能不同。因此,候選更貼近探針參考,不等於每次都更貼近目標模型真值。
三、先讀懂分數矩陣:一列模型,一欄題目
Matrix(矩陣)就是排整齊的數字表。官方 scores.npz 的方向是 [model, item]:一列是一個模型,一欄是一題;本次 GPQA 矩陣有 3,811 列、546 欄,分數是 0 或 1。這不表示每輪都拿全部模型來評;官方固定切分只使用五個建構模型與二十個保留測試模型。
依資料格式說明,模型名稱順序對應列,題目紀錄順序對應欄。題目 ID 不一定等於欄位索引。先照原順序載入,再用 split_scores() 取得兩組;自行排序名稱、卻忘了同步重排數字,就像把甲的成績貼到乙的名下。
Seed 是隨機程序的起點編號,可把它想成抽籤紀錄的編號。固定程式、套件、資料與 seed,方便重查抽到了哪一卷;測很多 seed,則是在看同一套方法遇到不同抽籤會怎樣。它們不是一千個獨立新模型,也不是一千份新收集的 GPQA 題庫。
四、BestRand 上手:固定版本,先跑十次,再擴成分布
怕第一次就跑太大?先選一個 benchmark。官方建議 Python 3.10,依固定版本 README建立獨立環境。以下在空白工作資料夾執行;完整儲存庫內附約 86 MiB 資料。先讀它的資料授權說明,再決定是否下載與轉散布題目。
git clone https://github.com/George-Ling3/BestRand.git
cd BestRand
git checkout bed4eaad90ab561e65d999b51cb94f7fcac0a60d
python3.10 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
python run.py --benchmarks gpqa --seeds 10 --output results/gpqa-first
這行會比較 Random 與 BestRand,依固定預算跑完六種比例:2%、5%、10%、15%、20%、50%,對應 11、27、55、82、109、273 題。先確認輸出資料夾裡有 run.json、per_seed.csv、per_benchmark.csv 與 summary.md,再擴大重跑。
python run.py --benchmarks gpqa --seeds 1000 --output results/gpqa-1000
換設定時用新資料夾;中斷後要接續,保留原本參數並加 --resume。程式會核對設定、資料與程式摘要。不要把十次與一千次的結果直接覆蓋混在一起,也不要先看哪個 seed 有利,才決定報哪一次。
想單獨看「先選題、後讀測試分數」的順序,可以在同一環境執行這段完整的小範例。它重用既有分數,印出所選欄位索引與第一個保留模型的估計分數。
from bestrand import select, estimate
from bestrand.data import load_benchmark
benchmark = load_benchmark("gpqa")
probes, held_out = benchmark.split_scores()
indices = select(probes, k=109, seed=0)
predicted = estimate(held_out[:, indices])
print(indices[:10].tolist())
print(round(float(predicted[0]) * 100, 3))
本次環境輸出前十個索引為 [490, 315, 93, 21, 257, 70, 462, 107, 291, 4],第一個模型估計為 33.945 分;整份平均約 31.502 分。單一模型、單一抽卷仍有落差,接著才要跨二十個模型與多個 seed 計分。這個例子能幫你檢查順序,不能單獨代表整套方法的表現。
五、CPU 重跑怎麼讀:平均差一點,壞抽籤也要另算
本次使用未修改的官方選題與 runner,Python 3.9.6、NumPy 1.26.4、SciPy 1.10.1,seed 為 0~999;讀者起步環境依前段官方 Python 3.10 建議準備。資料載入器核對了檔案雜湊與固定切分。以下只代表這份 GPQA 矩陣的離線重跑,與論文涵蓋更多 benchmark 的彙總分開看。
第一把尺:平均絕對誤差 MAE。先算每個保留模型「小卷分數-全卷分數」的絕對值,再對二十個模型平均;最後跨 seed 看平均。若全卷 60 分、小卷估 64 分,該模型誤差就是 4 個百分點。百分點是分數差,和「相對改善百分比」不同。
第二把尺:Spearman 排名相關。它看小卷和全卷的模型排序是否接近;愈接近 1,排序愈一致。依 SciPy 定義,常數輸入時相關係數未定義,不能把空值填成 0 或 1。大家一起高估幾分,排名仍可能相近;所以排名好,不等於分數準。
第三把尺:高誤差機率。本次照官方 runner,在同一預算下,用 Random 的 MAE 第 70 百分位數當共同門檻,再數兩種方法有多少 seed 的 MAE 嚴格超過它。20% 預算的門檻約 3.430 個百分點;這是一條相對基準線,不是通用安全標準。

這組結果的意思是:平均誤差改善幅度有限,但越過共同高誤差門檻的抽卷較少。它仍有高誤差結果,P95 也仍離零有距離;不要把「壞抽籤變少」讀成「抽到哪張都可靠」。此外,P95 是 95% 的 seed 落在其下的誤差位置,和二十個模型中最差者的誤差不是同一欄。

還有一個比勝負更實用的觀察:保留 2% 時,BestRand 的平均排名相關也只有約 0.297;到 50% 才約 0.887。對這批模型而言,極少題目的排序仍很不穩。選題方法有幫助,題數與模型差距也要一起考慮。
六、怎麼選預算?把選題成本和正式評測分開記
怕看到「不用 GPU」就以為評測免費?先分三筆帳:取得探針分數、搜尋候選、評測目標模型。本次第一筆已由公開矩陣提供,第二筆在 CPU 計算,第三筆也只是讀取既有數字。若換成自己的新任務,探針和目標模型都得真的作答,還要計入 Token、工具與環境時間。
用本例手算:候選池 min(4×109, 546)=436 題,五個探針需要 5×436=2,180 次模型-題目計分;每個目標模型再做 109 題。128 份候選重用池內分數,不是叫目標模型寫 128 份卷。這裡算的是次數;不同模型、題目長度與重試的單次成本可能不同。
選擇順序可以很簡單:先用 Random 當基準 → 寫好可容忍的 MAE 與高誤差機率 → 用保留模型比較 BestRand → 未達標就增加題數或回到全量。如果目標模型很少、探針又昂貴,選題前置成本值得先算;若小卷會重用在很多後續模型上,才更有機會攤薄。
換了模型家族、提示、工具或任務,留一批未參與選題的模型重新驗證。論文有域外與 Agent 實驗,但本次本機只跑文字 GPQA;自家 Agent 的工具失敗、長任務與重試成本,仍需要自己的資料。可把紀錄接到 Agent Harness 的驗收迴圈,並用 AI Eval 防洩漏測試檢查答案與測試資料的去向。
常見問題:BestRand 新手八個判斷
1. 不用 GPU 就能評測全新大模型嗎?
本文重跑的是既有分數。新模型產生答案所需的推論資源,要依你採用的模型與服務另算。
2. BestRand 會挑目標模型最擅長的題嗎?
官方選題函式讀的是探針分數。照本文順序先定索引,再讀保留模型;若看過目標成績再調題,評估就已換了問題。
3. 平均誤差小,就能放心只抽一次嗎?
先看分布。本次 20% 的 BestRand 仍有 20.2% seed 超過共同門檻;是否能接受,要對照你的決策代價。
4. 排名很像,分數就一定準嗎?
兩把尺各看一欄。所有模型一起被高估時,排序可以相近,絕對分數仍有偏差。
5. 1,000 個 seed 等於一千次模型測試嗎?
這裡是一千次抽題。它們重用相同題庫與固定模型成績,估的是抽樣變動,不是生成答案的隨機變動。
6. 為什麼 Random 超過 q70 不一定剛好 30%?
因為有同分與嚴格大於。官方用線性插值分位數,判斷式是 MAE > 門檻;落在門檻上的 seed 不計入。本次 50% 預算就約為 29.6%。
7. GPQA 結果能直接套到我的 Agent 嗎?
先做自己的保留集驗證。本次結果描述文字題的固定分數矩陣,並未量測你的工具流程或任務重試。
8. 第一次應該做多大?
先跑一個 benchmark、十個 seed。確認檔案、題數與模型切分,再擴成一千次。十次用來確認流程,估計少見大誤差則需要更多樣本。
給新手的三個重點
- 先選卷,後看保留成績:把選題與驗證的模型分開,保留固定版本與索引。
- 平均、排名、尾端一起看:小幅平均改善與高誤差機率,是不同的決策資訊。
- 先算整本帳,再談省錢:候選搜尋、探針作答與目標評測分開計量。
接著閱讀
左右滑動查看更多推薦
下一步:先交出一份能重查的小試卷報告
今天先跑 GPQA 的十次起步版,找到 per_seed.csv,確認同一預算下兩種方法都有紀錄。接著擴成分布,寫下你的 MAE 容忍線與超標比例,再決定要保留多少題。記住:小試卷可信度=平均偏差+排名保真+壞抽籤風險。能說清楚哪一張卷偏了多少,才知道模型是否真的進步。
想把這份報告接成持續驗收,可以從 AlphaLab AI 專區選下一個練習,或到 AlphaLab 課程安排完整的學習路徑。先保存一次可重查的結果,再擴大你的評測系統。




