寒武纪 AE 团队,腾讯云容器中心边缘计算团队,SuperEdge 开发者
SuperEdge 支持寒武纪边缘智能加速卡 MLU220
SuperEdge 对应的商业产品 TKE Edge 也一直在硬件和加速方面在持续耕耘,不但支持 NVIDIA 系列 GPU 的加速,还在GPU虚拟,QGPU 化等方面持续发力。本次联合寒武纪对边缘智能加速卡进行了支持,以利于用户在边缘进行模型训练和边缘智能推理性能的提升。下面是经过寒武纪 AE 团队和 SuperEdge 开源团队的联合测试,对寒武纪边缘智能加速卡兼容性的联合声明。
中科寒武纪科技股份有限公司的边缘智能加速卡MLU220-M.2和分布式边缘容器管理系统SuperEdge已相互兼容,能够对搭载M.2的边缘设备在视频、图像、语音等应用再提升数十倍的加速能力,
在此发表联合声明。
下面给出两个分类网络在 CPU 和 M.2 上的吞吐性能对比。
可以看出 vgg16 M.2 是普通 i7-8700K的14倍,Resnet50 也是普通 i7-8700K 的14倍。
其中,CPU 采用的是 Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz
SuperEdge 边缘容器解决方案
SuperEdge 是2020年12月腾讯云联合英特尔、VMware 威睿、虎牙、寒武纪、美团、首都在线发布的基于原生Kubernetes 的边缘分布式容器管理系统。该系统把云原生能力扩展到边缘侧,很好的实现了云端对边缘端的管理和控制,极大简化了应用从云端部署到边缘应用的过程。2021年9月已被 CNCF 基金会接受,成为 CNCF Sandbox 项目,由 CNCF 监管和运维。
SuperEdge 提供了如下能力:
边缘自治
云边网络往往是弱网络,中间可能是有线、无线、WIFI……连接,可能是 4G、5G 网络,云边断链是常态。断连时间不定,短则三五分钟,长则数小时、几天,那么如何保证边缘服务不被驱逐,继续提供正常服务呢?SuperEdge 的边缘自治能力,可以保证云边断连的情况下,边缘服务继续稳定运行,即使边缘节点断电重启,也能自动恢复已经部署到该节点的边缘服务继续运行。
分布式健康检查
SuperEdge 提供的边缘分布式健康检查能力有两个作用:
- 只要边缘节点正常,边缘服务就不会驱逐SuperEdge 会在每个边缘节点部署一个 edge-health 的 deamonset,同一个边缘 Kubernetes 集群的节点会定期 Check 彼此,对彼此的健康性进行投票,并将投票结果反馈到云端。即使边缘 Kubernetes 集群的一个节点云边网络断连,其他节点也会把他的健康性反馈到云端,就不会对该节点进行驱逐。
- 可分组进行分布式健康检查即把边缘 Kubernetes 集群的边缘节点分成多个组(同一机房,或者同一地域),每个组内的节点之间相互检查。这样做的好处是避免集群规模增大后节点之间的 Check 数据交互变大,占用节点流量,投票结果也难以达成一致的情况。
edge-health 的设计避免了由于云边网络不稳定造成的大量的 Pod 迁移和重建,保证了边缘服务的稳定。
服务访问控制
SuperEdge 自研的 ServiceGroup 实现了基于边缘计算的服务访问控制,主要有三个作用:
- 一键把边缘服务部署到不同站点可以一键把同一套服务部署到位于同一边缘 Kubernetes 集群的不同站点,各个站点的服务完全保持一致。该特性目前支持 DeploymentGrid 以及 ServiceGrid 两种 Custom Resource,可以便捷的在同一个集群的多个机房或区域中各部署一组服务。
- 同一站点可实现流量闭环各个站点虽然有同一套服务,但是会把本站点的访问只锁定本站点内,不会跨站点去访问其他站点的同一套服务。
- 新站点自动部署相应服务新加入的站点,可指定服务标签自动部署同一套站点服务,为站点扩展提供了自动部署服务的支持。
云边隧道
边缘节点一般是没有公网IP的,或者在一个 NAT 网络背后,云端无法直接访问边缘节点,这就使得 kubectl logs、kubectl exec……等云端访问边缘节点的请求完全失灵。SuperEdge 自研的云边自建隧道(目前支持 TCP、HTTP、HTTPS、ssh)打通了不同网络环境下的云边连接问题。实现对无公网 IP 边缘节点的云端统一操作和维护。
批量添加局域网边缘节点及远程运维局域网边缘节点
为了解决生产环境海量边缘节点的接入,SuperEdge 团队特提供了penetrator-controller[1]组件支持了局域网内成千上万边缘节点的接入,并且还可以在云端远程登录到局域网内的边缘节点进行远程运维。
更多的特性可登录 SuperEdge 官网:https://superedge.io[2] 进行查看,合作交流可在社区 https://github.com/superedge/superedge 提 Issuse。
MLU220 是什么?
MLU220-M.2 是寒武纪为边缘计算专门打造的智能加速卡,它在手指大小的标准 M.2 加速卡上集成了 8TOPS 理论峰值性能,功耗仅为8.25W,可以轻松实现终端设备和边缘端设备的 AI 赋能方案。支持视觉、语音、自然语言处理以及传统机器学习等多样化的人工智能应用,实现各种业务的边缘端智能化解决方案。
MLU220 具有如下特性:
- 小个头大智能思元220芯片是面向边缘侧量身定制的智能化解决方案,在 U 盘大小的尺寸下就可以提供8路高清视频的实时智能分析,可广泛支持视觉、语音、自然语言处理以及传统机器学习等高度多样化的人工智能应用,为边缘计算节点装上智慧的大脑。
- 新一代寒武纪硬件架构MLUv02 架构不是简单的从上一代升级而来,新架构基于片上网络(NOC)构建,多个NPU集群的并行效率。基于硬件的片内数据压缩,提升缓存有效容量和带宽。新架构提供INT16,INT8,INT4,FP32,FP16的全面AI精度支持,满足多样化神经网络的计算力要求,通用、性能兼备。
- 计算弹性和可编程思元220芯片支持多类神经网络,NeuWare 软件栈可以轻松部署推理环境。BANG Lang 编程环境可对计算资源做直接定制,满足多样化AI定制要求,专业而不专用。
- 加速卡硬件规格
加速卡硬件规格可概括如下:
参数规格型号MLU220-M.2内存4GB, LPDDR4, 3200MHzAI算力8TOPS(INT8)编解码能力支持H.264,H.265, VP8, VP9;解码8x1080P@30Hz;编码4x1080P@30Hz图片解码支持JEPG最大分辨率8K;解码410 fps@1080P;编码400 fps@1080P接口规格M.2 2280, B+M Key (PCIE 3.0 X2)功耗8.25W (3.3V 2.5A)结构尺寸80mm x 22mm x 7.3mm(无散热)/21.3mm(带散热)散热被动散热
如何在 SuperEdge 上使用寒武纪 MLU220
我们基于 SuperEdge 演示如何使用寒武纪边缘智能加速卡:
用 edgeadm 创建一个 SuperEdge 边缘 Kubernetes 集群
- 下载 edgeadm 安装包
arch=amd64 version=v0.6.0 && rm -rf edgeadm-linux-* && wget https://superedge-1253687700.cos.ap-guangzhou.myqcloud.com/$version/$arch/edgeadm-linux-$arch-$version.tgz && tar -xzvf edgeadm-linux-* && cd edgeadm-linux-$arch-$version && ./edgeadm
- 初始化边缘 Kubernetes Master 节点
./edgeadm init --kubernetes-version=1.18.2 --image-repository superedge.tencentcloudcr.com/superedge --service-cidr=10.96.0.0/12 --pod-network-cidr=192.168.0.0/16 --install-pkg-path ./kube-linux-*.tar.gz --apiserver-cert-extra-sans=<Master Public IP> --apiserver-advertise-address=<Master Intranet IP> --enable-edge=true
- 加入一个带寒武纪边缘智能加速卡的边缘节点
./edgeadm join <Master Public/Intranet IP Or Domain>:Port --token xxxx --discovery-token-ca-cert-hash sha256:xxxxxxxxxx --install-pkg-path <edgeadm kube-* install package address path> --enable-edge=true
关于edgeadm安装边缘Kubernetes集群的详细介绍可参考:
用 edgeadm 一键安装边缘 K8s 集群和原生 K8s 集群。
安装寒武纪边缘智能加速卡的插件
- 安装边缘智能加速卡的插件
kubectl create -f https://github.com/Cambricon/cambricon-k8s-device-plugin/blob/master/device-plugin/examples/cambricon-device-plugin-daemonset.yaml
- 检查插件是否安装成功
kubectl get node <边缘节点NodeName> -o json --output="jsonpath={.status.allocatable}"
看到边缘节点node status.allocatable有cambricon.com/mlu有相资源值表示边缘智能加速卡及插件安装成功。
"allocatable": { "cambricon.com/mlu": "1", ## MUL卡资源 "cpu": "12", ... "memory": "16164684Ki", "pods": "110" }
看到
allocatable
里面存在cambricon.com/mlu
并且其资源值大于等于0,表示寒武纪边缘智能加速卡及其插件已经安装成功。
mlu 插件下载地址:https://github.com/Cambricon/cambricon-k8s-device-plugin mlu
监控组件:https://github.com/Cambricon/mlu-exporter
使用边缘智能加速卡进行边缘应用加速
在提交边缘相应负载的时候指定 cambricon.com/mlu
来应用寒武纪边缘智能加速卡进行加速, 比如:
apiVersion: v1
kind: Pod
...
spec:
containers:
- image: 10.13.30.52:5000/yolov4:latest
name: yolov4-ctr
resources:
limits:
cambricon.com/mlu: 1 ## 指定加速卡limits
requests:
cambricon.com/mlu: 1 ## 指定加速卡requests
...
未来
未来寒武纪和腾讯云会在边缘硬件和边缘云服务上进行更多的合作,为边缘 AI、边缘 IoT,数字化,人工智能……进行软硬件的赋能,并且相应能力在相关的商业产品中对用户提供支持,欢迎关注腾讯云边缘计算分布式云平台 TKE Edge 和寒武纪相关加速商业产品,在生产中为边缘服务加速。
参考资料
[1] penetrator-controller:
【https://github.com/superedge/superedge/tree/main/cmd/penetrator-controller】
往期精选推荐
点个“在看”每天学习最新技术