GPU-Fuzz: Finding Memory Errors in Deep Learning Frameworks

本文介绍了 GPU-Fuzz,这是一种通过建模算子参数为形式化约束并利用约束求解器生成测试用例,从而高效发现深度学习框架(如 PyTorch、TensorFlow 和 PaddlePaddle)中 GPU 内存错误的新方法,并在实际应用中成功发现了 13 个未知漏洞。

Zihao Li, Hongyi Lu, Yanan Guo, Zhenkai Zhang, Shuai Wang, Fengwei Zhang

发布于 2026-03-03
📖 1 分钟阅读☕ 轻松阅读

Each language version is independently generated for its own context, not a direct translation.

这篇论文介绍了一个名为 GPU-Fuzz 的新工具,它的任务是给深度学习框架(比如大家熟悉的 PyTorch、TensorFlow)做“体检”,专门找出那些藏在 GPU(显卡)深处的内存错误

为了让你更容易理解,我们可以用**“盖摩天大楼”“寻找隐形裂缝”**的比喻来解释这项研究。

1. 背景:为什么我们需要这个工具?

想象一下,深度学习框架(如 PyTorch)就像是一个超级建筑公司,它负责建造各种复杂的“智能大楼”(AI 模型)。

  • GPU 是这些大楼里负责干重活的超级施工队
  • 算子(Operators) 是施工队使用的具体工具,比如“卷积”(用来识别图像)、“池化”(用来压缩信息)等。

问题出在哪?
虽然这些工具在大多数情况下很好用,但施工队(GPU 内核代码)是由人类用底层语言(CUDA)手写的。有时候,因为参数设置得太极端,或者计算太复杂,施工队会犯一些隐蔽的错误

  • 内存越界(Out-of-bounds): 就像工人想往墙上挂画,结果手一滑,把隔壁邻居家的墙给砸穿了。
  • 静默腐蚀(Silent Corruption): 最可怕的情况是,工人把画挂错了地方,但没发出任何警报,大楼看起来好好的,但里面结构已经坏了。等到用户使用时,数据就全错了,或者系统突然崩溃。

以前的检测工具(Fuzzers)主要关注大楼的设计图(神经网络结构)是否合理,却很少去检查施工队手里的具体工具在极端参数下会不会失灵。这就留下了一个巨大的盲区。

2. GPU-Fuzz 是怎么工作的?

GPU-Fuzz 就像是一个**“极端参数测试员”,它不再关心大楼长什么样,而是专门盯着施工队手里的工具参数**(比如步长、填充大小、核大小等)进行疯狂测试。

它的工作流程可以比作**“解谜游戏”**:

第一步:给工具画“说明书”(建模)

研究人员先把各种工具(算子)的使用规则写成数学公式。

  • 比喻: 就像给一把锤子写说明书:“如果你敲的力度(参数)超过 100,就不能用这个钉子,否则会断。”
  • 他们把 13 种常用工具(如卷积、池化)的规则都整理成了数学约束。

第二步:用“逻辑侦探”找漏洞(约束求解)

这是最核心的部分。GPU-Fuzz 使用一个强大的逻辑求解器(Z3),它像一个超级侦探

  • 侦探的任务是:在成千上万种可能的参数组合中,找出那些刚好卡在规则边缘的“刁钻”组合。
  • 比喻: 普通测试员会随机试几个数字(比如步长设为 1, 2, 3)。但 GPU-Fuzz 会想:“如果步长设为 67108607,同时输入尺寸是 40000,会发生什么?”它专门寻找那些人类程序员根本想不到的极端情况
  • 为了不让侦探只找到同一个答案,它还加了一种“哈希干扰”,强迫侦探不断去探索新的、未被测试过的区域。

第三步:跨平台“实战演练”(执行与检测)

一旦找到了这些刁钻的参数组合,GPU-Fuzz 就会立刻在 PyTorch、TensorFlow 和 PaddlePaddle 这三个主流框架里运行代码。

  • 它旁边还站着一个**“监控员”**(NVIDIA 的 compute-sanitizer),专门盯着内存读写。
  • 如果施工队(GPU 内核)试图访问不该访问的内存地址,监控员就会立刻报警:“抓到你了!这里越界了!”

3. 成果:挖出了什么?

这个工具非常有效,它在三个主流框架中挖出了 13 个以前没人知道的 Bug

  • 最惊险的发现: 很多 Bug 是**“静默”的**。也就是说,程序没有报错,也没有崩溃,但数据已经在后台被悄悄篡改了。这就像大楼的承重墙被蛀空了,表面看着完好,一旦住人(实际使用)就会塌。
  • 具体案例: 在 PyTorch 的一个反卷积操作中,因为参数组合太特殊(步长极大),导致计算元素数量时发生了整数溢出(数字太大装不进 32 位容器,变成了负数)。结果,GPU 以为只需要分配一点点内存,但实际上需要很大一块,于是它就在别人的地盘上乱写数据。

4. 总结与意义

GPU-Fuzz 的核心贡献在于视角的转换:

  • 以前的工具在检查**“大楼设计图”**(网络结构)。
  • GPU-Fuzz 在检查**“施工细节”**(算子参数和内存边界)。

打个比方:
如果 AI 框架是一个巨大的乐高城堡。

  • 以前的测试员会检查:城堡搭得稳不稳?形状对不对?
  • GPU-Fuzz 则是拿着放大镜,专门检查每一块积木的连接处,看看在某种极端的挤压下,积木会不会突然崩开,或者把旁边的积木撞飞。

这项研究告诉我们,为了保障 AI 系统的安全,我们不仅要关注模型本身,更要深入到底层,用这种“约束引导”的方法去挖掘那些隐藏在极端参数下的致命漏洞。这就像给 AI 世界穿上了一层更坚固的防弹衣。

在收件箱中获取类似论文

根据您的兴趣定制的每日或每周摘要。Gist或技术摘要,使用您的语言。

试用 Digest →