只需 6 个位翻转,宇宙射线即可摧毁一个 LLM
开发者用异或模拟比特翻转,在 Qwen2.5-Coder-3B 上仅翻转 6 个权重比特就让模型完全失效,关键一击位于第…
一名独立开发者在个人博客中记录了一项「宇宙射线摧毁大模型」的趣味实验:在 Qwen2.5-Coder-3B 上以随机方式翻转 FP16 权重比特,仅 6 次翻转就让模型在编程基准上彻底失能,输出退化为循环刷出几个汉字。该实验的方法与定量发现,为讨论大模型在太空等高辐射环境下部署的脆弱性提供了一个直观的样本。
实验背景:在太空跑数据中心的隐忧
作者指出,在地球海平面,宇宙射线导致 DRAM 比特翻转(bit-flip)已属偶发事件;但在太空,辐射强度远高于地表,相关错误会更频繁。当 Elon Musk 等人提出把数据中心送入轨道,这类「软错误」对大规模神经网络的潜在影响便不再只是理论问题。已有学术工作研究过 LLM 的比特损坏,但多聚焦于对抗性、定向的位翻转,作者的实验则用均匀随机翻转作为「辐射诱导软错误」的玩具模型。
实验设置:本地 5070 显卡上的「小白鼠」
实验对象是 Qwen2.5-Coder-3B,采用 FP16 精度在作者笔记本的 RTX 5070 上本地推理。选择 Qwen2.5-Coder-3B 而不是更大模型,是受限于显存,但作者也强调会把它当作「本地 LLM 社区」的牺牲品。
关键细节:
- 评价基准为 HumanEval(HE),共 164 道编程题,作者承认 HE 已因被收入训练集而不再权威,但指出对这种「用激光做脑手术」的实验而言,基线差异影响有限。
- 模型基线成绩为通过 139 题,约 85%,并且作者明确强调「这个分数只会往下走」。
- 翻转实现非常直接,借助 Transformers 库直接寻址权重,单次翻转即一行异或:
weight ^= (1 << x),其中x为权重内待翻转位的索引。 - 推理采用 greedy 解码(
do_sample=False),让输出成为权重的确定性函数,便于复用同一翻转序列对比基线。 - 由于逐位翻转速度太慢,作者设计了一条「比特翻转磁带」,即按固定种子预生成翻转位置序列,每次实验性批量翻转约 500,000 个比特,再配合二分搜索快速定位「致命的那一击」。
关键发现:6 位比特就能「脑死亡」
作者原本预计首次可见损伤会出现在约 200 万甚至 300 万次翻转之后,但二分搜索的结果让他自己都吃了一惊:
- 在总共 6 次比特翻转后,模型便已完全不可用,输出退化为循环输出少量汉字。
- 关键的第 6 个比特位于第 27 层某个前馈(feed-forward)权重的指数最高位(MSB),这一个翻转就把权重从 0.021 变成 1352,跨越了多个数量级。
- 在到达这一击之前,模型在 HE 上的表现仍然与基线难以区分。
局限与说明
作者明确强调以下几点,避免误读实验结论:
- 不是真实粒子物理模拟,不模拟 GPU 真实辐射环境,也不区分 SRAM / 寄存器 / HBM 的具体出错概率,仅以「均匀随机翻转」作为软错误的玩具模型。
- 不防止「同一比特被反复翻转」,因此一次二分搜索实验内的比特命中是有放回抽样。
- 由于时间(新生婴儿)和算力受限,实验规模有限,没有覆盖不同模型、不同精度、不同任务的全方位对比。
- 没有讨论 ECC 等纠错机制的缓解效果,作者本人也提示读者「我没忽略 ECC,只是还没写到那部分」。
原文在第六个比特翻转的细节之后被截断,关于是否进一步放大损伤、或引入 ECC 后的鲁棒性变化,作者尚未在已发布内容中给出结论。整体而言,这篇博文再次提醒:在把 LLM 部署到太空、车规、嵌入式等高辐射或资源受限场景时,单个权重比特的价值远高于直觉,尤其是 FP16 指数段的 MSB——一次翻转,就足以让 49 亿参数的「智能」退化到吐汉字。
