昇腾 CANN:为你开启机器人开发的 Buff 加成

本文分享自华为云社区《昇腾CANN:为你开启机器人开发的Buff 加成》,作者:华为云社区精选 。
昇腾 AI 基础软硬件平台
人类在最近 1 万多年的发展中,经历了农耕时代、蒸汽机时代、电力时代、互联网时代,21 世纪,进入了人工智能时代。
每一次科技浪潮都通过某一项先进生产力要素的突破,进而引起大多数行业的变革:以信息技术为核心的第三次科技革命迄今已逾 70 年,整个将全球 GDP 提升约 60 倍,其中 1950 年-1990 年,是半导体产业迅猛发展的时代,推动了大型计算机向个人 PC 的小型化;1990 年至今是近 30 年的互联网全球化时代,互联网技术作为过去 30 年最先进的生产力要素,改变了全球的所有人、所有产业、社会经济,甚至是政治、军事、宗教。
那么接下来到底什么样的革命性技术可以引领人类社会,推动全球经济向上增长?我们的答案是,我们早已处于人工智能时代之中。
就像直到 2010 年 iphone4 发布,绝大多数人也并未意识到移动互联网革命早已开始一样,如今人工智能其实也已广泛应用,比如到处遍布的摄像头和手机人脸识别,微信语音和文本转换,抖音动态美颜特效、推荐算法,家庭扫地机器人和餐厅送餐机器人,背后都是人工智能核心技术在过去十年不断取得的巨大突破。
机器人作为人工智能的实体化,也将拥有广泛的产业应用。机器人普遍存在的意义是“为人类服务”的可运动智能设备,包括机器人对于人类劳动的替代、完成人类所无法完成任务的能力延伸以及情感陪伴等价值。
面对人类对于物质及精神永不停止的需求增长,相比于元宇宙,机器人将会是“现实宇宙”中的最佳供给方案。
今年,各科技巨头都推出了机器人方案,比如马斯克推出人形机器人,并表示可以把特斯拉堪称世界上最大的机器人公司,百度也发布了汽车机器人概念车,并计划量产,其他各公司也在各自垂直领域推出自己的机器人产品。AI 加持,将会带给机器人两大质变。
(1)智能化大幅提升
可软件升级:智能化机器人能够通过软件算法的迭代持续提升性能;这让机器人的能力理论上是没有上限的
规模效应:机器人应用规模越大,收集数据越多,算法迭代越完善,机器人越好用
可适用性大幅增加:机器人智慧程度线性增加,可适用的场景及价值将会指数增加
(2)智能化带来的场景适用性提升

其中 AI 技术将会是机器人全面爆发的最大变量,机器人产业的爆发极有可能是新物种引领;例如近三年全面爆发的机器人项目,在 10 年前几乎不存在(例如九号公司、石头科技、普渡、擎朗、云迹、高仙、梅卡曼德、极智嘉等)。
如何评判一个新技术是否能引领未来的发展方向?我们要看它能否从本质上解放生产力、发展生产力。
蒸汽机之所以推动了第一次科技革命,是因为其极大的提升了劳动生产力,并将大量劳动人口从第一产业农业的低级劳动中解放出来,进入第二产业工业。电力加速了这一过程,并推动了第三产业服务业的出现和发展。信息技术将更多的人口从第一、二产业中释放,进入第三产业,于是形成了如今全球第三产业 GDP 占比 55%,中国第三产业劳动人口占比 50%的格局。机器人即是人工智能技术的硬件形态,在可见的未来,将第一二三产业的劳动人口从低级劳动中大比例释放和替代,并在这个过程中推动全球 GDP 继续百倍增长。

人工智能从模块上可分为 感知、计算 和 控制 三大部分,由表及里可分为 应用层、数据层、算法层、算力层 。对此,我们昇腾 AI 提供了全栈技术和产品。
昇腾 AI 提供了全栈技术和产品,构筑人工智能的算力基座,赋能上层应用:
1. 作为算力的基础,昇腾 AI 提供了一系列的硬件产品,这些硬件覆盖端、边、云场景。
2. 在硬件之上,就是 AI 异构架构 CANN。它是昇腾 AI 硬件的使能层,也是芯片澎湃算力得以释放的关键。CANN 对下适配不同形态的硬件,提供统一的编程接口,并将多样化的计算模式分配到不同特性的处理器上(CPU/NPU),充分发挥硬件的计算性能;CANN 对上适配不同的 AI 框架,以使能多样的算法和应用需求,发挥着承上启下的关键作用。
3. 在 AI 框架这一层,华为提供了昇思 MindSpore 框架,更好的适配昇腾硬件架构;此外,还支持 TensorFlow、PyTorch 等第三方框架。
4. 在 AI 框架之上,昇腾 AI 全栈中提供了供应用使用的各类 SDK,以便应用到各行各业,例如面向智能制造、工业质检等场景的 Mind X SDK,优选的训练和推理模型库 Model Zoo,和 AI 云服务 ModelArts,等。
5. 最后,昇腾 AI 全栈软件也提供了全流程的工具链 MindStudio,全方位辅助开发者进行业务开发、模型开发、算子开发,以及相关的调试调优;在昇腾社区,可以获取更多的文档和资源。

在昇腾全栈中,提供了适配训练、推理场景的昇腾 AI 处理器,基于不同的昇腾 AI 处理器,使能一系列的昇腾产品,包括面向数据中心的集群、训练服务器、推理服务器等,面向边缘场景的 AI 加速模块、智能小站等。

通过这些昇腾系列产品,使能全场景 AI,包括 AI 计算中心、智能巡检等。
昇腾 AI 异构计算架构 CANN
有了昇腾 AI 的硬件,还需要有相应的软件使能层,才能将计算系统有效运转起来。接下来介绍一下昇腾 AI 异构计算架构 CANN(Compute Architecture for Neural Networks)。

CANN 作为最接近昇腾 AI 系列硬件产品的一层,通过软硬件联合设计,打造出适合昇腾 AI 处理器的软件架构,充分使能和释放昇腾的澎湃算力。把 CANN 内部结构打开来看:
首先,整个异构计算架构对上要提供统一的面向应用的编程语言,充分体现昇腾 AI 基础软硬件的能力,满足上层的业务开发需求,如深度学习框架对接、推理应用开发等。为此,CANN 提供了一套标准的 AscendCL(昇腾计算语言)开发接口,覆盖算子开发、图开发、应用开发的需求。它可以屏蔽底层多种芯片的差异,提升整个编程的易用性,也使得代码在不同型号的昇腾 AI 处理器上可以得到最大程度的复用,降低开发者的重复劳动。
接口层之下是昇腾计算服务层(Ascend Computing Service Layer),这一层提供了高性能的算子库 AOL,以及昇腾调优引擎 AOE,是昇腾 AI 处理器能够支持多种多样的人工智能算法、并优化执行性能的基础。
再往下是昇腾计算编译层(Ascend Computing Compilation Layer),主要是完成计算图和算子的编译,将用户的模型和算子编译成可以在昇腾 AI 处理器上执行的格式。编译的结果由昇腾计算执行层(Ascend Computing Execution Layer)运行,通过 Runtime 和图执行器,实现各硬件单元的高效调用,完成计算任务。
最后是昇腾计算基础层(Ascend Computing Base Layer),提供操作系统、SVM 共享虚拟内存、主从通信等基础服务。
在一个推理业务的典型开发流程中,往往会先进行模型压缩处理,再进行模型编译优化,然后是代码开发,最后在硬件平台运行。CANN 对整个开发过程提供了完备的支持:
• 对于模型压缩需求,CANN 提供压缩工具 AMCT,实现模型的瘦身;
• 在模型编译阶段,CANN 提供编译工具 ATC 和智能调优引擎 AOE,完成模型的编译和自动调优;
• 在代码开发阶段,基于 CANN 的 ACL 统一开发接口,实现多样算力的调用;

