某节大瓜,GPU集群投毒!

2024年10月19日16:53:04 发表评论 160 °C
摘要

前些日子,宇宙厂被曝有人对商业化整个GPU集群里恶意注入病毒..

前些日子,宇宙厂爆出了个惊天大瓜。

某节大瓜,GPU集群投毒!

自回归团队某实习生,被公司直接送进号子,喜提银手镯一副。原因是实习生对商业化整个GPU集群里恶意注入病毒。最终导致,8000 多张 H100 的 GPU 集群,一个多月的训练结果,全是错的...

这事儿在朋友圈已经停不下来了,内容实在太炸裂了!具体什么程度?技术总监亲自给副总裁汇报的程度!!

某节大瓜,GPU集群投毒!

网传,事情的起因大致是,leader 把调度给了 dit 生图团队,冷落了自回归团队。实习生作为北大毕业的高材生,可能心生怨气,于是选择了恶意报复。最后直接给公司整了波大的,当然,也把自己的前程断送了。

据传,此人的“投毒”操作主要是利用了 Huggingfaceload ckpt函数漏洞。

某节大瓜,GPU集群投毒!

load ckpt是用于加载模型的保存状态的函数。具体的问题,是TFPreTrainedModel()类的load_repo_checkpoint()函数在反序列化未受信任的数据时使用了pickle.load(),而 pickle 模块在反序列化时会执行数据中的任意代码。

某节大瓜,GPU集群投毒!

攻击者可以通过构造一个恶意的序列化数据(如恶意的checkpoint文件),利用这个存在漏洞的函数的反序列化机制来执行任意代码。这直接导致,任何使用这个函数的人,在正常的训练或推理过程中只要加载了这个checkpoint,攻击者的恶意代码都会直接执行。

因此,存在的攻击方式包括修改或注入恶意代码,使得在模型加载时执行攻击者指定的操作,如篡改模型权重、修改训练参数或截取模型数据;以及通过操作文件路径,访问或修改其他用户的模型文件。

而此人使用的大概是第一种方法,注入代码,动态修改别人的optimer,修改参数梯度的方向,以及在各种地方随机sleep一小段时间。众所周知,深度学习中的训练过程依赖于梯度下降来更新模型参数,从而不断优化损失。修改梯度方向意味着攻击者对模型的反向传播过程中计算出的梯度进行了篡改,导致模型更新时,一直朝错误的方向优化。而sleep操作通常不太可能引发程序崩溃或报错,但会明显降低模型训练的速度。

这两个操作只能用惊为天人来形容了。一方面,疯狂的sleep导致训练集群的利用率只有50%,另一方面,连参数梯度的方向都被更改了,别人训出来的模型,可全都是错的啊!他还加了个条件,只有256卡以上的任务才会触发这个条件,不斩无名之辈!

除此之外,他还修改了一个公用的 HuggingFace 的ckpts目录,只要别人用这里的pretrain模型,就会直接gf(go fail),相当于直接挂了。不过也有网友说到,他可能修改了自己的pretrained model,而这个model parameters是用ckpt文件保存的,其他人在训练的时候会load他的模型参数(也就是注入恶意代码的ckpt文件),所以会导致训练一直出问题也不容易发现。

某节大瓜,GPU集群投毒!

最狠的是,这哥们直接潜伏在debug群里,只要同事们查到啥,他就改啥,实现最极致的攻防。最后是查了一个多月,恢复了一些被删除的文件,才查到代码注入。

经过粗略计算,只是单纯的集群成本,造成的损失就是八位数级别的。

某节大瓜,GPU集群投毒!

不过后续,当事人又进行了辟谣:

某节大瓜,GPU集群投毒!

某节大瓜,GPU集群投毒!

某节大瓜,GPU集群投毒!

这件事,确有发生,但到底是谁做的,就不得而知了,大概率也等不到官方通告。

那么,对于这个事件,你怎么看?

weinxin
微信公众号
分享技术,乐享生活:微信公众号搜索「JackCui-AI」关注一个在互联网摸爬滚打的潜行者。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: