Sedna终身学习以及KubeEdge梳理

文章目录

一、KubeEdge以及Sedna架构

1 KubeEdge架构及组件

1.1 整体架构

参考https://blog.csdn.net/qq_43475285/article/details/126760865
在这里插入图片描述

1.2 CloudCore组件

Edge Controller:管理边缘节点以及应用状态元数据云边协同。
Device Controller:负责接入和管理边缘设备。
Sync Controller:保持云边数据最终统一。
CloudAdmission Webhook:实现边缘应用最佳实践,扩展API输入校验。
CSI Driver:支持第三方CSI插件的无缝集成。
CloudHub:边云数据通道。

1.3 EdgeCore组件

EdgeHub:边云数据通道;通过Websocket连接CloudHub。
MetaManager:数据本地化。
MetaServer:MetaManager的子模块,使K8s Operator能够无差别的运行在边缘节点。
Edged:引用了上游K8s的Kubelet-Lite,并做轻量化的定制。与基于CNI标准的容器引擎进行对接。
EventBus:本质是一个MQTT客户端,与边缘设备通信。
在这里插入图片描述

1.4 EdgeMesh插件

EdgeMesh是KubeEdge在边缘场景下的网络边缘多边互通的一个解决方案。
组件:EdqeMesh-Server和EdgeMesh-Agent
参考https://github.com/kubeedge/edgemesh/blob/main/README.md
在这里插入图片描述

2 Sedna架构及组件

参考https://sedna.readthedocs.io/

在这里插入图片描述
1 GlobalManager
基于K8S操作符的边缘AI控制。
2 LocalController
管理边端AI以及边端的数据和模型资源。
3 Workers:
可以看作docker容器,基于需要被启用,可以在边节点或云节点运行。基于 机器学习框架,做训练、推理等工作。
4 Lib
exposes the Edge AI features to applications, i.e. training or inference programs.

二、Sedna边云协同终身学习

参考1Zheng Z, Luo P, Li Y, et al. Towards lifelong thermal comfort prediction with KubeEdge-sedna: online multi-task learning with metaknowledge base[C]//Proceedings of the Thirteenth ACM International Conference on Future Energy Systems. 2022: 263-276.
参考2https://www.bilibili.com/video/BV1ra411Z7sW/

1 边云协同机器学习的挑战以及解决方式

1.1 挑战

目前,边云协同机器学习面临复杂场景下的数据异构问题以及边缘节点样本数量少。

1.2 如何解决

借助于多任务学习和增量学习(在历史场景之间共享知识进行学习),以及云知识库(有memory,将历史知识应用在边端未见过的未知任务上),希望克服挑战。

2 经典终身学习框架与Sedna改进的终身学习框架

在这里插入图片描述
经典的终身学习不断地对KB做增量,也叫做增量学习
但存在数据异构问题,也就是相同的输入,在不同的边侧,会有不同的标注结果,因此改进之后的终身学习架构(Sedna终身学习架构)添加基于任务的知识挖掘模块,只对特定知识进行增量。

3 Sedna边云协同终身学习技术方案

3.1 边云协同终身学习定义及流程

在这里插入图片描述
初始化知识库
在云侧知识库中存储和维护过去N个任务(记为第T-N到T-1个任务)中训练并累积的知识。
学习当前任务
在边侧设备面对当前任务(记为第T个任务)时,基于云侧知识库先验知识训练第T个任务。注意,第T个任务并不一定在历史的N个任务当中。
更新知识库
将学习到的边侧第T个任务知识反馈到云侧知识库并更新。
学习未来任务
持续学习未来M个任务(记为第T+1到T+M个任务)。与上面第T个任务利用过去N个任务知识(从T-N到T-1)类似,第T+1个任务的边侧任务知识则利用过去N+1个云侧任务知识(从T-N到T)。以此类推,直到完成第T+M个任务,结束整个流程。

3.2 元概念

在这里插入图片描述

3.2.1 元知识,Metaknowledge

元知识指knowledge of using models。
元知识就是映射关系,f,元知识库中的元知识越丰富,可以处理的任务就越多,model就越多。
元知识被一个元知识库保留和维护,这个元知识库可以通过扩展现有的元数据库(metadata base)来实现。
利用元知识,实现动态分配任务而不是对所有sample都使用固定的任务。

3.2.2 元知识的阶,Order

用n表示。
如果为0阶,那么metadata,metaknowledge和metalabel 就分别对应经典机器学习中的data, knowledge和label。
如果为1阶,那么元知识体现了一个任务中一群样本的信息,这是样本群/任务level,而不是0阶的单个样本level。
也就是把0阶的特征抽象了。因此一阶元知识是0阶元知识的元知识。

3.2.3 元数据,Metadata

记作m,x
样本数据中具有代表性的项,例如季节、温度。
提取一阶元数据:在这里插入图片描述

3.2.4 元标签,Metalabel

一个样本在一个任务上的预测置信度。
通过元标签选择最适合的知识(也就是模型),也就是通过元标签决定某个任务是否适合决策某个样本。

3.3 舒适度预测终身学习框架

下图为舒适度预测终身学习框架。
共有五个关键模块:元知识初始化任务分配未知任务识别未知任务处理以及元知识库
在这里插入图片描述

3.4 元知识初始化(元学习)

3.4.1 定义

此过程为“通过元学习从元数据中提取元知识”。
是对有label的数据进行知识提取。
元学习可在基础模型(XGBoost,SVM,神经网络等)的基础上,进一步学习,有很高的灵活性。

3.4.2 元学习过程

1、元知识库提供元数据attribute以及模型;建筑系统提供样本(包含data value: x和label: y)
2、通过data value和元数据attribute提取一阶元数据。(下图左侧)
3、通过模型,data value以及label计算出元标签,元标签反映了把一个任务用在一个样本上的置信度。(下图右侧)
4、找到在此样本上置信度最高的模型,就是我们要的元知识。
5、总结:此过程针对首先基于知识库对样本进行特征提取得到元数据,再为元数据寻找最合适的模型(通过label以及置信度),也就是通过元数据提取了元知识。
在这里插入图片描述
在这里插入图片描述

3.5 任务分配(推理阶段)

从这一步开始,才真正开始推理。
本质是一个决策模型。
对推理样本和任务(元知识库中已有的的元知识)进行相似度计算(也就是预测的置信度),分配相似度最高的模型用于推理。
在这里插入图片描述

3.6 未知任务识别以及处理(知识库更新)

虽然我们的知识库中有很多任务,但随着新任务的到来,知识库需要基于新任务进行更新以保持可用性。

3.6.1 如何检测未知任务

1、未知任务的定义:当任务的n阶元知识和推理样本的n阶元知识的相似度大于某一阈值时,那么这个样本属于未知任务。
2、本文通过两个相似度算子,来评估当前任务与已有任务之间的相似性。
分别为0阶元知识(模型相似度)1阶元知识(属性相似度)
在这里插入图片描述

3.6.2 知识库更新的四种操作(未知任务处理)

1、0阶和1阶元知识都很相似——Metaknowledge Reservation
此时为已知任务,无需更新模型,直接应用模型进行推理。
2、0阶不相似,1阶相似——Metaknowledge Remodeling
没有好的模型来拟合,因此进行模型重建,如上图左下。
3、0阶相似,1阶不相似——Metaknowledge Rescoping
在元知识库中没有一个完美的任务属性元模型,应对任务进行元学习,重新抽取任务属性。
4、0阶和1阶都不相似—— Metaknowledge Accumulation
那么此任务属于当前元知识库完全未知的任务,那么增加新任务。

3.7 基于Brick的元知识库

Brick是一个元数据库,它为建筑学中的知识建模,但并不提供终身学习的特性(例如添加新的attribute或元知识)。
基于Brick开发了元知识库用于提供和保留元数据和元知识,并提供终身学习特性。
把任务定义为由模型,属性,样本构成的三元组;通过属性得到最接近的任务,使用该任务的模型进行推理。
下图红框内为Task6的三元组。
在这里插入图片描述

3.8 多任务训练以及模型可插拔

LEON可以适应多任务学习中的各种基础模型(XGBoost,SVM,神经网络等),而不是必须依赖某一种模型,即模型可插拔,因为LEON在基础模型(黑盒)的基础上进行元学习,这黑盒是可插拔的。
有了LEON,人们可以使用XGBoost和SVM等任意模型来建立终身服务,只需进行很少的修改。

3.9 此框架(LEON)的计算性能

3.9.1 性能相比FR较好

Frequent Re-training (FR)指新sample到来时,重新训练所有model和attribute。
Leon相比FR,相同准确率下,在8至33个任务的测试中,平均快了217倍多。
在这里插入图片描述

3.9.2 原因

1、LEON通过任务分配(3.5)只更新一个目标任务,而不是重新训练所有任务。
2、LEON可以只更新一个未知任务的一部分,即任务属性或模型(3.6.2的情况2和3);并且无需更新已知任务。

3.10 实验

3.10.1 数据集

使用ASHRAE Global Thermal Comfort Database II (ATCII)数据库,包含了1995至2015年间,28个国家99个城市超过60000条数据。
在实验中预测“热感觉”和“热偏好”这两个较为直接的舒适度指标。

3.10.2 训练过程

将整个数据集分为12个子集,每个子集有5337个sample。
1、训练集
其中11个子集用于训练,第一个子集用于系统的初始化,接下来,为了模拟终身学习中数据持续到来这一特征,每次都做增量训练。共11轮。
以4:1的比例从训练集中拆分验证集。
2、测试集
第12个子集用作测试集。
在这里插入图片描述

3.10.3 六种基线方法(Baseline Methods)

1、Predicted Mean Vote (PMV)
是一个用领域知识而不是机器学习构建的知名综合模型。
2、Single Task Learning (STL)
通过汇集所有任务的初始训练数据来学习单个模型。
3、Metadata-based Multi-task Learning (DUET)
使用元数据来分配任务,但不维护知识,不提供终身学习特性
4、Online single task learning (OSTL)
数据持续到来的STL。
5、Traditional lifelong learning (TLL)
基于给定的任务在线学习。
6、Lifelong memory learning (LML)
用知识在线学习,而LEON是用元知识学习。

3.10.4 Criterion以及LEON的表现
3.10.4.1 SMAPE(Symmetric Mean Absolute Percentage Error)

1、对称平均绝对百分比误差,用作损失函数。
在这里插入图片描述
用SMAPE作为损失函数可以惩罚明显的错误,例如ground truth是“want cooler”,那么“want warmer”相比“want no change”得到更大的惩罚。
2、结果
在这里插入图片描述
在这里插入图片描述
(1)在线学习的优势
将4种在线学习算法(OSTL, TLL, LML and LEON)与3种非在线学习算法(PMV, STL, DUET)比较,在线学习算法总体上强出13.64%。
而仅看LEON相比3种非在线学习算法(PMV, STL, DUET),如Figure 7,我们看到LEON总体上通过数据增量逐渐提高其学习能力,而非终身学习算法由于只有一次训练的性质而无法改进(fiexed model无法向终身学习模型那样积累知识)。
(2)元知识的优势
LEON与其他三种终身学习算法的主要区别就是是否使用了元知识。
LEON引入元知识来正确地积累、维护和重用多任务知识,如Figure 8。然而,非元知识方法无法了解生成了什么知识以及何时使用知识,导致学习能力较低。
注意Table 4中的Std,OSTL是单任务设定,不能有效地处理数据异构,因此相比其他三种多任务学习方法,显示出较大的性能波动。

3.10.4.2 BWT(Backward Transfer)

这个指标反映知识库在生命周期中在数据增量和处理后,对之前遇到的任务性能的影响。
反映了灾难性遗忘。
在这里插入图片描述

下图说明LEON利用元知识更好地记忆和表示了历史任务,较好的缓解灾难性遗忘问题。
在这里插入图片描述

3.10.4.3 FWT(Forward Transfer)

这个指标反映了预测未知任务的能力。将现有的模型应用于未知任务是终身学习的重要部分。

在这里插入图片描述

如下图,LEON展示出了很好的泛化能力,因为元知识库中储存多任务知识,并且能用在未知任务上。
在这里插入图片描述

3.10.4.4 0阶1阶元知识相似度阈值的选取

增大0阶和1阶阈值的选取都会对准确率有负面的影响,因为更大的阈值会带来元知识库更少频率的更新。但是,更大的阈值选取可以防止频繁的retaining,以减少训练时间。
推荐的0阶和1阶阈值分别为0.5和1。
在这里插入图片描述

三、楼宇热舒适度预测案例流程

参考1 https://sedna.readthedocs.io/en/latest/proposals/lifelong-learning.html
参考2 https://github.com/kubeedge/sedna/blob/main/docs/proposals/incremental-learning.md#details-of-api-between-gmcloud-and-lcedge
参考3 https://zhuanlan.zhihu.com/p/378501662

3.1 总体流程

3.1.1 阶段及状态

共有三个阶段: train, eval, deploy
每个阶段有几种状态: Waiting, Ready, Starting, Running, Failed, Completed.
在这里插入图片描述

3.1.2 Sedna边云协同终身学习框架

维护一个全局可用的知识库(KB)服务于每个终身学习任务。
Workers之间不需传输数据。
在这里插入图片描述

3.2 Job Creation

训练和评估在云侧,部署到边侧,推理在边侧。
在这里插入图片描述

3.3 训练

在这里插入图片描述

3.3.1 训练流程

1、数据(旧数据以及边侧采集到的新数据)传输至负责训练的Cloud Node的LC中。(步骤2)
2、LC此时已准备成功,向GM发送Ready to do training消息,GM发送给K8S。(步骤3&4)
3、K8S在此Cloud Node创建Train Worker。
4、开始训练,训练结束之后更新KB。(步骤5)

3.4 评估

在这里插入图片描述

3.4.1 评估流程

1、评估全部为云侧进行。
2、Cloud Node中的Train Worker训练结束之后,告知自己Cloud Node的LC训练已完成。(步骤1)
3、LC通信GM,GM再通信K8S,更新状态。
4、K8S创造Evaluation Worker(仍在此Cloud Node中)。
5、Evaluation Worker向LC报告工作的状态以及evaluation的结果。(步骤五)
6、如果评估结果不错,进行3.5的部署到边端。

3.5 部署

在这里插入图片描述

3.5.1 部署流程

1、Evaluation Worker将评估结果发给LC。(步骤1)
2、如果结果较好,向GM以及边端进行同步。
3、Edge Node的LC中的Model Mgmt模块将overwrite模型。(步骤5)
4、Edge Node的LC向GM发送它已经处于准备部署的状态,GM再发至K8S。(步骤6&7&8)
5、K8S在此Edge Node中创建Inference Worker。(步骤10)
6、Inference Worker重载新模型,并开始工作。(步骤11)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值