最后到了运行环境,CANN 通过 ACE 执行引擎,调度异构资源,高效执行业务。
AscendCL 是昇腾计算开放编程框架,是对昇腾 CANN 各层计算服务的封装,支撑用户开发应用、构建模型、开发算子。
1、在应用开发场景下,通过 AscendCL 的应用开发接口,可调用深度学习推理计算、图像图像预处理、单算子计算加速能力,实现业务逻辑。
典型的场景是,用户可以基于训练好的模型,调用 AscendCL 提供的接口,开发各类推理应用,简单的如目标检测、图像分类,复杂的如自动驾驶、视频智能解析。
除此之外,基于 AscendCL 的应用开发接口,还能通过单算子调用的方式,实现 Pytorch 等第三方框架的对接;用户也可以基于 AscendCL 的接口,开发第三方 lib 库和插件,调用昇腾 AI 处理器的能力加速业界流行的计算库。
需要指出的是,AscendCL 编程接口屏蔽了不同型号的昇腾 AI 处理器的差异,使得一套应用代码可以运行在多款昇腾 AI 硬件上,最大限度的保护用户开发的资产。当然,针对昇腾 AI 处理器硬件的演进,AscendCL 接口也会有相应的演进,包括在不同硬件上有规格的差异,在不同款型的硬件上迁移时可能需要进行一些调优工作,以取得最佳的性能表现。
2、在模型构建场景下,AscendCL 提供了统一的中间表达和网络构图接口,可以表达多种框架的计算图,支持用户在昇腾芯片上快速部署神经网络业务。
例如,用户可基于这套构图接口和算子原型进行构图,并编译为离线模型,用于在昇腾 AI 处理器上进行离线推理。
另外,也可以通过框架解析功能将主流的模型格式转换成 CANN 模型格式,从而隔离上层框架的差异,当前主要支持对 Caffe/Tensorflow/ONNX 原始框架模型的解析。

3、在算子开发场景下,AscendCL 提供了多种算子开发方式,包括 DSL( Domain-Specific Language ,基于特性域语言)、TIK( Tensor Iterator Kernel, 张量嵌套内核)、AI CPU 等,基于不同的开发语言,满足不同开发者的需求。这一部分将在后续的关键特性介绍章节详细说明。
对典型应用,可以抽象出主要的接口和调用流程,如图所示。其中模型推理、单算子调用走不同的接口调用流程。
1. 首先是调用初始化接口,完成系统初始化;然后申请内存等必备的运行资源;
2. 对于模型的推理,需要调用接口加载事先转换好的离线模型 om 文件;
3. 如果模型对输入图片的宽高要求与用户提供的源图不一致,则需要媒体数据处理,将源图裁剪成符合模型的要求;
4. 对于模型推理的输出,需要从推理结果中查找最大置信度的类别标识对图片分类,这里可以用单算子调用接口进行加速;
5. 工作结束后,需要卸载模型、释放运行资源,最后是调用接口实现系统的去初始化

通过前面的介绍,相信大家对于 CANN 提供的推理开发工具、开发流程等已经有所了解。而对于人工智能的训练任务,CANN 也提供了完备的工具和支持,包括开源模型下载,自动化模型迁移,高度工具化调测,智能性能调优,最终在昇腾上运行。经过长期积累,CANN 5.0 已经全面支持了业界的主流 AI 模型,并在昇腾社区的 Model Zoo 提供 500 多个经过性能优化的模型下载。
对于用户私有的网络,CANN 也提供了模型迁移工具,可以自动完成脚本的迁移转换,而不需要手工修改代码。
此外,CANN 还提供了多种自动化的调测工具,支持数据异常检测、融合异常检测、整网数据比对,帮助开发者定位问题。再结合前面提到的 AOE 工具,可以对算子和模型进行自动化的搜索优化,帮助用户取得极致性能。
昇腾 CANN 机器人开发项目
接下来我们分享一些基于昇腾软硬件开发的机器人项目。

