使用 lm-evaluation-harness 评估 Amazon Bedrock 模型:以 HumanEval 为例

使用 lm-evaluation-harness 评估 Amazon Bedrock 模型:以 HumanEval 为例

💡 原文中文,约8300字,阅读约需20分钟。
📝

内容提要

本文介绍在Amazon Bedrock上使用lm-evaluation-harness框架评估LLM编程能力的方法,以HumanEval基准测试为例。通过LiteLLM适配层集成,对GPT-5.6 Sol、Claude Opus 4.8和Claude Sonnet 5进行测试,三者pass@1均达97-98%。同时利用Bedrock Prompt Caching技术,在批量评估中实现84%以上的输入token成本节省,并支持配置扫描优化参数。

🔎

延伸解读

评估结果接近饱和,选型需结合其他维度

三个模型在 HumanEval 上的 pass@1 均达 97-98%,差距很小,说明该基准对当前一线模型已接近饱和。因此,仅凭 HumanEval 分数难以区分模型优劣,选型时应结合延迟、成本、上下文窗口等实际需求。例如,GPT-5.6 Sol 速度最快,而 Claude Sonnet 5 在同等分数下可能更具性价比。

Prompt Caching 的触发条件与成本节省

Bedrock 的 Prompt Caching 要求缓存前缀至少 4096 tokens,本文使用约 5500 tokens 的系统提示确保稳定命中。在 164 题评估中,缓存命中率达 93.6%,成本从 $203.10 降至 $31.99,节省超 84%。但需注意,缓存仅在重复前缀场景有效,且首次请求按更高价格计费,实际节省取决于请求次数和前缀长度。

API 差异与适配技巧

Claude 模型在 Bedrock 上不支持 assistant prefill 和 temperature 参数,本文通过 monkey-patch 将 prefill 内容转移到用户消息,并自动丢弃 temperature 设置。这提示开发者在集成不同模型时需关注 API 差异,并采用类似适配手段,避免因参数不支持导致评估失败或结果偏差。

Q&A

如何在Amazon Bedrock上使用lm-evaluation-harness评估模型?

通过LiteLLM适配层将lm-evaluation-harness的调用转换为Bedrock Converse API,然后运行脚本(如run_humaneval_bedrock.py)即可。需要先配置AWS CLI、安装依赖并启用模型访问。

在HumanEval基准测试中,GPT-5.6 Sol、Claude Opus 4.8和Claude Sonnet 5的pass@1得分分别是多少?

GPT-5.6 Sol为98.2%,Claude Opus 4.8为97.0%,Claude Sonnet 5为97.0%。

Bedrock Prompt Caching如何帮助节省成本?在批量评估中能节省多少?

Bedrock Prompt Caching会缓存重复的系统提示前缀,后续请求以较低价格读取缓存。在HumanEval评估中,Claude Opus 4.8的缓存命中率达93.6%,节省了84.3%的输入token成本(从$203.10降至$31.99)。

使用Bedrock评估模型时,Claude Opus有哪些API限制?如何解决?

Claude Opus不支持assistant prefill和temperature参数。脚本通过monkey-patch将prefill内容转移到user消息中,并添加drop_temperature=True参数来跳过temperature设置。

lm-evaluation-harness的Sweep模式有什么作用?

Sweep模式自动测试12种配置组合(apply_chat_template、thinking、max_gen_toks),按pass@1排序推荐最佳参数组合,避免手动试错。

评估完成后会生成哪些报告文件?

生成results.json(结构化数据)、report.html(可视化报告,包含性能面板、缓存节省面板、逐题结果等)和sweep_results.json(配置对比)。

为什么在Bedrock上评估模型很重要?

因为需要验证模型在托管环境中的实际表现,包括与官方基准的一致性、跨区域路由和API参数限制的影响,以及Prompt Caching的真实成本节省效果。

🏷️

标签

➡️

继续阅读