近期有一则令人震惊的消息在 AI 领域传开:英伟达 GPU 被曝存在严重漏洞,一种名为 GPUHammer 的攻击方式,竟能让 GPU 上运行的大模型准确率从 80% 直接掉到 0.02% ,几乎可以说是 “渣都不剩”,多伦多大学的研究人员形容这种攻击就像是在模型中引发了灾难性的脑损伤。目前,研究人员已在英伟达 RTX A6000 上成功测试了该攻击,不过不排除其他型号同样可能受到影响。英伟达也针对此情况建议用户实施一项防御措施,但这一措施会使模型性能下降 10% 。
不是软件 Bug,而是 “物理攻击”
GPUHammer 属于首个成功攻击 GPU 显存的 Rowhammer 攻击,它并非通过常规的代码手段篡改模型文件,而是直接对显存进行 “物理操作”。其原理是攻击者反复 “敲击” 内存的某一行,进而引发相邻行中的比特翻转(即从 0 变为 1,或从 1 变为 0),以此悄然篡改数据。以往,Rowhammer 攻击主要针对 CPU 使用的内存,如今 GPU 也未能幸免。在 GPUHammer 攻击中,研究人员成功翻转了深度学习模型中的权重指数位。以 FP16 浮点数为例,仅仅翻转一个关键位,指数就能飙升 16 倍,这直接导致模型准确率崩塌 。
研究人员对 AlexNet、VGG、ResNet 等经典神经网络架构展开了攻击实验。结果显示,即便是单个比特的翻转,也可能致使模型性能彻底崩溃。遭受攻击后,模型的准确率会从原本的 80%(BaseAcc)直接暴跌至 0.1%(DegradedAcc.) 。如此一来,在自动驾驶场景中,汽车可能会错误识别交通标志;在医疗 AI 领域,则可能出现误诊情况。在云机器学习平台或 VDI 设置等共享 GPU 环境中,恶意租户也可能对相邻的工作负载发起 GPUHammer 攻击,进而影响推理准确性,甚至破坏缓存的模型参数 。可以说,GPUHammer 对 AI 时代的基础设施造成了毁灭性打击 。
有没有办法阻止 GPUHammer 攻击?
为应对 GPUHammer 攻击,英伟达发布了安全通知。通知中提醒用户可以开启一项名为系统级纠错码(ECC)的保护措施 。ECC(纠错码)的工作原理是:在每段内存数据旁额外添加几位 “校验码”。一旦发生比特翻转,例如 0 变为 1,ECC 便能自动识别并进行纠正 。不过,ECC 也存在一定局限性,它仅能修复单个比特错误,若遇到双比特翻转,就只能发出警告,无法进行补救 。
此外,ECC 还是一把 “双刃剑”,在缓解 GPUHammer 攻击的同时,会导致 GPU 性能衰退。研究团队表示,系统一般默认禁用 ECC,因为它存储在带外的单独内存区域中,启用它会导致 6.5% 的内存开销并造成减速。在 A6000 GPU 上启用 ECC,会导致 12% 的内存带宽损失,机器学习应用速度会降低 3%-10% 。
令人欣慰的是,研究团队指出,虽然目前尚未明确影响 GPU 比特翻转的根本原因,但不同的 GPU 配置、设计在遭受 Rowhammer 攻击时存在明显差异 。例如,RTX3080、A100 等芯片采用了与 A6000 GDDR 完全不同的 DRAM 架构,这些架构使得芯片能够避开 Rowhammer 的影响 。并且,在未来的 GPU 开发中,如果 GPU 集成了片上 ECC(on-die ECC),就可以纠正单位翻转,并默认检测双位翻转,这将进一步增加 Rowhammer 对 GPU 攻击的难度 。此外,在云端环境中,NVIDIA 的 MIG 和机密计算(CC)技术通过内存隔离,能有效阻止多租户共享同一 DRAM 存储,从而防止 Rowhammer 类攻击生效 。
尽管如此,AI 的发展日新月异,强大的 AI 也伴随着更为隐蔽的 “盘外招”。GPUHammer 只是一个开端,未来模型的安全建设之路还很漫长,需要我们所有开发者持续关注并积极应对 。各位开发者对这一情况有什么看法或者应对经验呢?另外对于有大模型训练需求的同学,也可以找云服务器,七月份有羊毛可以薅yijiacloud.com.cn,注册就有50算力金.