一项大规模研究发现,3.61‱的 CPU 会导致静默数据损坏。
2021年,谷歌创造了“不稳定核心”(mercurial cores)一词,起因是他们的生产团队不断将数据损坏归咎于软件。他们调试数周,却发现代码没有任何问题,换台机器后,问题就消失了。而真正的原因在于:7纳米以下制程工艺的制造缺陷,这些缺陷虽然能通过所有工厂测试,但在部署数月甚至数年后却会不可预测地性能下降。
Facebook 也独立证实了这一点。数十万台机器上的数百个 CPU 受到影响。这个缺陷不会导致系统崩溃。在特定的微架构条件下,当你计算 2×3 时,结果会变成 5 而不是 6,而且没有任何迹象表明出了问题。
现在想想这对人工智能训练意味着什么。分布式训练集群中单个损坏的GPU或CPU不仅仅会产生一个错误的输出。它会将损坏的梯度输入到同步步骤中,而该步骤会在集群中的每个加速器上进行平均。一个损坏的芯片就可能悄无声息地毁掉整个训练过程。NVIDIA就曾发布过一份白皮书,专门讨论这个问题。LLM训练过程中出现的无法解释的损失峰值,最终被追溯到硬件的静默损坏。
令基础设施工程师夜不能寐的是:传统的防御措施失效了。ECC 内存无法检测到这种漏洞,因为数据损坏发生在计算阶段,而非存储阶段。校验和算法(例如 CRC)大量使用向量运算,而向量运算本身就是最容易受到攻击的指令类型之一。就连用于检测数据损坏的工具也运行在同样存在缺陷的芯片上。
谷歌目前的检测方法?大约一半靠人工,一半靠机器自动。而人工标记为可疑的机器中,只有大约 50% 在深入调查后被证实确实存在欺诈行为。我们正在调试硬件上拥有万亿参数的模型,但我们却无法可靠地判断哪些芯片在欺骗我们。
摩尔定律给我们带来了更多的晶体管。但也带来了我们无法完全验证的晶体管。