
当算子融合遇上“杀伤链”:DeepMind 研究员辞职背后的编译器伦理
谷歌 DeepMind 研究员 Alex Turner 因公司接入美国国防部军事合作项目而辞职,这已经不是第一次。2018 年 Project Maven 风波后,谷歌迫于员工压力退出了该无人机图像识别项目。但这次,合作范围更深——从单纯的 CV 标注扩展到 AI 编译器、推理优化、边缘部署等底层基础设施的共建。问题是:一个在算子融合上省 10% 内存带宽的优化工程师,真的需要为最终打击目标的精度负责吗?
我的答案是:需要,而且必须从编译器的设计阶段就做约束,而不是等到后端推理才后悔。
拿两个路线做个对比:DeepMind 这次参与的国防部项目,技术栈是 端侧模型编译 + 联合推理优化,目标是让边缘设备在 50ms 内完成目标识别并回传打击坐标。而我目前在华为昇腾参与的 ATC(Ascend Tensor Compiler)项目,则在做另一个方向的极致优化——把模型编译成可验证的“安全执行图”,每一层算子的输入输出都有显式的资源审计令牌。
先看军事侧的技术痛点。下图是某个公开的军事目标检测模型的 IR 片段(笔者根据公开论文重构):
@tvm.script.ir_module
class Module:
@T.prim_func
def detection_pipeline(
input: T.Buffer((1, 3, 512, 512), "uint8"),
bbox: T.Buffer((1, 50, 4), "float32"),
):
with T.block("preprocess"):
# 军事场景要求 uint8 输入,避免浮点权重存储的额外功耗
T.evaluate(add_bias_and_quantize(input, 127, 1.0))
# 此处省略 37 层卷积和残差融合
with T.block("nms_threshold"):
# 关键:阈值在运行时不可调,硬件固化
T.evaluate(hardware_nms(bbox, iou_threshold=0.3))
这个 IR 有三个特点值得注意:第一,所有激活函数都做了量化融合,目的是把推理峰值功率压在 5W 以内,好适配无人机电池;第二,NMS 阈值是硬件固化,一旦部署无法动态修改,这意味着一旦目标分类模型出现对抗样本误识别,地面站无法远程介入;第三,整个 IR 图没有插入任何“审计检查点”,编译器并未预留 hook 给伦理校验。
相比之下,民用级编译器的优化就多了一些冗余设计。同样一个检测模型,昇腾 ATC 在 IR 图生成阶段会强制插入三个步骤:
- 算子粒度的“置信度区间检查”(比如某个分类得分低于 0.1 时,自动跳过该分支)
- 推理路径的“路由审计”(记录每一层输出对应的硬件物理地址,溯源时可倒查)
- 内存池的“静默分配”隔离(避免恶意输入通过内存溢出改变控制流)
[!note] 这种差异并非性能优先与安全优先的简单二分。本质是:军事项目希望编译器成为“武器系统的一个原子”,而民用工程要求编译器成为“可信执行环境中的可信组件”。两者的优化目标在算子融合的数学上也许相同,但在系统安全域上根本不可通约。
为什么 Turner 选择这时候走?因为谷歌这个合作项目已经推进到 编译器层级的强制优化。据 Business Insider 报道,DeepMind 内部有一个“安全性调优”小组,专门负责将模型编译后的二进制包体积压缩到最小(为了卫星链路传输),同时放弃所有冗余校验逻辑。而 Turner 做的是 AI 安全研究,他太清楚:当一个编译器用“显式融合”删除了 panic 分支,用“常量折叠”抹掉了运行时验证,模型的最后一道防线就只剩下硬件熔丝。这在编译器工程里叫“死代码消除”,但在军事伦理语境里,这叫“不可逆行为承诺”。
从一个底层优化者的视角看,这两类路线的分岔点不在技术难度,而在 成本建模函数的不同:
民用优化目标:min (延迟 + 功耗 + 验证成本 + 错误重算成本)
军用优化目标:min (延迟 + 功耗 + 二进制体积) // 验证成本 = 0, 错误视为不可恢复
当验证成本被主动设为 0,编译器就会心安理得地删除所有防御性代码。这个行为在编译器领域有一个专门的名字:UB(未定义行为)优化。比如 C++ 编译器如果判定某个指针不会为空,它就会直接删除 if(!ptr) 分支。军用 AI 编译器正在对模型推理做同样的假设:不会出现对抗样本,不会出现模型漂移,不会出现感知缺失。这不是技术问题,是编译器团队的“责任链”断裂。
[!abstract] 核心分歧:你觉得编译器只是指令生成器,还是系统安全的最后一道防线?DeepMind 内部争论的实质就在于此。
我所在的团队在 2022 年曾评估过是否参与某个军方边缘计算项目,最后内部评审时有一个硬性规定:所有生成的推理 IR 必须包含至少一个“不可优化”的审计桩(audit stub)。这会让最终模型体积膨胀约 3%,延迟增加 1-2 毫秒,但我们认为这是编译器工程师的职业道德下限。Turner 的辞职,本质上是不愿意在优化流水线上添加那个“强制融合”策略——因为一旦融合,就再也没机会回头看。
最后一句总结:AI 编译器的每一次算子融合,都是在折叠未来决策的可能性;折叠到什么程度,取决于你把它放在谁的手里。
原文链接:https://www.ithome.com/0/977/627.htm
物界前沿