CN113190345A - 一种面向软件定义卫星的神经网络模型部署的方法以及装置 - Google Patents
一种面向软件定义卫星的神经网络模型部署的方法以及装置 Download PDFInfo
- Publication number
- CN113190345A CN113190345A CN202110329912.3A CN202110329912A CN113190345A CN 113190345 A CN113190345 A CN 113190345A CN 202110329912 A CN202110329912 A CN 202110329912A CN 113190345 A CN113190345 A CN 113190345A
- Authority
- CN
- China
- Prior art keywords
- neural network
- network model
- module
- file
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000003062 neural network model Methods 0.000 title claims abstract description 233
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000013528 artificial neural network Methods 0.000 claims abstract description 125
- 238000004458 analytical method Methods 0.000 claims abstract description 45
- 238000013139 quantization Methods 0.000 claims description 55
- 238000004364 calculation method Methods 0.000 claims description 32
- 238000012545 processing Methods 0.000 claims description 21
- 238000012544 monitoring process Methods 0.000 claims description 19
- 238000005457 optimization Methods 0.000 claims description 15
- 238000012549 training Methods 0.000 claims description 13
- 238000011176 pooling Methods 0.000 claims description 9
- 238000010606 normalization Methods 0.000 claims description 8
- 230000003993 interaction Effects 0.000 claims description 7
- 230000006835 compression Effects 0.000 claims description 4
- 238000007906 compression Methods 0.000 claims description 4
- 238000000354 decomposition reaction Methods 0.000 claims description 4
- 238000013140 knowledge distillation Methods 0.000 claims description 4
- 238000013138 pruning Methods 0.000 claims description 4
- 238000013500 data storage Methods 0.000 claims description 3
- 238000002347 injection Methods 0.000 abstract description 2
- 239000007924 injection Substances 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 24
- 238000010586 diagram Methods 0.000 description 10
- 238000013135 deep learning Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 238000013507 mapping Methods 0.000 description 5
- 239000000243 solution Substances 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 4
- 238000012217 deletion Methods 0.000 description 4
- 230000037430 deletion Effects 0.000 description 4
- 238000003780 insertion Methods 0.000 description 4
- 230000037431 insertion Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003058 natural language processing Methods 0.000 description 2
- 238000011002 quantification Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000013468 resource allocation Methods 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5055—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本申请实施例提供一种面向软件定义卫星的神经网络模型部署的方法以及装置,所述方法包括:生成上注文件,其中,所述上注文件包括执行任务分配所需的部署需求表、编译目标神经网络模型得到的各节点编译数据和所述目标神经网络模型所需的基础层数据,所述编译数据包括所述各节点的指令序列文件、指令解析及运算控制程序,所述基础层数据包括:神经网络基础层部件;将所述上注文件上注至卫星,以使所述卫星根据所述上注文件完成所述目标神经网络模型的在轨部署运行。通过将本申请实施例的上注文件上注到软件定义卫星,在软件定义卫星的支持下,可实现任意神经网络模型的在轨运行。
Description
技术领域
本申请涉及神经网络星上部署领域,具体而言本申请实施例涉及一种面向软件定义卫星的神经网络模型部署的方法以及装置。
背景技术
近年来,深度学习相关算法发展迅速,在图像处理、自然语言处理领域都取得了很好的效果,但深度学习网络巨大的计算量阻碍了其在实际场景中的应用,因此近年来涌现了大量深度学习网络硬件加速方面的研究。
常用的硬件加速平台有GPU、CPU、FPGA等,在低功耗需求的嵌入式端应用方面,CPU和FPGA结合的异构硬件平台得到了应用需求者们广泛的青睐,尤其是集成了CPU和FPGA的片上SoC更是得到了广泛的应用。在航天卫星领域,高性能的SoC逐渐开始得到应用,且深度学习网络加速器在卫星平台上部署近几年也出现了大量的研究和尝试,现有的深度学习网络加速器在卫星平台上的部署多是针对某一种网络或某一类网络,比如只针对图像领域应用较广泛的卷积神经网络的加速,或者只是针对性地解决一类问题,比如基于遥感图像的舰船、飞机的识别等,而深度学习网络加速器一旦在卫星平台上部署完成后便不能更改,若想支持新的应用需求、部署新的深度学习网络只能重新发射一颗新的卫星。由于卫星研制和发射的高成本,此类加速器显得效率低下,且严重影响卫星的智能性。
现有技术方案缺点至少包括:卫星上可支持加速的神经网络模型的种类是确定的,卫星发射后不能通过上注等方式增加对新的神经网络的支持,当有新的航天应用需求时,无法利用现有卫星实现,需要研究人员重新开发并重新发射卫星,造成了人力、财力和时间成本的极大浪费。
发明内容
本申请实施例的目的在于提供一种面向软件定义卫星的神经网络模型部署的方法以及装置,通过将本申请实施例的上注文件上注到软件定义卫星,在软件定义卫星的支持下,可实现任意神经网络模型的在轨运行。
第一方面,本申请的一些实施例提供一种面向软件定义卫星的神经网络模型部署的方法,应用于地面装置,所述方法包括:生成上注文件,其中,所述上注文件包括执行任务分配所需的部署需求表、编译目标神经网络模型得到的各节点编译数据和所述目标神经网络模型所需的基础层数据,所述编译数据包括各节点指令序列文件、各节点指令解析及运算控制程序,所述基础层数据包括:神经网络基础层部件;将所述上注文件上注至卫星,以使所述卫星根据所述上注文件完成所述目标神经网络模型的在轨部署运行。
本申请的一些实施例通过在地面生成用于指导卫星对神经网络模型的计算任务进行分配的部署需求表,生成指导各节点进行神经网络部署的并执行计算的指令数据,并生成神经网络模型所需的相关的基础层部模块数据,之后将这些数据上注至卫星以实现新的神经网络的在轨运行。借助本申请的实施例提供的部署方法可以不断的满足新的神经网络模型在软件定义卫星上的部署需求。
在一些实施例中,所述上注文件还包括定点型参数文件,其中,所述定点型参数文件至少是通过对所述目标神经网络模型的权重系数根据量化位宽进行量化压缩得到的。
本申请的一些实施例将32位浮点数转换为8位或16位(即量化位宽为8或者16)的定点参数进行存储可有效降低存储需求,使更多的权值数据和神经网络模型计算的中间结果可以放在片上存储,降低节点对片外DDR存储的需求及对带宽的需求。
在一些实施例中,所述生成上注文件包括:对所述目标神经网络模型描述文件、训练所述目标神经网络模型所需的数据集以及训练结束后所述目标神经网络模型的浮点型参数文件根据所述量化位宽进行定点化处理得到所述定点型参数文件。
本申请的一些实施例通过对这些文件和数据进行量化处理可以减轻片外存储需求,提升各节点执行计算操作的速度节省存储资源需求。
在一些实施例中,所述生成上注文件还包括:生成所述目标神经网络模型的神经网络模型各层参数;至少根据所述神经网络模型各层参数生成所述部署需求表、所述各节点指令序列文件、所述各节点指令解析及运算控制程序、所述神经网络基础层部件以及基础层模块唯一标识表。
本申请的一些实施例根据生成的各层参数可以进一步获取用于执行任务分配的数据、指导编译过程并可以用于生成基础层数据。
在一些实施例中,所述至少根据所述神经网络模型各层参数生成所述部署需求表、所述各节点指令序列文件、所述各节点指令解析及运算控制程序、所述神经网络基础层部件以及基础层模块唯一标识表,包括:根据所述神经网络模型各层参数和所述量化位宽生成所述部署需求表、所述各节点指令序列文件以及所述各节点指令解析及运算控制程序。
本申请的一些实施例根据解析得到的各层参数以及量化得到定点型参数文件生成上注文件。
在一些实施例中,所述生成上注文件还包括:生成任务分配拓扑表,其中,所述任务分配拓扑表用于记录所述目标神经网络模型对应的计算任务在所述卫星上包括的多个节点的任务分配结果;所述至少根据所述神经网络模型各层参数生成所述部署需求表、所述各节点指令序列文件、所述各节点指令解析及运算控制程序、所述神经网络基础层部件以及基础层模块唯一标识表,包括:根据所述神经网络模型各层参数、所述量化位宽和所述任务分配拓扑表,生成所述神经网络基础层部件以及所述基础层模块唯一标识表。
本申请的一些实施例根据任务分配拓扑表、量化得到的定点型参数文件以及解析得到的神经网络模型各层参数生成神经网络的基础层模块,包括卷积层、池化层、非线性化层、归一化层、全连接层、Softmax层等,每次需要部署新的目标神经网络时,首先遍历基础层模块信息表,如果新的目标神经网络所需的基础层软件APP和硬件IP已在基础层模块信息表中存在,则说明其已经存储在星上的内存空间中,则无需重新上注,如此可实现差异化上注。基础层模块唯一标识表记录了部署当前目标神经网络所需的APP或IP的相关信息。
在一些实施例中,所述任务分配拓扑表是以完成所述目标神经网络的计算所消耗的时间为基准将计算任务分配到各个计算节点得到的。
本申请的一些实施例通过多个计算节点协同执行计算任务以满足神经网络模型在星上的计算时间需求,根据目的神经网络模型的计算时间需求将计算任务均衡地将分配到各个计算节点以充分利用多个节点的计算资源、存储资源。
在一些实施例中,所述任务分配拓扑表是通过如下步骤得到的:确定所述目标神经网络模型的计算量;以完成所述目标神经网络的计算所消耗的时间为基准,将所述计算量分配到一个节点或多个节点,并为每个节点确定硬件IP的等级。
本申请的一些实施例根据计算时间需求和计算量确定所需的节点以及各节点的资源配置情况。
在一些实施例中,所述计算量至少是通过对所述目标神经网络的权重系数压缩后得到的量化位宽确定的。
本申请的一些实施例依据量化处理后的量化位宽确定目标神经网络模型的实际计算量可以减少总的计算量。
在一些实施例中,所述硬件IP的等级是通过应用时间需求、所述每个节点上硬件IP挂载点的数量及硬件资源确定的,其中,所述应用时间需求用于表征完成所述目标神经网络的计算所消耗的时间。
本申请的一些实施例确定IP等级实际上就是设计几种规格的、占用资源不同的IP,由于不同节点上IP挂载点的硬件资源不同,为了保证不同的IP挂载点都能找到合适的IP挂载,故设置了多种IP等级。
在一些实施例中,所述生成上注文件,包括:生成所述目标神经网络包括的目标基础层模块,其中,所述目标基础层模块包括:卷积层、池化层、非线性化层、归一化层或全连接层;遍历基础层模块信息表,根据所述目标基础层模块确定需要上注的基础层软件,其中,所述基础层模块信息表用于记录所述卫星上目前可用的软件应用程序和硬件IP的相关信息,所以基础层模块信息表包括模块ID、模块类型、模块功能及模块结构参数;根据所述当前目标神经网络所需的基础层部件和所述基础层模块信息表生成基础层模块唯一标识表,其中,所述基础层模块唯一标识表用于记录部署所述目标神经网络模型所需的所有基础层相关APP和IP的标识、类型、功能、结构参数及否需要上注的信息;至少根据所述基础层模块唯一标识表生成所述部署需求表、所述各节点指令序列文件和所述各节点指令解析及运算控制应用程序。
本申请的一些实施例提供了构成目标神经网络的基础层模块,包括卷积层、池化层、非线性化层、归一化层、全连接层、Softmax层等。每次需要部署新的目标神经网络时,首先遍历基础层模块信息表,如果新的目标神经网络所需的基础层软件APP和硬件IP已在基础层模块信息表中存在,则说明其已经存储在星上的内存空间中,则无需重新上注,如此可实现差异化上注。
在一些实施例中,所述生成上注文件还包括:根据所述需要上注的基础层软件,生成或更新路由信息表作为上注文件,其中,所述路由信息表用于表征数据在对应部署节点上的所述基础层应用程序和硬件IP之间的流向。
本申请的一些实施例提供了一种如何组织基础层模块以完成某个神经网络模型的部署、软件APP的插入和删除及硬件IP重配置。
在一些实施例中,所述生成上注文件,包括:将所述目标神经网络模型的定义转化为映射在所述目标基础层模块上的系列指令,得到所述各节点指令序列文件和所述各节点指令解析及运算控制应用程序,以通过所述系列指令控制在所述卫星上所述目标基础层模块的连接、交互和运行,完成所述目标神经网络模型在星上的部署。
本申请的一些实施例将神经网络模型的定义转化为映射在基础层模块上的系列指令,通过指令控制星上基础层模块的连接、交互和运行,以完成一个完整目标神经网络模型在星上的部署。
在一些实施例中,所述生成上注文件包括:对部署所述目标神经网络模型所需的软件应用程序及硬件IP资源需求进行分析,进而生成所述部署需求表,以供所述卫星读取并按照部署需求将所述软件应用程序或硬件IP部署到对应的节点。
本申请的一些实施例通过部署需求表记录目标神经网络模型所需的所有应用程序和硬件IP,以使卫星根据这些信息完成目标神经网络模型在卫星上各节点的动态部署。
在一些实施例中,所述部署需求表是根据总体控制及状态监测应用程序、任务分配拓扑表、所述各节点指令解析及运算控制应用程序、所述神经网络基础层部件以及所述基础层模块唯一标识表生成的。
在一些实施例中,所述各节点指令序列文件和所述各节点指令解析及运算控制应用程序是根据神经网络模型各层参数、所述量化位宽和所述基础层模块唯一标识表生成的。
在一些实施例中,所述神经网络基础层部件和所述基础层模块唯一标识表是根据任务分配拓扑表、神经网络模型各层参数及所述量化位宽生成的。
第二方面,本申请的一些实施例提供一种面向软件定义卫星的神经网络模型部署的装置,所述装置包括:上注文件生成模块,被配置为生成上注文件,其中,所述上注文件包括执行任务分配所需的部署需求表、编译目标神经网络模型得到的各节点编译数据和所述目标神经网络模型所需的基础层数据,所述编译数据包括各节点指令序列文件、各节点指令解析及运算控制程序,所述基础层数据包括:神经网络基础层部件;上注模块,被配置为将所述上注文件上注至卫星,以使所述卫星完成目标神经网络模型的在轨部署运行。
在一些实施例中,所述上注文件还包括定点型参数文件;所述上注文件生成模块包括:神经网络模型量化模块,被配置为对所述目标神经网络模型描述文件、训练所述目标神经网络模型所需的数据集以及训练结束后所述目标神经网络模型的浮点型参数文件根据量化位宽进行定点化处理得到所述定点型参数文件。
在一些实施例中,所述上注文件生成模块还包括:神经网络模型优化模块,被配置为对神经网络模型进行优化处理得到所述目标神经网络,其中,所述优化处理包括:参数剪枝、低秩分解、参数共享或知识蒸馏。
本申请的一些实施例通过优化方法可以在不影响模型性能的前提下降低模型计算量及模型参数。
在一些实施例中,所述上注文件生成模块还包括:神经网络模型多节点任务分配模块,被配置为根据应用时间需求、所述量化位宽和所述目标神经网络的神经网络模型各层参数生成任务分配拓扑表,其中,所述任务分配拓扑表用于记录所述目标神经网络模型对应的计算任务在所述卫星上包括的多个节点的任务分配结果,所述应用时间需求用于表征完成所述目标神经网络的计算所消耗的时间。
在一些实施例中,所述上注文件还包括总体控制及状态监测应用程序,其中,所述神经网络模型多节点任务分配模块还被配置为根据所述应用时间需求、所述量化位宽和所述神经网络模型各层参数生成所述总体控制及状态监测应用程序,其中,所述总体控制及状态监测应用程序用于:控制所述卫星从星上公共数据存储区域读取指令序列、软件应用程序及比特流发送给需要部署所述目标神经网络的物理节点,同时生成控制和监测信号,用于控制所述部署所述目标神经网络的物理节点的运行,并实时检测部署所述目标神经网络的物理节点的运行状态。
在一些实施例中,所述上注文件生成模块还包括:神经网络模型编译模块,被配置为根据所述目标神经网络的神经网络模型各层参数、所述任务分配拓扑表和基础层模块唯一标识表生成所述各节点指令序列文件和所述各节点指令解析及运算控制应用程序。
在一些实施例中,所述上注文件生成模块还包括:神经网络模型解析模块,被配置为解析所述目标神经网络得到所述神经网络模型各层参数。
在一些实施例中,所述上注文件生成模块还包括:神经网络模型基础层生成模块,被配置为根据所述任务分配拓扑表、所述神经网络模型各层参数和所述定点型参数文件的量化位宽生成所述神经网络基础层部件以及基础层模块唯一标识表。
在一些实施例中,所述上注文件生成模块还包括:神经网络模型资源需求分析模块,被配置为根据所述任务分配拓扑表、所述总体控制及状态监测应用程序、所述各节点指令序列文件、所述各节点指令解析及运算控制程序、所述神经网络基础层部件以及基础层模块唯一标识表生成所述部署需求表。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的面向软件定义卫星的神经网络模型部署的装置的组成框图之一;
图2为本申请实施例提供的面向软件定义卫星的神经网络模型部署的装置的组成框图之二;
图3为本申请实施例提供的卫星上的多个计算节点连接关系示意图;
图4为本申请实施例提供的多个计算节点处理多个数据帧的流程示意图;
图5为本申请实施例提供的路由表示意图;
图6为本申请实施例提供的差异化上注软件应用程序的路由表调整示意图之一;
图7为本申请实施例提供的差异化上注硬件IP重配置的路由表调整示意图之二;
图8为本申请实施例提供的面向软件定义卫星的神经网络模型部署的方法流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
现有的卫星上神经网络的部署多是在一个物理节点上,无法根据应用的需求灵活调整,我们提出的方案是面向软件定义卫星的,可根据应用需求得到的部署需求表将神经网络部署在一个节点或多个物理节点上。传统的方案中,如需上注新的应用程序,需要通过遥测指令获取当前卫星的状态,由于星地通信带宽极为有限,本申请实施例消除了传统方案中地面与卫星之间的交互,具体地,本申请的实施例通过地面应用需求,生成部署需求表等上注文件,上注至卫星,由于软件定义卫星的高度智能化,其可根据部署需求表等上注文件将应用中的计算任务合理地部署在卫星空闲的物理节点上。
如图1所示,本申请的一些实施例提供一种面向软件定义卫星的神经网络模型部署的装置,所述装置包括:上注文件生成模块100和上注模块110,其中,上注文件生成模块100被配置为生成上注文件,所述上注文件包括执行任务分配所需的部署需求表、编译目标神经网络模型得到的各节点编译数据和所述目标神经网络模型所需的基础层数据,所述编译数据包括各节点指令序列文件、各节点指令解析及运算控制程序,所述基础层数据包括:神经网络基础层部件;上注模块110被配置为将所述上注文件上注至卫星200,以使图1的卫星200完成目标神经网络模型的在轨部署运行。
作为一个示例,如图2所示,图1的上注文件生成模块100包括:神经网络模型优化模块101、神经网络模型量化模块103、神经网络模型解析模块102、神经网络模型多节点任务分配模块104、神经网络模型编译模块105、神经网络模型基础层生成模块106及神经网络模型资源需求分析模块107。通过这些模块共同生成六类文件即上注文件,分别是总体控制及状态检测应用程序、部署需求表、各节点指令序列文件、各节点指令解析及运算控制应用程序、神经网络基础层模块及神经网络模型定点参数,将这六类文件上注到软件定义卫星,在软件定义卫星基础系统的支持下,可实现任意神经网络模型的在轨运行。
下面对图2的七个模块及它们生成的六类文件分别详细介绍。
1)神经网络模型优化模块101
上注文件生成模块100包括的神经网络模型优化模块101,被配置为对神经网络模型进行优化处理得到所述目标神经网络,其中,所述优化处理包括:参数剪枝、低秩分解、参数共享或知识蒸馏。
近年来,各类神经网络模型在计算机视觉、自然语言处理等领域已取得重大突破,但与之伴随的是巨大的网络计算量及庞大的网络参数,这又会带来高额的计算开销及内存需求,使其在计算能力受限的嵌入式平台上的部署受到极大挑战,如何在不影响模型性能的前提下降低模型计算量及模型参数成为了一个非常重要的课题,而这也是本申请一些实施例中的神经网络模型优化模块101需要完成的功能。对于一个已经训练好的神经网络模型,神经网络模型优化模块101主要从参数剪枝、低秩分解、参数共享及知识蒸馏等方面对模型优化。将神经网络模型优化模块优化好的目标神经网络模型及模型参数作为后续模块(或称为工具链)的输入。需要说明的是,后续工具链包括图2的其余模块。
2)神经网络模型量化模块103
上注文件生成模块100生成的上注文件还包括由神经网络模型量化模块103根据量化位宽生成的定点型参数文件。
神经网络模型量化模块103被配置为对目标神经网络模型描述文件、训练所述目标神经网络模型所需的数据集以及训练结束后所述目标神经网络模型的浮点型参数文件根据预设的量化位宽进行定点化处理得到所述定点型参数文件。
神经网络模型量化模块103的主要作用是对待部署的目标神经网络模型的权重系数进行量化压缩,例如,将32位浮点数转换为8位或16位定点数。由于该神经网络部署工具链是面向软件定义卫星的,而星上硬件资源相对地面而言较为有限,且星上用于加速神经网络模型的主要是FPGA。一方面32位浮点数相乘对DSP资源有大量需求,而FPGA片上DSP资源有限,由此浮点数相乘限制了计算并行度的提高,从而限制了吞吐率;另一方面32位浮点数非常耗费存储资源,且FPGA片上存储资源有限,若将大部分数据存储在片外DDR,访问片外DDR延迟大且能耗高,也会提高整个系统的延迟性,而转换为8位或16位存储可有效降低存储需求,使更多的权值数据和神经网络模型计算的中间结果可以放在片上存储,降低对片外DDR存储的需求及对带宽的需求。
神经网络模型量化模块103的输入包括待部署的目标神经网络模型的描述文件、训练该待部署的目标神经网络模型所需的数据集,及在特定数据集上训练好的浮点型参数文件,输出为定点型参数文件。神经网络模型量化模块103在上述三部分输入的基础上对浮点型参数进行量化,量化过程为:首先确定定点数的位宽,本申请的一些实施例支持两种选择8位或16位,其次统计已训练好的浮点型参数及某特定数据集在该目标神经网络模型及该浮点参数下计算得到的中间特征图的数值范围,并确定定点小数点的位置。在确定好定点小数的格式后,将上述浮点型参数转换为格式已确定的定点小数,然后再将这些定点小数反转换为浮点数,并在上述特定数据集上进行微调,以确保目标神经网络模型精度损失降到最低,最后将微调后的浮点数转换为定点小数,即本申请的一些实施例最终需要的定点化参数文件。另外神经网络模型量化模块103所确定的量化位宽是神经网络模型多节点任务分配模块104、神经网络模型编译模块105及神经网络模型基础层生成模块106的输入。
3)神经网络模型解析模块102
神经网络模型解析模块102的主要作用是解析当下主流的深度学习架构(包括Caffe、Tensorflow、PyTorch等)下的神经网络模型描述文件,提取神经网络模型结构参数(包括神经网络模型的层数及每一层的相关参数),并为每一种特定类型的层定义一种统一的数据结构,将提取的相关层的参数存储在其相对应的数据结构中,以便神经网络模型多节点任务分配模块104、神经网络模型编译模块105及神经网络模型基础层生成模块106等后续工具使用。举例说明:如对于卷积层,需要提取的参数有输入特征图通道数、输出特征图通道数、输入特征图的宽和高、卷积核的尺寸、滑动步长、padding等,其数据结构定义如下:
type struct conv_layer{
int height;//输入特征图高
int width;//输入特征图宽
int channel_in;//输入通道数
int channel_out;//输出通道数
int stride;//步长
int kernel_size;//卷积核尺寸
int padding;//padding的尺寸
}conv_layer;
这里对于其他各种类型的层的数据结构的定义就不一一列举了。
4)神经网络模型多节点任务分配模块104
神经网络模型多节点任务分配模块104的作用是根据具体应用的执行时间需求将一个神经网络模型(例如,待部署的目标神经网络模型)的计算任务分配到多个计算节点执行,这是和软件定义卫星的核心天基超算平台的架构是紧密相连的。天基超算平台用于为软件定义卫星提供星载高性能计算、大容量存储和实时数据交换等能力,在整体上采用POE/TSN可重构交换机连接多种规格的若干计算节点的形式,具有模块化、标准化、可灵活扩展等特点。天基超算平台硬件架构如图3所示,POE/TSN交换板和计算板均采用CPU组合FPGA的形式。交换板和计算板之间采用POE(千兆)连接。交换板和交换板之间通过万兆网进行级联。每个交换板的万兆级连口大于等于2个,POE端口大于等于18个。
在上述天基超算平台上部署神经网络模型需要充分利用该平台的优势,联合多个计算节点以满足目标神经网络在星上的计算时间需求,神经网络模型多节点任务分配模块104的作用包括根据当前待部署的目标神经网络的计算时间需求(即根据待部署的目标神经网络的计算所消耗的时间)将其计算任务均衡地(或者非均衡的)分配到各个计算节点以充分利用多个节点的计算资源、存储资源。例如,本申请一些实施例提出的划分策略是将目标神经网络横向划分,例如,计算节点一计算目标神经网络的1-5层,计算节点2计算目标神经网络的6-8层,当计算节点二计算第一帧图像的6-8层时,计算节点一同时计算第二帧图像的1-5层,多个计算节点以流水线的方式串联起来,达到并行计算的效果。例如,可以将一个共12层的神经网络按照计算量均衡地分配到3个计算节点上计算,计算节点1计算该神经网络的1-5层,计算节点2计算该神经网络的6-8层,计算节点3计算该神经网络的9-12层,同时这3个计算节点以流水线的方式连接。当利用该部署好的神经网络处理连续的视频流时,各个计算节点可达到并行处理的效果。如图4所示,在T0时刻由计算节点1处理第1帧图像的第1-5层;在T1时刻由计算节点1处理第2帧图像的1-5层,同时计算节点2处理第1帧图像的6-8层;在T2时刻由计算节点1处理第3帧图像的1-5层,计算节点2处理第2帧图像的6-8层,计算节点3处理第1帧图像的9-12层。可以理解的是,T1时刻是比T0时刻靠后的时刻,T2时刻是比T1时刻靠后的时刻。
在本申请的一些实施例中,还可以将定义一个主控节点,其中,主控节点用于控制和监测各个计算节点的运行状态。
下面就详细介绍均衡划分的策略:
第一步,首先在软件定义卫星发射之前,天基超算平台的基础系统已将部署完成,天基超算平台上每个计算节点保留的硬件IP挂载点的数量及硬件资源已是固定的,如下表1所示:
表1硬件IP挂载点统计
硬件IP的部署是与硬件资源息息相关的,由于每个硬件挂载点的资源已经固定,某硬件IP若想部署在某IP挂载点,则该硬件IP所需资源不能超过该IP挂载点的资源。由于神经网络部署所需的硬件IP一般是用于实现卷积层、全连接等层的,在实现过程中可以设置其并行计算的输入通道数及输出通道数,以控制该硬件IP核并行计算的数据量,当然输入通道数及输出通道数不同,所需的硬件资源也不同,在上述硬件IP挂载点的资源限制下,可为该硬件IP核设置多种等级,如下表2所示,以确保在各种应用需求下均有合适的IP核可供选择,同时生成的IP核始终能挂载在天基超算平台的IP挂载点。
表2硬件IP等级
第二步,计算当前需要部署的目标神经网络的计算量,由于计算量是和数据位宽直接相关的,所以这里需要将神经网络量化模块的输出量化位宽作为输入;
第三步,以完成目标神经网络计算的时间需求为基准,将神经网络的计算量分配到一个节点或多个节点,并为每个节点确定硬件IP的等级。例如,目标神经网络计算完一幅512*512图像的计算量是0.2G,卷积层的计算量为0.18G,时间需求是0.3s,则只在一个计算节点上部署一个等级为一级的硬件IP核即可满足需求。由于神经网络的主要计算量为卷积层的运算,用所有卷积层的计算量来衡量神经网络整体运行时间是比较准确的。当然在将相关文件注入星上之前,先在地面平台(地面平台与天基超算平台架构一致,只是在地面用于演示验证)进行验证,查看其是否满足时间需求,如不满足,则重新进行分配,直至满足为止。
第四步,经过任务分配,神经网络模型多节点任务分配模块最终会生成两个文件,一个是总体控制及状态监测应用程序,另一个是任务分配拓扑表。总体控制及状态监测应用程序的主要任务是从星上公共数据存储区域读取指令序列、应用程序及比特流等发送给特定的计算节点(即物理节点),同时生成控制和监测信号,用于控制各个计算节点的运行,并实时检测各个计算节点的运行状态。任务分配拓扑表存储了待部署的目标神经网络需要用到的各节点ID号、节点之间的拓扑关系、每个计算节点需要计算的层及每个计算节点所需部署硬件IP的等级,举例如下:
表3任务分配拓扑表
例如,上述任务分配拓扑表中标识为1的节点为主控节点,运行总体控制及状态监测应用程序,标识2及以后的均为计算节点,计算节点2计算神经网络的第1层到第5层,且该节点需要部署的硬件IP等级为一级,计算节点3计算神经网络的第6层到第8层,且该节点需要部署的硬件IP等级为二级。当然这里的计算节点标识只是逻辑上的,与天基超算平台物理上的计算节点标识并不是一一对应的。例如,神经网络模型多节点任务分配模块生成的任务分配拓扑表中的计算节点2所要完成的计算任务实际上可能由天基超算平台的第5个物理节点完成,这是由天基超算平台系统决定的。本申请一些实施例的任务分配拓扑表会作为后续神经网络模型编译模块、神经网络模型基础层生成模块及神经网络模型资源需求分析模块的输入,以便生成相应节点的指令序列及部署需求表等。
5)神经网络模型基础层生成模块106
神经网络模型基础层生成模块106用于生成目标神经网络的基础层模块,基础层模块包括卷积层、池化层、非线性化层、归一化层、全连接层、Softmax层等。由于面向软件定义卫星的天基超算平台是由多个计算节点组成的,且每个计算节点都是CPU组合FPGA的架构,本申请的一些实施例根据这些基础层模块的计算特点将它们部署在合适的硬件平台上。例如,将需要完成大量乘加并行运算的卷积层和全连接层部署在FPGA端,使其以硬件IP的形式存在,而将需要完成指数运算的Softmax层部署在CPU端,使其以软件应用程序APP的形式存在。总体而言,部署在FPGA端的基础层模块包括卷积层、池化层、非线性化层、全连接层等,部署在CPU端的包括归一化层、Softmax层等。另外在FPGA端部署硬件IP时需要充分考虑当前星上硬件资源情况。
天基超算平台上专门划分了一段存储空间用于存储与神经网络部署有关的软件应用程序APP和硬件IP,只要这段内存空间还有余量,则可一直注入新的与神经网络相关的APP或IP,这些APP或IP在存储空间中按顺序存放且有唯一的标识,一旦内存空间已满,则注入的新的APP或IP需要从内存空间的起始位置开始存放,覆盖原有的APP或IP,同时将原有APP或IP的标识赋予这些新的APP或IP。当然,目前存储在星上该段存储空间的软件APP和硬件IP的相关信息都通过一个基础层信息表维护,该基础层信息表记录了星上目前可用的软件APP和硬件IP的相关信息,包括模块ID、模块类型、模块功能及模块结构参数,结构如下表4所示。该基础层信息表存储在地面,无需上注到星上。每次需要部署新的神经网络时,首先遍历基础层模块信息表,如果新的神经网络所需的基础层软件APP和硬件IP已在基础层模块信息表中存在,则说明其已经存储在星上的内存空间中,则无需重新上注,如此可实现差异化上注。另外需要注意的是该基础层模块信息表中的模块ID是从21开始计数的,这是因为0-20这21个ID号作为保留ID号,主要用于控制类APP,如总体控制及状态监测APP及各节点指令解析及运算控制APP。
表4基础层模块信息表
每当有新的目标神经网络模型需要部署到软件定义卫星上,神经网络模型基础层生成模块会根据当前输入的目标神经网络模型参数、量化位宽、任务分配拓扑表的内容更新上述基础层模块信息表。这里将举两个例子对更新过程进行说明。
示例1,假如部署当前神经网络模型需要一个输入通道为8,输出通道为4,量化位宽为8bit的硬件IP,而通过查询基础层模块信息表,并无此硬件IP,则需要按照上述模块结构参数生成该硬件IP。如果目前星上分配给神经网络的内存空间还有余量,则将该硬件IP上注到星上并在内存空间中按顺序存放,同时在基础层模块信息表中增加新的模块ID,并将该硬件IP的相关信息存储在新ID对应的表格区域内;假如星上与神经网络相关的内存空间已满,则将该IP上注到星上后从该段内存空间的起始位置开始存放,覆盖原有的内容,并将被覆盖掉的软件APP或硬件IP的ID赋予该IP,并将该IP的相关信息存储在基础层模块信息表中。
示例2,假如部署当前神经网络模型需要一个实现Softmax层的软件APP,而通过查询基础层模块信息表,星上已有该软件APP,则无需重新上注,也无需更新基础层模块信息表。
除了上述基础层模块信息表外,神经网络模型基础层生成模块还会生成一个基础层模块唯一标识表,该表记录了当前次神经网络的部署所需的所有基础层相关应用程序APP和IP的标识、类型、功能、结构参数及否需要上注的信息,如下表5所示:
表5基础层模块唯一标识表
表5与虽与基础层模块信息表内容类似,但功能不同,基础层模块信息表记录了目前星上存储的所有与神经网络相关的应用程序APP或IP的相关信息,而基础层模块唯一标识表只是记录了本次待部署的目标神经网络模型所需的应用程序APP或IP的相关信息。基础层模块唯一标识表并不上注到星上,只是供神经网络模型资源需求分析模块读取并生成部署需求表。
另外,本申请的一些实施例对如何组织基础层模块以完成某个目标神经网络模型的部署、软件APP的插入和删除及硬件IP重配置,下面对这些问题进行详细介绍。
(1)基础层模块的组织
天基超算平台的每一个计算节点上都部署了一套基本的系统软件,这套基本的系统软件屏蔽了硬件平台相关的信息,用户只需编写软件APP和硬件IP,然后将它们以流水线的形式组织起来即可实现各种各样特定的功能。如图5所示,每一个软件APP或硬件IP都有一个唯一的标识,各APP和IP的连接关系通过一个路由信息表的形式组织,如下表6所示,路由信息表决定了数据的流向,当需要实现新的应用功能时,可将现有的APP或IP进行重新组织,生成新的路由信息表,实现新的功能;当现有的APP或IP无法支持新的功能需求时,在地面编写新的APP或IP进行上注,并上注新的路由信息表,实现新的功能需求。
表6路由信息表
(2)软件APP的插入与删除
在软件定义卫星发射之前,需要在天基超算平台上部署一套基础的神经网络基础层模块,比如上述提到的实现了卷积层、全连接层等功能的硬件IP及softmax APP等,每当需要在天基超算平台上部署目标神经网络模型时,首先需要考虑该目标神经网络的各种基础层模块是否已经部署在天基超算平台上,如果已经部署在天基超算平台上,则无需做过多操作,如果没有,则需要在地面编写该应用APP程序,并编译,然后上注到星上,并更新路由信息表。如图6所示,假如添加一个标识ID为⑦的软件应用程序APP,以实现新的目标神经网络模型在星上的部署,则更改新的路由信息表如下表7所示。
表7路由信息表变动一
(3)硬件IP重配置
FPGA对某模块功能进行重配置的前提是该模块与外部其他模块的数据接口保持不变,也就是只改变该模块的功能,不改变该模块的与其他模块的接口信号。
如果星上基础系统将某神经网络的部分计算任务分配到计算节点1,由此需要给计算节点1的某IP挂载点1分配一个标识为⑦的硬件IP,而该IP挂载点已有标识为①的硬件IP,此时则需要对标识为①的硬件IP进行重配置。如图7所示,如果想对标识为①的硬件IP重配置,需要保证该IP所有的对外接口即图中红线标注的部分是保持不变的,这是由天基超算平台的系统软件支持的,重配置硬件IP是对该IP的功能进行更新,不影响数据的流动方向,需更改路由信息表如下表8所示。
表8路由信息表变动二
6)神经网络模型编译模块
为了支持多种目标神经网络模型在软件定义卫星上的部署,本申请的解决方法是将神经网络模型的基础层模块部署在星上,如卷积层、池化层、非线性层等模块,然后根据目标神经网络模型的定义组合这些基础模块。神经网络模型编译模块的主要作用就是将神经网络模型的定义转化为映射在基础层模块上的系列指令,通过指令控制星上基础层模块的连接、交互和运行,以完成一个完整神经网络模型在星上的部署。
神经网络模型编译模块是工具链中最复杂的一部分,和很多其他工具均有交互。神经网络模型编译模块是通过映射策略将目标神经网络映射在星上已有的基础模块上,映射需要多方面的输入,首先从神经网络模型多节点任务分配模块中获取任务分配拓扑表,通过该任务分配拓扑表可知每个计算节点需要计算的层,然后依次考虑每个计算节点上的映射。至于单节点的映射,首先从神经网络模型解析模块中获取该节点需要计算的层的参数、并通过基础层模块唯一标识表获取需要部署在该节点上的基础层模块的相关信息,然后通过相应的映射策略将模型的层的定义转换为某节点适配的指令序列,该节点适配的指令序列可控制特定节点上已部署的基础层部件APP和IP的运行。当然神经网络模型编译模块除了生成各节点指令序列文件外,还会生成各节点指令解析及运算控制应用程序APP,指令解析及运算控制APP的主要作用是在星上解析上述指令序列,生成相应的控制信号以控制各种基础层模块的运行,以实现一个目标神经网络模型在星上的完整部署。
7)神经网络模型资源需求分析模块
神经网络模型资源需求分析模块对部署目标神经网络所需的软件APP及硬件IP资源需求进行分析,进而生成一个部署需求表,以供软件定义卫星基础系统读取并按照部署需求将这些APP或IP部署到合适的物理节点。神经网络模型资源需求分析模块,首先从任务分配拓扑表中获取各个节点之间的拓扑关系并记录在部署需求表中,然后从基础层模块唯一标识表读取本次部署所需的所有基础层部件APP或IP的唯一标识并记录,同时需要记录该APP或IP是否需要重新注入。由于标识的前20个数都是预留给总体控制及状态监测APP和各节点指令解析及运算控制APP,每次部署新的神经网络,这些控制类APP无法重复利用,需要全部重新上注,从而每次部署新的神经网络,需要为这些控制类APP分配ID。而基础层部件APP或IP的标识是不断循环迭代的,有些可重复利用模块可无需重新分配ID。除了记录各节点之间的拓扑关系及各APP及IP的ID外,神经网络模型资源需求分析模块会对所有的软件APP的CPU资源占有需求、存储需求及通讯带宽需求进行分析并记录,对所有的硬件IP的目标器件型号需求、计算资源需求、存储需求、通讯带宽需求进行分析并记录。
如图8所示,本申请的一些实施例提供一种面向软件定义卫星的神经网络模型部署的方法,应用于地面装置,所述方法包括:S101,生成上注文件,其中,所述上注文件包括执行任务分配所需的部署需求表、编译目标神经网络模型得到的各节点编译数据和所述目标神经网络模型所需的基础层数据,所述编译数据包括各节点指令序列文件、各节点指令解析及运算控制程序,所述基础层数据包括:神经网络基础层部件;S102,将所述上注文件上注至卫星,以使所述卫星根据所述上注文件完成所述目标神经网络模型的在轨部署运行。
在一些实施例中,所述上注文件还包括定点型参数文件,其中,所述定点型参数文件至少是通过对所述目标神经网络模型的权重系数根据量化位宽进行量化压缩得到的。
在一些实施例中,所述生成上注文件包括:对所述目标神经网络模型描述文件、训练所述目标神经网络模型所需的数据集以及训练结束后所述目标神经网络模型的浮点型参数文件根据所述量化位宽进行定点化处理得到所述定点型参数文件。
在一些实施例中,所述生成上注文件还包括:生成所述目标神经网络的神经网络模型各层参数;至少根据所述神经网络模型各层参数生成所述部署需求表、所述各节点指令序列文件、所述各节点指令解析及运算控制程序、所述神经网络基础层部件以及基础层模块唯一标识表。
在一些实施例中,所述至少根据所述神经网络模型各层参数生成所述部署需求表、所述各节点指令序列文件、所述各节点指令解析及运算控制程序、所述神经网络基础层部件以及基础层模块唯一标识表,包括:根据所述神经网络模型各层参数和所述量化位宽生成所述部署需求表、所述各节点指令序列文件以及所述各节点指令解析及运算控制程序。
在一些实施例中,所述生成上注文件还包括:生成任务分配拓扑表,其中,所述任务分配拓扑表用于记录所述目标神经网络模型对应的计算任务在所述卫星上包括的多个节点的任务分配结果;所述至少根据所述神经网络模型各层参数生成所述部署需求表、所述各节点指令序列文件、所述各节点指令解析及运算控制程序、所述神经网络基础层部件以及基础层模块唯一标识表,包括:根据所述神经网络模型各层参数、所述量化位宽和所述任务分配拓扑表,生成所述神经网络基础层部件以及所述基础层模块唯一标识表。
在一些实施例中,所述任务分配拓扑表是以完成所述目标神经网络的计算所消耗的时间为基准将计算任务分配到各个计算节点得到的。
本申请的一些实施例通过多个计算节点协同执行计算任务以满足神经网络模型在星上的计算时间需求,根据目的神经网络模型的计算时间需求将计算任务均衡地将分配到各个计算节点以充分利用多个节点的计算资源、存储资源。
在一些实施例中,所述任务分配拓扑表是通过如下步骤得到的:确定所述目标神经网络模型的计算量;以完成所述目标神经网络的计算所消耗的时间为基准,将所述计算量分配到一个节点或多个节点,并为每个节点确定硬件IP的等级。
本申请的一些实施例根据计算时间需求和计算量确定所需的节点以及各节点的资源配置情况。
在一些实施例中,所述计算量至少是通过对所述目标神经网络的权重系数压缩后得到的量化位宽确定的。
本申请的一些实施例依据量化处理后的量化位宽确定目标神经网络模型的实际计算量可以减少总的计算量。
在一些实施例中,所述硬件IP的等级是通过所述目标神经网络的部署时间需求、所述每个节点保留的硬件IP挂载点的数量及硬件资源确定的。
本申请的一些实施例通过限定IP等级的确定方法,进而为选择的用于执行计算任务的节点确定硬件资源需求。
在一些实施例中,所述生成上注文件,包括:生成所述目标神经网络包括的目标基础层模块,其中,所述目标基础层模块包括:卷积层、池化层、非线性化层、归一化层或全连接层;遍历基础层模块信息表,根据所述目标基础层模块确定需要上注的基础层软件,其中,所述基础层模块信息表用于记录所述卫星上目前可用的软件应用程序和硬件IP的相关信息,所以基础层模块信息表包括模块ID、模块类型、模块功能及模块结构参数;根据所述神经网络基础层部件和所述基础层模块信息表生成基础层模块唯一标识表,其中,所述基础层模块唯一标识表用于记录部署所述目标神经网络模型所需的所有基础层相关APP和IP的标识、类型、功能、结构参数及否需要上注的信息;至少根据所述基础层模块唯一标识表生成所述部署需求表、所述各节点指令序列文件和所述各节点指令解析及运算控制应用程序。
本申请的一些实施例提供了生成神经网络的基础层模块,包括卷积层、池化层、非线性化层、归一化层、全连接层、Softmax层等。每次需要部署新的神经网络时,首先遍历基础层模块信息表,如果新的神经网络所需的基础层软件APP和硬件IP已在基础层模块信息表中存在,则说明其已经存储在星上的内存空间中,则无需重新上注,如此可实现差异化上注。
在一些实施例中,所述生成上注文件还包括:根据所述需要上注的基础层软件,生成或更新路由信息表作为上注文件,其中,所述路由信息表用于表征数据在对应部署节点上的所述基础层应用程序和硬件IP之间的流向。
本申请的一些实施例提供了一种如何组织基础层模块以完成某个神经网络模型的部署、软件APP的插入和删除及硬件IP重配置。
在一些实施例中,所述生成上注文件,包括:将所述目标神经网络模型的定义转化为映射在所述目标基础层模块上的系列指令,得到所述各节点指令序列文件和所述各节点指令解析及运算控制应用程序,以通过所述系列指令控制在所述卫星上所述目标基础层模块的连接、交互和运行,完成所述目标神经网络模型在星上的部署。
本申请的一些实施例将神经网络模型的定义转化为映射在基础层模块上的系列指令,通过指令控制星上基础层模块的连接、交互和运行,以完成一个完整目标神经网络模型在星上的部署。
在一些实施例中,所述生成上注文件包括:对部署所述目标神经网络所需的软件应用程序及硬件IP资源需求进行分析,进而生成所述部署需求表,以供所述卫星读取并按照部署需求将所述软件应用程序或硬件IP部署到对应的节点。
在一些实施例中,所述部署需求表是根据总体控制及状态监测应用程序、任务分配拓扑表、所述各节点指令解析及运算控制应用程序、所述神经网络基础层部件以及所述基础层模块唯一标识表生成的。
在一些实施例中,所述各节点指令序列文件和所述各节点指令解析及运算控制应用程序是根据神经网络模型各层参数、所述量化位宽和所述基础层模块唯一标识表生成的。
在一些实施例中,所述神经网络基础层部件和所述基础层模块唯一标识表是根据任务分配拓扑表、神经网络模型各层参数所述量化位宽生成的。
本申请的一些实施例通过部署需求表记录目标神经网络模型所需的所有应用程序和硬件IP,以使卫星根据这些信息完成目标神经网络模型在卫星上各节点的动态部署。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (26)
1.一种面向软件定义卫星的神经网络模型部署的方法,应用于地面装置,其特征在于,所述方法包括:
生成上注文件,其中,所述上注文件包括执行任务分配所需的部署需求表、编译目标神经网络模型得到的各节点编译数据和所述目标神经网络模型所需的基础层数据,所述编译数据包括各节点指令序列文件、各节点指令解析及运算控制程序,所述基础层数据包括:神经网络基础层部件;
向卫星发送所述上注文件发送,以使所述卫星根据所述上注文件完成所述目标神经网络模型的在轨部署运行。
2.如权利要求1所述的方法,其特征在于,所述上注文件还包括定点型参数文件,其中,所述定点型参数文件至少是通过对所述目标神经网络模型的权重系数根据量化位宽进行量化压缩得到的。
3.如权利要求2所述的方法,其特征在于,
所述生成上注文件包括:对所述目标神经网络模型描述文件、训练所述目标神经网络模型所需的数据集以及训练结束后所述目标神经网络模型的浮点型参数文件根据所述量化位宽进行定点化处理得到所述定点型参数文件。
4.如权利要求2所述的方法,其特征在于,
所述生成上注文件还包括:
生成所述目标神经网络的神经网络模型各层参数;
至少根据所述神经网络模型各层参数生成所述部署需求表、所述各节点指令序列文件、所述各节点指令解析及运算控制程序、所述神经网络基础层部件以及基础层模块唯一标识表。
5.如权利要求4所述的方法,其特征在于,所述至少根据所述神经网络模型各层参数生成所述部署需求表、所述各节点指令序列文件、所述各节点指令解析及运算控制程序、所述神经网络基础层部件以及所述基础层模块唯一标识表,包括:
根据所述神经网络模型各层参数和所述量化位宽生成所述部署需求表、所述各节点指令序列文件以及所述各节点指令解析及运算控制程序。
6.如权利要求2所述的方法,其特征在于,
所述生成上注文件还包括:
生成任务分配拓扑表,其中,所述任务分配拓扑表用于记录所述目标神经网络模型对应的计算任务在所述卫星上包括的多个节点的任务分配结果;
所述至少根据所述神经网络模型各层参数生成所述部署需求表、所述各节点指令序列文件、所述各节点指令解析及运算控制程序、所述神经网络基础层部件以及基础层模块唯一标识表,包括:
根据所述神经网络模型各层参数、所述量化位宽和所述任务分配拓扑表,生成所述神经网络基础层部件以及所述基础层模块唯一标识表。
7.如权利要求6所述的方法,其特征在于,所述任务分配拓扑表是以完成所述目标神经网络的计算所消耗的时间为基准将计算任务分配到各个计算节点得到的。
8.如权利要求6所述的方法,其特征在于,所述任务分配拓扑表是通过如下步骤得到的:
确定所述目标神经网络的计算量;
以完成所述目标神经网络的计算所消耗的时间为基准,将所述计算量分配到一个节点或多个节点,并为每个节点确定硬件IP的等级。
9.如权利要求8所述的方法,其特征在于,所述计算量至少是通过对所述目标神经网络的权重系数压缩后得到的量化位宽确定的。
10.如权利要求8所述的方法,其特征在于,所述硬件IP的等级是通过应用时间需求、所述每个节点上硬件IP挂载点的数量及硬件资源确定的,其中,所述应用时间需求用于表征完成所述目标神经网络计算所消耗的时间。
11.如权利要求2所述的方法,其特征在于,
所述生成上注文件,包括:
生成所述目标神经网络包括的目标基础层模块,其中,所述目标基础层模块包括:卷积层、池化层、非线性化层、归一化层或全连接层等;
遍历基础层模块信息表,根据所述目标基础层模块确定需要上注的基础层软件,其中,所述基础层模块信息表用于记录所述卫星上目前可用的软件应用程序和硬件IP的相关信息,所以基础层模块信息表包括模块ID、模块类型、模块功能及模块结构参数;
根据所述神经网络基础层部件和所述基础层模块信息表生成基础层模块唯一标识表,其中,所述基础层模块唯一标识表用于记录部署所述目标神经网络模型所需的所有基础层相关APP和IP的标识、类型、功能、结构参数及否需要上注的信息;
至少根据所述基础层模块唯一标识表生成所述部署需求表、所述各节点指令序列文件和所述各节点指令解析及运算控制应用程序。
12.如权利要求11所述的方法,其特征在于,所述生成上注文件还包括:
根据所述需要上注的基础层软件,生成或更新路由信息表作为上注文件,其中,所述路由信息表用于表征数据在对应部署节点上的所述基础层应用程序和硬件IP之间的流向。
13.如权利要求11所述的方法,其特征在于,所述生成上注文件,包括:
将所述目标神经网络的定义转化为映射在所述目标基础层模块上的系列指令,得到所述各节点指令序列文件和所述各节点指令解析及运算控制应用程序,以通过所述系列指令控制在所述卫星上所述目标基础层模块的连接、交互和运行,完成所述目标神经网络模型在星上的部署。
14.如权利要求11所述的方法,其特征在于,所述生成上注文件包括:
对部署所述目标神经网络所需的软件应用程序及硬件IP资源需求进行分析,进而生成所述部署需求表,以供所述卫星读取并按照部署需求将所述软件应用程序或硬件IP部署到对应的节点。
15.如权利要求11所述的方法,其特征在于,所述部署需求表是根据总体控制及状态监测应用程序、任务分配拓扑表、所述各节点指令解析及运算控制应用程序、所述神经网络基础层部件以及所述基础层模块唯一标识表生成的。
16.如权利要求11所述的方法,其特征在于,所述各节点指令序列文件和所述各节点指令解析及运算控制应用程序是根据神经网络模型各层参数、所述量化位宽和所述基础层模块唯一标识表生成的。
17.如权利要求11所述的方法,其特征在于,所述神经网络基础层部件和所述基础层模块唯一标识表是根据任务分配拓扑表、神经网络模型各层参数及所述量化位宽生成的。
18.一种面向软件定义卫星的神经网络模型部署的装置,其特征在于,所述装置包括:
上注文件生成模块,被配置为生成上注文件,其中,所述上注文件包括执行任务分配所需的部署需求表、编译目标神经网络模型得到的各节点编译数据和所述目标神经网络模型所需的基础层数据,所述编译数据包括各节点指令序列文件、各节点指令解析及运算控制程序,所述基础层数据包括:神经网络基础层部件;
上注模块,被配置为将所述上注文件上注至卫星,以使所述卫星完成目标神经网络模型的在轨部署运行。
19.如权利要求18所述的装置,其特征在于,所述上注文件还包括定点型参数文件;
所述上注文件生成模块包括:
神经网络模型量化模块,被配置为对所述目标神经网络模型描述文件、训练所述目标神经网络模型所需的数据集以及训练结束后所述目标神经网络模型的浮点型参数文件根据量化位宽进行定点化处理得到所述定点型参数文件。
20.如权利要求19所述的装置,其特征在于,所述上注文件生成模块还包括:神经网络模型优化模块,被配置为对神经网络模型进行优化处理得到所述目标神经网络,其中,所述优化处理包括:参数剪枝、低秩分解、参数共享或知识蒸馏。
21.如权利要求19所述的装置,其特征在于,所述上注文件生成模块还包括:
神经网络模型多节点任务分配模块,被配置为根据应用时间需求、所述量化位宽和所述目标神经网络的神经网络模型各层参数生成任务分配拓扑表,其中,所述任务分配拓扑表用于记录所述目标神经网络对应的计算任务在所述卫星上包括的多个节点的任务分配结果,所述应用时间需求用于表征完成所述目标神经网络的计算所消耗的时间。
22.如权利要求21所述的装置,其特征在于,所述上注文件还包括总体控制及状态监测应用程序,其中,
所述神经网络模型多节点任务分配模块还被配置为根据所述应用时间需求、所述量化位宽和所述神经网络模型各层参数生成所述总体控制及状态监测应用程序,其中,所述总体控制及状态监测应用程序用于:控制所述卫星从星上公共数据存储区域读取指令序列、软件应用程序及比特流发送给需要部署所述目标神经网络的物理节点,同时生成控制和监测信号,用于控制所述部署所述目标神经网络的物理节点的运行,并实时检测部署所述目标神经网络的物理节点的运行状态。
23.如权利要求21所述的装置,其特征在于,所述上注文件生成模块还包括:神经网络模型编译模块,被配置为根据所述目标神经网络的神经网络模型各层参数、所述量化位宽、所述任务分配拓扑表和基础层模块唯一标识表生成所述各节点指令序列文件和所述各节点指令解析及运算控制应用程序。
24.如权利要求21或23所述的装置,其特征在于,所述上注文件生成模块还包括:
神经网络模型解析模块,被配置为解析所述目标神经网络得到所述神经网络模型各层参数。
25.如权利要求22所述的装置,其特征在于,所述上注文件生成模块还包括:
神经网络模型基础层生成模块,被配置为根据所述任务分配拓扑表、所述神经网络模型各层参数和所述定点型参数文件的量化位宽生成所述神经网络基础层部件以及基础层模块唯一标识表。
26.如权利要求25所述的装置,其特征在于,所述上注文件生成模块还包括:
神经网络模型资源需求分析模块,被配置为根据所述任务分配拓扑表、所述总体控制及状态监测应用程序、所述各节点指令序列文件、所述各节点指令解析及运算控制程序、所述神经网络基础层部件以及基础层模块唯一标识表生成所述部署需求表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110329912.3A CN113190345B (zh) | 2021-03-26 | 2021-03-26 | 一种面向软件定义卫星的神经网络模型部署的方法以及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110329912.3A CN113190345B (zh) | 2021-03-26 | 2021-03-26 | 一种面向软件定义卫星的神经网络模型部署的方法以及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113190345A true CN113190345A (zh) | 2021-07-30 |
CN113190345B CN113190345B (zh) | 2023-12-05 |
Family
ID=76974123
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110329912.3A Active CN113190345B (zh) | 2021-03-26 | 2021-03-26 | 一种面向软件定义卫星的神经网络模型部署的方法以及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113190345B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113900734A (zh) * | 2021-10-11 | 2022-01-07 | 北京百度网讯科技有限公司 | 一种应用程序文件配置方法、装置、设备及存储介质 |
CN116341633A (zh) * | 2023-05-29 | 2023-06-27 | 山东浪潮科学研究院有限公司 | 一种模型部署方法、装置、设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140337663A1 (en) * | 2013-05-08 | 2014-11-13 | Commvault Systems, Inc. | Information management cell with failover management capability |
CN108595182A (zh) * | 2018-04-02 | 2018-09-28 | 北京航空航天大学 | 人工智能程序员书写卫星推进系统三维演示源程序的方法 |
CN111427685A (zh) * | 2020-03-23 | 2020-07-17 | 中国人民解放军国防科技大学 | 一种基于任务需求的天基网络智能卫星开发系统及方法 |
US20200272899A1 (en) * | 2019-02-22 | 2020-08-27 | Ubotica Technologies Limited | Systems and Methods for Deploying and Updating Neural Networks at the Edge of a Network |
CN111624634A (zh) * | 2020-05-11 | 2020-09-04 | 中国科学院深圳先进技术研究院 | 基于深度卷积神经网络的卫星定位误差评估方法和系统 |
CN111860816A (zh) * | 2020-07-08 | 2020-10-30 | Oppo广东移动通信有限公司 | 神经网络模型的编译方法、装置、设备及存储介质 |
CN112347895A (zh) * | 2020-11-02 | 2021-02-09 | 北京观微科技有限公司 | 一种基于边界优化神经网络的舰船遥感目标检测方法 |
CN112463149A (zh) * | 2020-12-07 | 2021-03-09 | 中国科学院软件研究所 | 一种面向软件定义卫星的可复用代码库构建方法与装置 |
-
2021
- 2021-03-26 CN CN202110329912.3A patent/CN113190345B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140337663A1 (en) * | 2013-05-08 | 2014-11-13 | Commvault Systems, Inc. | Information management cell with failover management capability |
CN108595182A (zh) * | 2018-04-02 | 2018-09-28 | 北京航空航天大学 | 人工智能程序员书写卫星推进系统三维演示源程序的方法 |
US20200272899A1 (en) * | 2019-02-22 | 2020-08-27 | Ubotica Technologies Limited | Systems and Methods for Deploying and Updating Neural Networks at the Edge of a Network |
CN111427685A (zh) * | 2020-03-23 | 2020-07-17 | 中国人民解放军国防科技大学 | 一种基于任务需求的天基网络智能卫星开发系统及方法 |
CN111624634A (zh) * | 2020-05-11 | 2020-09-04 | 中国科学院深圳先进技术研究院 | 基于深度卷积神经网络的卫星定位误差评估方法和系统 |
CN111860816A (zh) * | 2020-07-08 | 2020-10-30 | Oppo广东移动通信有限公司 | 神经网络模型的编译方法、装置、设备及存储介质 |
CN112347895A (zh) * | 2020-11-02 | 2021-02-09 | 北京观微科技有限公司 | 一种基于边界优化神经网络的舰船遥感目标检测方法 |
CN112463149A (zh) * | 2020-12-07 | 2021-03-09 | 中国科学院软件研究所 | 一种面向软件定义卫星的可复用代码库构建方法与装置 |
Non-Patent Citations (5)
Title |
---|
《HTTPS://KNS.CNKI.NET/KCMS/DETAIL/51.1196.TP.20201227.1707.003.HTML》: "遥感视频实时云检测的FPGA高效实现方法", 《HTTPS://KNS.CNKI.NET/KCMS/DETAIL/51.1196.TP.20201227.1707.003.HTML》, pages 1 - 8 * |
ROBERTO CALVO-PALOMINO等: "Short: LSTM-based GNSS Spoofing Detection Using Low-cost Spectrum Sensors", 《2020 IEEE 21ST INTERNATIONAL SYMPOSIUM ON \"A WORLD OF WIRELESS, MOBILE AND MULTIMEDIA NETWORKS\" (WOWMOM)》, pages 273 - 276 * |
许轲等: "基于深度强化学习的软件定义卫星姿态控制算法", 《北京航空航天大学学报》, vol. 44, no. 12, pages 2651 - 2659 * |
赵军锁等: "发展软件定义卫星的总体思路与技术实践", 《卫星与网络》, pages 44 - 49 * |
软件定义卫星项目组: "软件定义卫星——商业航天发展的助推器", 《卫星与网络》, pages 36 - 38 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113900734A (zh) * | 2021-10-11 | 2022-01-07 | 北京百度网讯科技有限公司 | 一种应用程序文件配置方法、装置、设备及存储介质 |
CN113900734B (zh) * | 2021-10-11 | 2023-09-22 | 北京百度网讯科技有限公司 | 一种应用程序文件配置方法、装置、设备及存储介质 |
CN116341633A (zh) * | 2023-05-29 | 2023-06-27 | 山东浪潮科学研究院有限公司 | 一种模型部署方法、装置、设备及存储介质 |
CN116341633B (zh) * | 2023-05-29 | 2023-09-01 | 山东浪潮科学研究院有限公司 | 一种模型部署方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113190345B (zh) | 2023-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7418511B2 (ja) | 情報処理装置及び情報処理方法 | |
CN110378468B (zh) | 一种基于结构化剪枝和低比特量化的神经网络加速器 | |
Su et al. | Redundancy-reduced mobilenet acceleration on reconfigurable logic for imagenet classification | |
US20220012575A1 (en) | Methods and apparatus for localized processing within multicore neural networks | |
Jonsson et al. | Recursive blocked algorithms for solving triangular systems—Part I: One-sided and coupled Sylvester-type matrix equations | |
CN107239829A (zh) | 一种优化人工神经网络的方法 | |
CN113190345B (zh) | 一种面向软件定义卫星的神经网络模型部署的方法以及装置 | |
CN1853164B (zh) | 用于开发dsp编译器构件块的组合方法 | |
US20210350230A1 (en) | Data dividing method and processor for convolution operation | |
Yang et al. | S 2 Engine: A novel systolic architecture for sparse convolutional neural networks | |
CN112183735A (zh) | 操作数据的生成方法、装置及相关产品 | |
KR102002732B1 (ko) | 앙상블 모델을 이용한 심층 신경망 기반 데이터 처리 방법 및 장치 | |
CN114626516A (zh) | 一种基于对数块浮点量化的神经网络加速系统 | |
CN113158599A (zh) | 基于量子信息学的芯片和芯片化eda装置 | |
Diamantopoulos et al. | A system-level transprecision FPGA accelerator for BLSTM using on-chip memory reshaping | |
CN116680063A (zh) | 任务调度方法、装置、计算系统、电子设备和存储介质 | |
CN105335135A (zh) | 数据处理方法和中心节点 | |
CN116560968A (zh) | 一种基于机器学习的仿真计算时间预测方法、系统及设备 | |
US11886347B2 (en) | Large-scale data processing computer architecture | |
Wirthlin | Improving functional density through run-time circuit reconfiguration | |
Jamali Golzar et al. | DGCNN on FPGA: acceleration of the point cloud classifier using FPGAS | |
KR101378348B1 (ko) | 프라이빗 클라우드 인프라 기반 하둡 클러스터의 기본 프로토타입 | |
CN114036769B (zh) | 面向航电系统物理架构的功能部署方案生成方法及装置 | |
CN115309502A (zh) | 一种容器调度方法及装置 | |
Misra et al. | HLS-based acceleration framework for deep convolutional neural networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |