机器人计算发展现状及展望
中国网/中国发展门户网讯 在过去几十年中,计算行业已经成为全球经济的关键驱动力,在经历了个人计算、移动计算及云计算等多个发展阶段后,机器人计算逐渐崭露头角。本文提出机器人计算的扩展和成长有其明确的轨迹,并将成为推动世界经济的新引擎。
机器人计算系统的软件与硬件统称为机器人计算。随着机器人计算的发展,机器人在执行复杂任务和覆盖广泛应用场景方面的能力进一步提升,预示着生产力的新一轮飞跃。本文基于中国已形成的机器人产业链体系,聚焦于机器人计算这一核心环节,以机器人应用软件增长为驱动力,分析机器人产业增长点;从编程语言、编译器到硬件架构,旨在设计全面的机器人计算系统,为中国机器人计算的发展提供引领性和基础性参考。
机器人计算的发展现状及不足
目前,中国已成为全球机器人市场的主要参与者之一。截至2022年,全球机器人市场总值达到513亿美元,2017—2022年的平均年增长率为14%,而中国的机器人市场规模达到了174亿美元,2017—2022年的平均年增长率更是高达22%;预计2024年,全球机器人市场将超过650亿美元,其中工业机器人、服务机器人和特种机器人的市场都将突破百亿美金规模。伴随大模型带来更强大的智能决策和规划能力,机器人计算将成为未来最重要的计算范式之一。针对机器人产业定义机器人计算范式,将成为未来10年内主导该产业的关键:①机器人计算像移动计算和云计算一样,将开拓数以万亿的新市场,这一市场的潜力将通过更多智能化应用软件得到激活;②机器人计算的迅猛发展将依赖于研究者对编程语言和硬件的端到端开发和创新。
机器人计算概述
机器人通常由本体和计算系统组成。本体是机器人与物理世界交互的组件;计算系统包括机器人上运行的算法与执行算法的计算硬件,是机器人完成任务的核心系统,计算系统的智能化决定了机器人的能力上限。其中,广义的计算系统通常由3个部分组成: 感知模块,由多种传感器组成,负责采集环境信息; 计算模块,通过感知信息的输入对机器人行动进行决策; 控制模块,将计算模块的决策输出到机器人本体并与环境进行交互。机器人应用软件在机器人计算系统上运行,多种多样的机器人应用软件构成了机器人生态。本文主要关注以计算模块为主的机器人计算领域,但是感知模块与控制模块同样是机器人计算中重要的研究问题,将感知、计算与控制集成到同一款芯片上,形成“感—算—控”一体的解决方案,也是当前的一个趋势。
机器人计算的目的在于通过使用多种形态的机器人替代人类完成任务。当前,因为机器人的成本进一步降低,各行业使用机器人的意愿大大增强,机器人已在汽车制造、电子制造、仓储运输、医疗康复等多个行业被使用,并逐渐从传统的单一简单固定场景向长序列复杂场景进行应用转换。
算力是机器人计算产业爆发式增长的关键
无论是个人计算、移动计算或者云计算的爆发,都起源于算力的增长,而算力的增长则源于半导体技术的发展。半导体技术的进步带来了更多有趣、有意义的应用软件,再由应用软件拓展出更大的市场。以移动计算为例,尽管移动电话在20世纪初已经成为一种商品,但其功能单一,有超过90%的算力都被用于通信相关的编码、解码计算,可被用于应用软件的算力不足10%,整个移动计算的市场也仅有100亿美元左右;随着智能手机的发展,算力不断被提升,更充沛的算力得以支持搜索、观看视频、游戏等更多应用软件,移动计算生态系统的市场规模如今已经达到8 000亿美元(图1)。
一个计算范式在步入成熟期之后,其市场规模远超其对应的半导体市场。以移动计算为例,2022年,移动端处理器的市场规模约为350亿美元,对应的手机市场规模为2 700亿美元,而滋生的移动计算市场规模则达到了8 000亿美元,是移动处理器市场的23倍。同理,个人计算处理器的市场规模为550亿美元,个人电脑的市场规模约为1 500亿美元,而个人计算生态系统的市场规模达到了9 000亿美元,是其对应半导体市场的16倍。
机器人计算的发展远远没有达到上述移动计算和个人计算的规模,而重要瓶颈在于当前机器人计算系统的绝大部分算力仍被用于基础功能。据笔者研究分析,机器人计算系统设计将机器人计算能力的50%用于感知、20%用于定位、25%用于规划,仅有5%用于应用软件,这与移动计算时代初期的移动电话情况非常相似。在上述计算能力分配情况下,机器人无法执行智能任务,即机器人计算的生态系统几乎不存在。
释放软件开发人员的想象力,形成机器人应用软件的生态系统。本文认为包括感知、定位和规划在内的基本操作应消耗不到20%的计算能力,从而将80%的计算能力留给应用软件,还可定义更多有趣的机器人应用软件,扩展机器人计算生态系统。例如,机器人计算的一个有趣应用软件是自主移动诊所,它将能够解决医疗服务的获取和公平问题,根据病人的指令将医疗服务送到病人家门口。
机器人计算系统发展前景
机器人计算系统的发展与机器人应用软件的丰富程度是相辅相成的。对比火热的人工智能应用软件,机器人计算系统从编程语言到硬件架构都存在极好的发展潜力,但当前机器人计算系统的不足也是全栈的、多层次的。
提供开发者更容易理解与操作的编程语言和框架,允许应用软件层面更灵活开发,解放软件开发者的限制,催生更多有趣的应用软件。人工智能应用软件在编程语言层面有着非常成熟且易于使用的框架,例如开源深度学习框架Pytorch学习成本低且开发者可以较低成本开发多种应用软件。而对于机器人应用软件而言,尚未出现类似Pytorch的编程语言或框架。对于开发者来说,机器人应用软件的编程难度极高,需要掌握大量关于机器人本身的独特信息,如传感器参数、机器人物理模型等。促进机器人应用软件的爆发,首先需要一套简洁的、可编程的、面向对象的编程语言或框架,方便开发者对机器人进行编程。
促成机器人产业爆发式增长的关键在于通过机器人专用架构的设计,提供更多算力。类比通用图形处理器(GPGPU)、神经网络处理器(NPU)、张量处理器(TPU)之于人工智能算法,机器人的专用架构尚未被明确定义和提出,绝大多数机器人仍在使用通用硬件,导致大量算力被用于提供感知、定位、控制等机器人基础计算上,无法支持高智能化的应用软件。
机器人编程语言
由于缺乏良好的系统抽象与运行时系统来管理实时约束和系统资源分配,程序员必须掌握机器人应用软件、机器人算法和计算系统方面的知识,导致机器人的编程工作极具挑战性。为了将程序员从系统细节中解放出来,应该在已定义的架构之上开发一个编程和运行系统(图2),让程序员只需几行代码就能开发出拥有不同功能的机器人。
目前,机器人根据其需要执行的各种任务依赖于大量的专用组件,包括定位和导航、目标检测和规避等与外部环境相关的(硬)实时任务。每个任务都在严格的性能范围内与其他任务进行数据通信,但同时很可能依赖的是截然不同的硬件目标,如使用中央处理器(CPU)进行调度、使用图形处理器(GPU)进行神经网络处理、使用现场可编程逻辑门阵列(FPGA)或数字信号处理技术(DSP)芯片进行图像处理等。因此,应该有一些具有表现力的“语言”,在高层次上描述每项任务应包含的内容、适当的(特定领域的)语义,同时描述“语言”之间的接口。
机器人作为一个整体,实时和运行时上下文可以自由决定在目标任务运行过程中的某个特定时刻使用底层硬件的哪个部分来运行。为此,设计一套新的领域专用语言(DSL)是必要的,但还不足够。由于这些机器人至少有部分任务会严重依赖机器学习技术,因此还应该有一种方法将高级描述降低到中间表示形式,从而使编译器能够为异构设备系列生成代码。
基于数据流图的机器人编程语言
传统机器人编程语言的设计,其目的并非为了方便开发者进行开发,而是为了保证通用且方便底层硬件的执行。绝大多数机器人的定位、控制等模块都基于传统的面向过程的语言进行开发,较差的封装性给应用软件开发者带来了极高的难度。尽管面向整体机器人应用软件的编程语言或框架尚不存在,但研究人员已经针对机器人计算系统中的不同模块进行了编程语言或框架的开发,典型例子如面向视觉感知模块中的图像处理专用语言Halide、面向视觉感知模块中常用算法深度神经网络训练与推理的专用框架Pytorch。
为解决机器人应用软件缺乏一个编程语言框架问题,研究人员开发了一种简洁精确的高级语言,用于表示机器人的计算图,即一种原型语言。由于机器人计算可以用数据流图来表示,因此函数式编程范式自然为描述机器人的行为提供了一种有效的方法,有了函数式编程,程序员与开发者只需几行说明和代码就能描述应用软件(图3)。
基于因子图的机器人编程框架
研究人员根据前文描述的原型语言进行了实例化,提出了一个利用Python等高级语言形成的基于因子图的机器人编程框架。这一编程框架解决了针对应用软件开发者通常对机器人传感器的物理模型与参数了解很少、但编程的时候常常需要使用的问题。将相机、激光雷达、惯性里程计等传感器模型使用编程框架进行封装,构成不同的因子,开发者根据需求对不同的因子进行拼接和组装,形成因子图。例如,开发者希望机器人使用相机和激光雷达进行自我定位,那么开发者只需要通过选取相机因子和激光雷达因子构建定位的因子图,即可描述应用软件(图4)。
无论是面向单一模块或面向整体机器人应用软件,研究人员的工作都在尝试解决机器人编程难这一问题。目前,机器人计算系统研究者的共识是试图通过面向对象的编程框架对机器人编程中常见又难以被开发者掌握的传感器模型进行封装,从而大幅降低机器人编程难度。开发者使用机器人专用编程语言和框架可以大幅提高编程效率。然而,当前的编程模型仍然与顶层应用软件和算法存在一定的差距,研究人员在目前的研究工作基础上,对机器人编程语言和编辑框架进一步完善,降低开发者在开发机器人应用软件时的难度。
机器人计算专用架构
赋能机器人多样能力的关键在于机器人芯片算力的提升,而硬件架构的专用化则是实现这一目标的手段。以移动计算为例,移动手机的处理器从功能非常简单的英国ARM公司生产的芯片,逐渐进步到当前功能复杂的专用计算片上系统,包括了信号处理专用电路、图像处理专用电路、视频编解码电路、神经网络推理电路等多种移动计算领域独有的定制电路。定制电路是为机器人设计专用化、高算力的片上系统与解决机器人应用算力不足的最好途径。以下将探索并介绍3种不同的专用架构设计思路,包括基于数据流的加速器架构,基于因子图的加速器架构和基于学习的加速器架构。
基于数据流的加速器架构
基于数据流的加速器架构的核心思想是摒弃传统的按照控制流指定的明确顺序执行指令的传统架构。控制流限制了可以利用指令级并行性(ILP)的窗口,人为地设置了性能障碍。在数据流架构中,指令的执行是由数据驱动的,原则上只要指令的所有输入可用,指令就会执行,而不是在控制流到达指令时执行。
研究人员通常可将传统程序中的瓶颈与机器人软件中的瓶颈进行类比,两者都可以通过数据流原理加以解决,这种抽象的关键在于机器人的软件栈。例如,将自主车辆计算图(图5)视为宏数据流图(M-DFG),其中每个节点代表定位和运动规划等单个高级任务。这种实现方式催生了数据流加速器架构(DAA)的概念,在这种架构中,加速器通过专用的片上缓冲器直接相互通信,并自主协调。这种架构模式有2个优势:提供了更高水平的并行性,只要输入数据准备就绪,每个加速器就会启动;通过让消费者更容易获得操作数来加快加速器的启动速度,即通过允许生产者和消费者使用每个加速器的片上缓冲区直接通信而不是通过主存储器来实现的。
基于因子图的加速器架构
机器人专用架构设计的一大难点在于系统的分散性和多样性。不同于所有智能手机都具有的功能类似的通信、编解码、图像处理等模块,机器人根据其形态、作用等方面的区别,功能模块差距极大。以定位算法为例,室内服务机器人与室外的自动驾驶汽车的定位算法区别极大;以定位模块为例,研究人员提出了大量针对某一种定位算法的专用加速芯片。因此,设计机器人的专用架构设计并不缺少点到点的解决方案,而是缺少系统级的通用设计方法。
研究人员探索使用因子图来对不同机器人算法进行统一设计,因子图是一种表示概率分布函数因子化的图形,已被用于定位、跟踪、规划和控制等许多机器人模块中。使用因子图作为一个通用的抽象模板有3个优势:①为机器人优化问题提供了简洁的表示方法,便于机器人程序员构建程序;②图结构有利于稀疏数据的存储;③机器人优化问题可以根据历史信息逐步求解,从而保证高精度和低计算延迟。
研究人员首先尝试使用以因子图为模版对多个机器人的模块进行架构设计,设计了定位、规划的因子图加速器结构(图6),都得到了远超于通用架构如英特尔(Intel)桌面处理器的性能和能效表现。同时,由于多个不同应用都可以通过因子图进行求解,研究人员也设计了一款通用的涵盖定位、规划、控制算法的机器人专用架构。
基于学习的加速器架构
越来越多的机器人计算任务都是利用基于Transformer模型等的机器学习完成的,机器人计算正在从模块化方法(机器人计算1.0)向基于机器学习的端到端方法(机器人计算2.0)发展。机器人计算2.0中,任何机器人都要执行感知模块和行动模块这2项主要任务,这反映了过去和未来的自然对立:① 感知模块,通过监督学习和自我监督学习进行训练,以推断出世界状态的唯一基本事实;② 行动模块,需要从许多可接受的行动序列中进行搜索和选择,同时还要预测其他代理的行为,故行动模块利用了强化学习、模仿学习和模型预测控制等方法。
感知模块和行动模块在机器人计算领域中的实现越来越趋同。最近,大语言模型(LLM)在理解大量信息以执行多个子任务方面取得了成功,由于Transformer模型具有泛化能力,因此对于感知模块和行动模块都是很好的算法基底,表明这2个模块都可以使用基于Transformer模型的类似架构来实现:① 在感知方面,Transformer模型能有效地将来自多个传感器和多个时刻的感知数据融为统一的表示,避免稀疏化和模块序列化造成的信息损失;② 在行动方面,变换器的顺序性使其非常适合处理和生成时态数据,尤其是对多种可能的未来路径进行采样,因此一种常见的架构抽象是将重点放在加速变换器的工作负载上,并将感知和动作任务简化为不同形式的变换计算,从而大大简化编程接口。
机器人计算技术展望与发展建议
随着半导体技术的不断进步,机器人在传感、计算和通信方面的能力得到显著扩展,为多种新兴应用提供支持(图7)。① 在传感方面。先进的芯片堆叠式图像传感器允许在传感器内部直接进行高级计算,例如深度神经网络(DNN)处理后有效减少了数据传输成本,单光子雪崩二极管(SPAD)技术能捕捉实时的三维场景信息从而克服传统机械式激光雷达的诸多局限。② 在计算领域。设计机器人计算系统的关键在于处理来自不同类型机器人的复杂计算图,同时满足实时性能、成本和能源效率的要求。结合已定义的机器人计算架构和多芯片设计、异构集成、内存处理以及“光—模—数”协同设计等新兴技术,能够实现真正的实时机器人应用。③ 在通信方面。未来的机器人将更多地依赖于机器人本体、边缘服务器和云基础设施之间的协作。合作式机器人模式的成功,依赖于高效的通信技术。磷化铟/基铟镓砷(InP/InGaAs)材料的应用可能会显著提高通信带宽,并解决延迟问题。④ 在算法层面。大模型的成功将“具身智能”的实现变得可能,机器人的理解能力,长期规划能力都因为大模型而显著增长。机器人将可以被用于执行更复杂更高难度的任务,为人类提供更好的服务。
预计在未来10年,机器人将广泛渗透到各个行业,对全球经济产生重大影响。① 商业领域。机器人已成为商业领域的重要参与者,带来创新,提高效率,开拓新的商业机遇;智能家居和服务机器人在日常生活中扮演关键角色,提高家庭自动化水平、辅助家务,为老年人和儿童提供关怀。② 工业领域。将继续推动自动化和生产效率的提升,在装配线、物流和仓储等领域发挥作用,降低成本、提高产品质量、缩短交付周期,提升企业竞争力,为机器人制造商创造新的商业机遇。③ 医疗保健领域。机器人在手术、诊断和康复方面的应用提升手术精度,缩短患者恢复时间,能进一步推动医疗创新、改善医疗服务、降低医疗费用。④ 农业领域。将提高生产效率,减少人力成本,缓解农民的体力劳动,有助于满足全球不断增长的食品需求,减少食品浪费。
机器人生态的发展,就像个人计算和移动计算一样,将依赖于标准化的计算环境。如果说英特尔公司1978年推出的16位微处理器x86架构及其软件生态系统推动了个人计算时代的发展,那么基于精简指令集的处理器架构(ARM)及其软件生态系统则推动了移动计算时代的发展。因此,现在迫切需要定义一个全球化的机器人计算架构及其软件生态系统,以推动机器人计算时代的发展。笔者认为机器人计算是赋能智能机器人的关键,谁定义了这一计算架构,在传感、计算、通信和算法层面产生新的突破,谁就将在未来10年内主导机器人产业的重大突破和发展。
前文曾提到,机器人计算发展的瓶颈在于应用层面的突破,而大模型与机器人有机结合的“具身智能”就是一个可见的应用层面的突破。当前学术界与产业界都十分关注“具身智能”这一话题,那么“具身智能”是否就是机器人计算,亦或是在传统的机器人计算上产生新的内容,这一点还有很大争论。但可以确定的是,“具身智能”的产生和发展,不仅离不开本文所述的机器人计算的生态系统,更是对这一生态系统的反哺,对其提出了新的需求。在应用层面,“具身智能”试图突破传统的机器人应用模式,将机器人融入人类社会,更多地与人类交互,完成更复杂的任务。在算力层面,“具身智能”应用往往涉及更复杂的计算,也因此具有更高的算力需求。具身智能将给机器人计算带来新的发展点和突破点,是机器人领域、人工智能算法领域、半导体领域都需要关注的课题。
(作者:刘少山,深圳人工智能与机器人研究院;甘一鸣、韩银和,中国科学院计算技术研究所 ; 《中国科学院院刊》供稿)