分享自:

深度学习训练加速器系统中硬件故障的理解与缓解

期刊:Proceedings of the 50th Annual International Symposium on Computer Architecture (ISCA '23)DOI:10.1145/3579371.3589105

这篇研究论文由 Yi He(芝加哥大学)、Mike Hutton、Steven Chan、Robert de Gruijl、Rama Govindaraju、Nishant Patil(均来自谷歌)以及 Yanjing Li(芝加哥大学)共同完成,并于2023年6月17日至21日在美国佛罗里达州奥兰多举行的第50届国际计算机体系结构研讨会(ISCA ‘23)上发表。该研究是计算机体系结构与深度学习系统可靠性交叉领域的一项重要工作。

近年来,深度学习训练工作负载在数据中心的应用日益广泛,然而,硬件故障已成为影响其稳定性和正确性的严峻挑战。谷歌等公司报告了在其张量处理单元(TPU)训练系统中出现的“难以识别和复现的神秘问题”,这些问题被根源性地归咎于硬件故障。尽管通过巨大努力可以修复特定故障,但这些事件凸显了解决硬件故障对深度学习训练影响的紧迫性。虽然已有大量关于硬件可靠性的研究,但之前的工作主要集中在CPU、GPU系统或深度学习推理负载上,针对深度学习训练加速器系统中逻辑部分硬件故障的系统性、深入分析尚属空白。深度学习训练具有迭代、长时、分布式等特点,其算法(如梯度下降、历史动量更新、归一化层)的独特性使得硬件故障的传播和影响模式与推理负载有本质区别。因此,本研究的核心目标是:第一,深入理解深度学习训练加速器系统中硬件故障的行为特征与影响;第二,揭示这些故障如何在训练过程中传播并与训练算法相互作用;第三,基于以上理解,开发高效、轻量级的软件缓解技术。这项工作旨在填补重要的知识空白,并为工业界提供可部署的解决方案。

研究团队设计并实施了一套详尽的方法论与实验框架。研究的核心是开发了一个新颖的故障注入(Fault Injection, FI)框架,该框架的关键在于在准确性和效率之间取得了平衡。为了获得高精度的故障行为模拟,研究以一款工业级深度学习推理加速器NVDLA(NVIDIA的开放源代码设计)作为基础硬件架构。为了使其适用于训练任务,研究对硬件数据路径进行了扩展(例如支持BF16/FP32混合精度)并调整了编译流程。传统的纯软件故障注入方法(如TensorFI)虽然速度快,但准确性不足,无法精确模拟硬件控制逻辑故障的影响;而RTL级仿真虽然准确,但对于大规模深度神经网络训练任务来说,计算时间完全不可接受(例如,仅完成100万次RTL FI实验就可能需要数万年的时间)。为了解决这一矛盾,本研究提出了一个创新的方法:首先,基于选定的硬件故障模型——单周期、单触发器(Flip-Flop)比特翻转,这是研究瞬态故障(如软错误、动态电压变化影响)的通用模型;其次,系统性地分析了NVDLA中所有41,000个全局控制触发器(影响多个数据路径寄存器的控制逻辑),将其功能映射并归纳为10组软件故障模型。这些模型精确描述了当特定控制位发生翻转时,输出张量中故障元素的数量、位置以及错误值(例如,将某一周期内计算的所有输出设为0,或将整块输入数据从错误的内存地址读出)。通过进行4万次RTL实验进行验证,证实了这些软件模型的准确率极高(置信度99%的情况下,错误率低于百万分之一)。这个框架,连同详细的故障模型方法论,已通过开源项目[1]发布。

基于此高精度故障注入框架,研究团队在谷歌云TPU上开展了大规模统计实验,以分析深度学习训练对硬件故障的弹性。研究选取了多种具有代表性的深度神经网络模型作为研究对象,包括ResNet(及其多种变体,如去掉批归一化层或使用不同优化器)、DenseNet、EfficientNet、NFNet、YOLOv3、Transformer以及Multigrid Neural Memory。每个模型的训练都遵循标准的流程和迭代次数。实验的总规模超过290万次独立的故障注入实验,累计消耗了超过49万个节点小时的算力。每一次实验的流程是:随机选择一个触发器和时钟周期作为故障注入点;使用对应的软件故障模型修改该层计算的张量值;然后继续训练该模型,直到遇到错误信息(如出现无穷大或非数NaN),或达到预定的训练迭代次数上限(通常为无故障运行时迭代次数的两倍)。在整个过程中,研究者持续记录训练损失、训练精度和测试精度的变化趋势。

实验结果揭示了硬件故障导致的两大类训练结果,并首次系统性地发现了多种新的、潜在的危险后果。第一类是无显著影响的结果,占实验总数的82.3%至90.3%。这些故障要么被硬件逻辑或训练操作(如乘以0)屏蔽,要么其影响被训练算法的容错性所纠正,最终训练精度与无故障情况相差无几,甚至有时因噪声的“正则化”效应而略有提升。第二类是意外结果(Unexpected Outcomes),占比9.7%至17.7%。除了业界已报告的能立即或短期内导致无穷大/非数(Infs/NaNs)的故障外,本研究首次识别并命名了四种新的、潜伏性的意外结果:1. 缓慢退化(Slowdegrade):故障发生后,训练精度缓慢下降(持续10-100个迭代步),然后维持在一个低水平;2. 骤降后缓慢退化(Sharpslowdegrade):在故障发生的迭代步训练精度出现急剧下降,随后进入与Slowdegrade类似的缓慢退化阶段;3. 急剧退化(Sharpdegrade):训练精度在故障发生后立即发生断崖式下跌,并长期维持在低位;4. 低测试精度(Lowtestaccuracy):训练精度曲线看似正常,但测试精度在故障后出现显著且持续的下降。特别值得注意的是,研究者在实验中发现的Slowdegrade现象,后来在数据中心的真实大型模型训练系统中得到了观测和证实,凸显了本研究的现实意义。研究者进一步分析了所有导致潜伏性意外结果的故障的传播路径,并提炼出了一个关键发现:硬件故障要最终导致这些潜伏性意外结果,必须满足一个必要条件:即故障导致优化器中的梯度历史值(例如Adam优化器中的一阶矩估计m和二阶矩估计v)或归一化层中的移动方差值(例如批归一化BatchNorm中的moving variance)产生绝对值巨大的异常值。例如,对于Slowdegrade和Sharpslowdegrade,其必要条件是梯度历史值出现大异常值;而对于Sharpdegrade和低测试精度Lowtestaccuracy,其必要条件是移动方差值出现大异常值。这些大异常值能够跨越多个训练迭代持续施加影响,干扰模型的正常更新过程。研究还发现,这些必要条件总是在故障发生后的两个训练迭代之内出现。

基于上述核心发现,研究者设计了一套超轻量级的软硬件协同缓解技术,包括检测与恢复两个部分。检测技术的原理是实时检查优化器的梯度历史值和归一化层的移动方差值。研究的一大贡献是,通过严格的数学推导,证明了对于一个给定的、满足常见假设(如输入数据零均值单位方差、权重初始化合理等)的深度神经网络训练任务,这些值在无故障情况下的绝对值存在理论上限。例如,对于Adam优化器,梯度历史值超过某个由偏置校正项、批量大小等参数决定的界限的概率极低(< 3×10^{-89})。因此,通过设置合理的阈值进行边界检查,一旦发现超界值,即可在故障发生后的两个迭代步内极大概率地检测到可能导致严重问题的硬件故障。恢复技术则非常简洁:一旦检测到故障,仅需重新执行最近的两个训练迭代。这是因为导致问题的必要条件(大梯度历史值或移动方差值)在故障发生后两个迭代内必然出现,因此回退并重算这两个迭代足以将训练过程从错误状态中恢复出来,而无需回滚到很久之前的检查点。该方案在TensorFlow上的实现仅需修改24至32行代码。在谷歌云TPU上的评估显示,在无故障发生时,该方案引入的平均性能开销仅为0.003%至0.025%;即使触发一次恢复,平均性能开销也仅为0.04%至0.15%。其性能与能效开销远低于常规的每轮检查点保存方案,具有极高的实用价值。

本研究得出了几个重要结论。首先,这是首个针对深度学习训练加速器系统逻辑硬件故障的深度弹性研究,系统揭示了故障的传播路径、影响模式及导致灾难性后果的必要条件。其次,研究发现的四种新的潜伏性故障模式(尤其是Slowdegrade)为工业界识别和诊断“神秘”的训练失败提供了关键视角。第三,基于数学推导的必要条件而设计的边界检查与轻量级重执行技术,为实现高效、低开销的故障缓解提供了切实可行的解决方案。该方案所需代码改动极少,性能开销几乎可以忽略,非常适合在实际生产环境中大规模部署。

本研究的亮点突出体现在几个方面。其一,研究视角与对象的创新性:首次系统性地聚焦于深度学习训练加速器这一关键新兴平台,并深入探究其逻辑部分的硬件故障影响,填补了研究空白。其二,方法论上的突破:创造性地通过系统化分析RTL控制逻辑来构建高精度软件故障模型,从而在保证统计显著性的前提下,以可承受的成本完成了超过290万次的大规模故障注入实验,解决了该领域长期存在的准确性与效率难以兼得的问题。其三,重要的科学发现:不仅确认了已知的故障现象,更重要的是首次发现并刻画了多种潜伏性的、难以察觉的故障影响模式(Slowdegrade等),并提炼出“大梯度历史值/移动方差值”这一普适的必要条件,深化了对训练算法与硬件故障交互机制的理论理解。其四,突出的应用价值:基于理论发现提出的缓解方案极其轻量化,代码修改少、运行时开销极低,且检测延迟有理论上界,具有很强的工业落地性和实用价值。其五,研究的可复现性与开放性:相关故障注入框架已开源,有助于推动该领域的后续研究。

此外,研究还探讨了相关工作的对比,指出之前针对推理负载的弹性研究结论(如早期层故障影响更大、激活值截断检测等)不能直接适用于训练负载,强调了训练负载弹性研究的独特性。研究也分析了不同触发器类型对意外结果的贡献度,发现控制触发器和代表高指数位的触发器更容易引发问题,这为未来通过选择性硬件加固(如触发器硬化)提升系统可靠性提供了指导。这项研究为理解和缓解深度学习训练系统中的硬件故障奠定了坚实基础,其方法和结论对未来应对更大规模、更复杂深度学习系统的可靠性挑战具有重要的指导意义。

上述解读依据用户上传的学术文献,如有不准确或可能侵权之处请联系本站站长:admin@fmread.com