钟 瑜,林 勤
(中国电子科技集团公司第十研究所,四川 成都 610036)
云计算和人工智能技术驱动的下一代战争对军事电子装备平台的计算能力提出了全新要求:除了面向单一装备的综合处理系统,更需要面向战场中各类智能雷达、认知通信、快速响应电子战等高计算密集型任务的需求[1]。云计算技术为多异构计算节点弹性互联、以分布式方式解决单计算节点或集群计算能力不足问题提供了有效的架构和实现方法[2-3]。然而传统商用模式云计算与人工智能的结合,常采用“云-端”的模式,即训练数据通过网络传输汇聚至云中心,智能模型在云中心进行训练,训练完成后发布至端,进行推理应用。上述模型的重要性能瓶颈之一是有限的网络带宽,尤其在军事应用中,战场环境下很难保障足够与云端进行数据传输的网络带宽,因此将海量数据的传输成了一个难题。同时,由于军事应用的高实时性要求,数据完全交由云端处理,其数据的传输到处理返回过程,会大大增加任务请求的响应时间。因此新的云计算模型提出了“云-边缘-端”的层级结构,在云和端之间增加了具备计算和网络资源的边缘节点,将部分数据处理工作放至边缘节点进行,数据在数据产生源附近进行处理和分析,减少数据在网络中的流转,将大大减轻网络负载,缩短请求的响应时间。有统计数据部分说明了数据在边缘处理的优势,例如:在人脸识别领域,请求的响应时间从900 ms减少为169 ms;部分计算任务从云端卸载到边缘后,整体系统能耗降低了30%~40%;在数据的整合和迁移方面,时间消耗减少了近20倍[4-5]。军事电子装备平台也提出了既是信息生产者,也是信息消费者的概念。因此对满足军事应用的边缘计算平台的研究已经非常必要和迫切。
在目前的商用系统中,应用最广泛的是基于x86系统架构的计算平台,即个人电脑、服务器等大型设备互联。对军用领域,虽然也适用于对运算能力要求高,但对系统体积、功耗、工作温度环境等不敏感的场景,例如:地面数据中心、卫星地面站等。但可作为边缘节点的移动式军用计算平台(例如:侦察、预警机等航空电子平台)对系统的体积、功耗和环境适应性等要求苛刻,因此大量使用嵌入式系统,即:DSP(Digital Signal Processor,数字信号处理器)、FPGA(Field Programmable Gate Array,现场可编程门阵列)和ARM(Advanced RISC Machines,高级精简指令集处理机)等[6]。为了使嵌入式平台成为有效的边缘计算节点,除了计算框架的设计和移植,平台性能的评估方法也是其能否广泛应用核心技术之一。本文将重点从嵌入式边缘计算平台计算能力评估的角度,结合军事应用场景,展开介绍和研究。
嵌入式边缘计算平台以嵌入式硬件架构(DSP、FPGA、ARM等)为基础,采用云计算的设计思想对计算、通信等系统资源进行虚拟化、管理和调度,使嵌入式系统具备动态互联、资源可伸缩、自主完成分布式协同计算等云平台的能力。其层级架构如图1所示。
图1 嵌入式边缘计算平台架构
嵌入式边缘计算平台是由多类型异构处理节点组成的可伸缩开放式的计算系统。硬件资源层通过高速交换网络对计算节点进行互连,保障节点之间的高速吞吐能力。虚拟化层对系统的计算资源、存储资源和网络通信资源等进行虚拟化粒度划分,提供管理和操作虚拟化资源的服务接口。计算框架层提供注册机制,使系统资源能够在系统中进行注册,使系统资源具备灵活的伸缩性;用户请求通过任务管理器向系统的资源管理器请求服务,资源管理器根据任务需求进行系统资源分配,并通过计算框架对计算任务和数据进行并行化分解,然后映射到具体的工作节点;工作节点通过自身的节点管理器再将分配到工作节点的计算任务和数据映射至执行器(即worker)上进行具体的计算;计算完成后通过计算框架进行合并后获得数据的最终处理结果。计算框架同时提供节点错误恢复,计算过程、系统工作状态监视等功能。
边缘计算平台的性能受网络性能、计算节点性能、资源调度策略、基础计算架构等综合因素的影响,非常复杂。其性能评估对平台设计和部署过程的平台瓶颈探测、资源调度策略、配置参数调优等均非常重要。尽管市面上已经有一些云平台性能测试工具,例如:雅虎的YCSB(Yahoo! Cloud Serving Benchmark),主要用于测试云存储非关系型数据库的性能[7];TPC公司的TPC BenchmarkTM W通过模拟在线书店进行电子商务基准性能测试[8];UC Berkeley的Cloud Stone开源项目,用于云环境下Web2.0系统的性能评估[9]等。不同的性能测试工具针对不同的行业和应用,其测试目的和指标也与应用场景密切相关,因此有必要对主要针对军事应用的嵌入式边缘计算平台,结合军事应用场景对其测试方法和技术指标展开研究。此外,与传统计算平台相比,嵌入式计算平台在资源、功能、性能上都有其独特性,因此性能评估方法也需要结合嵌入式平台的特点。
微型批处理模型是目前大数据计算框架中的一种计算模型,例如Spark[10],其基本原理是用不同长度的时间窗口控制数据在计算框架中的流动时间间隔、处理时间间隔和结果输出间隔。通过时间片窗口,将系统的输入数据切分成微型批数据块;在每一个处理滑动窗口时间进行一次批数据处理;在每一个输出滑动窗口产生一个用户需求的数据处理结果输出。如图2所示。
图2 微型批处理的时间窗口
军事应用中,边缘计算需要主要处理两大类数据,一是信息流,一是信号流,然而无论信息流和信号流在技术上都可以归于一个统一的计算框架,无论对信息还是信号的处理都可以看作是一种映射,即Map,而所有对信息和信号的融合分析,则可以看作是一种综合,即Reduce。因此本文边缘计算平台的测试架构以Mapreduce计算模型[11]和一种典型军事应用场景相结合进行研究。
无论在信号侦察还是认知无线电应用,分布式协作总是比单节点有不可比拟的优势,例如单节点信息接收不全面,易受干扰等。本文以信号侦察场景为例,提出一种基于微型批处理的嵌入式边缘平台计算能力评估模型。
如图3(a)所示,考虑一种协作式电磁态势感知场景,复杂电磁环境中的节点为电磁信号探测节点,探测节点可能探测到通信信号、导航信号、雷达信号和敌我识别信号等。探测节点经过简单预处理后将探测到的信号按键值对的方式,即<Key,Value>对,传送给一个边缘计算节点,即待评估的嵌入式边缘计算平台,进行进一步处理[8]。同时,边缘计算网络也是一个自调度、自管理的计算框架,多个边缘节点可以通过向计算框架进行资源注册的方式加入边缘计算框架,形成更强大的边缘计算集群,如图3(b)所示。
从系统性能评估的角度,单边缘计算节点或多边缘计算节点的差异主要体现在性能的差异,而测试的计算模型可以采用统一架构,即上文提到的Mapreduce计算架构。
军事电磁态势感知系统在常规情况下是按照指定时间间隔进行数据更新和显示。当某节点发现重要异常状况,系统会立即启动特殊预警机制对事件进行响应。由于本文主要对平台的计算能力进行评估,而不是业务策略,因此本文建模只考虑电磁态势系统工作的常规情况。
图3 基于微型批处理的嵌入式云平台计算能力评估模型
协作式电磁态势感知在嵌入式边缘平台的数据处理过程可分为三个阶段:Map、Shuffle和Reduce阶段,如图4所示。Map阶段:在不同空间分布且具备不同侦测能力的协作节点,接收到不同的电磁信号,首先进行Map操作,各节点为每个单一信号建立一个键值对,以匹配Mapreduce统一计算框架的输入形式。其中,key标识信号类型,Value装载信号内容,对多个同类别信号也产生多个键值对。理论上Map阶段还应该附带一些数据处理工作,例如傅里叶变换,滤波等。Shuffle阶段:根据应用需求将Map输出的信号进行分类汇聚,图4的例子是对同一类信号进行合并,产生<Key,List<value>>类型的键值对作为Reduce阶段的输入。这种汇聚策略完全由用户根据应用需求定义,可以是信号类型、也可以是物理区域等;Reduce阶段:对信号进行最后的综合处理,例如联合频谱感知、侦测目标定位等。图4示例中使用了5个Reduce,进行两层Reduce操作。
图4 模型信号处理的三个阶段
嵌入式边缘计算平台提供了Mapreduce计算框架,对底层计算资源进行了自主管理,大幅降低了程序开发人员对分布式计算编程知识的要求,程序开发人员只用集中精力于应用的编写,将计算过程套入Mapreduce计算框架的用户函数即可。
可采用模拟的方式产生导航、通信、雷达和敌我识别基带信号作为平台的信号输入。致力于对平台计算能力测试,因此信号产生过程更多的关注类别、速率和4种信号间的分布。普通情况下,4种信号产生的量可采用均匀分布,即各种信号量均等。但是实际场景中,几种信号量的分布总是不均匀的,因此可通过设计信号产生量的偏移程度来测试边缘计算平台对数据偏移的适应能力。
嵌入式边缘计算平台提供了自管理的统一计算框架,隐藏了框架资源的管理和分布式计算的编程细节,因此性能评估的编程过程只需要关注用户函数的编写,即信号生成函数、计算框架中的Map函数和Reduce函数,其他过程由计算框架自主完成。
测试程序编程过程可分为4个主要步骤:(1)编写基带信号生产函数;(2)编写map函数,并设计key、value对的表示含义;(3)编写Reduce函数;(4)通过框架的set方法形成数据处理流图。此外还需要设置各时间窗口参数,如图5所示。
图5 模型信号处理过程
数据处理过程的伪代码如下:
Map阶段
StreamSource(detector_id,data_in); //接 收 节 点的实时数据流
SetMiniBatchWindow(t); //设 定 微 型 批 处 理 时间片
CreateRDD(data_in,rdd_out); //根据设定时间构建微型批数据
Transfer(kvpairs_in,kv_pairs_out); //用 户 编 写map操作
Map(rdd_in,kvpairs_out); //调用 Transfer(),并执行用户指定的map操作
Reduce阶段
SetProcessWindow (t);//设置数据处理滑动窗口时间(为微型批数据时间片的整数倍)
Action(kvpairs_in,kv_pairs_out); //用 户 编 写reduce的执行操作
Reduce(kvpairs_in,kv_pairs_out); //执行 Reduce操作
形成处理流图
GetTime();//获取系统时间轴
SetOutputWindow(t); //设定处理结果输出滑动窗口
SetMapper(map); //设定 Map
SetCombiner(key_index); //设定 Shuffle 过程的合并方法
SetPatitioner(hashOperation); //设定 Shuffle 过程的分区方法
SetSorter(key_index); //设定 Shuffle 过程的排序方法
SetReducer(reduce); //设定 Reduce
采用微型批处理模型进行计算能力评估,应根据任务需求和平台的计算能力综合设定微型批数据的时间分片、处理滑动窗口时间和输出滑动窗口时间。作为对平台计算能力的评估,除了检测以下几个指标,例如:每秒的输入数据量,微型批量数据任务在系统内的部署时间,每个微型批量数据在系统内处理所需的时间等。本文根据嵌入式云平台计算能力的评估需求提出了以下测试性能指标。军事应用数据高速实时接入对数据吞吐量要求非常高。
(1)计算加速性能
计算加速性能是嵌入式边缘计算平台的一个重要指标,其表征是否随着计算节点数量的增加,计算时间是否相应缩短,即平台能否通过增加计算节点数量增强计算的实时性。计算方法如下:
保持数据总量或单位时间内流入平台的数据量不变,仅增加参与计算的节点数量,记录数据处理的时间。理论上,计算加速性能指标会随着计算节点数m的增加保持线性增长,表明增加计算节点能有效缩短计算时间。但在实际系统中,随着计算节点增加,通信、资源管理等损耗也会增加,因此一直维持这种线性增长非常困难。
(2)数据集适应性
数据集适应性是考察在处理数据集和计算节点数目同比例扩大条件下,平台的适应能力,计算方法如下:
如果数据集适应性指标随着m增加在1.0附近波动,则表明平台对数据集的规模变化有很好的适应性。
(3)平均最快响应时间
军事应用中平台的响应时间是一个至关重要的性能参数,尽管对一个应用的响应时间受数据处理过程、算法复杂度等客观因素影响,但是剥离开数据处理,单纯从数据流入到流出系统,也可以测试出平台的一个最快响应时间。测试方法可以在数据产生过程中产生一个特殊数据序列,系统记录从接收到特殊数据序列到输出端口捕获到特殊数据序列的时间差,即为平台的最快响应时间。由于平台是分布式系统,每次特殊数据序列通过的路径可能不同,因此应当取尽量多次时间进行平均,作为系统的平均最快响应时间指标。
(4)计算资源利用率
资源调度问题一直是云计算平台的核心问题之一,直接关系到系统的运行性能。边缘计算平台资源宝贵且有限,因此如何高效地利用有限资源完成计算任务是对边缘计算平台资源调度策略的一个重要评价指标。从目前嵌入式边缘计算平台以CPU核为最小粒度计算单元的设计,计算资源利用率评估指标可以以相同任务平均调度的CPU核利用比例进行评估。
嵌入式边缘计算平台是下一代智能军事装备基础架构的核心组件之一,影响平台效能的因素众多且复杂,因此对平台有效的计算能力评估是平台设计、部署及推广过程的关键技术之一。对于具有不同特点的平台,不同的应用场景,对平台的性能要求的侧重点、性能指标要求均不相同,因此当前的评估工具也都缺乏普适性,因此必要根据平台特点和应用场景进行有针对性的计算能力评估。
本文将军事场景中的一个典型场景(即协作式电磁态势感知)的数据处理过程映射到嵌入式平台的MapReduce计算过程,并采用微型批处理的方式进行计算,并根据场景提出了相应的评估指标。
本文的尝试将有助于将各类大数据、人工智能的计算模型与典型军事应用场景的相结合,拓展大数据和人工智能方法在军事领域的应用。下一步研究将进一步细化性能测试指标,并尝试在平台上研究目前更广泛应用的流计算和图计算。