CN117762464B - 一种基于云计算的软件运维系统及方法 - Google Patents
一种基于云计算的软件运维系统及方法 Download PDFInfo
- Publication number
- CN117762464B CN117762464B CN202311844935.3A CN202311844935A CN117762464B CN 117762464 B CN117762464 B CN 117762464B CN 202311844935 A CN202311844935 A CN 202311844935A CN 117762464 B CN117762464 B CN 117762464B
- Authority
- CN
- China
- Prior art keywords
- model
- software
- fault
- training
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 42
- 238000012423 maintenance Methods 0.000 title claims abstract description 27
- 238000012549 training Methods 0.000 claims abstract description 86
- 238000004458 analytical method Methods 0.000 claims abstract description 27
- 238000001514 detection method Methods 0.000 claims abstract description 21
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 12
- 230000002776 aggregation Effects 0.000 claims abstract description 10
- 238000004220 aggregation Methods 0.000 claims abstract description 10
- 230000006870 function Effects 0.000 claims description 40
- 230000008569 process Effects 0.000 claims description 22
- 230000008439 repair process Effects 0.000 claims description 19
- 239000013598 vector Substances 0.000 claims description 17
- 230000002159 abnormal effect Effects 0.000 claims description 5
- 238000003745 diagnosis Methods 0.000 claims description 5
- 238000007405 data analysis Methods 0.000 claims description 4
- 238000012544 monitoring process Methods 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 4
- 238000013507 mapping Methods 0.000 claims description 3
- 238000007726 management method Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000009966 trimming Methods 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明实施例中提供了一种基于云计算的软件运维系统及方法,属于软件管理技术领域,该系统包括:连接模块,所述连接模块定时触发数据采集功能,从各种软件组件里面获取软件的运行状态数据,并通过kettle的中间件,将采集到的数据发送至kafka消息中间件,提供给模型预测模块进行在线推理;联邦训练模块,通过FedAvg算法实现模型参数的可靠聚合,使用Flask将更新后的模型部署为API服务;故障检测模块,使用规则引擎进行实时故障识别,根据解析结果对软件故障进行分类;决策控制模块,基于kettle的软件组件连接通道和脚本支撑,实现软件故障命令的下发执行。采用本方案,能够提高软件管理的效率。
Description
技术领域
本发明涉及软件管理技术领域,尤其涉及一种基于云计算的软件运维系统及方法。
背景技术
随着计算机性能得到提高,更重要的是出现了大容量磁盘,存储容量大大增加且价格下降。在此基础上,有可能克服文件系统管理数据的不足,而去满足和解决实际应用中多个用户、多个应用程序共享数据的要求,从而使数据能为尽可能多的应用程序服务,这就出现了数据库这样的数据管理技术。数据库的特点是数据不再只针对某一特定程序应用,而是面向全组织,具有整体的结构性,共享性高,冗余度小,具有一定的程序与数据间的独立性,并且实现了对数据进行统一的控制。数据库技术的应用使数据存储量猛增,用户增加,而且数据库技术的出现使数据处理系统的研制从围绕以加工数据的程序为中心转向围绕共享数据来进行。这样,既便于数据的集中管理,又有利于应用程序的研制和维护,从而提高了数据的利用率和相容性,并且有可能从企业或组织的全局来利用数据,从而提高了决策可靠性。
在信息系统维护的过程中,如何基于互联网技术来挖掘信息系统软件数据之间的联系,进而提高系统软件维护管理的效率,是需要解决的问题。
发明内容
有鉴于此,本发明实施例提供一种基于云计算的软件运维系统及方法,至少部分解决现有技术中存在的问题。
第一方面,本发明实施例提供了一种基于云计算的软件运维系统,包括:
连接模块,所述连接模块定时触发数据采集功能,从各种软件组件里面获取软件的运行状态数据,并通过kettle的中间件,将采集到的数据发送至kafka消息中间件,提供给模型预测模块进行在线推理;
联邦训练模块,所述联邦训练模块利用Python脚本将历史故障训练数据格式化为文本,通过ZooKeeper协调模型初始化,各本地节点使用FATE进行本地模型训练,通过FedAvg算法实现模型参数的可靠聚合,使用Flask将更新后的模型部署为API服务;
故障检测模块,所述故障检测模块通过Flask将大语言模型部署为API服务,接收kettle上报的实时状态数据,进行模型在线预测推理,输出结果通过Python脚本解析成可执行的SQL语句,同时使用规则引擎进行实时故障识别,根据解析结果对软件故障进行分类;
决策控制模块,所述决策控制模块利用Drools规则引擎将故障识别结果映射为可调度任务的参数,通过XXL-JOB调度任务执行,尝试故障修复,基于kettle的软件组件连接通道和脚本支撑,实现软件故障命令的下发执行。
根据本公开实施例的一种具体实现方式,所述联邦训练模块还用于:
基于FATE-LLM对输入的向量化需求,将互联网、日常运维产生的软件故障文本数据转化为向量表示,包括:对文本进行分词,然后使用Gensim库中的Word2Vec模型训练词嵌入,最后,通过取每个文本中所有单词向量的平均值,得到了整个文本的向量表示。
根据本公开实施例的一种具体实现方式,所述联邦训练模块还用于:
在联邦学习开始时,将ChatGLM-6B初始化为全局模型,该全局模型在所有本地节点上进行联邦训练。
根据本公开实施例的一种具体实现方式,所述联邦训练模块还用于:
选择AdamW作为优化器,使用AdamW优化器更新模型参数包括:
S41、初始化优化器:在微调过程开始前,首先初始化AdamW优化器;
S42、加载预训练模型:加载ChatGLM-6B模型作为微调的初始模型;
S43、切换到训练模式:将加载的预训练模型切换到训练模式;
S44、迭代训练:针对微调数据集,迭代多个训练轮次,在每个轮次内,通过前向传播获取模型的预测结果,计算损失函数,然后使用反向传播计算相对于模型参数的梯度;
S45、计算梯度:利用tf.GradientTape记录前向传播过程,计算损失函数相对于模型参数的梯度;
S46、更新模型参数:使用AdamW优化器的apply_gradients方法,根据计算得到的梯度更新模型参数。
根据本公开实施例的一种具体实现方式,所述联邦训练模块还用于:
使用一个轻量级的框架Flask,搭建一个API服务,接收用户的请求,这里的用户是基于kettle配置的软件状态采集消息,通过传入异常信息文本作为模型输入,推理后会输出相关的数据库故障诊断结果描述文本。
根据本公开实施例的一种具体实现方式,所述连接模块还用于:
基于要自动运维的软件,通过kettle的数据输入进行软件连接配置,使用Kettle设计ETL任务,连接到目标软件组件,执行SQL或者接口查询,获取软件的运行状态数据。
根据本公开实施例的一种具体实现方式,所述故障检测模块还用于:
根据ChatGLM-6B模型的输出格式,定义解析规则,使用Python编写解析脚本,脚本能够接收模型的输出文本作为输入,并根据定义的解析规则提取出有用的信息可以为后续进行故障识别与分类。
根据本公开实施例的一种具体实现方式,所述故障检测模块还用于:
基于规则处理后的数据,对提取的特征进行分析,以识别是否存在潜在的软件故障,如果故障识别判定存在困难,进一步对故障进行分类,包括对故障的类型、严重程度进行分类,以便进行后续的决策和修复。
根据本公开实施例的一种具体实现方式,所述决策控制模块还用于:
将前述故障检测模块得到的故障类型和严重程度信息与模型输出结果结合,综合判断考虑软件运行状态、模型输出的建议操作,以及已经识别的故障信息,具体包括:
故障类型和严重程度信息:结合故障检测模块的输出,考虑已识别的故障类型和严重程度信息;
软件运行状态:考察当前软件的运行状态,包括性能指标、负载、响应时间;
历史数据分析:分析历史监控指标数据,查看是否存在类似的模式或趋势,以帮助判断当前情况是否为常见故障;
在综合判断过程中,使用规则引擎将不同的条件组合起来,制定一系列规则,从而做出最终的综合判断。
第二方面,本发明实施例提供了一种基于云计算的软件运维方法,包括:
定时触发数据采集功能,从各种软件组件里面获取软件的运行状态数据,并通过kettle的中间件,将采集到的数据发送至kafka消息中间件,提供给模型预测模块进行在线推理;
利用Python脚本将历史故障训练数据格式化为文本,通过ZooKeeper协调模型初始化,各本地节点使用FATE进行本地模型训练,通过FedAvg算法实现模型参数的可靠聚合,使用Flask将更新后的模型部署为API服务;
通过Flask将大语言模型部署为API服务,接收kettle上报的实时状态数据,进行模型在线预测推理,输出结果通过Python脚本解析成可执行的SQL语句,同时使用规则引擎进行实时故障识别,根据解析结果对软件故障进行分类;
利用Drools规则引擎将故障识别结果映射为可调度任务的参数,通过XXL-JOB调度任务执行,尝试故障修复,基于kettle的软件组件连接通道和脚本支撑,实现软件故障命令的下发执行。
本发明实施例中的基于云计算的软件运维方案,包括:连接模块,所述连接模块定时触发数据采集功能,从各种软件组件里面获取软件的运行状态数据,并通过kettle的中间件,将采集到的数据发送至kafka消息中间件,提供给模型预测模块进行在线推理;联邦训练模块,所述联邦训练模块利用Python脚本将历史故障训练数据格式化为文本,通过ZooKeeper协调模型初始化,各本地节点使用FATE进行本地模型训练,通过FedAvg算法实现模型参数的可靠聚合,使用Flask将更新后的模型部署为API服务;故障检测模块,所述故障检测模块通过Flask将大语言模型部署为API服务,接收kettle上报的实时状态数据,进行模型在线预测推理,输出结果通过Python脚本解析成可执行的SQL语句,同时使用规则引擎进行实时故障识别,根据解析结果对软件故障进行分类;决策控制模块,所述决策控制模块利用Drools规则引擎将故障识别结果映射为可调度任务的参数,通过XXL-JOB调度任务执行,尝试故障修复,基于kettle的软件组件连接通道和脚本支撑,实现软件故障命令的下发执行。采用本方案,具有如下有益效果:
(1)通过利用联邦学习的理念,采用联邦大模型进行软件智能运维。通过在本地节点训练模型,实现在分布式环境中进行大规模的数据处理和模型训练,从而保护隐私数据的同时提高模型的全局性能。
(2)本方案中整合了Kettle的ETL流程,实现了方便高效的从各种各样的软件系统中提取、转换、加载软件运行状态数据的功能。这有助于实现对软件运行状态数据的全面管理和分析。
(3)本方案中通过命令解析与执行实现对软件故障的自动化操作。这使得系统能够根据模型和规则引擎的输出自动执行相应的维护命令。
(4)本方案采用Flask框架将更新后的模型部署为API服务。这种轻量级的部署方式有助于确保模型的在线部署不干扰业务的正常运行,并通过灰度发布策略确保线上系统的稳定性。
(5)本方案中整合了模型在线预测推理、模型输出解析、故障识别与分类、决策控制模块等功能,形成了一个全面的智能运维系统。该系统不仅能够检测故障,还能够根据规则引擎生成修复代码,并通过任务调度器实现软件的自动修复,提高了系统的可靠性和可维护性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还根据这些附图获得其它的附图。
图1为本发明实施例提供的基于云计算的软件运维系统结构示意图;
图2为本发明实施例提供的基于云计算的软件运维方法流程示意图。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
参见图1,图2,本公开实施例提供了一种基于云计算的软件运维系统,包括:
连接模块,所述连接模块定时触发数据采集功能,从各种软件组件里面获取软件的运行状态数据,并通过kettle的中间件,将采集到的数据发送至kafka消息中间件,提供给模型预测模块进行在线推理;
联邦训练模块,所述联邦训练模块利用Python脚本将历史故障训练数据格式化为文本,通过ZooKeeper协调模型初始化,各本地节点使用FATE进行本地模型训练,通过FedAvg算法实现模型参数的可靠聚合,使用Flask将更新后的模型部署为API服务;
故障检测模块,所述故障检测模块通过Flask将大语言模型部署为API服务,接收kettle上报的实时状态数据,进行模型在线预测推理,输出结果通过Python脚本解析成可执行的SQL语句,同时使用规则引擎进行实时故障识别,根据解析结果对软件故障进行分类;
决策控制模块,所述决策控制模块利用Drools规则引擎将故障识别结果映射为可调度任务的参数,通过XXL-JOB调度任务执行,尝试故障修复,基于kettle的软件组件连接通道和脚本支撑,实现软件故障命令的下发执行。
参见图1,对系统核心模块说明如下:
连接模块
通过Kettle数据输入、数据输出组件以及转换和SQL(数据库查询语言)查询能力,连接模块可定时触发数据采集功能,从各种软件组件里面获取软件的运行状态数据,并通过kettle的中间件连接能力,将采集到的数据发送至kafka(消息中间件),提供给模型预测模块进行在线推理。
联邦训练模块
利用Python脚本将历史故障训练数据格式化为文本,考虑向量化需求,确保适应大语言模型的输入。通过ZooKeeper(一个分布式的应用程序协调服务)协调模型初始化,各本地节点使用FATE进行本地模型训练,最后通过FedAvg(一种用于联邦学习的损失函数)算法实现模型参数的可靠聚合。完成后,使用Flask(一个使用Python编写的轻量级Web应用框架)将更新后的模型部署为API服务,确保线上系统的稳定性。
故障检测模块
通过Flask将大语言模型部署为API服务,接收kettle上报的实时状态数据,进行模型在线预测推理。输出结果通过Python脚本解析成可执行的SQL语句,同时使用规则引擎进行实时故障识别。根据解析结果对软件故障进行分类,确保高效而准确的故障检测。
决策控制模块
该模块提供了高效的决策控制和任务调度功能,为系统运维提供全面支持。利用Drools规则引擎将故障识别结果映射为可调度任务的参数,通过XXL-JOB(分布式任务调度工具)调度任务执行,尝试故障修复。基于kettle的软件组件连接通道和强大的脚本支撑,实现软件故障命令的下发执行。
参见图1中的步骤标记,对系统中各个模块执行的步骤说明如下:
1.1基于汇聚的互联网、日常运维产生的相关软件故障文本数据,考虑
FATE-LLM对输入的向量化需求,需要将这些文本数据转化为向量表示。确保向量表示的维度和格式符合FATE-LLM的要求。首先对文本进行分词,然后使用Gensim(针对自然语言处理的python库)库中的Word2Vec(词袋模型)模型训练词嵌入。最后,通过取每个文本中所有单词向量的平均值,得到了整个文本的向量表示。这个向量表示可以用于机器学习模型的输入。
1.2在联邦学习开始时,ChatGLM-6B(开源的、支持中英双语问答的对话语言模型,并针对中文进行了优化)会被初始化为全局模型。这个模型将在所有本地节点上进行联邦训练。这里由于使用的联邦训练工具是FATE-LLM,平台本身支撑ChatGLM-6B,所以这里选择使用ChatGLM-6B作为全局初始化的大语言模型。
1.3设置微调的超参数,训练轮次、学习率等,学习率决定了在梯度下降中模型参数的更新步长。较小的学习率意味着每次更新的步长较小,模型参数更新相对平缓。相反,较大的学习率会导致更大幅度的参数更新。在联邦学习中,不同本地节点的数据分布可能存在差异,如果全局学习率较大,一些节点可能在训练过程中因为参数更新速度过快而导致模型不稳定,甚至发散,所有选择相对较小的全局学习率,较小的学习率有助于在不同数据上更好地收敛,所以这里选择学习率为1e-5,由于ChatGLM-6B已经在大规模数据上预训练,微调时可以从几个轮次开始,观察性能并逐步增加。不需要过多的轮次以防止过拟合,这里选择5次。并选择AdamW作为优化器,使用AdamW优化器更新模型参数的方法描述如下:1、初始化优化器:在微调过程开始前,首先初始化AdamW优化器。AdamW是一种自适应学习率优化算法,它综合考虑了每个参数的梯度和历史梯度平方的信息,有助于更有效地调整学习率。2、加载预训练模型:ChatGLM-6B模型是在大规模语料上进行预训练的,加载该模型作为微调的初始模型。3、切换到训练模式:将加载的预训练模型切换到训练模式。4、迭代训练:针对微调数据集,迭代多个训练轮次。在每个轮次内,通过前向传播获取模型的预测结果,计算损失函数。然后使用反向传播计算相对于模型参数的梯度。5、计算梯度:利用tf.GradientTape记录前向传播过程,计算损失函数相对于模型参数的梯度。这一步骤是关键的反向传播过程。6、更新模型参数:使用AdamW优化器的apply_gradients方法,根据计算得到的梯度更新模型参数。AdamW算法考虑了每个参数的历史梯度平方,以动态调整学习率,使得对参数的更新更加平稳。这样,通过不断迭代训练,模型参数逐渐调整,使得模型在微调数据上更好地适应特定任务的要求。这种方法能够有效地保留预训练模型在大规模语料上学到的通用知识,同时适应新任务的特殊需求。由于当前是训练软件故障诊断的大模型,所以选择适用于多类别分类任务的交叉熵损失作为本次的损失函数,核心代码如下:
#定义损失函数
loss_function=tf.keras.losses.CategoricalCrossentropy(from_logits=True)
在反向传播过程中,计算模型中每个参数相对于损失函数的偏导数,这些偏导数组成了梯度,表示在当前参数下,损失函数相对于每个参数的变化率,利用计算得到的梯度,使用梯度下降优化算法,更新模型的参数。梯度的方向指示了损失函数上升最快的方向,但是训练的目标是使得损失最小,所以更新参数时需要朝着梯度的反方向移动,以减小损失函数值。具体来说,对于某个参数,如果损失函数对该参数的梯度值为记为d,当前的参数记为w,则更新后的参数为:wnew=wold-学习率*d,本次移动的数值大小为:学习率*d,该公式解释为对于某个参数,如果损失函数对该参数的梯度为正,那么在更新参数时,就需要减去一个正的值,使得参数减小,从而降低损失函数。反之,如果梯度为负,就需要增加一个正的值,使得参数增大,也是为了降低损失。在每个训练迭代的末尾,计算当前损失函数的值,记录上一次迭代的损失函数值,计算当前损失函数值与上一次的差值,这个差值就是损失函数减小的量,在训练过程中,统计这个量的变化,当损失函数变化的量小于1e-5,则认为模型已经收敛,当损失函数的变化足够小,可以认为模型已经接近最优点,进一步训练基本不会显著改善性能。在训练的不同阶段,这一过程会不断迭代,模型的参数会逐渐调整到更优的状态。调整前后的模型不同主要表现在模型参数的差异,而模型参数的差异最终反映出模型对训练数据的拟合程度上。随着训练的进行,模型会更好地学习数据的特征,提高在训练数据上的表现。
1.4每轮联邦学习:
模型上传:每个本地节点在其本地软件故障数据上使用ChatGLM-6B进行微调,得到本地模型参数。训练的样本示例数据如下:
模型聚合:在中央服务器上,计算所有本地节点上传的ChatGLM-6B模型参数的平均值,得到全局模型参数。
模型分发:将全局模型参数分发给每个本地节点,作为下一轮训练的初始权重。
这个过程迭代进行,直到达到设定的联邦学习轮数或达到收敛条件。
1.5使用一个轻量级的框架Flask,搭建一个API服务,接收用户的请求,这里的用户是基于kettle配置的软件状态采集消息,比如定时请求获取mysql连接返回的结果描述文本:An attemptby a clientto checkout a Connection has timed out,通过传入这样的异常信息文本作为模型输入,推理后会输出相关的数据库故障诊断结果描述文本。在服务中,实现与模型的交互逻辑,接收输入数据,将其传递给模型,获取模型的输出。
1.6基于要自动运维的软件,通过kettle的数据输入进行软件连接配置,使用Kettle设计ETL任务,连接到目标软件组件,执行SQL或者接口查询,获取软件的运行状态数据。定期采集对应软件的相关核心指标数据。
1.7上一步Kettle配置的采集,可将采集的结果数据同步到kafka中间件,充分利用大数据组件既可以解耦模块间的耦合也能提升性能。定制kafka消费者解析消息调用模型预测接口实现实时预测推理。
1.8根据ChatGLM-6B模型的输出格式,定义解析规则。ChatGLM-6B是一个生成式语言模型,其输出是自然语言文本,解析规则应该能够正确地识别关键信息。使用Python编写解析脚本,脚本能够接收模型的输出文本作为输入,并根据定义的解析规则提取出有用的信息可以为后续进行故障识别与分类。
1.9基于上面规则处理后的数据,对提取的特征进行分析,以识别是否存在潜在的软件故障。如果故障识别判定存在困难,可进一步对故障进行分类。包括对故障的类型、严重程度等进行分类,以便进行后续的决策和修复。
2.0将前述故障检测模块得到的故障类型和严重程度信息与模型输出结果结合。综合判断考虑软件运行状态、模型输出的建议操作,以及已经识别的故障信息。具体的步骤如下:
·故障类型和严重程度信息:结合故障检测模块的输出,考虑已识别的故障类型和严重程度信息。作为一个重要的参考,特别是对于一些已知故障类型的判断。
·软件运行状态:考察当前软件的运行状态,包括性能指标、负载、响应时间等。异常的运行状态可能与故障相关,需要综合考虑。
·历史数据分析:分析历史监控指标数据,查看是否存在类似的模式或趋势,以帮助判断当前情况是否为常见故障。
在综合判断过程中,可以使用规则引擎将不同的条件组合起来,制定一系列规则,从而做出最终的综合判断。以下是一个示例:
规则1:如果模型输出的故障原因为"数据库连接数达到上限",且故障类型为"数据库",严重程度为"高",则判定为高级别数据库连接问题。
规则2:如果模型输出的建议操作为"增加数据库连接池大小",且历史数据中存在数据库连接数上升的趋势,则认为当前问题与历史数据库连接问题相符。
规则3:如果软件运行状态显示当前负载过高,且模型输出建议操作无法解决高负载问题,则判断为可能存在其他未知问题。
规则引擎匹配依据:
规则引擎根据已定义的规则依次匹配,每个规则有一定的权重。
考虑规则之间的优先级,例如,某些规则可能对于特定类型的故障判断更为准确。
模型输出的结果也可作为一个权重因素,与规则关联度比较强的,则权重叠加。
如果存在多个匹配的规则,可以根据事先定义的策略(取权重最高的规则)做出最终的综合判断。
通过这种方式,规则引擎能够根据各种信息做出全面的综合判断,考虑模型输出、故障识别信息、软件运行状态和历史数据,提高决策的准确性和鲁棒性。规则引擎可以定义各种故障场景和相应的处理方法。例如,如果综合判断表明存在数据库连接问题,规则引擎可以匹配到相应的处理规则。根据规则引擎匹配的结果,生成相应的软件故障修复代码,生成SQL查询语句、调用特定的数据库操作接口等。将生成的故障修复代码输出,作为后续任务的输入。
2.1通过事先配置的任务调度接口,接受规则解析后输出的故障修复代码,调度具体的任务实现命令的下发,最终进行对应软件的故障自动修复。
本方案具有如下有益效果:
1)通过利用联邦学习的理念,采用联邦大模型进行软件智能运维。通过在本地节点训练模型,实现在分布式环境中进行大规模的数据处理和模型训练,从而保护隐私数据的同时提高模型的全局性能。
2)本方案中整合了Kettle的ETL流程,实现了方便高效的从各种各样的软件系统中提取、转换、加载软件运行状态数据的功能。这有助于实现对软件运行状态数据的全面管理和分析。
3)本方案中通过命令解析与执行实现对软件故障的自动化操作。这使得系统能够根据模型和规则引擎的输出自动执行相应的维护命令。
4)本方案采用Flask框架将更新后的模型部署为API服务。这种轻量级的部署方式有助于确保模型的在线部署不干扰业务的正常运行,并通过灰度发布策略确保线上系统的稳定性。
5)本方案中整合了模型在线预测推理、模型输出解析、故障识别与分类、决策控制模块等功能,形成了一个全面的智能运维系统。该系统不仅能够检测故障,还能够根据规则引擎生成修复代码,并通过任务调度器实现软件的自动修复,提高了系统的可靠性和可维护性。
根据本公开实施例的一种具体实现方式,所述联邦训练模块还用于:
基于FATE-LLM对输入的向量化需求,将互联网、日常运维产生的软件故障文本数据转化为向量表示,包括:对文本进行分词,然后使用Gensim库中的Word2Vec模型训练词嵌入,最后,通过取每个文本中所有单词向量的平均值,得到了整个文本的向量表示。
根据本公开实施例的一种具体实现方式,所述联邦训练模块还用于:
在联邦学习开始时,将ChatGLM-6B初始化为全局模型,该全局模型在所有本地节点上进行联邦训练。
根据本公开实施例的一种具体实现方式,所述联邦训练模块还用于:
选择AdamW作为优化器,使用AdamW优化器更新模型参数包括:
S41、初始化优化器:在微调过程开始前,首先初始化AdamW优化器;
S42、加载预训练模型:加载ChatGLM-6B模型作为微调的初始模型;
S43、切换到训练模式:将加载的预训练模型切换到训练模式;
S44、迭代训练:针对微调数据集,迭代多个训练轮次,在每个轮次内,通过前向传播获取模型的预测结果,计算损失函数,然后使用反向传播计算相对于模型参数的梯度;
S45、计算梯度:利用tf.GradientTape记录前向传播过程,计算损失函数相对于模型参数的梯度;
S46、更新模型参数:使用AdamW优化器的apply_gradients方法,根据计算得到的梯度更新模型参数。
根据本公开实施例的一种具体实现方式,所述联邦训练模块还用于:
使用一个轻量级的框架Flask,搭建一个API服务,接收用户的请求,这里的用户是基于kettle配置的软件状态采集消息,通过传入异常信息文本作为模型输入,推理后会输出相关的数据库故障诊断结果描述文本。
根据本公开实施例的一种具体实现方式,所述连接模块还用于:
基于要自动运维的软件,通过kettle的数据输入进行软件连接配置,使用Kettle设计ETL任务,连接到目标软件组件,执行SQL或者接口查询,获取软件的运行状态数据。
根据本公开实施例的一种具体实现方式,所述故障检测模块还用于:
根据ChatGLM-6B模型的输出格式,定义解析规则,使用Python编写解析脚本,脚本能够接收模型的输出文本作为输入,并根据定义的解析规则提取出有用的信息可以为后续进行故障识别与分类。
根据本公开实施例的一种具体实现方式,所述故障检测模块还用于:
基于规则处理后的数据,对提取的特征进行分析,以识别是否存在潜在的软件故障,如果故障识别判定存在困难,进一步对故障进行分类,包括对故障的类型、严重程度进行分类,以便进行后续的决策和修复。
根据本公开实施例的一种具体实现方式,所述决策控制模块还用于:
将前述故障检测模块得到的故障类型和严重程度信息与模型输出结果结合,综合判断考虑软件运行状态、模型输出的建议操作,以及已经识别的故障信息,具体包括:
故障类型和严重程度信息:结合故障检测模块的输出,考虑已识别的故障类型和严重程度信息;
软件运行状态:考察当前软件的运行状态,包括性能指标、负载、响应时间;
历史数据分析:分析历史监控指标数据,查看是否存在类似的模式或趋势,以帮助判断当前情况是否为常见故障;
在综合判断过程中,使用规则引擎将不同的条件组合起来,制定一系列规则,从而做出最终的综合判断。
与之对应的,参见图2,本发明还提供了一种基于云计算的软件运维方法,包括:
S101,定时触发数据采集功能,从各种软件组件里面获取软件的运行状态数据,并通过kettle的中间件,将采集到的数据发送至kafka消息中间件,提供给模型预测模块进行在线推理;
S102,利用Python脚本将历史故障训练数据格式化为文本,通过ZooKeeper协调模型初始化,各本地节点使用FATE进行本地模型训练,通过FedAvg算法实现模型参数的可靠聚合,使用Flask将更新后的模型部署为API服务;
S103,通过Flask将大语言模型部署为API服务,接收kettle上报的实时状态数据,进行模型在线预测推理,输出结果通过Python脚本解析成可执行的SQL语句,同时使用规则引擎进行实时故障识别,根据解析结果对软件故障进行分类;
S104,利用Drools规则引擎将故障识别结果映射为可调度任务的参数,通过XXL-JOB调度任务执行,尝试故障修复,基于kettle的软件组件连接通道和脚本支撑,实现软件故障命令的下发执行。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (9)
1.一种基于云计算的软件运维系统,其特征在于,包括:
连接模块,所述连接模块定时触发数据采集功能,从各种软件组件里面获取软件的运行状态数据,并通过kettle的中间件,将采集到的数据发送至kafka消息中间件,提供给模型预测模块进行在线推理;
联邦训练模块,所述联邦训练模块利用Python脚本将历史故障训练数据格式化为文本,通过ZooKeeper协调模型初始化,各本地节点使用FATE进行本地模型训练,通过FedAvg算法实现模型参数的可靠聚合,使用Flask将更新后的模型部署为API服务;
故障检测模块,所述故障检测模块通过Flask将大语言模型部署为API服务,接收kettle上报的实时状态数据,进行模型在线预测推理,输出结果通过Python脚本解析成可执行的SQL语句,同时使用规则引擎进行实时故障识别,根据解析结果对软件故障进行分类;
决策控制模块,所述决策控制模块利用Drools规则引擎将故障识别结果映射为可调度任务的参数,通过XXL-JOB调度任务执行,尝试故障修复,基于kettle的软件组件连接通道和脚本支撑,实现软件故障命令的下发执行;
所述联邦训练模块还用于:
选择AdamW作为优化器,使用 AdamW 优化器更新模型参数,包括:
S41、初始化优化器:在微调过程开始前,首先初始化 AdamW 优化器;
S42、加载预训练模型:加载ChatGLM-6B模型作为微调的初始模型;
S43、切换到训练模式:将加载的预训练模型切换到训练模式;
S44、迭代训练:针对微调数据集,迭代多个训练轮次,在每个轮次内,通过前向传播获取模型的预测结果,计算损失函数,然后使用反向传播计算相对于模型参数的梯度;
S45、计算梯度:利用 tf.GradientTape 记录前向传播过程,计算损失函数相对于模型参数的梯度;
S46、更新模型参数:使用 AdamW 优化器的 apply_gradients 方法,根据计算得到的梯度更新模型参数。
2.根据权利要求1所述的系统,其特征在于,所述联邦训练模块还用于:
基于FATE-LLM对输入的向量化需求,将互联网、日常运维产生的软件故障文本数据转化为向量表示,包括:对文本进行分词,然后使用Gensim库中的Word2Vec模型训练词嵌入,最后,通过取每个文本中所有单词向量的平均值,得到了整个文本的向量表示。
3.根据权利要求2所述的系统,其特征在于,所述联邦训练模块还用于:
在联邦学习开始时,将ChatGLM-6B初始化为全局模型,该全局模型在所有本地节点上进行联邦训练。
4.根据权利要求1所述的系统,其特征在于,所述联邦训练模块还用于:
使用一个轻量级的框架Flask,搭建一个 API 服务,接收用户的请求,这里的用户是基于kettle配置的软件状态采集消息,通过传入异常信息文本作为模型输入,推理后会输出相关的数据库故障诊断结果描述文本。
5.根据权利要求4所述的系统,其特征在于,所述连接模块还用于:
基于要自动运维的软件,通过kettle的数据输入进行软件连接配置,使用Kettle设计ETL任务,连接到目标软件组件,执行SQL或者接口查询,获取软件的运行状态数据。
6.根据权利要求5所述的系统,其特征在于,所述故障检测模块还用于:
根据 ChatGLM-6B 模型的输出格式,定义解析规则,使用 Python编写解析脚本,脚本能够接收模型的输出文本作为输入,并根据定义的解析规则提取出有用的信息可以为后续进行故障识别与分类。
7.根据权利要求6所述的系统,其特征在于,所述故障检测模块还用于:
基于规则处理后的数据,对提取的特征进行分析,以识别是否存在潜在的软件故障,如果故障识别判定存在困难,进一步对故障进行分类,包括对故障的类型、严重程度进行分类,以便进行后续的决策和修复。
8.根据权利要求7所述的系统,其特征在于,所述决策控制模块还用于:
将故障检测模块得到的故障类型和严重程度信息与模型输出结果结合,综合判断考虑软件运行状态、模型输出的建议操作,以及已经识别的故障信息,具体包括:
故障类型和严重程度信息:结合故障检测模块的输出,考虑已识别的故障类型和严重程度信息;
软件运行状态:考察当前软件的运行状态,包括性能指标、负载、响应时间;
历史数据分析:分析历史监控指标数据,查看是否存在类似的模式或趋势,以帮助判断当前情况是否为常见故障;
在综合判断过程中,使用规则引擎将不同的条件组合起来,制定一系列规则,从而做出最终的综合判断。
9.一种基于云计算的软件运维方法,其特征在于,包括:
定时触发数据采集功能,从各种软件组件里面获取软件的运行状态数据,并通过kettle的中间件,将采集到的数据发送至kafka消息中间件,提供给模型预测模块进行在线推理;
利用Python脚本将历史故障训练数据格式化为文本,通过ZooKeeper协调模型初始化,各本地节点使用FATE进行本地模型训练,通过FedAvg算法实现模型参数的可靠聚合,使用Flask将更新后的模型部署为API服务;
通过Flask将大语言模型部署为API服务,接收kettle上报的实时状态数据,进行模型在线预测推理,输出结果通过Python脚本解析成可执行的SQL语句,同时使用规则引擎进行实时故障识别,根据解析结果对软件故障进行分类;
利用Drools规则引擎将故障识别结果映射为可调度任务的参数,通过XXL-JOB调度任务执行,尝试故障修复,基于kettle的软件组件连接通道和脚本支撑,实现软件故障命令的下发执行;
选择AdamW作为优化器,使用 AdamW 优化器更新模型参数,包括:
S41、初始化优化器:在微调过程开始前,首先初始化 AdamW 优化器;
S42、加载预训练模型:加载ChatGLM-6B模型作为微调的初始模型;
S43、切换到训练模式:将加载的预训练模型切换到训练模式;
S44、迭代训练:针对微调数据集,迭代多个训练轮次,在每个轮次内,通过前向传播获取模型的预测结果,计算损失函数,然后使用反向传播计算相对于模型参数的梯度;
S45、计算梯度:利用 tf.GradientTape 记录前向传播过程,计算损失函数相对于模型参数的梯度;
S46、更新模型参数:使用 AdamW 优化器的 apply_gradients 方法,根据计算得到的梯度更新模型参数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311844935.3A CN117762464B (zh) | 2023-12-29 | 2023-12-29 | 一种基于云计算的软件运维系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311844935.3A CN117762464B (zh) | 2023-12-29 | 2023-12-29 | 一种基于云计算的软件运维系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117762464A CN117762464A (zh) | 2024-03-26 |
CN117762464B true CN117762464B (zh) | 2024-07-09 |
Family
ID=90319957
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311844935.3A Active CN117762464B (zh) | 2023-12-29 | 2023-12-29 | 一种基于云计算的软件运维系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117762464B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118394367A (zh) * | 2024-06-27 | 2024-07-26 | 广东保伦电子股份有限公司 | 一种开发环境的安装方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112579728A (zh) * | 2020-12-18 | 2021-03-30 | 成都民航西南凯亚有限责任公司 | 基于海量数据全文检索的行为异常识别方法及装置 |
CN114330740A (zh) * | 2021-12-17 | 2022-04-12 | 青岛鹏海软件有限公司 | 一种基于联邦学习的制造业装备故障监测模型训练系统 |
CN116366643A (zh) * | 2022-12-12 | 2023-06-30 | 南京理工大学 | 一种工业移动机器人智慧运维的云边协同平台架构 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110659173B (zh) * | 2018-06-28 | 2023-05-26 | 中兴通讯股份有限公司 | 一种运维系统及方法 |
US11586972B2 (en) * | 2018-11-19 | 2023-02-21 | International Business Machines Corporation | Tool-specific alerting rules based on abnormal and normal patterns obtained from history logs |
US20210064518A1 (en) * | 2019-08-27 | 2021-03-04 | Shield34 LTD. | Methods Circuits Devices Systems and Functionally Associated Machine Executable Code For Automatic Failure Cause Identification in Software Code Testing |
CN111722043B (zh) * | 2020-06-29 | 2021-09-14 | 南方电网科学研究院有限责任公司 | 一种电力设备故障检测方法、装置及系统 |
CN114168152A (zh) * | 2021-12-06 | 2022-03-11 | 国网河北省电力有限公司信息通信分公司 | 基于机器学习的业务应用开发和业务运维管理系统 |
EP4266195A1 (en) * | 2022-04-19 | 2023-10-25 | Microsoft Technology Licensing, LLC | Training of text and image models |
CN116643906B (zh) * | 2023-06-01 | 2024-08-02 | 北京首都在线科技股份有限公司 | 云平台故障的处理方法、装置、电子设备及存储介质 |
CN117113239A (zh) * | 2023-09-01 | 2023-11-24 | 上海航数智能科技有限公司 | 一种基于联邦学习的船舶燃气轮机故障检测方法及设备 |
-
2023
- 2023-12-29 CN CN202311844935.3A patent/CN117762464B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112579728A (zh) * | 2020-12-18 | 2021-03-30 | 成都民航西南凯亚有限责任公司 | 基于海量数据全文检索的行为异常识别方法及装置 |
CN114330740A (zh) * | 2021-12-17 | 2022-04-12 | 青岛鹏海软件有限公司 | 一种基于联邦学习的制造业装备故障监测模型训练系统 |
CN116366643A (zh) * | 2022-12-12 | 2023-06-30 | 南京理工大学 | 一种工业移动机器人智慧运维的云边协同平台架构 |
Also Published As
Publication number | Publication date |
---|---|
CN117762464A (zh) | 2024-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220383190A1 (en) | Method of training classification model, method of classifying sample, and device | |
CN117762464B (zh) | 一种基于云计算的软件运维系统及方法 | |
CN112732871B (zh) | 一种机器人催收获取客户意向标签的多标签分类方法 | |
CN113312464B (zh) | 一种基于对话状态追踪技术的事件抽取方法 | |
US20220319535A1 (en) | Utilizing machine learning models to provide cognitive speaker fractionalization with empathy recognition | |
CN117992078B (zh) | 一种基于TensorRT-LLM模型推理加速服务的自动化部署方法 | |
KR102330423B1 (ko) | 이미지 인식 딥러닝 알고리즘을 이용한 온라인 부도 예측 시스템 | |
CN117851909B (zh) | 一种基于跳跃连接的多循环决策意图识别系统及方法 | |
CN116629338A (zh) | 一种模型数据的处理方法、相关装置、设备以及存储介质 | |
CN113268604B (zh) | 知识库自适应扩展方法及系统 | |
CN116804691B (zh) | 一种用于电力系统的调度自动化设备故障监测方法 | |
CN116932355A (zh) | 一种基于大数据的信息处理方法及系统 | |
CN116431813A (zh) | 智能客服问题分类方法、装置、电子设备及存储介质 | |
CN110011833B (zh) | 一种基于深度学习的服务系统在线可靠性预测方法 | |
US20240338386A1 (en) | Smart data signals for artificial intelligence based modeling | |
CN118550524B (zh) | 人工智能模型的可视化输出方法、装置、设备及介质 | |
CN118377884B (zh) | 基于远程天然气服务的业务数据处理方法及系统 | |
CN117952495B (zh) | 基于数字化的智能物流数据处理方法及系统 | |
CN113282561B (zh) | 链路生成方法及装置 | |
CN118673424A (zh) | 一种基于云计算和深度学习的跨境电商商品归类方法 | |
Shu et al. | Research On Bridge Data Anomaly Detection Based On OPTICS-Transformer | |
CN118709022A (zh) | 一种基于多头注意力机制的多模态内容检测方法及其系统 | |
CN114298273A (zh) | 一种深度学习模型自动训练的方法、装置及系统 | |
CN118378952A (zh) | 一种数字员工评价方法及装置 | |
CN115454525A (zh) | 基于Kafka的大数据系统访问量骤增时用户卡顿解决方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |