设计抗AI的技术评估方案
摘要
Anthropic工程师Tristan Hume探讨了为招聘性能工程师设计抗AI技术作业测试的挑战,并详细介绍了近期Claude模型如何开始超越人类候选人的表现。
暂无内容
查看缓存全文
缓存时间: 2026/05/08 09:30
# 设计抗AI的技术评估
来源:https://www.anthropic.com/engineering/AI-resistant-technical-evaluations
*作者:Tristan Hume,Anthropic性能优化团队负责人。Tristan设计——并重新设计——了帮助Anthropic招聘数十名性能工程师的居家测试。*
随着AI能力的提升,技术候选人的评估变得越来越困难。今天能很好区分人类技能水平的居家测试,明天可能就会被模型轻易解决——使其失去评估价值。
自2024年初以来,我们的性能工程团队使用了一项居家测试,候选人需要为模拟加速器优化代码。超过1,000名候选人完成了该测试,其中数十人现已加入我们公司,包括那些搭建Trainium集群并发布了自Claude 3 Opus以来所有模型的工程师。
但每个新的Claude模型都迫使我们重新设计测试。在相同时间限制下,Claude Opus 4的表现超过了大多数人类申请者。这仍然让我们能够区分最强候选人——但随后Claude Opus 4.5甚至与最强候选人持平。人类在无限时间下仍然可以超越模型,但在居家测试的限制条件下,我们无法再区分顶尖候选人的输出与我们最强模型的输出。
我现在已经迭代了三个版本的居家测试,试图确保它仍然具有区分度。每次我都学到了一些关于什么使评估对AI辅助具有鲁棒性、什么无效的新知识。
本文描述了原始居家测试的设计、每个Claude模型如何击败它,以及我越来越不寻常的方法,以确保我们的测试保持领先于我们最强模型的能力。虽然我们的工作随着模型的发展而演变,我们仍然需要更多优秀的工程师——只是需要越来越有创意的方式来找到他们。
为此,我们将发布原始居家测试作为公开挑战,因为在无限时间下,最佳人类表现仍然超过Claude所能达到的。如果你能超越Opus 4.5,我们很乐意收到你的来信——详情见本文底部。
## 居家测试的起源
2023年11月,我们正准备训练和发布Claude Opus 3。我们已获得了新的TPU和GPU集群,大型Trainium集群即将上线,我们在加速器上的花费远超以往,但我们的性能工程师数量不足以匹配新的规模。我在Twitter上发帖(https://x.com/trishume/status/1730386529997238605?s=20)邀请人们给我们发邮件,这带来了比我们的标准面试流程能评估的更多有前途的候选人,而这个流程会消耗员工和候选人大量时间。
我们需要更高效的评估方式。于是,我花了两周时间设计了一个居家测试,能够充分捕捉职位需求并识别最有能力的申请者。
### 设计目标
居家测试名声不佳。通常它们充斥着通用问题,工程师觉得无聊,筛选效果差。我的目标不同:创造真正有趣的内容,让候选人兴奋参与,并让我们能高分辨率地捕捉他们的技术技能。
这种形式相比现场面试,在评估性能工程技能方面也有优势:
**更长的时间跨度:**工程师很少面临不到一小时的编码截止日期。4小时窗口(后来缩短到2小时)更好地反映了工作的实际性质。它仍然比大多数真实任务短,但我们需要平衡其繁重程度。
**真实的环境:**没有人在旁观看或要求讲解。候选人在自己的编辑器中不受干扰地工作。
**理解和工具的时间:**性能优化需要理解现有系统,有时还需要构建调试工具。两者都难以在正常的50分钟面试中真实评估。
**与AI辅助兼容:**Anthropic的一般候选人指南(https://www.anthropic.com/candidate-ai-guidance)要求候选人在未注明的情况下不使用AI完成居家测试。对于此居家测试,我们明确注明允许使用。
时间跨度更长的问题AI更难完全解决,因此候选人可以使用AI工具(正如他们在工作中会做的那样),同时仍需要展示自己的能力。
除了这些形式特定的目标,我应用了设计任何面试时的相同原则,使居家测试:
**代表真实工作:**问题应该让候选人尝到实际工作的滋味。
**高区分度:**居家测试应避免依赖单一洞察的问题,确保候选人有多次机会展示全部能力——尽可能减少偶然性。它还应该有广泛的分数分布,并确保足够的深度,即使强候选人也做不完所有内容。
**不需要特定领域知识:**基础扎实的人可以边工作边学习 specifics。要求狭窄的专业知识会不必要地限制候选人池。
**有趣:**快速开发循环、有深度的问题、以及发挥创造力的空间。
### 模拟机器
我构建了一个Python模拟器,模拟一个具有类似TPU特性的假加速器。候选人在该机器上优化代码,使用热重载的Perfetto(https://perfetto.dev/)跟踪,显示每条指令,类似于我们在Trainium上的工具(https://awsdocs-neuron.readthedocs-hosted.com/en/latest/tools/neuron-explorer/overview-device-profiles.html)。
该机器包含使加速器优化有趣的特性:手动管理的暂存器内存(与CPU不同,加速器通常需要显式内存管理)、VLIW(每个周期并行运行多个执行单元,需要高效的指令打包)、SIMD(每条指令对多个元素进行向量操作)和多核(跨核心分配工作)。
任务是并行树遍历,故意不做深度学习风格,因为大多数性能工程师尚未从事深度学习工作,可以在工作中学习领域 specifics。该问题的灵感来自无分支SIMD决策树推理,这是一个经典的ML优化挑战,向过去致敬,只有极少数候选人之前遇到过。
候选人从完全串行实现开始,逐步利用机器的并行性。热身是多核并行,然后候选人选择攻克SIMD向量化还是VLIW指令打包。原始版本还包含一个需要候选人调试的bug,锻炼他们构建工具的能力。
## 早期结果
最初的居家测试效果很好。Twitter批次中有一人的得分远高于其他所有人。他于2月初开始工作,比我们通过标准流程首批招聘的员工早两周。该测试被证明具有预测性:他立即开始优化内核,并找到了一个涉及张量索引数学32位溢出的发布阻塞编译器bug的解决方案。
在接下来的一年半里,约1,000名候选人完成了该测试,它帮助我们聘用了目前大部分性能工程团队。它对那些经验有限的候选人尤其有价值:我们几位表现最高的工程师直接从本科毕业,但在测试中展示了足够的技能,让我们有信心聘用他们。
反馈是积极的。许多候选人因为享受其中而工作了超过4小时。最强的无限时间提交包括完整的优化迷你编译器,以及几个我未预料到的巧妙优化。
### 然后Claude Opus 4击败了它
到2025年5月,Claude 3.7 Sonnet已经攀升到超过50%的候选人完全委托给Claude Code会更好的地步。我随后在居家测试上测试了Claude Opus 4的预发布版本。它在4小时内提出了比几乎所有人类更优化的解决方案。
这不是我第一次被Claude模型击败的面试。我在2023年设计了一个现场面试问题,专门因为我们当时的问题围绕常见任务,早期Claude模型有大量相关知识,可以轻松解决。我试图设计一个需要更多问题解决技能而非知识的问题,仍然基于我在工作中解决的真实(但小众的)问题。Claude 3 Opus击败了该问题的第一部分;Claude 3.5 Sonnet击败了第二部分。我们仍在使用它,因为我们的其他现场问题也不抗AI。
对于居家测试,有一个直接的修复。该问题的深度远超任何人能在4小时内探索的,因此我使用Claude Opus 4识别它开始挣扎的地方。这成为了版本2的新起点。我编写了更清晰的入门代码,添加了新的机器特性以增加深度,并移除了多核(Claude已经解决了,且只会拖慢开发循环而不增加区分度)。
我还把时间限制从4小时缩短到2小时。我最初选择4小时是基于候选人反馈,希望减少因bug或困惑而陷入困境的风险,但调度开销导致我们的流程延迟数周。两小时更容易在周末安排。
版本2强调巧妙的优化洞察,而非调试和代码量。它为我们服务了几个月。
### 然后Claude Opus 4.5击败了那个版本
当我测试Claude Opus 4.5的预发布检查点时,我观察Claude Code在2小时内逐步改进解决方案。它解决了初始瓶颈,实现了所有常见的微优化,在不到一小时内达到了我们的通过阈值。
然后它停止了,确信自己遇到了不可逾越的内存带宽瓶颈。大多数人类也会得出相同结论。但有利用问题结构绕过该瓶颈的巧妙技巧。当我告诉Claude可能达到的周期数时,它思考了一会儿并找到了技巧。然后它调试、调优并实现了进一步优化。到2小时标记时,它的分数与同一时限内最佳人类表现持平——而那个人类大量使用了带引导的Claude 4。
我们在内部测试时计算工具中进行了更严格的测试,确认它既能在2小时内击败人类,也能随时间继续提升。发布后我们甚至以通用方式改进了工具,获得了更高分数。
我有了问题。我们即将发布一个模型,而我们的居家测试最佳策略将是委托给Claude Code。
## 考虑选项
一些同事建议禁止AI辅助。我不想这样做。除了执行挑战之外,我有一种感觉,鉴于人们在我们的工作中继续发挥重要作用,我应该能找到*某种*方式让他们在*有AI*的环境中——就像他们在工作中会有的那样——脱颖而出。我还不想屈服于人类只在几小时以上的任务中具有优势的想法(https://metr.org/blog/2025-03-19-measuring-ai-ability-to-complete-long-tasks/)。
其他人建议把标准提高到"大幅超越Claude Code单独能达到的水平"。这里的顾虑是Claude工作很快。人类通常花2小时中的一半阅读和理解问题,然后才开始优化。试图引导Claude的人类可能总是落后,只在事后才理解Claude做了什么。主导策略可能变成坐观其成。
如今Anthropic的性能工程师仍有很多工作要做,但更像是困难的调试、系统设计、性能分析、弄清楚如何验证我们系统的正确性,以及弄清楚如何让Claude的代码更简单优雅。不幸的是,这些东西很难在客观方式中测试,而不需要大量时间或共同背景。设计代表工作的面试一直很难,但现在比以往任何时候都难。
但我也担心,如果我投资设计新的居家测试,要么Claude Opus 4.5也会解决它,要么它会变得如此具有挑战性,以至于人类不可能在两小时内完成。
### 尝试1:不同的优化问题
我意识到Claude可以快速帮我实现我设计的任何东西,这促使我尝试开发更难的居家测试。我选择了一个基于我在Anthropic做过的更棘手的内核优化之一的问题:在2D TPU寄存器上进行高效的数据转置(https://en.wikipedia.org/Transpose),同时避免bank冲突(https://feldmann.nyc/blog/smem-microbenchmarks)。我将其提炼为模拟机器上的更简单问题,并让Claude在一天内实现了更改。
Claude Opus 4.5找到了一个我甚至没想到过的优化。通过仔细分析,它意识到可以转置整个计算,而不是想办法转置数据,并相应地重写了整个程序。
在我的真实案例中,这是行不通的,因此我修改了问题以移除该方法。Claude随后取得了进展,但找不到最高效的解决方案。看起来我有了新问题,现在只希望人类候选人能足够快地解决它。但我有些疑虑,因此使用Claude Code的"ultrathink"功能和更长的思考预算仔细检查……它解决了。它甚至知道修复bank冲突的技巧。
事后看来,这不是正确的问题方向。许多平台的工程师都在数据转置和bank冲突上挣扎过,因此Claude有大量训练数据可以借鉴。虽然我是从第一性原理找到解决方案的,但Claude可以借鉴更大的经验工具箱。
### 尝试2:走向更奇怪的方向
我需要一个问题,让人类推理能战胜Claude更大的经验基础:足够偏离分布的东西。不幸的是,这与我"让人 recognizable 像工作"的目标冲突。
我思考了我享受过的最不寻常的优化问题,想到了Zachtronics游戏(https://www.zachtronics.com/)。这些编程解谜游戏使用不寻常的、高度受限的指令集,迫使你以非传统方式编程。例如,在Shenzhen I/O(https://www.zachtronics.com/shenzhen-io/)中,程序分布在多个通信芯片上,每个芯片只容纳约10条指令,带有一两个状态寄存器。巧妙的优化通常涉及将状态编码到指令指针或分支标志中。
我设计了一个新居家测试,包含使用微小、高度受限指令集的谜题,优化解决方案以最小化指令数。我实现了一个中等难度的谜题,并在Claude Opus 4.5上测试。它失败了。我填充了更多谜题,并让同事验证,对问题沉浸度不如我的人仍然可以超越Claude。
与Zachtronics游戏不同,我有意不提供可视化或调试工具。入门代码只检查解决方案是否有效。构建调试工具是被测试的一部分:你可以插入精心设计的打印语句,或让编码模型在几分钟内生成交互式调试器。如何投资工具的判断是区分度的一部分。
我对新居家测试相当满意。它可能比原始版本的方差更低,因为它包含更多独立的子问题。早期结果有希
相似文章
@IntuitMachine: https://x.com/IntuitMachine/status/2058141021842571510
本文认为,在生产AI中,评估是最难的问题,而非生成,并将AI的自我知识分解为校准、判别和表达,这对系统设计具有启示意义。
@zodchiii:三位Anthropic工程师花了16分钟讨论AI智能体在生产中真正成功的要素。如果这些人…
Anthropic工程师分享了让AI智能体在生产中成功落地的见解,重点介绍了他们在Claude项目中验证的有效模式。
AI系统常以测试中不显现的方式失败?
讨论AI工作流中干净的基准测试环境与混乱的真实世界使用之间的常见差距,导致生产环境失败,并提及评估平台如Confident AI、Braintrust和Langfuse。
@AnthropicAI:在高Claude使用率职业(如软件工程)中,人们对被取代的担忧更甚……
Anthropic报告称,软件工程师等高频使用Claude的群体,比那些AI接触较少的岗位更担心被取代。
解密 AI Agent 的评测方法
Anthropic 发布了一份指南,介绍如何为 AI Agent 设计严谨的自动化评测方案,重点解决了多轮交互和状态修改带来的复杂性挑战。