KubeEdge Summit 2022回顾:边缘云创新Lab 实习生李蕴哲与罗溥晗分享KubeEdge-Sedna终身学习前沿应用研究
在边缘计算的浪潮中,AI是边缘云乃至分布式云中最重要的应用之一。随着边缘设备的广泛使用和性能提升,将人工智能相关的部分任务部署到边缘设备已经成为必然趋势。
KubeEdge-Sedna子项目作为业界首个分布式协同AI框架,基于KubeEdge提供边云协同能力,支持现有AI类应用无缝下沉到边缘,降低分布式协同AI服务构建与部署成本、提升模型性能、保护数据隐私等。
华为云边缘云创新Lab 实习生上海交通大学研究团队的李蕴哲与中国科学技术大学研究团队的罗溥晗,在KubeEdge Summit 2022为听众介绍如何使用KubeEdge-Sedna的边云协同终身学习特性来探索和构建楼宇冷机控制领域应用。相关论文已发表在ACM未来能源系统大会ACM e-Energy 2022,该会议是计算机+能源交叉领域ACM SIG Energy两个顶会之一,级别约为B+(与 CCF-A 的 Ubicomp;CCF-B 的 ECAI、TKDD H5-index 相同)。期望能为各位读者解答一些KubeEdge-Sedna边云协同终身学习相关的研究问题。也欢迎关注Sedna项目,持续获得边云协同乃至分布式协同AI框架能力支持。
项目开源GitHub地址:
楼宇舒适度预测场景
舒适度是指人对于当前的环境是否感到满意。简单点讲就是,人感到热、舒适还是冷。舒适度预测对楼宇的能源控制极为重要,关系到楼宇建筑设计方案的决策以及楼宇空调系统的管理。现代社会中的人们大约有80%的时间在楼宇里面,楼宇占用了一个城市40%的能源消耗,这些能源消耗大约有54%来自空调冷机。因此,对于楼宇的舒适度进行准确预测并基于此进行楼宇冷机的控制至关重要。
图1 舒适度预测示意图
楼宇舒适度预测的问题由来已久。早期的研究是建筑学等相关领域的一些研究,一个代表性的舒适度预测方法是PMV,它为建筑环境构造了一个“平均”的人,用来预测一群人在一个相同的环境下对冷热的反应;后来,计算机的一些工具被用上了以构建个性化的舒适度模型,但这些方法往往需要额外的设备或者来自用户的实时反馈;这是因为舒适度其实是和人的主观感受是有关的,必须要额外设备的介入或者用户的反馈。然而,额外的设备以及用户提供反馈的需求,使得这些舒适度模型并没有得到广泛使用,也给方法的大规模部署带来了困难。
因此,很多数据驱动的方法被提出来,以解决这些问题。然而,数据驱动的方法要求设计者对用户所处的环境非常熟悉,能够收集到用户所处环境下的所有可能的情况下的数据,这在边缘甚至移动场景下同样是非常困难的。最近,一些基于多任务学习的方法也被提出来解决这一问题。这些工作致力于为不同的环境训练不同的模型,并且让不同的环境之间能够共享部分知识,以满足数据驱动方法对数据的要求。但是这些方法往往侧重于单次训练,而忽视了知识的保持以及环境的变换导致的模型更新的需求,带来了大量的学习成本。基于这些原因,我们基于Sedna的终身学习特性提出了终身学习的舒适度预测方法,将在后面进行具体介绍。简单来说,Sedna终身学习方法的主要特点在于,它能够指导模型的使用和保存,并以恰当的方式来对模型进行更新,使得系统能够快速适应多个不同的场景。
单任务增量的局限性
这边再具体讲解一下为什么简单的基于单任务的范式对模型做增量是不现实的。这是因为实际情况远比很多研究里面所考虑的要复杂。很多因素都可能导致模型的变化,例如季节、空调策略等等,但这些因素往往不会被人们收集。
例如,我们考虑这样一个例子。在某一时刻,人在户外,此时户外的温度有三十度,人觉得很热。模型学到了这一信息,并能够正确地预测出人会觉得热;但下一时刻,人到了室内,开着空调,在其他任何输入都没有改变的情况下,人可能又会觉得冷。这个时候,我们一般会让模型根据新数据进行微调,让模型更新以学会新的数据。微调之后,模型确实能够将t2时刻的情况预测为冷了,但可能到了t3时刻,人又到了户外,又觉得热了,但这个时候模型已经忘记了曾经学过的这种情况下要预测为热,依旧预测为冷,依旧导致了错误。
图2 单任务增量示意图
这是因为在这一系统里面,我们只有一个模型,所以模型在学新知识的时候不可避免的会忘记曾经学过的知识,导致当之前的情况再次出现时,模型依旧会预测错误。这一现象被称为灾难性遗忘。
舒适度预测的落地挑战-数据异构与小样本
在舒适度检测实际应用的落地中,存在数据异构和小样本这样两个挑战。
数据异构是指不同边缘节点的数据存在明显的差异的问题。首先,由于季节更替以及不同边侧气候的不同,不同边侧的数据分布可能是不断变化的,不同边侧的数据可能差别非常大;其次,不同城市的气候差异也很大,而这些信息是很难由传感器精准刻画然后送给模型去学习的,很多时候我们只能获取一个并不精准的标签,例如这是哪个城市什么时候的数据等等。这样的不清晰的指导使得不同边侧的数据很难直接进行迁移,一味的使用传统的迁移方法会带来很严重的负迁移问题。
图3 不同城市之间分布的差异示意图
小样本是指可用数据样本过少的问题。一般来说,我们构建真实应用的数据有两个来源:公开数据集和自己采集。我们调研了学界的公开数据集,发现即使是在开源风气很好的计算机的学术会议上,很多数据集也都没有开源。不开源的情况下,我们在实际应用中往往只能自行收集数据。这就带来了数据孤岛的问题。
首先,因为数据异构的问题,不同边侧会负迁移,所以采集的数据往往只能在某个特定的边侧使用;其次,因为采集设备、网络瓶颈、交付周期等因素的限制,数据采集并不容易;这使得每个边侧的数据都很小,每个边侧的数据可能都会很差。
边云协同终身学习技术方案
学界解决数据异构和小样本问题的方式有很多,我们这边基于kubeedge-sedna使用的是终身学习。经典的机器学习范式是仅有一个任务,任务包含数据以及使用的模型,然后通过一些方法训练,得到模型的参数,最终这个模型将直接被拿去用;经典的终身学习架构会维护一个知识库,基于源源不断的任务来改进这一模型,对模型做增量,使得模型越来越好,能够更好地服务于应用;这一类的终身学习有的时候又被称作增量学习。但是我们刚刚讲到,考虑到数据异构的问题,同样的输入,在不同的边侧可能会有不同的标注结果。在这种情况下,直接对已有的知识库做增量,显然不是一个好的选择。因此,改进之后的终身学习架构,增加了一个基于任务的知识挖掘模块,只会对特定的知识进行增量。我们Sedna边云协同终身学习技术方案就是基于这一架构设计。
图4 终身学习架构图
基于终身学习以及我们的实际问题,最终对问题进行了如下的定义。云需要为多个边提供舒适度预测服务。在某一个时间节点,我们已经为N个边的任务提供了服务,这个时候我们的知识库中存储着从这N个任务中学到的知识。现在来了一个新的边缘节点的舒适度预测任务,这个舒适度预测任务可能与已有的舒适度预测任务的某一个相似,也可能和每个任务都不相似。我们想办法为这个边缘节点提供服务;同时,我们也可以学到来自这个任务的知识,并更新我们的舒适度预测知识库。更新之后,我们就可以为后续的未来可能到来的任务提供更高质量的服务。
图5 边云协同终身学习流程示意图
我们的技术方案包括元知识初始化、任务分配、未知任务发现、未知任务处理以及元知识库构建模块。
元知识是从元数据中抽取出来的知识,是知识的知识。我们从数据集中搜索得到了元数据,并通过元数据到元标签的学习抽取出了元知识。元数据具体来说指的是一组样本中具有代表性的特征或项,如夏季或冬季。元标签指的是一个样本在一个任务上的置信度,比如预测结果置信度是90%,那么我们认为这个样本可以很好地被这个任务处理。所以元知识是要决策某个任务是否适用于某个样本。而整个提取元知识的过程就称作元学习,它是一种可以从基础模型学习算法中再次学习的学习算法。这里基础模型可以是XGBOOST,SVM,神经网络等等,有很高的灵活性,包括元标签也可以是自定义的实现方式,我们的工作里使用了置信度实现。
图6 元知识初始化示意图
任务分配模块的作用是在推理阶段利用元知识为推理样本分配任务,因为知识库里存储有很多任务模型,当新样本到来时,系统可能不知道该用哪个进行推理。所以我们需要用元知识来为样本分配一个最适合的任务,决策模型输出的结果是样本与任务的相似度,或者可以理解为预测置信度,相似度越高,使用这个任务预测就越准确。如图,这里我们发现最匹配的任务是2,我们就用任务2的模型进行推理。
图7 任务分配流程示意图
初始化后的知识库需要基于推理任务的反馈进行更新。我们这里定义了两类任务的相似度,即模型的相似度和元知识属性的相似度。根据这两种相似度的组合,我们有4类不同的可能,以及对应的更新操作。当模型和属性都相似时,当前任务为已知任务,不需要更新;当模型不相似但属性相似时,需要任务模型重建,即使用历史任务和当前任务的数据一起训练新的模型;当模型相似但属性不相似时,需要对任务属性进行重抽取,即根据历史任务属性和当前任务属性,一起提取新的任务属性,得到对整体任务的新描述。而当模型和属性都不相似时,就需要增加一个新任务了。
我们的终身学习元知识存储在智能楼宇元数据库BRICK中,如下所示。
图8 知识库示意图
这里任务被定义为一个由模型、属性、样本构成的三元组,这些三元组被组织成了一个树状的结构。模型是指任务推理使用的模型,属性存储的是与任务分配标签的元知识,样本是指任务的训练样本,供后续增量使用。当我们要使用模型进行推理的时候,就可以使用属性描述最接近的任务对应的模型来进行推理。
实验结果简介
我们在舒适度预测的数据集ATCII上进行了实验。ATCII数据集收集了1995年到2015年的来自28个国家的99个城市的舒适度数据,总计有60000条以上的样本。
我们可以看到,相比于其他的基线方法,我们的方法LEON随着增量的进行,有了最低的预测错误率,且在增量后的任务以及未知任务上的性能也比较稳定。
总结
我们详细分析了舒适度预测的场景以及其落地挑战,并基于sedna和brick实现了舒适度预测案例,案例部分代码已经作为sedna的example进行开源:
https://github.com/kubeedge/sedna/blob/main/examples/lifelong_learning/atcii/README.md 。
随着人工智能以及物联网技术的进一步发展,相信边云协同的终身学习将赋能更多的应用,形成万物感知、万物互联、 万物智能的智能世界。
作者介绍
李蕴哲,上海交通大学计算机系的博士研究生,研究方向包括边缘AI,移动计算以及AIoT。
罗溥晗,中国科学技术大学计算机科学与技术学院硕士研究生,研究方向包括移动计算、AIoT、轻量级算法等。
关于KubeEdge
KubeEdge是业界首个云原生边缘计算框架、云原生计算基金会内部唯一孵化级边缘计算开源项目,社区已完成业界最大规模云原生边云协同高速公路项目(统一管理10万边缘节点/50万边缘应用)、业界首个云原生星地协同卫星、业界首个云原生车云协同汽车、业界首个云原生油田项目,开源业界首个分布式协同AI框架Sedna及业界首个边云协同终身学习范式,并在持续开拓创新中。
KubeEdge网站 : https://kubeedge.io
GitHub地址 : https://github.com/kubeedge/kubeedge
Slack地址 :https://kubeedge.slack.com
邮件列表 : https://groups.google.com/forum/#!forum/kubeedge
每周社区例会 :https://zoom.us/j/4167237304
Twitter : https://twitter.com/KubeEdge