正如我们所知,AIGC正成为科技发展的前沿,其背后的大语言模型,如GPT-4,依赖于海量数据的训练而成熟。同时这些模型在运作中也不断产生大量数据。面对这些数据,我们面临着一个核心挑战——如何高效、低成本地存储这些数据。可知,AIGC不仅依赖于存储技术,反过来,它也推动了存储系统的创新和发展。
近日,DOIT传媒主办的2023中国数据与存储峰会-AIGC+存储融合发展论坛上,上海交通大学计算机系教授、上海市存储专委会副主任吴晨涛教授发表了主题演讲《固态硬盘故障预测方法的研究》,分享固态硬盘故障预测的最新研究成果和现状。
我主要从四个方面简单介绍,第一介绍当前固态硬盘面临可靠性的问题。第二现在固态硬盘厂商包括在搭建系统时测试方面面临的挑战,第三介绍现在采用的固态硬盘预测方法,最后是总结。
固态硬盘可靠性的问题
当前,固态硬盘可靠性实际上是现在固态硬盘厂商关注的重要问题,现在数据量急剧增长,随着时间推移,特别像闪存介质擦写次数的增多,到磁盘故障率不断上升。现在SSD在市场份额中也在不断增长,是数据中心里面主流的存储介质。
现在不管云计算还是数据中心存储,我们面临着大量的硬件故障问题,特别是SSD故障问题,我们会发现SLC、TLC、QLC等闪存介质里面,随着密度的不断增加,故障概率不断增高,如图所示,SLC年故障率基本上0.2%以下,MLC基本上在0.4-0.6%之间,TLC有可能会飙升到0.8%-1%左右。
我们看到了像微软超过50万张固态硬盘的结果,统计了三年之内的年故障率,并且分析了SSD故障的内容,包括故障产生的时间和原因特征,比如品牌,工作负载的一些读写特性、容量、写放大问题等,我们会发现实际上固态硬盘的故障跟很多方面因素都有关系,左边这个图展示的是不同负载,每天的数据写入量会对故障产生不一样的影响。右图是显示不同型号故障概率也不同。
NetApp统计了140万张SSD,涵盖了三个制造商,18个型号和12种不同容量的固态硬盘,论文里揭示了故障的成因更加复杂,包括使用的老化,包括闪存类型、容量、工艺、固件以及甚至采用不同的读方式,都会对盘片寿命产生很大影响以及故障。
现在在整个固态硬盘领域通用的故障预测方法是采用SMART信息,通过来自硬盘控制系统的信息,监测硬盘相应的实时数据,通过机器学习的方法,采集数据中心的SMART数据做数据集进行相应的训练,故障预测,这是最常见的方法。
但这些方法里有一些问题,比如第一存在大量的正负样本不均衡的问题。我们的大量硬盘是健康硬盘,只有少量是故障硬盘。第二存在着预测的时间不及时的问题。比如预测短期内的某一个盘片或某一个地方会产生故障,难度非常大。第三是存在准确度不高的问题,现在很多方法做的精准度还行,达到70-80%,提升到90%以上难度很大。
现在总结一下现在的几个挑战,一个正负样本非常不均衡,基本上是1:1000的情况。第二我们的学习特征和故障的相关性参数需要做一些提炼和提取。第三是我们需要对整体样本做相应的监测,并且现在很多故障预测的模型实际上也会随着时间的推移,SSD不断在使用,也在不断老化,模型也要做相应的更新,而不是采用一个模型去监测SSD直到寿命的终点,这是做不到的。
最后一个,故障预测里面存在着非常高的误报率和漏报率的问题。
我们给出了几种现在比较代表性的解决方案。一个可以采用GAN——生成对抗网络方式做预测,减少正负样本之间的不均衡,可以生成一些健康数据,并且与我们判别的健康数据进行对抗,实现我们对健康样本的重构,减少错误样本的数量,提高准确率。
第二可以采用一些迁移学习的方法,不同的盘片,不同的模型,可能预测效果是不一样的,我们是否可以把一个数据中心的一类盘片移到另外一类数据中心上面,可以采用一些迁移学习的方法。比如我们可以为少量模型来做一个初步训练,并且把其他比较成熟的模型移植到里面去,从而达到比较好的效果。
第三在很多预测领域里实际也存在着单一模型性能低下,或某些模型某部分情况预测精度比较好,另外一部分模型预测精度比较差的问题,可以采用孪生网络模型的方法,还可以解决比如有一些示范模型没有出现过,故障模型精度比较低,样本不均衡,训练数据比较少等问题。
现在除了上述方法可以部分解决问题之外,SSD还面临着很多其他挑战,比如基于NAND闪存,涉及到很多半导体工艺和架构的相关特性,给我们预测准确度带来非常多的不确定性。比如SSD需要维护FTL(闪存转换层),这有可能使我们SMART日志难以全面的反映SSD本身的故障特征,并且SMART的信息量还是很少,实际上SSD里面需要有更多的特征来做一些反馈。
因此,我们也看了一些新的文章,去引进一些新方法,提炼更多更有效的特征,多维度地输出,比如像故障、健康、故障类型甚至寿命等等相应的结构,从而提高精准度。
固态硬盘厂商测试面临挑战
这是我们现在做的一些工作。现在对于SSD厂商来说还面临其他测试方面的挑战,比如我们需要进行一些厂商的自我测试(MST)来消除或减少有缺陷性的组件。随着工艺的进步,需要做测试的数量轮次在不断增加,来观察SSD是否过早的存在潜在的故障。
与此同时,在闪存当中存在着非常多的坏块,部分是我们手动设置,部分是物理上存在,我们需要在测试当中加一些测试,去了解固态硬盘是否能够正常处理。
最终的问题是我们需要扫描NAND SSD闪存,直到所有的块都被反复的擦除、编程和读取。随着容量增长,我们老化过程的时间成本,包括测试轮次基本上都会不断增加,而且概率在不断上升,有时候需要几个小时甚至几十个小时做这样一个测试。
为了减少我们出厂前的内测时间,增加出货效率。一般来说就是尽可能去降低测试轮次,较大幅度减少时间开销。左图里面展示了不同测试轮次的开销变化。我们和Memblaze合作做了一个类似的课题,想把测试周期从16个周期减少到4个周期,并且能保证缺陷检测率和之前一样,也就是做了一个固态硬盘早期故障检测的工作,包括三个方面的测试,第一个是做IC的Test,第二个做Burn-in Test,第三个做Board Test,即做电路缺陷检测和故障预测以及电路早期的故障检测。
固态硬盘早期故障预测
其主要挑战在于数据集的限制和不充分,包括有些特征可能是隐含的,难以提取。在整个晶圆上面如果选择少量die做训练模型,模型有可能存在精细度比较低,泛化性比较强等问题。
对此,我们提出了一种在线测试方法,通过筛选高缺陷率的时候才会中断常规计算,并选择在线增量学习和迁移学习的方法,能够比较准确地识别类型故障。这里我们主要做了两个工作,一个通过滑动窗口的段连接检测变化点,判断整体缺陷。另外就是判断当前的故障电池百分比。
与此同时,为了对整体数据值进行增强,还在数据模型里面加入对编码器的注意力机制,实现多步骤预测更加精准。最后得到预测结果之后,我们会发现通过这些方法可以大幅降低整个SSD出厂之前测试的成本。
这是我们最终的数据增强效果,蓝色的点是真实的有缺陷的点,红色的是我们通过人为增强的方式,能够达到比较好的效果。而且我们会发现采用GAN的这种方式达到比较好的数据增强效果,右边采用SMART算法则会有一定的缺陷。最终我们可以实现比较好的预测性能,像F1-Score预测精度可以达到95%左右,错判率可以降低到个位数——7%,时间开销可以比传统采用十几个轮次的检测方法低80%,相当于效率提高4倍,并且比正常的检测率更高。
另外我们检测时间可以在40秒左右,即40秒可以对超过两万个驱动器的数据做整体的预测。
以上是我的汇报,现在固态硬盘故障预测面临着很多挑战,今天讲的内容主要是我们在固态硬盘厂商测试当中面临的难点,容量密度增大,使得我们需要做更多的测试轮次,从而增加了时间成本。为了解决这个问题,提出了基于GAN的网络,并且实现更好的数据模型,谢谢大家。