LLM 评测
模型训完了,上线了——但它到底好不好?比上一版强多少?「感觉变好了」是工程决策最差的依据。
这一节理解论文和工业界真正在用的评测体系:评测指标怎么定义、开源评测框架怎么用、LLM-as-Judge 怎么让 强模型当裁判打分,以及如何看懂结果并写出有说服力的对比报告。
评测的本质是把「模型好不好」这个主观问题转化为可量化、可复现的客观分数。
核心三要素是标准化考题(benchmark)、自动化批改(metric)和可复现的流程(evaluation pipeline)。LLM-as-Judge 是近年兴起的做法:用 GPT-4 这类强模型来评判其他模型的回答质量。在 MT-Bench / Chatbot Arena 这类设置中,强模型 judge 与人类偏好有较高一致性;但一致性依赖任务、judge prompt、模型版本和答案格式。参考:MT-Bench / Chatbot Arena。
但 LLM-as-Judge 也有自己的陷阱——位置偏见、长度偏见和格式偏见都可能导致评分失真。
Perplexity 衡量模型在给定文本上预测下一个 token 的平均不确定性。它适合语言建模和预训练监控,但不能直接代表聊天质量、推理能力或安全性。
import os, json, sys, subprocess
from pathlib import Path
print(f"Python: {sys.version.split()[0]}")
print(f"工作目录: {os.getcwd()}")
# 检查关键依赖
deps = {
"openai": "OpenAI SDK",
"datasets": "HuggingFace datasets",
}
for pkg, desc in deps.items():
try:
__import__(pkg)
print(f" ✅ {pkg} — {desc}")
except ImportError:
print(f" ❌ {pkg} — {desc}(pip install {pkg})")
# 检查 lm-eval CLI 是否可用
try:
result = subprocess.run(["lm_eval", "--help"], capture_output=True, text=True, timeout=10)
if result.returncode == 0:
print(" ✅ lm_eval CLI — lm-evaluation-harness")
else:
print(" ❌ lm_eval CLI 未安装(pip install lm-eval)")
except FileNotFoundError:
print(" ❌ lm_eval CLI 未安装(pip install lm-eval)")
print("\n💡 安装缺失的包:")
print(" pip install openai lm-eval datasets")