Sedna 0.1.0发布,全球首个云原生边云协同AI框架正式开源!

来源微信公众号: 容器魔方

Sedna基于KubeEdge提供的边云协同能力,实现AI的跨边云协同训练和协同推理能力。支持现有AI类应用无缝下沉到边缘,快速实现跨边云的增量学习,联邦学习,协同推理等能力,最终达到降低边缘AI服务构建与部署成本、提升模型性能、保护数据隐私等效果。

Sedna应用场景

边云协同增量学习提升模型精度

机动车逆行检测是保障交通安全的一个常见任务,通过在边缘部署一个AI摄像头来检测机动车事件。但由于设备老化、天气原因等会引起数据分布变化,导致当前AI摄像头的检测模型不能适应当前的环境,检测精度下降,最终引发边缘上普遍存在的模型泛化性问题。需要不定期使用新的数据重新微调模型,使得模型能够持续的适配当前的推理样本。传统方式下,可以通过人工拷贝的方式,将当前环境新的样本回传,由云上训练新的模型后,再下发到边缘侧更新AI摄像头中的模型。但这种情况会占用大量的人工成本,并且模型更新的周期会很长。

Sedna增量学习特性允许用户连续监视新生成的数据,并通过配置一些触发规则来确定是否自动开始训练、评估和部署,能将新产生的数据立刻反应到模型中去。并且更新的过程不占用工程师的人工时间、更新的周期更短,模型检测精度也不断提高。

当前的增量学习会不断的采集新的数据并进行训练,未来,我们将把这些积累的知识进行存储和索引,构造特定场景下的知识库。当服务运行时如果有新的节点接入的时,也可以重复使用这些现有的知识,减少重复的计算资源消耗、提高知识的利用率。

边云协同联邦学习应对数据孤岛

对于边缘AI,数据是天然在边缘生成的。在多个不同的质检产线,由于原始图像数据不愿意共享到云端,且单个产线的数据量有限,通常很难在单个边缘节点上训练好的模型,但工厂又需要他们共同训练出一个检测精度较高的模型来满足生产需求。

传统方式中,可以通过KubeEdge把本地训练的应用部署到边缘,但是如果要将这些本地训练应用协同起来,共同训练一个模型,则需要开发者做大量的工作,包括在云上做聚合计算的编写和部署、边侧训练权重的共享、训练状态的监控等。但现在可以通过Sedna,简单的配置所需要的训练脚本、训练数据、以及聚合算法,即可快速的完成联邦学习任务的部署。

后续的联邦学习特性中,我们考虑到在训练过程中,会频繁大量的交换权重数据,而且边云之间的数据传输带宽相比中心云来说是更小的、更不稳定的,因此改善边云协同的过程中的梯度传输效率是一个亟需解决的问题。

Sedna部署与使用

部署

先决条件:

  • KUBECTL with right kubeconfig
  • Kubernetes 1.16+.
  • KubeEdge version v.15+.

Sedna的核心组件有云上的GM(GlobalManager)和边上的LC(LocalController),部署Sedna需要提前获取GM节点名称,使用一键安装部署脚本即可完成sedna安装:

# SEDNA_GM_NODE=sedna-control-plane
SEDNA_GM_NODE=CHANGE-ME-HERE
curl https://raw.githubusercontent.com/kubeedge/sedna/main/scripts/installation/install.sh | SEDNA_GM_NODE=$SEDNA_GM_NODE bash -

后续计划

当前Sedna提供的增量学习、联邦学习、协同推理在我们设定的场景下能完成协同训练和推理任务,但现实的场景会出现更多复杂的情况,也带来更多的需求。我们希望能基于Sedna,探索出更多有价值的边云协同技术,给边缘AI类应用带来精度提升、成本降低、部署快速、隐私保护等好处。

后续计划:

支持更多机器学习框架(Pytorch、MindSpore、PaddlePaddle)

支持边边协同推理

支持硬件感知模型转换

集成Serving、Pipeline等现有生态

构建Edge AI Benchmark

欢迎更多对边缘计算感兴趣的同学们加入KubeEdge社区,参与AI SIG,一起建设云原生边缘计算生态。