2. 南瑞集团(国网电力科学研究院)有限公司, 南京 211106;
3. 南京南瑞信息通信科技有限公司, 南京 210003
2. Nari Group Corporation (State Grid Electric Power Research Institute), Nanjing 211106, China;
3. Nanjing Nari Information Communication Technology Co. Ltd., Nanjing 210003, China
信息时代的到来使得数据量急剧增长, 云数据中心逐渐成为研究的热门之一[1,2]. 近年来, 数据中心同样在智能电网中得到广泛应用, 通过将数据在云端进行存储, 处理, 能够实现高速率、低成本储存和管理, 提高运行效率[3]. 设备管理是云数据中心正常运行的必要环节之一, 通过对设备运行参数进行采集, 对设备运行状况进行诊断. 设备运行故障能否被及时检测, 直接关系到数据中心的安全运行.
在智能电网领域, 设备故障检测方法主要针对于电网中各种元件. 当故障元件的电气量发生突变时, 利用一些智能诊断方法对电气量的异常信息进行分析, 从而找出产生故障的元件, 发现故障原因. 这些诊断方法主要包括专家系统[4], 贝叶斯网络[5], 多信息融合技术[6]和神经网络[7]等. 然而, 这些故障诊断方法主要针对于电网中的电力传输部件, 例如变压器, 电缆, 开关等. 云数据中心作为新兴技术之一, 其运行设备主要由网络设备构成, 而电网现有的设备故障检测方案显然无法满足云数据中心的要求.
目前云数据中心故障检测方法主要从网络层次进行故障诊断, 这些方法将数据中心设备划分为“基本功能单元组”, 利用不同算法对发生故障单元进行检测[8,9]. 考虑到数据中心数据的复杂性, 这些算法多数基于仿真实验进行. 且在单元层次对故障进行检测后, 后续仍需要故障发生位置进行进一步的确认. 因此这类算法在实际应用中的可靠性有待商榷.
为解决上述问题, 对云数据中心设备故障进行检测, 同时对未来运行状况进行预测, 保证设备正常运行. 本文研究了一种基于Pytorch以及神经网络的设备故障检测方法, 在对数据进行预处理后, 利用自然语言处理类方法使神经网络能够学习到对故障检测有效的特征, 并使用长短期记忆网络(Long Short-Term Memory, LSTM)对故障进行检测. 基于阿里集群数据的实验结果显示, 本方案能够有效检测设备运行故障, 并对运行状况进行预测. 本文的创新点总结如下:
(1) 采用GRU (Gate Recurrent Unit) 模型作为架构基础, 相比常用的LSTM模型, 运算量显著减少, 训练速度得到提升.
(2) 双向GRU叠加的设计使得每个GRU单元在当前输入的基础上, 除了能够得到过去时间点的信息, 还能得到该时间点之后的数据, 提高了检测的准确度.
(3) 在双向GRU输出的基础上采用了自注意力机制, 使得重要信息能够通过训练获得更高的权重, 解决了信息超载问题并进一步提高检测准确率.
(4) Embedding层和多层感知机对自注意力层的输出进行进一步处理, 在降低数据维度基础上提高了分类效果.
本文后续内容组织如下, 首先介绍循环神经网络的基本架构, 以及优缺点, 并引出在检测任务中常用的LSTM模型. 接下来对模型所采用的数据集进行概括, 并提出基于GRU改进后的模型架构. 最后展示了实验结果并对提出的框架作了简要总结.
1 循环神经网络神经网络被大多数人视为能够拟合任意函数的黑盒子, 给定足够的训练数据, 以及数据标签, 在设定合适的损失函数后, 神经网络就能够被充分训练并在输出层得到特定的y. 这一拟合能力近似于常见的连续非线性函数, 称为通用近似定理[10]:
令
$|F(x) - f(x)| < \varepsilon ,x \in {J_D}$ | (1) |
其中, F(x)作为函数f的近似实现, 且F(x)定义如下:
$F(x) = \sum\limits_{m = 1}^M {{v_m}\phi (w_m^{\rm T} + {b_m})} $ | (2) |
根据通用近似定理, 如果神经网络具有线性输出层, 以及至少一个使用“挤压”性质的激活函数的隐藏层, 则该神经网络就能够以任意的精度近似任何一个定义在
循环神经网络(Recurrent Neural Network, RNN)是深度学习的经典算法之一, 其具有记忆性, 能够捕捉输入信息中的时间顺序关联, 因此常被用于时间序列数据分析[11]. RNN已经在自然语言处理领域, 例如语言识别, 语言建模和机器翻译等场景取得成功应用. 然而, 普通的神经网络存在一个缺陷, 即只能近似输入与输出之间的关系, 而前一个与后一个输入之间的关系无法处理. 对于大多数序列信息, 例如文本数据, 金融时间数据, 前后数据之间存在复杂的依赖关系, 普通的神经网络难以捕捉. RNN正是针对处理序列信息而设计的, 图1展示了RNN的基本架构.
如图1所示, RNN由输入层、隐藏层和输出层组成, 隐藏层展开后可以看到由多个神经元串联组成, 这里则是循环神经网络和普通神经网络的根本差别. U, V, W分别表示输入层到隐藏层, 隐藏层到输出层和隐藏层的参数, Xt–1, Xt, Xt+1表示不同时刻的输入. 从图1中可以发现, 隐藏层St在t时刻除了接受来自Xt的输入外, 还从左边接受St–1时刻的输入, 这就使得未来的时刻能够保留过去时刻传来的信息, 因此循环神经网络能够捕捉输入数据中的时序关系.
上述过程用公式表述如下:
${O_t} = g(V{S_t})$ | (3) |
${S_t} = f(U{X_t} + W{S_{t - 1}})$ | (4) |
可以看到St的值由Xt和St–1共同决定, Ot则是最终输出.
在文献[12]中, 作者使用RNN对5432例阿兹海默症病人的进展进行预测, 时间跨度从2005至2017年. 实验结果显示循环神经网络能够很好地捕捉单个病人在多次检查中的时序变化信息, 即便时间间隔并不均匀. 更多地, 实验结果显示循环神经网络在测试集预测病人下一次检查结果的AD进展上达到了99%的准确率, 这表明RNN在时序信息分析上的强大能力. 类似的, 在云数据中心中, 设备的信息、日志数据等同样以时间序列顺序被记录. 这些数据在时间顺序上的变化能够精确地被循环神经网络所捕捉, 并且学习到数据随时间变化的复杂非线性关系, 从而实现对设备未来状态的预测.
在实际应用中, 研究者发现循环神经网络难以处理信息的长时间依赖关系, 一个简单的例子是在英文句子生成时, 如果句子很长, 在生成谓语动词时, 循环神经网络无法记住主语的单复数形式并选择合适的谓语动词. 为了解决这一问题, 门控机制被提出, 即大多数错误检测模型常用的LSTM. 在LSTM中, 门控机制包括遗忘门(forget gate)、输入门(input gate)和输出门(output gate). 其中, 遗忘门用于控制前一时刻输入信息通过的比例, 仅仅保留部分重要信息向后传递而忽略无关信息. 包括细胞状态和隐藏状态两种, LSTM原理如图2所示.
图2中, Xt表示输入ht表示输出.
2 Pytorch机器学习框架
Pytorch是一个著名的基于Torch的Python机器学习库, 由Facebook的人工智能研究组在Torch的基础上开发. Pytorch在学术领域广泛应用, 作为常用深度学习研究平台之一[15], 其API接口统一, 采用了动态计算图机制和自动求导机制, 能够方便地搭建定制化的神经网络并进行训练. 相对于谷歌开发的TensorFlow框架, Pytorch拥有以下几点优势:
(1) Pytorch中的模型定义更为简单, 并且提供了容易调用的包, 而TensorFlow接口定义种类繁杂.
(2) Pytorch所采用的动态图计算机制相比TensorFlow的静态图更加灵活, 对于研究者更加友好,
(3) 对Caffe具有良好的支持, 可以联合英伟达GPU进行高效的神经网络训练.
3 实验及结果分析 3.1 实验数据云数据中心已经成为互联网的基础设施, 在网络流量日益增长的今天起到核心作用, 与此同时, 云数据中心的网络设备故障的发生率也在上升, 这使得服务器的性能下降, 对用户终端的使用体验造成影响. 本文采用循环神经网络训练公开的数据中心数据集, 并对未来故障进行预测, 这样运维人员可以在潜在故障发生前进行干预并解决.
实验使用数据集为阿里巴巴集团在Github平台公布的阿里云集群数据[16], 该数据集包括以下两部分数据:
(1) cluster-trace-v2017: 1300台机器12小时的运行数据. 该批数据包含在线服务的数据集合以及批次化的工作负荷记录.
(2) cluster-trace-v2018: 4000台机器长达8天的运行数据. 该批数据除了包含v2017的数据种类外, 额外包含DAG产品的运行负荷信息[17].
本文采用了cluster-trace-v2018数据集进行训练和测试, 预测所包含的故障分为设备响应时间过长, CPU利用率过高, 内存利用率过高和传输信息速率低5种. 实验所采取的流程如图3所示.
如图3所示, 首先对数据进行预处理, 包括去冗余与清洗, 标准化两步. 冗余数据指与故障预测没有关联的数据或者数据不随时间变化的数据, 例如设备型号信息, 不同客户账号信息等. 冗余信息对预测效果没有影响并且会造成额外计算负担, 因此预先对冗余进行清洗是重要一步. 数据集标准化是提高预测效果的重要步骤, 当不同机器间指标水平相差较大时, 直接用原始指标进行分析会突出数值较高指标在预测中的作用, 导致高数值指标在预测中所占权重过大, 影响结果的可靠性. 这里我们对机器的不同指标采用最为常用的Z-score标准化, 以时间序列x1, x2, ···, xn为例, Z-score计算方式为:
${y_i} = \frac{{{x_i} - \overline x }}{s}$ | (5) |
$\overline x = \frac{1}{n}\sum\limits_{i = 1}^n {{x_i}} $ | (6) |
$s = \sqrt {\frac{1}{{n - 1}}\sum\limits_{i = 1}^n {{{({x_i} - \overline x )}^2}} } $ | (7) |
则新序列y1, y2, ···, yn的均值为0, 标准差为1. Z-score方法对数值区间较大, 离群值较多的情况比较合适, 在对不同指标进行Z-score处理后, 能够使数据落入一个较小的区间, 减轻不同指标间数值差异的影响.
本文以每1分钟的数据为一个窗口, 将1分钟的阿里云硬件集群的各项指标进行平均, 作为单个数据进行统计. 本文使用统计检验将CPU使用率和内存分配率等指标与平均指标严重偏离的时间点作为故障时间点(P-value<0.05). CPU使用率在一天内使用率波动较大, 在部分时间点存在高峰, 经过统计后发现在高峰使用期故障发生率较高, 这与真实情况相符合. 针对内存使用故障, 使用请求内存和真实使用内存之差作为判断故障指标(P-value<0.05). 统计结果表明CPU使用率高峰和内存使用故障高峰存在一定的关联, 这正常情况相一致. 在实验中仅考虑单个时间点只存在一种故障, 将故障检测视为单标签分类问题.图4显示了不同故障数目的柱形图.
3.2 网络结构与实验结果本文使用的检测模型设计架构如图5所示.
图5中, 输入层包含200个神经元, 因此数据被分割为200个时间窗输入. 本文使用双向门控循环神经网络处理数据输入. 双向门控循环神经网络(BiGRU)可以看做的LSTM一种拓展, 将LSTM中的LSTM模块替换为GRU并使用双层GRU模块反向叠加. GRU将LSTM中隐藏状态和细胞状态合并成一种状态, 因此显著缩短了训练时间. 更明确地说, GRU读取词嵌入向量
$\left\{\begin{split} & {{\textit{z}}_i} = \sigma ({W_{\textit{z}}}{t_i} + {V_{\textit{z}}}{h_{i - 1}} + {b_{\textit{z}}}) \\ & {r_i} = \sigma ({W_{\textit{z}}}{t_i} + {V_{\textit{z}}}{h_{i - 1}} + {b_r}) \\ & {c_i} = \tanh (W{t_i} + v({r_i} \odot {h_{i - 1}}) + b) \\ & {h_i} = {{\textit{z}}_i} \odot {h_{i - 1}} + (1 - {{\textit{z}}_i}) \odot {c_i} \\ \end{split} \right.$ | (8) |
其中,
为了让神经网络能够学习到对预测故障有效的特征, 本文采用了自然语言处理中的embedding技术. 类似于常用的预训练词向量, 在输入层后加入embedding层, 其中包含100个神经元, 对输入特征起到降维作用[17]. 此外, 在embedding层前加入了注意力层, 并使用了经典的自注意力模型. 自注意力机制引入了查询向量q (query vector), 通过打分函数计查询向量和输入向量直接的相关性, 同时引入了一个注意力变量
$\begin{split} {a_i} & = p(t = i|X,q) \\ & = Softmax (s({x_{x}},q)) \\ & = \dfrac{{\exp (s({x_i},q))}}{{\displaystyle\sum\limits_{j = 1}^N {\exp (s({x_i},q))} }} \\ \end{split} $ | (9) |
其中,
$s({x_i},q) = \dfrac{{x_i^{\rm T}q}}{{\sqrt d }}$ | (10) |
其中, d表示输入向量的维度. 缩放点积模型是基于点积模型的一种改进, 区别在于缩放点积模型除以向量维度d的平方根. 当d很大时, 点积模型的值会出现较大的方差, 因此导致Softmax的梯度变小, 缩放点积模型的提出解决了这一问题. 可以看出, 自注意力层通过查询向量实现对输入数据的权重分配, 这一查询向量可以通过反向传播进行学习和优化, 从而能够对重要的特征分配更大的权重. 在阿里云数据中心数据集中, 不同类型的数据对故障分类的重要性存在差别. 例如, 线程分配数目和消息队列排队数目对CPU响应时间过长和CPU利用率过高这两类故障类型起到直接的影响, 缓存区数据量和堆栈区使用率则对内存使用故障和传输速率低起到决定性作用, 而在输入数据中无法体现此类差别. 因此, 在双向GRU层充分学习输入数据的时序信息后, 引入自注意力层能够对映射后特征进行权重分配, 使得不同位置的特征对每类故障学习不同的权重, 从而提升最终的检测效果. 在模型实现中, 我们采用了以自注意力模型为基础的Multi-head Attention. Multi-head Attention在自注意力基础上进行了进一步拓展, 能够同时学习到GRU输出序列的位置编码信息和特征的权重信息. 该注意力机制在著名的自然语言处理模型Transformer和Bert中被广泛采用.
实验平台的具体配置如下:
操作系统: Windows 10.
GPU: NVIDIA RTX2080Ti, 11 GB显存.
RAM: 64 GB.
深度学习框架: Pytorch 1.3 稳定版.
开发工具: Visual Studio Code.
编程语言: Python 3.6.
Adam是一种基于随机梯度下降(Stochastic Gradient Descent, SGD)的一阶优化算法, 与SGD不同在于SGD在训练过程中学习率不会改变, 而Adam通过计算梯度的一阶和二阶矩估计动态改变学习率, 是一种自适应学习率优化算法, 同时结合了AdaGrad和RMSProp两种算法的优点[18].
本文将数据集分割为训练集与测试集, 其中验证集数目占20%, 训练集数目占80%. 使用Adam优化算法训练神经网络, 实验结果显示Adam算法效果卓越, 如图6所示, 在使用Adam算法后, 训练集和测试集上的loss均能够降低到0.05左右.
图7展示了神经网络对于故障检测的准确率, 在实验中, 设置batch大小为200, 通过11个epoch后算法已经接近收敛并在测试集上获得了超过98%的准确率.
作为对比, 本文使用SVM, KNN和普通LSTM模型对故障进行检测, 检测结果如表1所示.
综合来说, 深度学习模型相比传统机器学习模型拥有更高的诊断准确率. SVM作为经典的分类模型, 其在训练集上表现出良好的效果, 但是测试集上准确率显著下降, 存在明显的过拟合现象. KNN分类器因为没有显式的训练过程, 在训练集和测试集上的诊断效果均较为一般, LSTM在训练集和测试集上表现较为稳定, 表明深度学习模型能够学习到数据中的时序变化信息. 相比普通LSTM, 加入了embedding层和自注意力机制后BiGRU模型准确度相比基线模型LSTM有2%的准确度的提升. 实验结果显示深度学习模型能够在云数据中心进行部署, 相比传统机器学习模型拥有更高的故障诊断准确率. 除此之外, 随着数据的积累, 深度学习模型的准确率能够进一步提高.
4 结论与展望为了解决当前云数据中心缺乏故障检测方法, 且当前方法均基于仿真数据实验的问题, 本文提出了一种基于Pytorch和双向GRU网络的云数据中心故障检测方法. GRU模型的使用相比传统的LSTM提高了训练速度, 并且双向机制的结合进一步提高了模型的检测准确度. 在对数据进行预处理后, 利用embedding技术使神经网络能够提取关于故障检测的相关特征, 并使用特征进行进一步加工和处理, 最后利用Adam优化算法训练神经网络. 基于阿里云集群数据的实验结果显示, 相比于其他模型, 本文提出的模型准确率有着明显改善, 有助于智能电网云数据中心故障检测的准确率, 可靠性的全面提升.
[1] |
Uchechukwu A, Li KQ, Shen YM. Retraction note: Sustainable cost and energy consumption analysis for cloud data centers. Frontiers of Computer Science, 2020, 14(1): 239. DOI:10.1007/s11704-015-4020-6 |
[2] |
Mokadem R, Hameurlain A. A data replication strategy with tenant performance and provider economic profit guarantees in cloud data centers. Journal of Systems and Software, 2020, 159: 110447. DOI:10.1016/j.jss.2019.110447 |
[3] |
宋杰, 孙宗哲, 刘慧, 等. 混合供电数据中心能耗优化研究进展. 计算机学报, 2018, 41(12): 2670-2688. DOI:10.11897/SP.J.1016.2018.02670 |
[4] |
赵伟, 白晓民, 丁剑, 等. 基于协同式专家系统及多智能体技术的电网故障诊断方法. 中国电机工程学报, 2006, 26(20): 1-8. DOI:10.3321/j.issn:0258-8013.2006.20.001 |
[5] |
罗孝辉, 童晓阳. 计及可信度的变结构贝叶斯网络电网故障诊断. 电网技术, 2015, 39(9): 2658-2664. |
[6] |
徐彪, 尹项根, 张哲, 等. 基于拓扑图元信息融合的电网故障诊断模型. 电工技术学报, 2018, 33(3): 512-522. |
[7] |
Novelo AF, Cucarella EQ, Moreno EG, et al. Fault diagnosis of electric transmission lines using modular neural networks. IEEE Latin America Transactions, 2016, 14(8): 3663-3668. DOI:10.1109/TLA.2016.7786348 |
[8] |
宣恒农, 张润驰, 左苗, 等. 面向数据中心网络的分层式故障诊断算法. 电子学报, 2014, 42(12): 2536-2542. DOI:10.3969/j.issn.0372-2112.2014.12.029 |
[9] |
Qi XG, Wang BC, Liu LF. Fault diagnosis based on dial-test data in datacenter networks. Journal of Systems Engineering and Electronics, 2019, 30(5): 1035-1043. DOI:10.21629/JSEE.2019.05.19 |
[10] |
Cybenko G. Approximation by superpositions of a sigmoidal function. Mathematics of Control, Signals and Systems, 1989, 2(4): 303-314. DOI:10.1007/BF02551274 |
[11] |
Greff K, Srivastava RK, Koutník J, et al. LSTM: A search space odyssey. IEEE Transactions on Neural Networks and Learning Systems, 2017, 28(10): 2222-2232. DOI:10.1109/TNNLS.2016.2582924 |
[12] |
Wang TY, Qiu RG, Yu M. Predictive modeling of the progression of Alzheimer’s disease with recurrent neural networks. Scientific Reports, 2018, 8(1): 9161. DOI:10.1038/s41598-018-27337-w |
[13] |
Filonov P, Lavrentyev A, Vorontsov A. Multivariate industrial time series with cyber-attack simulation: Fault detection using an LSTM-based predictive data model. arXiv preprint arXiv: 1612.06676, 2016.
|
[14] |
Park D, Kim S, An YL, et al. LiReD: A light-weight real-time fault detection system for edge computing using LSTM recurrent neural networks. Sensors, 2018, 18(7): 2110. DOI:10.3390/s18072110 |
[15] |
Ketkar N. Introduction to Pytorch. In: Ketkar N, ed. Deep Learning with Python. Berkeley: Apress, 2017. 195–208.
|
[16] |
Lu CZ, Ye KJ, Xu GY, et al. Imbalance in the cloud: An analysis on Alibaba cluster trace. Proceedings of 2017 IEEE International Conference on Big Data (Big Data). Boston, MA, USA. 2017. 2884–2892.
|
[17] |
Pennington J, Socher R, Manning CD. Glove: Global vectors for word representation. Proceedings of 2014 Conference on Empirical Methods in Natural Language Processing (EMNLP). Doha, Qatar. 2014. 1532–1543.
|
[18] |
Kingma DP, Ba LJ. Adam: A method for stochastic optimization. Proceedings of the 3rd International Conference on Learning Representations. San Diego, CA, USA. 2015.
|