(轮式巡检机器人 入住公司展厅、参展 WAIC、MWC、HC、HDC)

(沙漠植树机器人 CCTV、上海电视台报道、外交部发言人赵立坚微博视频发布)

(华为研究所室外机器狗送咖啡场景)

(层规划控制算法 跨越不连续地形)
基于昇腾 AI,我们做了一些机器人项目。

(四足机器人+ 机械臂复合机器人 危险场景巡检处置 江苏电视台报道 )
昇腾创想日的机器狗+机械臂的复合机器人现场直播展示,这里面我们是模拟了一个发行险情的封闭室内环境,机器狗进入室内,查看险情,并用机械臂切断电源的一个演示。

(石子路地形)

(上斜坡 下阶梯)

(草地 石板路 停车场)
目前我们正在推进的是强化学习机器狗控制这块,这个项目的来源也是来自廖博,在我们做传统控制方法,并给廖博做了相关的汇报。
还有一个是我们在南京,昇腾创想日的机器狗+机械臂的复合机器人的现场展示,可能线上有一些朋友是在现场看过,这里面我们是模拟了一个发行险情的封闭室内环境,机器狗进入室内,查看险情,并用机械臂切断电源的一个演示。

(四足机器人硬件)
好的,看完这几个视频的演示,我们就进入今天的正式的内容,说到机器人,肯定离不了和硬件打交道,首先从机器人的硬件开始介绍,大家可以有一个基础的了解。其中传感器、执行器、通信模块、计算单元。

(计算控制单元)

(基于昇腾 CANN 的智能复合机器人方案)
机器人控制算法
接下来我以四足机器人的控制为主,分享相关算法。

(基于模型机器狗运动控制系统算法框图)

(上层定位、导航数据流图)

(传统运动控制流程)

(基于事件的步态调度器)

(摆动腿规划与控制)

(四足机器人动力学模型)
其中,一个是平移动力学模型,一个是角动量模型。表示机器人位置:fi 表示机器人受到反作用力,cg 表示机器人重力,m 是机器人的身体质量,nc 是接触的数量,I 是转动惯量张量,w 是躯干的角速度,ri 是第 i 个接触点相对于到机器人的 CoM,相当于接触力的臂。

(站立腿控制器)

(位姿调整)
根据接触模式切换,预测支撑域,并调整质心位置。多边形质心偏离接近其结束的 stance 腿,和朝向即将触地的腿。

(Whole Body Control)
WBC 的英文全称为 Whole Body Control。为了降低运动控制算法的复杂性,控制任务通常会被分解为一组较为简单的任务,如保持平衡的躯干姿态控制,摆动相的足底轨迹跟随,或者用于防止滑动的接触力约束。每一个任务往往都需要多个驱动关节配合完成,同时每一个驱动关节又同时服务于多个任务,适应这种任务分解的理论框架是全身控制(WBC)。一般来说,为实现一组任务,所有驱动关节都能得到控制信号的控制系统都可以称作全身控。

(端到端强化学习机器狗运动控制系统算法框图)
同时 我们也在尝试端到端的强化学习机器狗控制方法。

(强化学习+模仿学习)
用 RL 训练一个在随机生成地形上受随机扰动仍能以随机目标速度行走的教师策略。
训练一个能在不用特权信息下复现教师策略动作的学生策略。学生策略使用循环编码器构造一个信念状态来捕获未观察到的信息,并基于该信念状态输出一个动作。将学习到的学生策略转移到物理机器人上,并在现实世界中使用机载传感器。


(Policies Modulating Trajectory Generators)

(域随机化)

(课程学习机制)

(传统 vs RL 机器人底层控制对比)
同时 我们也在尝试端到端的强化学习机器狗控制方法。


CANN 训练营目前正在火热进行中,大咖讲堂、超能大赛、互动好礼等各种精彩等你来。
版权声明: 本文为 InfoQ 作者【华为云开发者联盟】的原创文章。
原文链接:【http://xie.infoq.cn/article/5977792def865996a8a87a203】。文章转载请联系作者。
评论