CN110399211B - 机器学习的分配系统、方法及装置、计算机设备 - Google Patents

机器学习的分配系统、方法及装置、计算机设备 Download PDF

Info

Publication number
CN110399211B
CN110399211B CN201810372801.9A CN201810372801A CN110399211B CN 110399211 B CN110399211 B CN 110399211B CN 201810372801 A CN201810372801 A CN 201810372801A CN 110399211 B CN110399211 B CN 110399211B
Authority
CN
China
Prior art keywords
terminal
cloud
server
module
control instruction
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.)
Active
Application number
CN201810372801.9A
Other languages
English (en)
Other versions
CN110399211A (zh
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cambricon Technologies Corp Ltd
Original Assignee
Cambricon Technologies Corp Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN201810372801.9A priority Critical patent/CN110399211B/zh
Priority to EP19793238.7A priority patent/EP3754503A4/en
Priority to PCT/CN2019/084101 priority patent/WO2019206184A1/zh
Publication of CN110399211A publication Critical patent/CN110399211A/zh
Priority to US16/997,697 priority patent/US11663491B2/en
Application granted granted Critical
Publication of CN110399211B publication Critical patent/CN110399211B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/505Allocation 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 the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5019Workload prediction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • Feedback Control In General (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明涉及一种机器学习的分配系统,包括:终端服务器和云端服务器。终端服务器用于获取需求信息,根据需求信息生成控制指令,控制指令包括终端控制指令和云端控制指令,并对终端控制指令进行解析以得到终端控制信号,以及根据终端控制信号计算每个阶段的计算机器学习算法的终端任务量以得到终端运算结果;云端服务器用于对云端控制指令进行解析以得到云端控制信号,并根据云端控制信号计算每个阶段的计算机器学习算法的云端任务量以得到云端运算结果;终端运算结果与云端运算结果共同构成输出结果。充分利用了终端服务器与云端服务器的计算资源,加快了运算速度。本发明还公开了一种机器学习的分配方法及装置、计算机设备及计算机可读存储介质。

Description

机器学习的分配系统、方法及装置、计算机设备
技术领域
本发明涉及信息处理技术领域,特别是涉及一种机器学习的分配系统、方法及装置、计算机设备以及计算机可读存储介质。
背景技术
机器学习近些年来取得了重大突破,比如,在机器学习技术中,采用深度学习算法训练的神经网络模型在图像识别、语音处理、智能机器人等应用领域取得了令人瞩目的成果。深度神经网络通过建立模型来模拟人类大脑的神经连接结构,在处理图像、声音和文本等信号时,通过多个变换阶段分层对数据特征进行描述。然而,随着机器学习算法的复杂度不断提高,机器学习技术在实际应用过程中存在占用资源多、运算速度慢、能量消耗大等问题。
比如,在传统的机器学习算法的处理过程中,为了通用性的要求,往往需要占据很大的内存空间在终端来存储训练好的权重。
然而,采用上述方法会导致机器学习算法的处理时间长,处理效率低。
发明内容
基于此,有必要针对上述机器学习算法的处理效率低的问题,提供一种处理效率高的机器学习的分配系统、方法及装置、计算机设备以及计算机可读存储介质。
一种机器学习的分配系统,包括:终端服务器和云端服务器;
所述终端服务器用于获取需求信息,根据所述需求信息生成控制指令,所述控制指令包括终端控制指令和云端控制指令,并对所述终端控制指令进行解析以得到终端控制信号,以及根据所述终端控制信号计算每个阶段的计算机器学习算法的终端任务量以得到终端运算结果;
所述云端服务器用于对所述云端控制指令进行解析以得到云端控制信号,并根据所述云端控制信号计算每个阶段的计算机器学习算法的云端任务量以得到云端运算结果;
所述终端运算结果与所述云端运算结果共同构成输出结果。
在其中一个实施例中,所述终端服务器执行根据所述终端控制信号计算每个阶段的计算机器学习算法的终端任务量以得到终端运算结果的步骤时,具体用于:根据所述终端控制信号计算每一层神经网络的终端任务量以得到终端运算结果;以及
所述云端服务器执行根据所述云端控制信号计算每个阶段的计算机器学习算法的云端任务量以得到云端运算结果的步骤时,具体用于:根据所述云端控制信号计算每一层神经网络的云端任务量以得到云端运算结果。
在其中一个实施例中,所述终端服务器包括终端控制模块、终端运算模块和终端通信模块;所述终端控制模块分别与所述终端运算模块和所述终端通信模块连接;
其中,所述终端控制模块用于获取需求信息,根据所述需求信息生成控制指令,以及对所述控制指令进行解析以得到终端控制信号,所述控制指令包括终端控制指令和云端控制指令;所述终端运算模块用于根据所述终端控制信号计算每一层神经网络的终端任务量以得到终端运算结果。
在其中一个实施例中,所述云端服务器包括云端控制模块、云端运算模块和云端通信模块;所述云端控制模块分别与所述云端运算模块和所述云端通信模块连接;
其中,所述云端控制模块用于对所述云端控制指令进行解析以得到云端控制信号;所述云端运算模块用于根据所述云端控制信号计算每一层神经网络的云端任务量以得到云端运算结果;
所述云端通信模块与所述终端通信模块通信连接,用于在云端服务器与终端服务器之间进行数据交互。
在其中一个实施例中,所述终端服务器还包括终端存储模块;所述终端存储模块分别与所述终端控制模块、所述终端运算模块连接,用于接收终端的输入数据并进行终端数据的存储。
在其中一个实施例中,所述终端控制模块包括终端指令生成单元和终端指令解析单元;
所述终端指令生成单元与所述终端指令解析单元连接,所述终端指令生成单元和所述终端指令解析单元分别与所述终端运算模块、所述终端存储模块和所述终端通信模块连接;
所述终端指令生成单元用于根据所述云端服务器的运算能力和所述终端服务器的运算能力的比例分别生成相应的所述云端控制指令和所述终端控制指令。
在其中一个实施例中,所述终端运算模块与所述终端通信模块连接,且所述终端存储模块与所述终端通信模块连接。
在其中一个实施例中,所述云端服务器还包括云端存储模块;所述云端存储模块分别与所述云端控制模块、所述云端运算模块连接,用于接收云端的输入数据并进行云端数据的存储。
在其中一个实施例中,所述云端控制模块包括云端指令解析单元;所述云端指令解析单元分别与所述云端运算模块、所述云端存储模块和所述云端通信模块连接。
在其中一个实施例中,所述云端运算模块与所述云端通信模块连接,且所述云端存储模块与所述云端通信模块连接。
一种机器学习的分配方法,包括:
获取每个阶段的计算机器学习算法的控制指令,所述每个阶段的计算机器学习算法的控制指令包括云端控制指令和终端控制指令;
分别对所述云端控制指令和所述终端控制指令进行解析,根据所述云端控制指令获得云端控制信号,以及根据所述终端控制指令获得终端控制信号;
根据所述云端控制信号提取云端待处理数据,以及根据所述终端控制信号提取终端待处理数据;
对所述云端待处理数据以及所述终端待处理数据进行并行整合运算,得到输出结果。
在其中一个实施例中,所述获取每个阶段的计算机器学习算法的控制指令,所述每个阶段的计算机器学习算法的控制指令包括云端控制指令和终端控制指令的步骤包括:
获取每一层神经网络的控制指令,所述每一层神经网络的控制指令包括云端控制指令和终端控制指令。
在其中一个实施例中,所述获取每一层神经网络的控制指令的步骤包括:
获取云端服务器的运算能力与终端服务器的运算能力;
根据所述云端服务器的运算能力生成云端控制指令;
根据所述终端服务器的运算能力生成终端控制指令。
在其中一个实施例中,所述获取云端服务器的运算能力与终端服务器的运算能力的步骤之后包括:
计算所述云端服务器的运算能力与所述终端服务器的运算能力的比例;
根据所述比例生成相应的云端控制指令和终端控制指令。
在其中一个实施例中,所述分别对所述云端控制指令和所述终端控制指令进行解析,根据所述云端控制指令获得云端控制信号,以及根据所述终端控制指令获得终端控制信号包括:
利用云端服务器对所述云端控制指令进行解析,获得云端控制信号;
根据所述云端控制信号提取相对应的云端训练数据或者云端测试数据。
在其中一个实施例中,所述分别对所述云端控制指令和所述终端控制指令进行解析,根据所述云端控制指令获得云端控制信号,以及根据所述终端控制指令获得终端控制信号还包括:
利用终端服务器对所述终端控制指令进行解析,获得终端控制信号;
根据所述终端控制信号提取相对应的终端训练数据或者终端测试数据。
在其中一个实施例中,对所述云端待处理数据以及所述终端待处理数据进行并行整合运算,得到输出结果包括:
利用云端服务器并根据所述云端训练数据或者云端测试数据,计算每一层神经网络的云端任务量以得到云端运算结果。
在其中一个实施例中,对所述云端待处理数据以及所述终端待处理数据进行并行整合运算,得到输出结果还包括:
利用终端服务器并根据所述终端训练数据或者终端测试数据,计算每一层神经网络的终端任务量以得到终端运算结果;
将所述云端运算结果与所述终端运算结果进行并行整合,得到输出结果。
一种机器学习的分配装置,所述分配装置包括:
指令获取模块,用于获取每个阶段的计算机器学习算法的控制指令,所述每个阶段的计算机器学习算法的控制指令包括云端控制指令和终端控制指令;
指令解析模块,用于分别对所述云端控制指令和所述终端控制指令进行解析,根据所述云端控制指令获得云端控制信号,以及根据所述终端控制指令获得终端控制信号;
数据提取模块,用于根据所述云端控制信号提取云端待处理数据,以及根据所述终端控制信号提取终端待处理数据;
并行运算模块,用于对所述云端待处理数据以及所述终端待处理数据进行并行整合运算,得到输出结果。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法的步骤。
上述机器学习的分配系统、方法及装置、计算机设备以及计算机可读存储介质,采用云端服务器和终端服务器并行使用的方式,通过在终端服务器中生成可在终端服务器控制的终端控制指令以及可在云端服务器控制的云端控制指令,每个阶段的计算机器学习算法将终端服务器的运算结果与云端服务器的运算结果结合,以构成最终的输出结果,充分利用了终端服务器与云端服务器两部分的计算资源,使得运算可以在云端服务器与终端服务器设备上共同进行,极大地缩减了运算时间,加快了运算速度和效率。
附图说明
图1为一实施例的机器学习的分配系统的结构示意图;
图2为另一实施例的机器学习的分配系统的结构示意图;
图3为另一实施例的机器学习的分配系统的结构示意图;
图4为一实施例的卷积神经网络的运算分配方式结构图;
图5为一实施例的运算-存储-通信工作模式图;
图6a为一实施例的运算单元的结构示意图;
图6b为一实施例的主处理电路的结构示意图;
图6c为一实施例的运算单元的数据分发示意图;
图6d为一实施例的运算单元的数据回传示意图;
图7为一实施例的机器学习的分配方法的流程图;
图8为一个实施例中计算机设备的内部结构图。
具体实施方式
为了便于理解本发明,下面将参照相关附图对用于机器学习的分配系统、方法及装置、计算机设备以及计算机可读存储介质进行更全面的描述。附图中给出了用于机器学习的分配系统、方法及装置、计算机设备以及计算机可读存储介质的首选实施例。但是,用于机器学习的分配系统、方法及装置、计算机设备以及计算机可读存储介质可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对用于机器学习的分配系统、方法及装置、计算机设备以及计算机可读存储介质的公开内容更加透彻全面。
在一个实施例中,提供了一种机器学习的分配系统,该分配系统包括:云端服务器10和终端服务器20。终端服务器20用于获取需求信息,根据需求信息生成控制指令,控制指令包括终端控制指令和云端控制指令,并对终端控制指令进行解析以得到终端控制信号,以及根据终端控制信号计算每个阶段的计算机器学习算法的终端任务量以得到终端运算结果。云端服务器10用于接收云端控制指令并对云端控制指令进行解析以得到云端控制信号,以及根据云端控制信号计算每个阶段的计算机器学习算法的云端任务量以得到云端运算结果。最终,终端运算结果与云端运算结果共同构成输出结果。
具体地,机器学习算法包括但不限于神经网络算法和深度学习算法。机器学习算法具有明显的逐阶段特征,比如每一层神经网络的运算、聚类算法的每次迭代等等。进一步地,划分机器学习算法为多个阶段的算法。在一个实施例中,机器学习算法为多层神经网络算法,多个阶段包括多个层。在另一个实施例中,机器学习算法为聚类算法,多个阶段为多次迭代。在每一阶段的计算中都可以通过云端服务器与终端服务器的并行计算实现加速。
上述机器学习的分配系统、方法及装置、计算机设备以及计算机可读存储介质,采用云端服务器和终端服务器并行使用的方式,通过在终端服务器中生成可在终端服务器控制的终端控制指令以及可在云端服务器控制的云端控制指令,每个阶段的计算机器学习算法将终端服务器的运算结果与云端服务器的运算结果结合,以构成最终的输出结果,充分利用了终端服务器与云端服务器两部分的计算资源,使得对机器学习的分配可以在云端服务器与终端服务器设备上共同进行,极大地缩减了运算时间,加快了运算速度和效率。
进一步地,在其中一个实施例中,提供了一种机器学习的分配系统,该分配系统包括:云端服务器10和终端服务器20。终端服务器20用于获取需求信息,根据需求信息生成控制指令,控制指令包括终端控制指令和云端控制指令,并对终端控制指令进行解析以得到终端控制信号,以及根据终端控制信号计算每一层神经网络的终端任务量以得到终端运算结果。云端服务器10用于接收云端控制指令并对云端控制指令进行解析以得到云端控制信号,以及根据云端控制信号计算每一层神经网络的云端任务量以得到云端运算结果。最终,终端运算结果与云端运算结果共同构成输出结果。
上述机器学习的分配系统,采用云端服务器和终端服务器并行使用的方式,通过在终端服务器中生成可在终端服务器控制的终端控制指令以及可在云端服务器控制的云端控制指令,每一层神经网络将终端服务器的运算结果与云端服务器运算结果结合,以构成最终的输出结果,充分利用了终端服务器与云端服务器两部分的计算资源,使得运算可以在云端服务器与终端服务器设备上共同进行,极大地缩减了运算时间,加快了运算速度和效率。
请参阅图1,在其中一个实施例中,终端服务器20包括终端控制模块210、终端运算模块220和终端通信模块230,终端控制模块210分别与终端运算模块220和终端通信模块230连接。其中,终端控制模块210用于获取需求信息,根据需求信息生成控制指令,以及对控制指令进行解析以得到终端控制信号,控制指令包括终端控制指令和云端控制指令,需要清楚,终端控制模块210对终端控制指令进行解析以得到终端控制信号。终端运算模块220用于根据终端控制信号计算每一层神经网络的终端任务量以得到终端运算结果。
具体地,用户根据自身的实际需求通过终端设备输入相应的需求信息,该终端设备包括含有控制功能的输入获取单元,输入获取单元可由用户来选择,比如可以是APP,也可以是其它程序的API接口等。用户输入的需求信息主要由三方面决定,一方面是功能需求信息,一方面是准确度需求信息,另一方面是内存需求信息。
终端控制模块210用于获取用户输入的需求信息,并根据需求信息生成控制指令。进一步地,终端控制模块210基于每一层神经网络的规模并根据云端服务器10与终端服务器20运算能力的大小生成相对应的控制指令。需要说明,包含控制指令的指令集预先存储于云端服务器10与终端服务器20中,终端控制模块210会根据输入的需求信息分别生成用于云端服务器10的云端控制指令和用于终端服务器20的终端控制指令。
进一步地,终端控制模块210还用于对终端控制指令进行解析,得到终端控制信号,终端控制模块210发送终端控制信号至终端运算模块220与终端通信模块230。终端运算模块220接收相应的终端控制信号,根据该终端控制信号计算每一层神经网络相应的终端任务量并得到终端运算结果。
在其中一个实施例中,云端服务器10包括云端控制模块110、云端运算模块120和云端通信模块130,云端控制模块110分别与云端运算模块120和云端通信模块130连接。其中,云端控制模块110用于对云端控制指令进行解析以得到云端控制信号;云端运算模块120用于根据云端控制信号计算每一层神经网络的云端任务量以得到云端运算结果。云端通信模块130与终端通信模块230通信连接,用于在云端服务器10与终端服务器20之间进行数据交互。
具体地,终端控制模块210将生成的云端控制指令通过终端通信模块230发送至云端服务器10。具体地,在云端服务器10中,云端通信模块130接收云端控制指令并发送至云端控制模块110,云端控制模块110对云端控制指令进行解析,得到云端控制信号并发送至云端运算模块120与云端通信模块130。云端运算模块120接收相应的云端控制信号,根据该云端控制信号计算每一层神经网络相应的云端任务量并得到云端运算结果。
需要说明,终端任务量与云端任务量共同构成每一层神经网络的总运算任务量。另外,运算任务也可能是神经网络一部分层的任务(比如只运算卷积层的任务),也可以是神经网络全部层的任务或者某些运算步骤。
进一步地,在云端服务器10与终端服务器20分别进行运算的过程中,同时伴随着云端服务器10与终端服务器20之间的数据通信。终端通信模块230根据相应的终端控制信号发送数据给云端通信模块130;反过来,云端通信模块130也根据相应的云端控制信号发送数据给终端通信模块230。当全部运算完成后,将最终的终端运算结果与最终的云端运算结果整合,构成最终的输出结果发送至用户的终端设备上。需要说明,终端通信模块与云端通信模块之间通过通讯协议分别在终端服务器和云端服务器之间进行数据传输。
上述机器学习的分配系统,采用云端服务器和终端服务器并行使用的方式,其中,终端服务器包括终端控制模块、终端运算模块和终端通信模块;云端服务器包括云端控制模块、云端运算模块和云端通信模块。通过在终端服务器中生成可在终端服务器控制的终端控制指令以及可在云端服务器控制的云端控制指令,从而基于终端控制指令和云端控制指令分别在终端服务器和云端服务器中分别对每一层神经网络的任务量进行并行整合运算,最终将终端服务器的运算结果与云端服务器运算结果结合,以构成最终的输出结果。该机器学习的分配系统实现了终端服务器与云端服务器协同且互补的完成整个神经网络的运算过程,充分利用了终端服务器与云端服务器两部分的计算资源,使得运算可以在云端服务器与终端服务器设备上共同进行,极大地缩减了运算时间,加快了运算速度和效率。
请一并参阅图2和图3,在其中一个实施例中,终端控制模块210包括终端指令生成单元210a和终端指令解析单元210b。终端指令生成单元210a与终端指令解析单元210b连接,终端指令生成单元210a和终端指令解析单元210b分别与终端运算模块220、终端存储模块240和终端通信模块230连接,终端指令生成单元210a用于根据云端服务器10的运算能力与终端服务器20的运算能力的比例分别生成相应的云端控制指令和终端控制指令。
具体地,终端指令生成单元210a用于获取用户输入的需求信息,根据需求信息进行判断,以确定所需要的神经网络模型,并生成相对应的终端控制指令和云端控制指令。其中,终端控制指令和云端控制指令中的控制指令均可分别包括运算分配指令、访存指令和数据通讯指令。终端控制指令用于在终端服务器20中进行控制,云端控制指令通过终端通信模块230发送至云端通信模块130中,再由云端通信模块130发送至云端控制模块110以在云端服务器10中进行控制。终端指令解析单元210b用于对终端控制指令进行解析以得到终端控制信号,以及根据终端控制信号使终端运算模块220、终端存储模块240以及终端通信模块230按照终端控制指令运行。
进一步地,在终端指令生成单元210a生成控制指令的过程中,运算分配方案使用的分配方式可以是:根据每一层神经网络的规模,让云端服务器10和终端服务器20并行计算每一层神经网络的运算任务,且根据云端服务器10的运算能力和终端服务器20的运算能力的大小将每一层神经网络需要的运算任务进行加权分配,进而云端运算模块与终端运算模块根据分配好的运算任务共同完成每一层神经网络的运算任务。通过根据云端服务器与终端服务器运算能力的大小对每一层神经网络的运算任务进行分配,使得各服务器的运算能力与每一层神经网络的运算任务合理、准确地对应起来,进一步加速了对每一层神经网络的运算任务的运算效率。
可选地,请一并参阅图4,以经典卷积神经网络结构为例来进一步说明上述运算分配方式。比如以LeNet-5经典卷积神经网络为例,在LeNet-5卷积神经网络中,对于卷积层而言,通过使用不同的卷积核(滤波器)对图片分别进行滤波,以进行模板运算,每个模板对输入图片滑动后可得到一个特征图。由于各个滤波器之间的运算是相互独立的,各个滤波器之间不存在数据相关性,因此可以完全实现并行运算。假如卷积层的运算需要的滤波器数量为n,云端服务器10与终端服务器20的运算能力的比值为x:1,则只需将(n*x)/(x+1)个滤波器的运算任务放在云端服务器10,并将(n)/(x+1)个滤波器的运算任务放在终端服务器20,然后在云端服务器10与终端服务器20中对图片采用并行运算的方式,即可获得原定的n个特征图。
再如,对于池化层而言也可以进行上述类似的操作,根据云端服务器10与终端服务器20的运算能力的不同给云端服务器10和终端服务器20分配不同的模板。
又如,对于全连接层而言,由于全连接层是全匹配方式,所以假设传入全连接层的行数为n,云端服务器10与终端服务器20的运算能力的比例为x:1,将前(n*x)/(x+1)行放在云端服务器10中进行运算,将后(n)/(x+1)行放在终端服务器20中进行运算,最后将云端服务器10与终端服务器20的运算结果汇总输出。另外,也可以将前(n)/(x+1)行放在终端服务器20中进行运算,将后(n*x)/(x+1)行放在云端服务器10中进行运算,只要终端服务器20与云端服务器10的运算能力满足可执行的要求即可。
访存指令是在运算分配的基础上的内存管理指令,用于控制终端存储模块240或云端存储模块140进行数据存储。数据通讯指令是对云端服务器10和终端服务器20的数据交互,用于控制终端通信模块与云端通信模块之间进行数据交互。
在其中一个实施例中,云端控制模块110包括云端指令解析单元110a,云端指令解析单元110a分别与云端运算模块120、云端存储模块140和云端通信模块130连接。
具体地,在云端服务器10中,云端指令解析单元110a用于接收云端控制指令,并对云端控制指令进行解析,获得云端控制信号,以及根据云端控制信号使云端运算模块120、云端存储模块140以及云端通信模块130按照云端控制指令运行,需要清楚的是,云端运算模块120、云端存储模块140以及云端通信模块130的运行原理与上述终端运算模块120、终端存储模块240以及终端通信模块130的运行原理相同,在此不再赘述。云端指令解析单元110a通过解析云端控制指令,得到云端控制信号,并将云端控制信号发送给云端服务器10的其它部件,使得云端服务器10内可以有序地完成每一层神经网络的运算,极大地加速了每一层神经网络的运算速度。
在其中一个实施例中,终端服务器20还包括终端存储模,终端存储模块240分别与终端运算模块220、终端控制模块210连接,终端存储模块240用于接收终端的输入数据并进行终端数据的存储。
具体地,终端存储模块240可以根据终端指令生成单元210a生成的终端控制指令确定终端的输入数据并进行数据存储以及对终端运算过程进行存储。可选地,存储的数据格式可以是浮点数,也可以是量化的定点数。
另外,终端存储模块240可以是sram,dram等等能够对数据进行存储的装置或存储空间,用于对终端的数据以及终端的指令进行存储。其中,数据包括但不限于输入神经元、输出神经元、权值、图像以及向量中的至少一种。
更进一步地,请参阅图5,在终端服务器20中,终端运算模块220和终端存储模块240是单独的两个部件,在终端运算模块220运算完成后,将终端运算结果先转存到终端存储模块240中,然后再由终端存储模块240和终端通信模块230将终端运算结果进行编码传输通信,而在编码传输通信的过程中,终端运算模块220已经开始下一轮的运算。采用这种工作模式,不会带来过多的等待延时。对于终端运算模块220而言,每轮的等效运算时间是实际运算时间+转存时间。由于转存时间比编码传输时间少很多,这样的方式可以充分调动终端运算模块220的运算能力。使终端运算模块220尽量满载工作。需要说明,可在终端指令生成单元210a内按照上述工作模式进行对应的终端控制指令的生成,可选地,该部分的实现可以完全由算法实现,使用终端服务器20本身的CPU设备即可。
在其中一个实施例中,云端服务器10还包括云端存储模块140,云端存储模块140分别与云端运算模块120、云端控制模块110连接,云端存储模块140用于接收云端的输入数据并进行云端数据的存储。
具体地,云端存储模块140可以根据云端控制指令确定云端的输入数据并进行数据存储以及对云端运算过程进行存储。可选地,存储的数据格式可以是浮点数,也可以是量化的定点数。
较佳地,云端存储模块140可以是sram,dram等等能够对数据进行存储的装置或存储空间,用于对云端的数据和云端的指令进行存储。其中,数据包括但不限于输入神经元、输出神经元、权值、图像以及向量中的至少一种。
更进一步地,在云端服务器10中,云端运算模块120和云端存储模块140是单独的两个部件,在云端运算模块120运算完成后,将云端运算结果先转存到云端存储模块140中,然后再由云端存储模块140和云端通信模块130将云端运算结果进行编码传输通信,而在编码传输通信的过程中,云端运算模块120已经开始下一轮的运算。采用这种工作模式,不会带来过多的等待延时。对于云端运算模块120而言,每轮的等效运算时间是实际运算时间+转存时间。由于转存时间比编码传输时间少很多,这样的方式可以充分调动云端运算模块120的运算能力。使云端运算模块120尽量满载工作。需要说明,可在终端指令生成单元210a内按照上述工作模式进行对应的云端控制指令的生成。
在一些实施例中,终端运算模块220与终端通信模块230连接,且终端存储模块240与终端通信模块230连接。
具体地,终端通信模块230可以对终端运算模块220和终端存储模块240的输出数据进行编码并发送至云端通信模块130。反过来,终端通信模块230也可以接收云端通信模块130发送的数据,并对该数据进行解码再次发送至终端运算模块220和终端存储模块240。通过采用这样的设计方式,可以减轻终端控制模块210的任务量,使得终端控制模块210可以更细化地完成控制指令的生成过程,保证终端服务器20与云端服务器10能够更准确地完成协同运算。
在另一些实施例中,云端运算模块120与云端通信模块130连接,云端存储模块140与云端通信模块130连接。
具体地,云端通信模块130可以对云端运算模块120和云端存储模块140的输出数据进行编码并发送至终端通信模块230。反过来,云端通信模块130也可以接收终端通信模块230发送的数据,并对该据进行解码再次发送至云端运算模块120和云端存储模块140。
进一步地,在一些实施例中,终端运算模块220可以是终端服务器20本身的运算部件,云端运算模块120可以是云端服务器10本身的运算部件。比如:运算部件可以是CPU,可以是GPU,也可以是神经网络芯片。优选地,终端运算模块220和云端运算模块120可以是人工神经网络芯片的数据处理单元中的运算单元,用于根据存储单元(终端存储模块240或云端存储模块140)中存储的控制指令对数据执行相应的运算。
在一个实施例中,运算单元可以包括多个运算电路,所述多个运算电路用于执行n个流水级的运算,n大于或者等于2。
该运算单元具体用于对数据执行第一流水级的运算得到第一结果,将第一结果输入到第二流水级执行第二流水级的运算得到第二结果,…,将所述第n-1结果输入到第n流水级执行第n流水级的运算得到第n结果,将所述第n结果输入到存储单元。n可以为大于等于3的整数。
具体的,该运算单元执行运算包括神经网络运算。
在一个实施例里,运算单元包括但不仅限于:第一部分的第一个或多个乘法器;第二部分的一个或者多个加法器(更具体地,第二个部分的加法器也可以组成加法树);第三部分的激活函数单元;和/或第四部分的向量处理单元。更具体地,向量处理单元可以处理向量运算和/或池化运算。第一部分将输入数据1(in1)和输入数据2(in2)相乘得到相乘之后的输出(out),过程为:out=in1*in2;第二部分将输入数据in1通过加法器相加得到输出数据(out)。更具体地,第二部分为加法树时,将输入数据in1通过加法树逐级相加得到输出数据(out),其中in1是一个长度为N的向量,N大于1,过程为:out=in1[1]+in1[2]+...+in1[N],和/或将输入数据(in1)通过加法树累加之后和输入数据(in2)相加得到输出数据(out),过程为:out=in1[1]+in1[2]+...+in1[N]+in2,或者将输入数据(in1)和输入数据(in2)相加得到输出数据(out),过程为:out=in1+in2;第三部分将输入数据(in)通过激活函数(active)运算得到激活输出数据(out),过程为:out=active(in),激活函数active可以是sigmoid、tanh、relu、softmax等,除了做激活操作,第三部分可以实现其它的非线性函数,可以将输入数据(in)通过运算(f)得到输出数据(out),过程为:out=f(in)。向量处理单元将输入数据(in)通过池化运算得到池化操作之后的输出数据(out),过程为out=pool(in),其中pool为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。
运算单元执行运算过程包括:第一部分是将输入数据1和输入数据2相乘,得到相乘之后的数据;和/或第二部分执行加法运算(更具体地,为加法树运算,用于将输入数据1通过加法树逐级相加),或者将输入数据1通过和输入数据2相加得到输出数据;和/或第三部分执行激活函数运算,对输入数据通过激活函数(active)运算得到输出数据;和/或第四部分执行池化运算,out=pool(in),其中pool为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。以上几个部分的运算可以自由选择一个或多个部分进行不同顺序的组合,从而实现各种不同功能的运算。运算单元相应地即组成了二级,三级,或者四级流水级架构。
作为一种可选的实施方式,请参阅图6a,运算电路包括:主处理电路、基础处理电路和分支处理电路。具体地,主处理电路与分支处理电路连接,分支处理电路连接至少一个基础处理电路。该分支处理电路,用于收发主处理电路或基础处理电路的数据。
请参阅图6b,主处理电路可以包括寄存器和/或片上缓存电路,该主处理电路还可以包括:控制电路、向量运算器电路、ALU(arithmetic and logic unit,算数逻辑电路)电路、累加器电路、DMA(Direct Memory Access,直接内存存取)电路等电路,当然在实际应用中,上述主处理电路还可以添加,转换电路(例如矩阵转置电路)、数据重排电路或激活电路等等其它的电路。
请参阅图6c,主处理电路还包括数据发送电路、数据接收电路或接口,该数据发送电路可以集成数据分发电路以及数据广播电路,当然在实际应用中,数据分发电路以及数据广播电路也可以分别设置;在实际应用中上述数据发送电路以及数据接收电路也可以集成在一起形成数据收发电路。对于广播数据,即需要发送给每个基础处理电路的数据。对于分发数据,即需要有选择地发送给部分基础处理电路的数据,具体的选择方式可以由主处理电路依据负载以及运算方式进行具体的确定。对于广播发送方式,即将广播数据以广播形式发送至每个基础处理电路。(在实际应用中,通过一次广播的方式将广播数据发送至每个基础处理电路,也可以通过多次广播的方式将广播数据发送至每个基础处理电路,本申请具体实施方式并不限制上述广播的次数),对于分发发送方式,即将分发数据有选择的发送给部分基础处理电路。
在实现分发数据时,主处理电路的控制电路向部分或者全部基础处理电路传输数据(该数据可以相同,也可以不同,具体地,如果采用分发的方式发送数据,各个接收数据的基础处理电路收到的数据可以不同,当然也可以有部分基础处理电路收到的数据相同。
具体地,广播数据时,主处理电路的控制电路向部分或者全部基础处理电路传输数据,各个接收数据的基础处理电路可以收到相同的数据,即广播数据可以包括所有基础处理电路均需要接收到的数据。分发数据可以包括:部分基础处理电路需要接收到的数据。主处理电路可以通过一次或多次广播将该广播数据发送给所有分支处理电路,分支处理电路将该广播数据转发给所有的基础处理电路。
可选地,上述主处理电路的向量运算器电路可以执行向量运算,包括但不限于:两个向量加减乘除,向量与常数加、减、乘、除运算,或者对向量中的每个元素执行任意运算。其中,连续的运算具体可以为,向量与常数加、减、乘、除运算、激活运算、累加运算等等。
每个基础处理电路可以包括基础寄存器和/或基础片上缓存电路;每个基础处理电路还可以包括:内积运算器电路、向量运算器电路、累加器电路等中一个或任意组合。上述内积运算器电路、向量运算器电路、累加器电路都可以是集成电路,上述内积运算器电路、向量运算器电路、累加器电路也可以为单独设置的电路。
分支处理电路和基础电路的连接结构可以是任意的,不局限在H型结构。可选地,主处理电路到基础电路是广播或分发的结构,基础电路到主处理电路是收集(gather)的结构。广播、分发和收集的定义如下:
主处理电路到基础电路的数据传递方式可以包括:主处理电路与多个分支处理电路分别相连,每个分支处理电路再与多个基础电路分别相连。
主处理电路与一个分支处理电路相连,该分支处理电路再连接一个分支处理电路,依次类推,串联多个分支处理电路,然后,每个分支处理电路再与多个基础电路分别相连。
主处理电路与多个分支处理电路分别相连,每个分支处理电路再串联多个基础电路。
主处理电路与一个分支处理电路相连,该分支处理电路再连接一个分支处理电路,依次类推,串联多个分支处理电路,然后,每个分支处理电路再串联多个基础电路。
分发数据时,主处理电路向部分或者全部基础电路传输数据,各个接收数据的基础电路收到的数据可以不同;
广播数据时,主处理电路向部分或者全部基础电路传输数据,各个接收数据的基础电路收到相同的数据。
收集数据时,部分或全部基础电路向主处理电路传输数据。需要说明的,芯片装置可以是一个单独的物理芯片,当然在实际应用中,该芯片装置也可以集成在其他的芯片内(例如CPU,GPU),本申请具体实施方式并不限制上述芯片装置的物理表现形式。
主处理电路接收到外部数据以后,将外部数据拆分以后,分发至多个分支处理电路,分支处理电路将拆分数据发送至基础处理电路。
请参阅图6d,基础处理电路将数据(例如内积运算结果)回传给分支处理电路,分支处理电路在回传至主处理电路。
对于输入数据,具体地可以为向量、矩阵、多维(三维或四维及以上)数据,对于输入数据的一个具体的值,可以称为该输入数据的一个元素。
本实施例还提供一种如图6a所示的运算单元的运算方法,该运算方法应用于神经网络运算中,具体地,运算单元可以用于对多层神经网络中一层或多层的输入数据与权值数据执行运算。
具体地,上述运算单元用于对训练的多层神经网络中一层或多层的输入数据与权值数据执行运算;
或运算单元用于对正向运算的多层神经网络中一层或多层的输入数据与权值数据执行运算。
上述运算包括但不限于:卷积运算、矩阵乘矩阵运算、矩阵乘向量运算、偏执运算、全连接运算、GEMM运算、GEMV运算、激活运算中的一种或任意组合。
GEMM运算是指:BLAS库中的矩阵-矩阵乘法的运算。该运算的通常表示形式为:C=alpha*op(S)*op(P)+beta*C,其中,S和P为输入的两个矩阵,C为输出矩阵,alpha和beta为标量,op代表对矩阵S或P的某种操作。此外,还会有一些辅助的整数作为参数来说明矩阵的S和P的宽高;
GEMV运算是指:BLAS库中的矩阵-向量乘法的运算。该运算的通常表示形式为:C=alpha*op(S)*P+beta*C,其中,S为输入矩阵,P为输入的向量,C为输出向量,alpha和beta为标量,op代表对矩阵S的某种操作。
请参阅图7,在其中一个实施例中,提供了一种机器学习的分配方法,包括:
S702,用于获取每个阶段的计算机器学习算法的控制指令,每个阶段的计算机器学习算法的控制指令包括云端控制指令和终端控制指令;
具体地,用户通过终端设备输入自身的需求,终端服务器获取用户输入的需求信息。用户输入的需求信息主要由三方面决定,一方面是功能需求信息,另一方面是准确度需求信息,再一方面是内存需求信息。
比如,对于功能需求信息而言,比如识别所有动物需要的数据集和只需要识别猫的数据集是存在包含关系的,如果用户只是需要某一垂直领域的功能需求的话,则只需将用户的需求通过控制部分的输入获取单元进行输入,并且根据自身内存大小以及所需精度的大小选择好对应的数据集。
进一步地,在终端服务器中,终端控制模块根据每个阶段的计算机器学习算法的规模,并根据终端服务器与云端服务器运算能力的大小将需要的运算任务进行分配,以此让终端服务器与云端服务器并行计算每个阶段的计算机器学习算法的任务量。在终端终端控制模块中,终端指令生成单元会根据用户的需求和选用的数据集,并基于终端服务器与云端服务器运算能力的大小生成相对应的终端控制指令与云端控制指令。
更进一步地,终端通信模块与云端通信模块将控制指令在云端服务器和终端服务器之间进行传输。具体地,在控制指令生成后,终端通信模块与云端通信模块之间通过通讯协议分别在终端服务器和云端服务器之间进行传输。
S704,分别对云端控制指令和终端控制指令进行解析,根据云端控制指令获得云端控制信号,以及根据终端控制指令获得终端控制信号。
具体地,终端控制模块将云端控制指令发送至云端服务器后,云端控制模块中的云端指令解析单元对发来的云端控制指令进行解析,获得云端控制信号,在终端控制模块中,终端指令解析单元对终端控制指令进行解析,获得终端控制信号。
S706,根据云端控制信号提取云端待处理数据,以及根据终端控制信号提取终端待处理数据。
具体地,待处理数据包括训练数据或测试数据的一种或多种。在云端服务器中,云端控制模块根据云端控制信号提取对应的云端训练数据或者云端测试数据,发送到云端运算模块的缓冲区,同时可以预分配一定的内存空间,用于实现运算中间过程的数据交互。在终端服务器中,终端控制模块根据终端控制信号提取对应的终端训练数据或者终端测试数据,发送到终端运算模块的缓冲区,同时可以预分配一定的内存空间,用于实现运算中间过程的数据交互。
S708,对云端待处理数据以及终端待处理数据进行并行整合运算,得到输出结果。
具体地,在云端服务器中,云端控制模块发送云端待处理数据至云端运算模块,云端运算模块根据传送的云端待处理数据计算每个阶段的计算机器学习算法的云端任务量。在终端服务器中,终端控制模块发送终端待处理数据至终端运算模块,终端运算模块根据传送的终端待处理数据计算每个阶段的计算机器学习算法的终端任务量。
在云端服务器与终端服务器进行运算的过程中,同时伴随着云端服务器与终端服务器之间的数据通信,终端通信模块根据相应的终端控制信号发送数据给云端通信模块,反过来,云端通信模块也根据相应的云端控制信号发送数据给终端通信模块,当全部运算完成后,将最终的终端运算结果与最终的云端运算结果结合,构成最终的输出结果发送至用户的终端设备上。
上述机器学习的分配方法,采用云端服务器和终端服务器并行使用的方式,通过在终端服务器中生成可在终端服务器控制的终端控制指令以及可在云端服务器控制的云端控制指令,每个阶段的计算机器学习算法将终端服务器的运算结果与云端服务器的运算结果结合,以构成最终的输出结果,充分利用了终端服务器与云端服务器两部分的计算资源,使得运算可以在云端服务器与终端服务器设备上共同进行,极大地缩减了运算时间,加快了运算速度和效率。
进一步地,在其中一个实施例中,S702包括:
S7020,获取每一层神经网络的控制指令,所述每一层神经网络的控制指令包括云端控制指令和终端控制指令。
具体地,机器学习算法包括但不限于神经网络算法和深度学习算法。机器学习算法具有明显的逐阶段特征,比如每一层神经网络的运算、聚类算法的每次迭代等等。进一步地,划分机器学习算法为多个阶段的算法。在一个实施例中,机器学习算法为多层神经网络算法,多个阶段包括多个层。在另一个实施例中,机器学习算法为聚类算法,多个阶段为多次迭代。在每一阶段的计算中都可以通过云端服务器与终端服务器的并行计算实现加速。
进一步地,在终端服务器中,终端控制模块根据每一层神经网络的规模,并根据终端服务器与云端服务器运算能力的大小将需要的运算任务进行分配,以此让终端服务器与云端服务器并行计算每一层神经网络的任务量。在终端终端控制模块中,终端指令生成单元会根据用户的需求和选用的数据集,并基于终端服务器与云端服务器运算能力的大小生成相对应的终端控制指令与云端控制指令。
另外,运算任务也可能是神经网络一部分层的任务(比如只运算卷积层的任务),也可以是神经网络全部层的任务或者某些运算步骤。
上述机器学习的分配方法,采用云端服务器和终端服务器并行使用的方式,通过在终端服务器中生成可在终端服务器控制的终端控制指令以及可在云端服务器控制的云端控制指令,每一层神经网络将终端服务器的运算结果与云端服务器的运算结果结合,以构成最终的输出结果,充分利用了终端服务器与云端服务器两部分的计算资源,使得运算可以在云端服务器与终端服务器设备上共同进行,极大地缩减了运算时间,加快了运算速度和效率。
在其中一个实施例中,S702包括:
S7022,获取云端服务器的运算能力与终端服务器的运算能力;
S7024,根据云端服务器的运算能力生成云端控制指令;
S7026,根据终端服务器的运算能力生成终端控制指令。
具体地,云端服务器与终端服务器的运算能力存在差异,终端控制模块根据云端服务器与终端服务器的运算能力的大小生成了对应的云端服务器的运算任务量与终端服务器的运算任务量。进一步地,运算分配方案使用的分配方式可以是:根据神经网络的每一层的规模,让云端服务器和终端服务器并行运算每一层神经网络的运算任务量,根据云端服务器的运算能力和终端服务器的运算能力的大小将需要的运算任务进行加权分配。这样,云端服务器与终端服务器协同且互补的完成整个神经网络的运算过程。
在其中一个实施例中,S7022之后包括:计算云端服务器的运算能力与终端服务器的运算能力的比例,根据比例生成云端控制指令和终端控制指令。
具体地,以经典卷积神经网络结构为例来进一步说明上述运算分配方式。具体可以是LeNet-5经典卷积神经网络。比如在LeNet-5卷积神经网络中,对于卷积层而言,通过使用不同的卷积核(滤波器)对全图分别进行滤波,以进行模板运算,每个模板对输入图滑动后可得到一个特征图。由于各个滤波器之间的运算是相互独立的,各个滤波器之间不存在数据相关性,因此可以完全实现并行运算。假如需要的滤波器数量为n,云端服务器与终端服务器的运算能力的比值为x:1,则只需将(n*x)/(x+1)个滤波器的运算任务放在云端服务器,并将(n)/(x+1)个滤波器的运算任务放在终端服务器,然后在云端服务器与终端服务器中对全图采用并行运算的方式,即可获得原定的n个特征图。
再如,对于池化层而言也可以进行上述类似的操作,根据云端服务器与终端服务器的运算能力的不同给云端服务器和终端服务器分配不同的模板。
又如,对于全连接层而言,由于全连接层是全匹配方式,所以假设传入全连接层的行数为n,云端服务器与终端服务器的运算能力的比例为x:1,将前(n*x)/(x+1)行放在云端服务器中进行运算,将后(n)/(x+1)行放在终端服务器中进行运算,最后将云端服务器与终端服务器的运算结果汇总输出。另外,也可以将前(n)/(x+1)行放在终端服务器中进行运算,将后(n*x)/(x+1)行放在云端服务器中进行运算,只要终端服务器与云端服务器的运算能力满足要求即可。
在其中一个实施例中,S704具体包括:
S7042,利用云端服务器对云端控制指令进行解析,获得云端控制信号;
S7044,根据云端控制信号提取相对应的云端训练数据或者云端测试数据。
具体地,云端指令解析单元用于对云端控制指令进行解析以得到云端控制信号,并根据云端控制信号提取相对应的云端训练数据或者云端测试数据。其中,数据包括图像、音频、文本等。图像包括静态图片、组成视频的图片、或视频等。音频包括人声音频、乐曲、噪声等。文本包括结构化文本、各种语言的文本字符等。
在其中一个实施例中,S704还包括:
S7046,利用终端服务器对终端控制指令进行解析,获得终端控制信号;
S7048,根据终端控制信号提取相对应的终端训练数据或者终端测试数据。
具体地,终端指令解析单元用于对终端控制指令进行解析以得到终端控制信号,并根据终端控制信号提取相对应的终端训练数据或者终端测试数据。
在一个实施例中,S706具体包括:
S7062,利用云端服务器根据云端训练数据或者云端测试数据执行对应的神经网络的运算,得到云端运算结果。
在另一个实施例中,S706具体包括:
S7064,利用终端服务器根据终端训练数据或者终端测试数据执行对应的神经网络的运算,得到终端运算结果。
S7066,将云端运算结果与终端运算结果结合,得到输出结果。
结合上述实施例具体说明,在云端服务器中,云端运算模块根据云端训练数据或者云端测试数据执行对应的神经网络的运算,得到云端运算结果。在终端服务器中,终端运算模块根据终端训练数据或者终端测试数据执行对应的神经网络的运算,得到终端运算结果。在云端服务器和终端服务器的运算过程中,通过云端通信模块和终端通信模块共同完成终端服务器和云端服务器之间的数据通信。云端服务器和终端服务器之间的运算部分和存储部分的数据通信分别通过云端控制模块和终端通信模块进行转发,最终由云端通信模块和终端通信模块共同进行交互。在运算完成后,将云端运算结果与终端运算结果结合,得到最终的输出结果。
在其中一个实施例中,S708之后包括:
S709,将输出结果发送至终端输出。
具体地,在全部运算完成后,得到最终的输出结果,并将最终的输出结果发送至终端并显示给用户。
应该理解的是,虽然图7的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图7中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在其中一个实施例中,提供了一种机器学习的分配装置,所述装置包括:
指令获取模块,用于获取每个阶段的计算机器学习算法的控制指令,所述每个阶段的计算机器学习算法的控制指令包括云端控制指令和终端控制指令;
指令解析模块,用于分别对云端控制指令和终端控制指令进行解析,根据云端控制指令获得云端控制信号,以及根据终端控制指令获得终端控制信号;
数据提取模块,用于根据云端控制信号提取云端待处理数据,以及根据终端控制信号提取终端待处理数据;
并行运算模块,用于对云端待处理数据以及终端待处理数据进行并行整合运算,得到输出结果。
上述机器学习的分配装置,采用云端服务器和终端服务器并行使用的方式,通过在终端服务器中生成可在终端服务器控制的终端控制指令以及可在云端服务器控制的云端控制指令,每个阶段的计算机器学习算法将终端服务器的运算结果与云端服务器的运算结果结合,以构成最终的输出结果,充分利用了终端服务器与云端服务器两部分的计算资源,使得运算可以在云端服务器与终端服务器设备上共同进行,极大地缩减了运算时间,加快了运算速度和效率。
请参阅图8,在其中一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行计算机程序时实现所述机器学习的分配方法的步骤,该步骤包括:用于获取每个阶段的计算机器学习算法的控制指令,所述每个阶段的计算机器学习算法的控制指令包括云端控制指令和终端控制指令;分别对所述云端控制指令和所述终端控制指令进行解析,根据所述云端控制指令获得云端控制信号,以及根据所述终端控制指令获得终端控制信号;根据所述云端控制信号提取云端待处理数据,以及根据所述终端控制信号提取终端待处理数据;对所述云端待处理数据以及所述终端待处理数据进行并行整合运算,得到输出结果。
上述计算机设备,采用云端服务器和终端服务器并行使用的方式,通过在终端服务器中生成可在终端服务器控制的终端控制指令以及可在云端服务器控制的云端控制指令,每个阶段的计算机器学习算法将终端服务器的运算结果与云端服务器的运算结果结合,以构成最终的输出结果,充分利用了终端服务器与云端服务器两部分的计算资源,使得运算可以在云端服务器与终端服务器设备上共同进行,极大地缩减了运算时间,加快了运算速度和效率。
在其中一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现所述的机器学习的分配方法的步骤,该步骤包括:获取每个阶段的计算机器学习算法的控制指令,所述每个阶段的计算机器学习算法的控制指令包括云端控制指令和终端控制指令;分别对所述云端控制指令和所述终端控制指令进行解析,根据所述云端控制指令获得云端控制信号,以及根据所述终端控制指令获得终端控制信号;根据所述云端控制信号提取云端待处理数据,以及根据所述终端控制信号提取终端待处理数据;对所述云端待处理数据以及所述终端待处理数据进行并行整合运算,得到输出结果。
上述计算机可读存储介质,采用云端服务器和终端服务器并行使用的方式,通过在终端服务器中生成可在终端服务器控制的终端控制指令以及可在云端服务器控制的云端控制指令,每个阶段的计算机器学习算法将终端服务器的运算结果与云端服务器的运算结果结合,以构成最终的输出结果,充分利用了终端服务器与云端服务器两部分的计算资源,使得运算可以在云端服务器与终端服务器设备上共同进行,极大地缩减了运算时间,加快了运算速度和效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (21)

1.一种机器学习的分配系统,其特征在于,用于对机器学习算法进行处理,所述机器学习算法具有逐阶段特征,且所述机器学习算法是被划分为多个阶段的机器学习算法的;
所述机器学习的分配系统包括:终端服务器和云端服务器;
所述终端服务器用于获取需求信息,根据所述需求信息生成控制指令,所述控制指令包括终端控制指令和云端控制指令,并对所述终端控制指令进行解析以得到终端控制信号,以及根据所述终端控制信号计算每个阶段的机器学习算法的终端任务量以得到终端运算结果;
所述云端服务器用于对所述云端控制指令进行解析以得到云端控制信号,并根据所述云端控制信号计算每个阶段的机器学习算法的云端任务量以得到云端运算结果,其中,所述每个阶段的机器学习算法的终端任务量和所述每个阶段的机器学习算法的云端任务量构成每个阶段的机器学习算法的总运算任务量,以使在每个阶段的机器学习算法的计算中都能够通过所述终端服务器和所述云端服务器进行并行计算;
所述终端运算结果与所述云端运算结果共同构成输出结果;
所述终端服务器包括终端运算模块、终端存储模块和终端通信模块;所述终端运算模块用于将所述终端运算结果转存至所述终端存储模块;所述终端存储模块用于存储所述终端运算结果,之后与所述终端通信模块将所述终端运算结果进行编码传输;在所述编码传输的过程中,所述终端运算模块用于进行下一轮终端任务量的运算。
2.根据权利要求1所述的机器学习的分配系统,其特征在于,所述终端服务器执行根据所述终端控制信号计算每个阶段的机器学习算法的终端任务量以得到终端运算结果的步骤时,具体用于:根据所述终端控制信号计算每一层神经网络的终端任务量以得到终端运算结果;以及
所述云端服务器执行根据所述云端控制信号计算每个阶段的机器学习算法的云端任务量以得到云端运算结果的步骤时,具体用于:根据所述云端控制信号计算每一层神经网络的云端任务量以得到云端运算结果;
其中,所述每一层神经网络的终端任务量和所述每一层神经网络的云端任务量构成每一层神经网络的总运算任务量。
3.根据权利要求2所述的机器学习的分配系统,其特征在于,所述终端服务器包括终端控制模块、终端运算模块和终端通信模块;所述终端控制模块分别与所述终端运算模块和所述终端通信模块连接;
其中,所述终端控制模块用于获取需求信息,根据所述需求信息生成控制指令,以及对所述控制指令进行解析以得到终端控制信号,所述控制指令包括终端控制指令和云端控制指令;所述终端运算模块用于根据所述终端控制信号计算每一层神经网络的终端任务量以得到终端运算结果。
4.根据权利要求3所述的机器学习的分配系统,其特征在于,所述云端服务器包括云端控制模块、云端运算模块和云端通信模块;所述云端控制模块分别与所述云端运算模块和所述云端通信模块连接;
其中,所述云端控制模块用于对所述云端控制指令进行解析以得到云端控制信号;所述云端运算模块用于根据所述云端控制信号计算每一层神经网络的云端任务量以得到云端运算结果;
所述云端通信模块与所述终端通信模块通信连接,用于在云端服务器与终端服务器之间进行数据交互。
5.根据权利要求3所述的机器学习的分配系统,其特征在于,所述终端服务器还包括终端存储模块;所述终端存储模块分别与所述终端控制模块、所述终端运算模块连接,用于接收终端的输入数据并进行终端数据的存储。
6.根据权利要求3-5任一项所述的机器学习的分配系统,其特征在于,所述终端控制模块包括终端指令生成单元和终端指令解析单元;
所述终端指令生成单元与所述终端指令解析单元连接,所述终端指令生成单元和所述终端指令解析单元分别与所述终端运算模块、所述终端存储模块和所述终端通信模块连接;
所述终端指令生成单元用于根据所述云端服务器的运算能力和所述终端服务器的运算能力的比例分别生成相应的所述云端控制指令和所述终端控制指令。
7.根据权利要求6所述的机器学习的分配系统,其特征在于,所述终端运算模块与所述终端通信模块连接,且所述终端存储模块与所述终端通信模块连接。
8.根据权利要求4所述的机器学习的分配系统,其特征在于,所述云端服务器还包括云端存储模块;所述云端存储模块分别与所述云端控制模块、所述云端运算模块连接,用于接收云端的输入数据并进行云端数据的存储。
9.根据权利要求8所述的机器学习的分配系统,其特征在于,所述云端控制模块包括云端指令解析单元;所述云端指令解析单元分别与所述云端运算模块、所述云端存储模块和所述云端通信模块连接。
10.根据权利要求8所述的机器学习的分配系统,其特征在于,所述云端运算模块与所述云端通信模块连接,且所述云端存储模块与所述云端通信模块连接。
11.一种机器学习的分配方法,其特征在于,用于对机器学习算法进行处理,所述机器学习算法具有逐阶段特征,且所述机器学习算法是被划分为多个阶段的机器学习算法的;
所述机器学习的分配方法包括:
获取每个阶段的机器学习算法的控制指令,所述每个阶段的机器学习算法的控制指令包括云端控制指令和终端控制指令;
分别对所述云端控制指令和所述终端控制指令进行解析,根据所述云端控制指令获得云端控制信号,以及根据所述终端控制指令获得终端控制信号;
根据所述云端控制信号提取云端待处理数据,以及根据所述终端控制信号提取终端待处理数据,其中,所述云端待处理数据对应的云端任务量和所述终端待处理数据对应的终端任务量构成所述每个阶段的机器学习算法的总运算任务量,以使在每个阶段的机器学习算法的计算中都能够通过终端服务器和云端服务器进行并行计算;
对所述云端待处理数据以及所述终端待处理数据进行并行整合运算,得到输出结果;
所述方法还包括:
对所述终端任务量经过运算得到的终端运算结果进行存储,并对存储的终端运算结果进行编码传输;在所述编码传输的过程中,进行下一轮终端任务量的运算。
12.根据权利要求11所述的机器学习的分配方法,其特征在于,所述获取每个阶段的机器学习算法的控制指令,所述每个阶段的机器学习算法的控制指令包括云端控制指令和终端控制指令的步骤包括:
获取每一层神经网络的控制指令,所述每一层神经网络的控制指令包括云端控制指令和终端控制指令。
13.根据权利要求12所述的机器学习的分配方法,其特征在于,所述获取每一层神经网络的控制指令的步骤包括:
获取所述云端服务器的运算能力与所述终端服务器的运算能力;
根据所述云端服务器的运算能力生成云端控制指令;
根据所述终端服务器的运算能力生成终端控制指令。
14.根据权利要求13所述的机器学习的分配方法,其特征在于,所述获取云端服务器的运算能力与终端服务器的运算能力的步骤之后包括:
计算所述云端服务器的运算能力与所述终端服务器的运算能力的比例;
根据所述比例生成相应的云端控制指令和终端控制指令。
15.根据权利要求12所述的机器学习的分配方法,其特征在于,所述分别对所述云端控制指令和所述终端控制指令进行解析,根据所述云端控制指令获得云端控制信号,以及根据所述终端控制指令获得终端控制信号包括:
利用云端服务器对所述云端控制指令进行解析,获得云端控制信号;
根据所述云端控制信号提取相对应的云端训练数据或者云端测试数据。
16.根据权利要求15所述的机器学习的分配方法,其特征在于,所述分别对所述云端控制指令和所述终端控制指令进行解析,根据所述云端控制指令获得云端控制信号,以及根据所述终端控制指令获得终端控制信号还包括:
利用终端服务器对所述终端控制指令进行解析,获得终端控制信号;
根据所述终端控制信号提取相对应的终端训练数据或者终端测试数据。
17.根据权利要求16所述的机器学习的分配方法,其特征在于,对所述云端待处理数据以及所述终端待处理数据进行并行整合运算,得到输出结果包括:
利用云端服务器并根据所述云端训练数据或者云端测试数据,计算每一层神经网络的云端任务量以得到云端运算结果。
18.根据权利要求17所述的机器学习的分配方法,其特征在于,对所述云端待处理数据以及所述终端待处理数据进行并行整合运算,得到输出结果还包括:
利用终端服务器并根据所述终端训练数据或者终端测试数据,计算每一层神经网络的终端任务量以得到终端运算结果;
将所述云端运算结果与所述终端运算结果进行并行整合,得到输出结果。
19.一种机器学习的分配装置,其特征在于,用于对机器学习算法进行处理,所述机器学习算法具有逐阶段特征,且所述机器学习算法是被划分为多个阶段的机器学习算法的;
所述分配装置包括:
指令获取模块,用于获取每个阶段的机器学习算法的控制指令,所述每个阶段的机器学习算法的控制指令包括云端控制指令和终端控制指令;
指令解析模块,用于分别对所述云端控制指令和所述终端控制指令进行解析,根据所述云端控制指令获得云端控制信号,以及根据所述终端控制指令获得终端控制信号;
数据提取模块,用于根据所述云端控制信号提取云端待处理数据,以及根据所述终端控制信号提取终端待处理数据,其中,所述云端待处理数据对应的云端任务量和所述终端待处理数据对应的终端任务量构成所述每个阶段的机器学习算法的总运算任务量,以使在每个阶段的机器学习算法的计算中都能够通过终端服务器和云端服务器进行并行计算;
并行运算模块,用于对所述云端待处理数据以及所述终端待处理数据进行并行整合运算,得到输出结果;
终端任务处理模块,用于对所述终端任务量经过运算得到的终端运算结果进行存储,并对存储的终端运算结果进行编码传输;在所述编码传输的过程中,进行下一轮终端任务量的运算。
20.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求11至18中任一项所述方法的步骤。
21.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求11至18中任一项所述的方法的步骤。
CN201810372801.9A 2018-04-24 2018-04-24 机器学习的分配系统、方法及装置、计算机设备 Active CN110399211B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201810372801.9A CN110399211B (zh) 2018-04-24 2018-04-24 机器学习的分配系统、方法及装置、计算机设备
EP19793238.7A EP3754503A4 (en) 2018-04-24 2019-04-24 ASSIGNMENT SYSTEM, METHOD AND DEVICE FOR MACHINE LEARNING AND COMPUTER DEVICE
PCT/CN2019/084101 WO2019206184A1 (zh) 2018-04-24 2019-04-24 机器学习的分配系统、方法及装置、计算机设备
US16/997,697 US11663491B2 (en) 2018-04-24 2020-08-19 Allocation system, method and apparatus for machine learning, and computer device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810372801.9A CN110399211B (zh) 2018-04-24 2018-04-24 机器学习的分配系统、方法及装置、计算机设备

Publications (2)

Publication Number Publication Date
CN110399211A CN110399211A (zh) 2019-11-01
CN110399211B true CN110399211B (zh) 2021-06-08

Family

ID=68293485

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810372801.9A Active CN110399211B (zh) 2018-04-24 2018-04-24 机器学习的分配系统、方法及装置、计算机设备

Country Status (4)

Country Link
US (1) US11663491B2 (zh)
EP (1) EP3754503A4 (zh)
CN (1) CN110399211B (zh)
WO (1) WO2019206184A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110851255B (zh) * 2019-11-07 2022-04-15 之江实验室 一种基于终端设备和边缘服务器协同进行视频流处理的方法
CN112905525B (zh) * 2019-11-19 2024-04-05 中科寒武纪科技股份有限公司 控制运算装置进行计算的方法及设备
WO2021142637A1 (zh) * 2020-01-14 2021-07-22 Oppo广东移动通信有限公司 人工智能操作处理方法、装置、系统、终端及网络设备
CN111325322A (zh) * 2020-02-12 2020-06-23 深圳壹账通智能科技有限公司 基于隐私保护的深度学习方法、系统、服务器及存储介质
CN112217863B (zh) * 2020-09-04 2023-07-18 江苏方天电力技术有限公司 一种边缘设备资源高效利用方法
CN114384866B (zh) * 2020-10-21 2023-06-27 沈阳中科数控技术股份有限公司 一种基于分布式深度神经网络框架的数据划分方法
WO2023137660A1 (zh) * 2022-01-20 2023-07-27 Oppo广东移动通信有限公司 无线通信的方法、终端设备和网络设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107783840A (zh) * 2017-10-27 2018-03-09 福州瑞芯微电子股份有限公司 一种分布式多层深度学习资源分配方法和装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102930661A (zh) * 2012-10-31 2013-02-13 浪潮齐鲁软件产业有限公司 一种基于云计算的网络发票手机开具方法
CN103095813A (zh) * 2012-12-31 2013-05-08 威盛电子股份有限公司 语音交互系统、移动终端装置及语音通信的方法
US10749989B2 (en) * 2014-04-01 2020-08-18 Microsoft Technology Licensing Llc Hybrid client/server architecture for parallel processing
US20170076195A1 (en) * 2015-09-10 2017-03-16 Intel Corporation Distributed neural networks for scalable real-time analytics
US11922313B2 (en) * 2016-02-11 2024-03-05 William Marsh Rice University Partitioned machine learning architecture
US10621486B2 (en) * 2016-08-12 2020-04-14 Beijing Deephi Intelligent Technology Co., Ltd. Method for optimizing an artificial neural network (ANN)
CN108243216B (zh) * 2016-12-26 2020-02-14 华为技术有限公司 数据处理的方法、端侧设备、云侧设备与端云协同系统
US10373046B2 (en) * 2017-01-06 2019-08-06 Salesforce.Com, Inc. Client-server hybrid AI scores for customized actions
CN111079942B (zh) * 2017-08-30 2023-03-24 第四范式(北京)技术有限公司 执行机器学习的分布式系统及其方法
CN107766889B (zh) * 2017-10-26 2021-06-04 浪潮集团有限公司 一种云端边缘计算融合的深度学习计算系统和方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107783840A (zh) * 2017-10-27 2018-03-09 福州瑞芯微电子股份有限公司 一种分布式多层深度学习资源分配方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
卷积神经网络的并行化研究;凡保磊;《中国优秀硕士学位论文全文数据库 信息科技辑》;20131115;I140-33 *

Also Published As

Publication number Publication date
EP3754503A1 (en) 2020-12-23
WO2019206184A1 (zh) 2019-10-31
US11663491B2 (en) 2023-05-30
CN110399211A (zh) 2019-11-01
US20200387400A1 (en) 2020-12-10
EP3754503A4 (en) 2021-04-14

Similar Documents

Publication Publication Date Title
CN110399211B (zh) 机器学习的分配系统、方法及装置、计算机设备
CN109729734B (zh) 芯片装置及相关产品
US20210224125A1 (en) Operation Accelerator, Processing Method, and Related Device
US11544539B2 (en) Hardware neural network conversion method, computing device, compiling method and neural network software and hardware collaboration system
CN110197270A (zh) 集成电路芯片装置及相关产品
CN111047045B (zh) 机器学习运算的分配系统及方法
CN111160541B (zh) 集成电路芯片装置及相关产品
CN111160542B (zh) 集成电路芯片装置及相关产品
Véstias et al. A configurable architecture for running hybrid convolutional neural networks in low-density FPGAs
CN109993291B (zh) 集成电路芯片装置及相关产品
CN111091189B (zh) 集成电路芯片装置及相关产品
WO2023122896A1 (zh) 一种数据处理方法和装置
CN111047025A (zh) 一种卷积计算方法及装置
CN117332809A (zh) 神经网络推理芯片、方法及终端设备
CN112733585B (zh) 图像识别方法
CN114154621A (zh) 一种基于fpga的卷积神经网络图像处理方法及装置
CN110197275B (zh) 集成电路芯片装置及相关产品
CN111767996B (zh) 集成电路芯片装置及相关产品
CN113807510B (zh) 集成电路芯片装置及相关产品
JP2020177640A (ja) チップ装置および関連製品
JP2020177641A (ja) チップ装置および関連製品
CN109615062B (zh) 一种卷积运算方法及装置
CN116205282A (zh) 一种数据处理方法和装置
CN114169512A (zh) 神经网络推理芯片、神经网络推理方法及终端
CN117688995A (zh) 一种卷积运算加速器及相关方法

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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 100191 room 644, research complex, 6 South Road, Haidian District Science Academy, Beijing.

Applicant after: Zhongke Cambrian Technology Co., Ltd

Address before: 100191 room 644, research complex, 6 South Road, Haidian District Science Academy, Beijing.

Applicant before: Beijing Zhongke Cambrian Technology Co., Ltd.

GR01 Patent grant
GR01 Patent grant