CN114841345B - 一种基于深度学习算法的分布式计算平台及其应用 - Google Patents
一种基于深度学习算法的分布式计算平台及其应用 Download PDFInfo
- Publication number
- CN114841345B CN114841345B CN202210313990.9A CN202210313990A CN114841345B CN 114841345 B CN114841345 B CN 114841345B CN 202210313990 A CN202210313990 A CN 202210313990A CN 114841345 B CN114841345 B CN 114841345B
- Authority
- CN
- China
- Prior art keywords
- node
- computing
- mpi
- data
- slave
- 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
Links
Images
Classifications
-
- 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/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
- G06N3/105—Shells for specifying net layout
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
- G06F9/45512—Command shells
-
- 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/5072—Grid computing
-
- 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/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Biomedical Technology (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Multimedia (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种基于深度学习算法的分布式计算平台,由一个主计算节点和多个从计算节点组成,并采用了基于MPI协议设计的深度学习算法针对主计算节点和从计算节点分为主算法和从算法两个部分,目标提取任务被分割为目标提取和结果融合两个部分,目标提取这一任务主要由从算法实现,主算法的输入为所有从算法的输出结果,融合得到最终的目标提取结果。本发明还提供了基于深度学习算法的分布式计算平台的应用,是用于车辆的自动驾驶。本发明能够根据不同的驾驶环境匹配不同的计算节点,在复杂环境下可以通过采用主计算节点和多个从计算节点的方式提高算力,同时也不会产生过大的计算机占据车内空间。
Description
技术领域
本发明涉及一种计算平台,具体涉及一种基于深度学习算法的分布式计算平台及其应用,属于计算机技术领域。
背景技术
自动驾驶计算平台及相关产业介绍:
随着智能网联汽车的发展,车载传感器的数量日益增加,日趋完善的性能对车载计算平台算力的需求更高。相较于低级别的自动驾驶,高等自动驾驶系统从传感器获取的数据量大大增加,而自动驾驶系统的良好运行需要车载计算平台对这些数据进行准确、高效的处理,高级别自动驾驶中车载计算平台的算力需求还将持续提升。
软件定义一切的大背景下,聚焦智能驾驶软件领域,计算平台无疑是皇冠之上的明珠,统御“感知-决策-执行”三大环节中的“决策”环节,其发展和成熟可谓是智能驾驶商业化落地的最根本条件。软件定义一切的大趋势同样适用于智能汽车领域——根据IEEE数据,高端车辆软件代码已经达到1亿行,数据价值不断凸显。各大整车厂为强化短板,巩固竞争优势,纷纷发力软件业务布局,过去三年间上汽、广汽、一汽、长安、丰田、大众、宝马等海内外整车厂纷纷成立软件部门(公司),发力智能驾驶数字化业务。
过去五年间,计算平台一直是存在重大痛点,想在计算平台上达到真正的量产化的要求,有三个关键性的指标必须去的突破:一是每瓦的性能、二是每瓦的成本、三是生态系统。移动互联网时代,整个计算工业的核心驱动力是手机,但是现在智能汽车终端有逐步抬头超越智能手机终端的迹象。从计算需求角度对比可知,智能驾驶大概要超过两个数量级,数据生成速度方面超过四个数量级,因此对于计算平台提出了巨大挑战。
众所周知,自动驾驶任务非常复杂,意味着开发人员需要兼顾软件和硬件的协同。当传感器接受到信息后,导入到计算平台,由各种芯片处理。因此计算平台的选择会直接影响到自动驾驶系统的实时性和鲁棒性。为了保证自动驾驶的实时性需求,软件响应的最大延迟必须在可接受范围内,这对计算资源的要求相应的变得极高。目前,自动驾驶软件的计算量达到了10个TOPS(每秒万亿次操作)或者更高,这使得我们不得不重新思考对应的计算架构。
自动驾驶计算平台是结合车辆线控平台和大量多类型外围传感器的核心部分,具有多样的接口类型、足够的接口数量和高性能等特点。多传感器数据融合、人工智能算法等技术对域控制器的接口和算力性能都有着更高要求,因此,自动驾驶计算平台需要采用异构多核芯片的硬件方案。异构多核芯片硬件架构主要由具有AI单元和计算单元组成。AI单元:为异构芯片硬件架构中算力最大的一部分,通过系统内核进行加速引擎和软硬件资源的分配、调度。AI单元主要完成多传感器融合数据的分析和处理,输出用于规划、决策和控制的周围环境信息。目前,主流的AI芯片可选架构有GPU、FPGA、ASIC等。计算单元:基于多核CPU的计算单元具有主频高,计算能力强等特点,通过系统内核管理软件和硬件资源、完成任务调度。计算单元主要用于执行大部分自动驾驶相关的核心算法,整合多传感器融合数据完成路径规划、决策控制等功能。
TOPS是Tera Operations Per Second的缩写,1TOPS代表处理器每秒钟可进行一万亿次,TOPS/W在算法领域作为评价处理器运算能力的一个性能指标,TOPS/W用于度量在1W功耗的情况下,处理器能进行多少万亿次操作。L2级自动驾驶的算力需求仅要求2-2.5TOPS,但是L3级自动驾驶算力需求就需要20-30TOPS,到L4级需要200TOPS以上,L5级别算力需求则超过2000TOPS。
主流厂商的算力都在持续攀升,代际算力提升幅度可达数倍(如英伟达Orin、Mobileye EyeQ6等),判断下一代触及L5等级的新品将进一步打开算力天花板(如英伟达Atlan、高通骁龙Ride),极大改善智能驾驶的计算支撑。算力/能耗比、制程均持续优化,与算力、等级演进趋势保持一致。最大算力的绝对水平来看,英伟达和高通处于第一梯队,华为和地平线正在稳步追赶,位列第二梯队。从能耗水平来看,高通和地平线表现突出,英伟达和Mobileye处于中上水平。时间轴来看,大量高等级(L4+)产品将在2022年及以后投入量产,产业供给侧爆发时点将至。
目前主流具备一定自动驾驶能力的新能源车辆如特斯拉、小鹏、岚图、理想等的车载计算平台算力大约为20TOPS到70TOPS之间,这些汽车均只能实现L3级的自动驾驶功能。
EyeQ系列是Mobileye公司推出的车载计算平台,Mobileye在自动驾驶芯片领域具有强大竞争优势,2004年以来陆续推出基于ASIC架构的EyeQ系列芯片。Mobileye产品覆盖L1-L3级别的前装ADAS,硬件产品主要是是基于ASIC架构的EyeQ芯片,该公司智能驾驶系统解决方案包括四个部分:EyeQ芯片、自动驾驶策略、安全的防护层RSS、地图技术REM。EyeQ系列芯片已发布五代。第一代产品EyeQ1算力约0.0044Tops,第二代产品EyeQ2算力约0.026Tops,功耗均为2.5w,这两款产品主要用于L1级自动驾驶。第三代产品EyeQ3是自行开发的ASIC架构,使用了4颗MIPS核心处理器、4颗VMP芯片,可以支持L2高级辅助驾驶计算需求。最新一代芯片EyeQ5主要有4个模块:CPU、视觉加速期CVP(ASIC)、以及Deep LearningAccelerator(DLA)和Multithreaded Accelerator(MA)。从模块的大小来看,CPU、CVP占据大头,其中CVP是针对很多传统计算机视觉算法设计的ASIC芯片。历史上,Mobileye一向以CV算法而闻名,同时因为用专有的ASIC来运行算法从而可以达到很低功耗。
特斯拉FSD架构中有三个系列:(1)面向L1/L2级ADAS(具备AEB、TSR和LKA等ADAS功能)的底层硬件包括1个ADAS应用处理器(安全系统级芯片SoC),可提供30~60TOPS算力;(2)面向L2+级ADAS(具备HWA、自动泊车APA以及TJA等功能)的硬件支持为2个或多个ADAS应用处理器,所需算力要求约为60-125TOPS;(3)最高阶产品面向L4/L5级自动驾驶,配置的底层硬件为2个ADAS应用处理器+2个自动驾驶加速器ML(ASIC),最高可提供700TOPS算力,功耗为150W左右。
分布式深度学习计算系统介绍:
当前的深度学习框架非常之多,耳熟能详的就有Caffe/Caffe2、MxNet、TensorFlow、Torch、CNTK、Theano等等。这些框架开发语言不一,接口设计各异,这对于AI公司,尤其是中小型创业团队的框架选择、技术积累和快速研发带来很多困难。不过,虽然深度学习框架众多,框架本身提供的功能、实现思路和核心技术有一定的趋同性。因此,我们可以考虑从另一个层面来“统一”多个深度学习的框架,即通过工程的手段开发一个训练平台,将深度网络的训练、测试过程抽象道统一的界面中。同时,配合数据管理(网络存储和对象存储),环境管理(容器),CI和自动部署等,形成一个深度学习的“循环”,这能极高的提升迭代的速度。
深度学习训练的一个特点是具有很强的迭代性,即网络结构确定后,可以周期性地通过增加训练数据而提高模型的泛化能力。这个迭代周期越短,模型更新的速度越快,就能获得更好的效果和更快的产品更新。这个特点使得训练过程非常适合自动化。
2012年AlexNet开启这一轮深度学习热潮的时候,网络只有8层,但就算只有8层也需要大量的计算。更何况2016年153层的ResNet,最近甚至出现了上千层的网络结构,这让计算资源变的非常稀缺。另一个方面,随着训练数据的快速增长,分布式训练变得很迫切和必需,这进一步增加了计算资源的稀缺性。
目前大多数的训练过程使用Nvidia GPU,而Nvidia GPU虚拟化的欠缺,使得GPU资源变的不容易管理。当数据中心有成百上千块GPU的时候,很容易出现一个矛盾的现象:GPU计算资源稀缺,同时又有部分GPU资源被闲置浪费,整体的利用率比较低。
针对分布式训练服务器,尤其是带有GPU的高性能计算服务器,可把训练任务分到分布式的计算节点上执行计算;集成多种训练框架,抽象训练过程,定义数据传输格式,上传和指定相关数据和参数,即可启动训练任务并监控和分析训练过程;池化计算资源,尤其是AI计算资源,做成“资源池”。启动训练任务时,平台会自动把训练任务分配到合适的GPU上;打通数据中心,可以直接把数据存储平台中的数据导入到训练节点上中;隔离计算节点中的资源和环境,兼容不同型号的GPU、不同版本的CUDA/CuDNN和不同的深度学习框架。
并行方式有数据并行和模型并行;调度方式有集中式(参数服务器)和去中心化调度(RingAllReduce);参数更新方式有同步和异步两种,从另外角度分的话有基于参数的,有基于梯度方式的;分布式机器学习系统的并行加速本质上是就是DLP的多机延伸,具体来说其并行的方式分为以下两种:
数据并行:顾名思义就是每台机器都有模型的副本,但是将数据的不同部分分别喂给各个模型(各个机器),最后的结果以某种方式进行合并(可能是直接参数融合,也可能是传递梯度数据进行融合)。数据并行是最常见也是最直观可以理解的。
模型并行:模型并行的话,就是模型本身太大了,因此需要将模型各个部分分散在各个机器间,这种情况在更新参数时需要层间跨机器通信。
两者结合:当然实际上还会有数据并行和模型并行的结合,可以从这个角度理解:模型各个部分分散在单机的多个GPU中(模型并行),同时模型在多个机器都有副本,数据各个部分分别喂给各个机器并行训练(数据并行)。
调度方式主要分为集中式调度和去中心化调度,前者代表有Parameter Server方式,后者代表有Ring Allreduce方式。
参数服务器是一种集中式的架构,有专门的机器用于存放全局参数,其他的worker用于训练。这种方式下,参数服务器每次将全局参数分配到各个worker,worker们每次迭代更新了参数后再汇集到参数服务器求平均得到这一轮的结果,之后再重复上述步骤直到收敛。然而实际在工程上要考虑由于参数服务器要等待所有worker的参数到来后才可以操作(同步方式)。如果worker每一次迭代就发参数给参数服务器,那么通信可能会成为瓶颈,我们知道,计算比重要大于传输比重,才有收益,所以可能需要考虑在worker那边多做几轮迭代后再给参数服务器更新,减少通信开销。诸如此类的衡量还有很多。
基于梯度的架构下,worker不是发送本地更新后的参数给参数服务器,而是发送梯度数据,参数服务器汇总的是梯度,然后在那边统一进行梯度更新。这也是一种同步更新的方式。两种方式似乎大同小异,但是由于梯度的稀疏特性,在通信前可以利用压缩算法来减少传输开销。参数平均和基于梯度的方式本质上都是同步更新方式,有同步就有异步方式(基于梯度的方法本身可以做成异步更新的方式)。异步是说参数服务器不再等待最后一个worker才开始操作,而是有worker的参数到了,这边就开算,不进行等待。
同步方式:有较大通信开销和同步等待开销,但是优点是收敛过程比较稳定。异步方式:速度快,高吞吐,等待时间少。但是噪声更大,有参数过期问题,所以收敛过程没有前者稳定。
Ring AllReduce可以将参数通信分散到各个GPU,经过一循环的数据传递和计算后,得到正确结果。通过Ring AllReduce这种比较巧妙的方式,每个设备的负载更加均衡,基本上可以实现当GPU并行卡数的增加,实现计算性能的线性增长。
Mesos+Marathon:Mesos是Apache下的开源分布式资源管理框架,它被称为是分布式系统的内核,又被称作是数据中心的操作系统。简单的讲,Mesos实现了一个资源管理的框架,它在数据中心层次上管理集群资源(CPU、GPU、RAM等),提供资源分配和任务调度的能力。为了进一步把资源和任务隔离,Mesos把具体的任务调度能力抽象出来交给具体的Framework来实现,比如Hadoop,Spark和Marathon等。
Mesos本身分为master节点和agent(slave)节点。多个master节点通过zookeeper进行选举实现高可用。Agent节点部署在每一台服务器实例中并与master相连,周期性地向master节点更新自身状态。Hadoop等Framework通过实现mesos定义的scheduler来与mesosmaster节点通信,调度使用集群资源运行相应任务,任务在Agent上通过Frameworkexecutor来实际执行。最典型的executor是bash和docker,如果任务可以被设计成bash命令或者docker容器,那么无需额外的Framework和Framework executor,仅通过mesosagent就可以运行任务。
作为比较老牌的分布式框架,Mesos支持的Framework非常之多,列表在这里并且在不断增加中。最近豆瓣就开源了TFMesos,提供对TensorFlow的支持。不过,最知名和通用的Framework之一就是Marathon。正如其名,Marathon被设计用来运行长时间的任务,比如Web服务,同时支持运行bash脚本和docker container。提供了很多任务调度的策略和约束以提高灵活性,以及任务组、动态端口、持久化、Pods(类似kubenetes pods)、健康检查等高级特性。Marathon会监控任务状态并在任务退出重新调度运行,同时还提供负载均衡等分布式特性,保证任务不间断运行。
深度学习任务的运行时间虽然很长,但是多数是one-off的,也就是训练完一个模型后此次任务就已经完成;有些这类任务还需要在运行过程中根据模型收敛的情况,暂停任务,修改参数,重新运行或者修改训练集,重新运行。甚至有些任务是一些实验性质的任务,会被频繁的启动和停止。所以Marathon从设计上不太符合需要,我们需要的是一个支持深度学习的Framework。很可惜,这样的通用Framework目前并不存在,且考虑到文章开始提到的一些现状,很有可能难以实现。幸好,我们目前的需求还没有那么复杂,可通过一些trick和流程设计来实现,Marathon暂且可以拿来一用。
Docker:绝大多数的深度学习依赖Nvidia GPU和相应的运算库CUDA、CuDNN等。Nvidia GPU的硬件型号和驱动繁烦复杂且存在一定的兼容性问题。CUDA等基础库众多并更新频繁。同时不同的深度学习框架对底层库的依赖也有所不同。如果直接在裸机上运行深度学习任务,尤其是新手,会花费大量的时间在环境的安装、配置和解决各种不兼容的问题,令人抓狂。我们把一系列的基础库、运算库和深度学习库打包成Docker镜像,充分利用Docker的分层机制在不同层面进行共享和组合。Docker隔离了系统环境和执行环境,即隔离同一台服务器上不同训练任务的环境。我们可以把同一个任务分发到带有不同型号GPU卡的服务器上,也可以在同一台服务器上同时运行不同CUDA版本、不同深度学习框架的多个任务。比较完美的解决了上述问题。
深度学习是典型的计算密集、IO密集和数据密集三者都满足的任务。这里的计算密集除了CPU密集外还增加了GPU密集。这对单机和集群的硬件资源管理和隔离提出了更高的要求。Mesos完成了对集群硬件资源的管理和有效调度,但是我们还需要进一步隔离硬件资源,在满足任务要求的同时,还要避免多任务对资源的恶性和无序竞争。Docker就是解决这个问题的最优选择。Docker在资源隔离方面的优异表现已经被业界充分验证且成功运用在大大小小的云里面。
Docker或者说Linux cgroup对GPU资源的管理没有像CPU那么完善和成熟。不过我们仍然可以通过设备映射的方式,在GPU卡这个粒度上对GPU资源进行隔离,虽然粒度比较粗,但是考虑到深度学习任务一般会把GPU资源吃满,这样的粗粒度尚可接受。其实,不使用Docker,Mesos本身就提供资源隔离的特性。不过术业有专攻,Mesos跟Docker还有一定的距离。
虽然目前有很多的深度学习框架和经典的神经网络,为了提高模型的性能和其他的工程因素,我们需要对不同的深度学习框架和计算库作不同层面的修改,作为公司内部的私有版本来使用。这些代码通常是满足特定网络和用途因此在代码管理、共享和使用上非常麻烦。通过Github+CI+Docker,我们把不同repo和branch的代码打包成完成不同任务的Docker镜像从而实现了更灵活和细粒度的共享。
随着自动驾驶算法的更新,自动驾驶车辆需要在越来越复杂的环境下完成自动驾驶功能,这就需要一个能够提供稳定算力的计算平台。目前已有的车载计算平台存在两个问题:
一是为了能够提供更高的算力,需要体积较大的计算机放在车辆内部,这样会占用较多的车内空间,同时由于车辆在行驶过程中会发生多次颠簸,大型计算机往往无法满足鲁棒性要求。
二是为了提高计算平台的鲁棒性,采用嵌入式计算芯片研发出车载计算平台,这样可以保证车辆在行驶过程中,计算平台能够稳定运行,但是由于单个嵌入式计算芯片提供的算力有限,无法在这样的计算平台上部署高阶自动驾驶算法,限制了智能网联汽车性能的提升。
发明内容
本发明的目的在于克服现有运算平台的上述问题,提供一种基于深度学习算法的分布式计算平台。
本发明具体是这样实现的:
一种基于深度学习算法的分布式计算平台,由一个主计算节点和多个从计算节点组成,并采用了基于MPI协议设计的深度学习算法。
更进一步的方案是:
所述基于MPI协议设计的深度学习算法针对主计算节点和从计算节点分为主算法和从算法两个部分,目标提取任务被分割为目标提取和结果融合两个部分,目标提取这一任务主要由从算法实现,主算法的输入为所有从算法的输出结果,融合得到最终的目标提取结果。
更进一步的方案是:
外接设备输入的数据通过千兆以太网、USB3.0等高速数据通道,传输至AI计算芯片。
更进一步的方案是:
在AI计算芯片中部署基于MPI协议设计的深度学习算法运行所需要的环境,其中包括:基于Linux内核的操作系统、Python3编程语言运行环境、安装opencv、安装mingwlibpython、安装theano、安装tensorflow-gpu、安装sklearn、安装matplotlib、安装keras。
更进一步的方案是:
基于MPI协议设计的深度学习算法的架构分为三部分,包括shell脚本、python端和C++端。其中Shell脚本是启动运行的入口,负责解析参数,确认并且调用训练程序。Python是用户的接口,引入了C++库,封装了API,负责运行时和底层C++交互。C++端实现底层训练逻辑。
更进一步的方案是:
所述shell脚本包括配置对象、声明环境变量、数据预处理和进程创建模块,
其中,配置对象中,函数‘process count per node’用于定义一个进程需要在几个节点上运行,函数‘node count’用于定义当前计算节点MPI进程的数量,通过函数‘process count per node’以及函数‘node count’定义一个用于配置参数信息的对象‘MpiConfiguration’。该对象主要包含MPI进程的基础信息,深度学习算法通过调用该对象获得本地节点MPI进程的基本信息。函数‘get myMAC’用于获取芯片的物理地址,并将该物理地址信息添加到对象‘MpiConfiguration’中;
环境变量包括:MPI_num:该计算节点的身份编号;MPI_MS:主从节点身份识别;MPIMASTER:主计算节点身份编号;MPI MASTER HOST:主计算节点通讯地址;MPI SLAVE HOST:从计算节点通讯地址;MPI MASTER STATE:主计算节点运行状态;MPI LOCAL TE:本地进程运行状态;
数据预处理:函数‘run_state’用于对输入本地节点的数据流进行预处理,函数‘run_state’处理后的数据会保存到Linux系统的根目录下,以便深度学习算法调用;
进程创建:函数‘distributed.init_process_group’用于在各个计算节点创建进程,在主计算节点上创建MPI进程总线,在从计算节点上创建MPI从进程;函数‘initmethod’用于调取各个节点的环境变量和对象‘MpiConfiguration’,将所有节点的信息保存到矩阵变量中,并在MPI进程总线上进行广播,使每个节点都能够得到其他节点的信息。
更进一步的方案是:
基于MPI协议设计的深度学习算法,是将所有的参数都存储在主计算节点中,而从节点只进行模型训练并计算出下降梯度,不进行梯度的更新。从节点计算出下降梯度,并且把计算好的梯度发送给主计算节点。主计算节点收到梯度后,执行一定的计算(梯度平均等)后,更新到从计算节点上。从计算节点会再进行下一轮的前后向计算。
更进一步的方案是:
基于MPI协议设计的深度学习算法,采用MPI的端到端通信原语‘RingALLReduce’,并分为两个阶段,第一个阶段‘MPI ReduceScatter’,是将计算分配给不同的进程。第二个阶段‘MPI ALLGather’,将计算结果聚合到整个进程。
本发明还提供了一种基于深度学习算法的分布式计算平台的应用,是用于车辆的自动驾驶。
本发明提供的基于深度学习算法的分布式计算平台,能够根据不同的驾驶环境匹配不同的计算节点,在复杂环境下可以通过采用主计算节点和多个从计算节点的方式提高算力,同时也不会产生过大的计算机占据车内空间。且使用的深度学习算法具有运算稳定可靠的技术效果。有效解决了现有技术中的问题。
基于本发明提出的基于深度学习算法的分布式计算平台,自动驾驶车辆可以在鲁棒性要求较高的驾驶环境中,实现更加复杂的自动驾驶算法,推动整个自动驾驶行业的发展。
附图说明
图1为本发明一个实施例的基于深度学习算法的分布式计算平台示意图;
图2为本发明一个实施例的深度学习算法运行流程图;
图3为本发明一个实施例的AI芯片MPI协议环境部署示意图;
图4为本发明一个实施例的shell脚本功能模块及变量对象示意图;
图5为传统深度学习示意图;
图6为本发明一个实施例的深度学习算法流程图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步的详细说明。
一种基于深度学习算法的分布式计算平台,由一个主计算节点和多个从计算节点组成,并采用了基于MPI协议设计的深度学习算法。
基于MPI协议设计的深度学习算法针对主计算节点和从计算节点分为主算法和从算法两个部分,目标提取任务被分割为目标提取和结果融合两个部分,目标提取这一任务主要由从算法实现,主算法的输入为所有从算法的输出结果,融合得到最终的目标提取结果。
外接设备输入的数据通过千兆以太网、USB3.0等高速数据通道,传输至AI计算芯片,然后通过计算平台开始数据计算。
当驾驶环境较为简单,深度学习算法算力需求较低时,该计算平台可以只有一个主计算节点和一个从计算节点,外接设备输入的数据传输到从计算节点,目标提取完成后再通过千兆以太网、USB3.0传输至主计算节点,主计算节点对输入的检测结果进行降噪输出目标提取结果。
当驾驶环境较为复杂,深度学习算法算力需求较高时,该计算平台根据外接设备的数量,可以拓展多个从计算节点,构成由一个主计算节点和多个从计算节点的计算平台,基于MPI协议设计的深度学习算法可以部署在由任意个从计算节点上和一个主计算节点上。当自动驾驶算法算力需求较高时,可以将复杂高阶目标提取任务分解为多个简单且算力需求较低的子任务,从算法计算子任务,主算法融合子任务处理结果得到最终目标。
如附图1所示,实线表述数据流(传感数据、通信数据及其他参考数据),虚线表示深度学习算法的参数传递过程。外接设备通过数据通道,将自动驾驶算法实现所需的所有数据传输到各个计算节点中,每个计算节点都会部署一个基于MPI协议的进程,其中部署主进程的节点被称为主计算节点,其余均为从计算节点。主计算节点通过通信模块与其他计算节点实现数据交互和高速通信,基于这种分布式的硬件架构部署分布式深度学习算法。MPI主进程作为整个算法的躯干,负责维持各个节点的通信、广播关键信息、计算任务的分配以及计算结果的整合。MPI从进程可以看作简单的计算单元,只具备通信和计算的功能,该进程不能调配其他节点的运算资源。在本发明中MPI进程代表了深度学习算法,深度学习算法的主进程在主计算节点完成任务分配,并将计算任务按序号分配给从计算节点,在各个计算节点完成任务后,计算结果按身份顺序,从最底层一直向上传输,最终传递到主进程中。主进程基于自动驾驶算法的功能需求将计算结果传递给相应的外接设备,如附图2所示。
在AI计算芯片中部署深度学习算法运行所需要的环境,如附图3所示,其中包括:基于Linux内核的操作系统、Python3编程语言运行环境、安装opencv、安装mingwlibpython、安装theano、安装tensorflow-gpu、安装sklearn、安装matplotlib、安装keras。
在每个AI计算芯片部署相同的运行环境后,分布式深度强化学习算法主要有两个问题需要解决:①多个AI芯片之间如何在并行计算过程中被发现并建立连接、②多个AI芯片在训练过程中,参数传递链如何建立,这也决定了深度学习算法的效率。
深度学习的架构可以分为三个部分:shell脚本、python端和C++端。其中Shell脚本是启动运行的入口,负责解析参数,确认并且调用训练程序。Python是用户的接口,引入了C++库,封装了API,负责运行时和底层C++交互。C++实现底层训练逻辑。
为解决问题①,本发明开发了基于MPI协议的shell脚本,用于监测控制主计算节点和从计算节点的数量,该脚本是基于python语言编写的,目的是为了给每个计算节点部署并行计算的接口。深度学习算法可以调用这些接口,控制算法的运行和终止,并传输数据。MPI协议是基于以太网通讯的并行计算框架。后端通信shell脚本开发过程如附图4所示。附图4中每个函数的功能及变量详细描述如下:
函数‘process count per node’用于定义一个进程需要在几个节点上运行,函数‘node count’用于定义当前计算节点MPI进程的数量,通过函数‘process count pernode’以及函数‘node count’定义一个用于配置参数信息的对象‘MpiConfiguration’。该对象主要包含MPI进程的基础信息,深度学习算法通过调用该对象获得本地节点MPI进程的基本信息。函数‘get myMAC’用于获取芯片的物理地址,并将该物理地址信息添加到对象‘MpiConfiguration’中。
该脚本还需要声明一部分环境变量,这些环境变量声明了主节点的身份信息和通讯地址,并将本地节点的运行状态进行声明,基于这些环境变量,MPI进程之间能够互相通讯并得到其他进程的运行状态。为计算节点执行的进程创建以下环境变量:MPI_num:该计算节点的身份编号;MPI_MS:主从节点身份识别;MPI MASTER:主计算节点身份编号;MPIMASTER HOST:主计算节点通讯地址;MPI SLAVE HOST:从计算节点通讯地址;MPI MASTERSTATE:主计算节点运行状态;MPI LOCAL TE:本地进程运行状态。
函数‘run_state’用于对输入本地节点的数据流进行预处理,由于深度学习所需求的数据量较大,为了能够实现分布式运算,使数据在节点之间快速传递,本发明提出了基于压缩矩阵的数据压缩算法,通过在每个节点中部署数据处理矩阵,传递数据中的特征数据而不是所有数据,特征数据在本地通过函数函数‘run_state’进行数据增强,从而达到大批量数据在节点之间快速传递的目的。函数‘run_state’处理后的数据会保存到Linux系统的根目录下,以便深度学习算法调用。
函数‘distributed.init_process_group’用于在各个计算节点创建进程,在主计算节点上创建MPI进程总线,在从计算节点上创建MPI从进程。就像是树干和枝叶的关系,通过进程总线,各个从计算节点的进程能够互相交互。在此基础上函数‘init method’用于调取各个节点的环境变量和对象‘MpiConfiguration’,将所有节点的信息保存到矩阵变量中,并在MPI进程总线上进行广播,使每个节点都能够得到其他节点的信息。
为解决问题②,这里先解释一下一般深度学习训练过程中参数的计算和传递。传统深度学习如附图5所示,在一次深度学习训练中,首先利用数据对模型进行前向的计算。前向计算就是将模型上一层的输出作为下一层的输入,并计算下一层的输出,从输入层一直算到输出层为止。根据目标函数,我们将反向计算模型中每个参数的导数,并且结合学习率来更新模型的参数。以上是深度学习训练过程中参数的计算和传递过程。
本发明针对传统深度强化学习算法进行改进,如附图6所示,在分布式训练的场景中,参数传递会复杂一些。首先,在一次分布式训练,模型会被部署到多个从计算节点上,一旦准备好训练数据,分割任务即是将数据分割切片,模型的每个实例都对部分数据起作用。在主计算节点上创建MPI进程总线后,深度学习算法通过调用‘MpiConfiguration’得到MPI进程的基本信息,从而将数据切片保存到各从计算节点。之后每个从计算节点在不同批次的训练数据上训练模型的副本,即执行分布式前向计算及反向计算。其中,与传统深度学习类似,前向计算将分别在不同的从计算节点上基于其分配到的数据切片来进行,按顺序(从输入层到输出层)计算和存储神经网络中每层的结果作为中间值,得出单批次数据样本的损失项并最终计算目标函数。反向计算时,按相反的顺序从输出层到输入层遍历网络,结合目标函数得到权重和偏置项的梯度。特别的,反向计算时将重复利用前向计算中存储的中间值,且分布式训练中可以保留更多的中间值,意味着可以使用更大的批量,训练更深层次的网络或者避免训练过程中的内存不足。之后,从计算节点交换数据并进行梯度同步的第一个阶段。从计算节点排列在一个逻辑环中,即每个从计算节点应该有一个左邻居和一个右邻居;它只会向其右邻居发送梯度数据,并从其左邻居接收梯度数据组成梯度的张量。从首先完成梯度计算的第i个从计算节点开始,即第i个从计算节点将计算得到的梯度和接收的第i-1个梯度的张量组成第i个梯度的张量并发送给第i+1个从计算节点,如此循环向后进行。基于此,每个从计算节点将在迭代完成后得到最终值的一部分,且其中一些梯度的张量是最终值,其包括所有从计算节点的贡献。之后,含有最终值的从计算节点向主计算节点传递梯度,主计算节点收到梯度后,将执行一定的计算(如梯度平均等),返还给该从计算节点,得到更新后的梯度。在接下来的迭代中,梯度同步第一阶段的过程将继续进行,不同的是,第二阶段中梯度同步的起点是接收到更新后的梯度的从计算节点。最后,每个从计算节点将具有更新后的梯度。即梯度的同步、传递、更新完成,节点将进行下一批次的训练。
本发明使用了多个进程,利用不同的数据同步地训练相同结构的模型(数据并行的同步训练),在每个进程计算好梯度后,就涉及到一个梯度同步的问题(参数传递链的建立)。每个计算节点都根据自己的数据计算梯度,为了把自己得到的梯度也能作用于其他的进程。本发明提出的解决方法是引入一个主从计算节点的概念,所有的参数都存储在主计算节点中,而从节点只进行模型训练并计算出下降梯度,不进行梯度的更新。从节点计算出下降梯度,并且把计算好的梯度发送给主计算节点。主计算节点收到梯度后,执行一定的计算(梯度平均等)后,更新到从计算节点上。从计算节点会再进行下一轮的前后向计算。
本发明中把每个计算节点所执行的深度强化学习算法看作MPI协议概念中的一个进程,所有的主从计算节点组成了整个进程。在对一个深度学习算法进行训练时,所有参与计算的进程都有结果,训练任务就完成了分发任务。在模型初始化的时候,保证每个进程的模型训练参数是一致的(用于训练神经网络的超参数,而不是shell脚本中定义的环境变量),在后续的迭代计算中,训练参数会一直保持一致,因为梯度信息是一致的。
‘RingALLReduce’是MPI的端到端通信原语,可以理解为完成MPI协议的一个流程。其分为了两个阶段,第一个阶段‘MPI ReduceScatter’,是将计算分配给不同的进程。第二个阶段‘MPI ALLGather’,将计算结果聚合到整个进程。
‘ompi_coll_base_reduce_scatter_intra_ring’是本发明中深度学习算法所使用的主体程序,使用‘ompi_coll_base_reduce_scatter_intra_ring’通过N-1步训练(假设完成一个训练过程需要N个步长),该算法可以实现‘MPI_ReduceScatter’的功能(在本发明中理解为完成一次神经网络的梯度下降)。其中每步中每个进程的上下行通信量都是M/N。其中M是数据的长度(该数据是shell脚本中函数‘run_state’处理后保存在根目录的数据),N是进程的数量。数据会被分为N等分,每次通信量是M/N。
第二个阶段是‘MPI_AllGather’。本发明中的深度学习算法使用了主体程序‘ompi_coll_base_allgather_intra_ring’来实现这一功能。实现一共需要N-1步(假设完成一个训练过程需要N个步长)。在第i步(由于本发明将步长分解为进程,分发给了N个节点运行,这里的第i步可以理解为第i个节点)的时候,‘Rank r’进程(某个在从计算节点上运行的进程,假设该节点的shell脚本声明环境变量‘MPI_num’的值为r)会收到来自r-1进程(相邻计算节点)的信息,这一信息中包括了r-i-1进程的数据(可以理解为r节点之前的所有的计算节点的数据)。同时,r进程会给r+1进程发送包含r-i进程的数据(将从i节点得到的计算结果加上本地节点的计算结果传递给另一个计算节点,汇总并推送)。每个进程的上下行通信量同样是M/N。
基于本发明提出的计算平台和分布式的深度学习算法,自动驾驶车辆可以在鲁棒性要求较高的驾驶环境中,实现更加复杂的自动驾驶算法,推动整个自动驾驶行业的发展。
尽管这里参照本发明的解释性实施例对本发明进行了描述,上述实施例仅为本发明较佳的实施方式,本发明的实施方式并不受上述实施例的限制,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。
Claims (1)
1.一种基于深度学习算法的分布式计算平台,其特征在于:由一个主计算节点和多个从计算节点组成,并采用了基于MPI协议设计的深度学习算法;
基于MPI协议设计的深度学习算法针对主计算节点和从计算节点分为主算法和从算法两个部分,目标提取任务被分割为目标提取和结果融合两个部分,目标提取这一任务主要由从算法实现,主算法的输入为所有从算法的输出结果,融合得到最终的目标提取结果;
外接设备输入的数据通过高速数据通道传输至AI计算芯片,然后通过计算平台开始数据计算;
外接设备通过数据通道将自动驾驶算法实现所需的所有数据传输到各个计算节点中,每个计算节点都会部署一个基于MPI协议的进程,其中部署主进程的节点被称为主计算节点,其余均为从计算节点;主计算节点通过通信模块与其他从计算节点实现数据交互和高速通信,基于这种分布式的硬件架构部署分布式深度学习算法;MPI主进程作为整个算法的躯干,负责维持各个节点的通信、广播关键信息、计算任务的分配以及计算结果的整合;MPI从进程只具备通信和计算的功能,该进程不能调配其他节点的运算资源;MPI进程代表深度学习算法的主进程在主计算节点完成任务分配,并将计算任务按序号分配给从计算节点,在各个计算节点完成任务后,计算结果按序号顺序从最底层一直向上传输,最终传递到主进程中;主进程基于自动驾驶算法的功能需求将计算结果传递给相应的外接设备;
在AI计算芯片中部署深度学习算法运行所需要的环境,其中包括:基于Linux内核的操作系统、Python3编程语言运行环境、安装opencv、安装mingw libpython、安装theano、安装tensorflow-gpu、安装sklearn、安装matplotlib、安装keras;
深度学习的架构分为三个部分:shell脚本、python端和C++端;其中shell脚本是启动运行的入口,负责解析参数,确认并且调用训练程序;python是用户的接口,引入C++库,封装了API,负责运行时和底层C++交互;C++实现底层训练逻辑;
基于MPI协议的shell脚本,用于监测控制主计算节点和从计算节点的数量,该脚本是基于python语言编写的,目的是为了给每个计算节点部署并行计算的接口;深度学习算法能调用这些接口,控制算法的运行和终止,并传输数据;MPI协议是基于以太网通讯的并行计算框架;shell脚本中每个函数的功能及变量描述如下:
函数‘process count per node’用于定义一个进程需要在几个节点上运行,函数‘node count’用于定义当前计算节点MPI进程的数量,通过函数‘process count pernode’以及函数‘node count’定义一个用于配置参数信息的对象‘MpiConfiguration’;该对象主要包含MPI进程的基础信息,深度学习算法通过调用该对象获得本地节点MPI进程的基本信息;函数‘get myMAC’用于获取芯片的物理地址,并将该物理地址信息添加到对象‘MpiConfiguration’中;
该脚本还需要声明一部分环境变量,这些环境变量声明了主节点的身份信息和通讯地址,并将本地节点的运行状态进行声明,基于这些环境变量,MPI进程之间能够互相通讯并得到其他进程的运行状态;为计算节点执行的进程创建以下环境变量:MPI_num:该计算节点的身份编号;MPI_MS:主从节点身份识别;MPI MASTER:主计算节点身份编号;MPI MASTERHOST:主计算节点通讯地址;MPI SLAVE HOST:从计算节点通讯地址;MPI MASTER STATE:主计算节点运行状态;MPI LOCAL TE:本地进程运行状态;
函数‘run_state’用于对输入本地节点的数据流进行预处理,采用基于压缩矩阵的数据压缩算法,通过在每个节点中部署数据处理矩阵,传递数据中的特征数据而不是所有数据,特征数据在本地通过函数函数‘run_state’进行数据增强,从而达到数据在节点之间快速传递的目的;函数‘run_state’处理后的数据会保存到Linux系统的根目录下,以便深度学习算法调用;
函数‘distributed.init_process_group’用于在各个计算节点创建进程,在主计算节点上创建MPI进程总线,在从计算节点上创建MPI从进程;就像是树干和枝叶的关系,通过进程总线,各个从计算节点的进程能够互相交互;在此基础上函数‘init method’用于调取各个节点的环境变量和对象‘MpiConfiguration’,将所有节点的信息保存到矩阵变量中,并在MPI进程总线上进行广播,使每个节点都能够得到其他节点的信息;
在分布式训练的场景中,首先,在一次分布式训练,模型会被部署到多个从计算节点上,一旦准备好训练数据,分割任务即是将数据分割切片,模型的每个实例都对部分数据起作用;在主计算节点上创建MPI进程总线后,深度学习算法通过调用‘MpiConfiguration’得到MPI进程的基本信息,从而将数据切片保存到各从计算节点;之后每个从计算节点在不同批次的训练数据上训练模型的副本,即执行分布式前向计算及反向计算;其中,前向计算将分别在不同的从计算节点上基于其分配到的数据切片来进行,按顺序从输入层到输出层计算和存储神经网络中每层的结果作为中间值,得出单批次数据样本的损失项并最终计算目标函数;反向计算时,按相反的顺序从输出层到输入层遍历网络,结合目标函数得到权重和偏置项的梯度;反向计算时将重复利用前向计算中存储的中间值,且分布式训练中能保留更多的中间值,意味着能使用更大的批量,训练更深层次的网络或者避免训练过程中的内存不足;之后,从计算节点交换数据并进行梯度同步的第一个阶段;从计算节点排列在一个逻辑环中,即每个从计算节点有一个左邻居和一个右邻居;它只会向其右邻居发送梯度数据,并从其左邻居接收梯度数据组成梯度的张量;从首先完成梯度计算的第i个从计算节点开始,即第i个从计算节点将计算得到的梯度和接收的第i-1个梯度的张量组成第i个梯度的张量并发送给第i+1个从计算节点,如此循环向后进行;基于此,每个从计算节点将在迭代完成后得到最终值的一部分,且其中一些梯度的张量是最终值,其包括所有从计算节点的贡献;之后,含有最终值的从计算节点向主计算节点传递梯度,主计算节点收到梯度后,将执行一定的计算,返还给该从计算节点,得到更新后的梯度;在接下来的迭代中,梯度同步第一阶段的过程将继续进行,不同的是,第二阶段中梯度同步的起点是接收到更新后的梯度的从计算节点;最后,每个从计算节点将具有更新后的梯度;即梯度的同步、传递、更新完成,节点将进行下一批次的训练;
通过使用多个进程,利用不同的数据同步地训练相同结构的模型,在每个进程计算好梯度后,就涉及到一个梯度同步的问题;每个计算节点都根据自己的数据计算梯度,为了把自己得到的梯度也能作用于其他的进程;引入一个主从计算节点的概念,所有的参数都存储在主计算节点中,而从节点只进行模型训练并计算出下降梯度,不进行梯度的更新;从节点计算出下降梯度,并且把计算好的梯度发送给主计算节点;主计算节点收到梯度后,执行一定的计算后,更新到从计算节点上;从计算节点会再进行下一轮的前后向计算;
在模型初始化的时候,保证每个进程的模型训练参数是一致的,在后续的迭代计算中,训练参数会一直保持一致,因为梯度信息是一致的;
‘RingALLReduce’是MPI的端到端通信原语,分为两个阶段,第一个阶段‘MPIReduceScatter’,是将计算分配给不同的进程;第二个阶段‘MPI ALLGather’,将计算结果聚合到整个进程;
‘ompi_coll_base_reduce_scatter_intra_ring’是深度学习算法所使用的主体程序,使用‘ompi_coll_base_reduce_scatter_intra_ring’通过N-1步训练,其中N为完成一个训练过程需要的步长,能实现‘MPI_ReduceScatter’的功能;其中每步中每个进程的上下行通信量都是M/N;其中M是数据的长度,即shell脚本中函数‘run_state’处理后保存在根目录的数据的长度,N是进程的数量;数据会被分为N等分,每次通信量是M/N;
第二个阶段实现一共需要N-1步,其中N为完成一个训练过程需要的步长;在第i步即第i个节点的时候,节点的shell脚本声明环境变量‘MPI_num’的值为r的‘Rank r’进程会收到来自相邻计算节点r-1进程的信息,这一信息中包括r-i-1进程的数据;同时,r进程会给r+1进程发送包含r-i进程的数据;每个进程的上下行通信量同样是M/N。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210313990.9A CN114841345B (zh) | 2022-03-28 | 2022-03-28 | 一种基于深度学习算法的分布式计算平台及其应用 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210313990.9A CN114841345B (zh) | 2022-03-28 | 2022-03-28 | 一种基于深度学习算法的分布式计算平台及其应用 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114841345A CN114841345A (zh) | 2022-08-02 |
CN114841345B true CN114841345B (zh) | 2023-06-16 |
Family
ID=82564417
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210313990.9A Active CN114841345B (zh) | 2022-03-28 | 2022-03-28 | 一种基于深度学习算法的分布式计算平台及其应用 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114841345B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115249074B (zh) * | 2022-07-28 | 2023-04-14 | 上海光之树科技有限公司 | 基于Spark集群和Ring-AllReduce架构的分布式联邦学习方法 |
CN115827261B (zh) * | 2023-01-10 | 2023-05-19 | 北京燧原智能科技有限公司 | 基于分布式网络的数据同步方法、装置、服务器及介质 |
US11897357B1 (en) | 2023-03-31 | 2024-02-13 | Mercedes-Benz Group AG | Scheduling system and method for distributed and unreliable electric vehicle nodes for compute workloads |
CN116739090B (zh) * | 2023-05-12 | 2023-11-28 | 北京大学 | 基于Web浏览器的深度神经网络推理度量方法和装置 |
CN118396048B (zh) * | 2024-06-28 | 2024-09-20 | 山东海量信息技术研究院 | 分布式训练系统、方法及设备、介质和计算机程序产品 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108881446A (zh) * | 2018-06-22 | 2018-11-23 | 深源恒际科技有限公司 | 一种基于深度学习的人工智能平台系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105224922B (zh) * | 2015-09-18 | 2018-10-16 | 桂林远望智能通信科技有限公司 | 一种人车分类视频流式处理系统及方法 |
CN108804973B (zh) * | 2017-04-27 | 2021-11-09 | 深圳鲲云信息科技有限公司 | 基于深度学习的目标检测算法的硬件架构及其执行方法 |
CN107085743A (zh) * | 2017-05-18 | 2017-08-22 | 郑州云海信息技术有限公司 | 一种基于国产众核处理器的深度学习算法实现方法与平台 |
CN112434785B (zh) * | 2020-10-22 | 2023-04-14 | 西安交通大学 | 一种面向超级计算机的分布式并行深度神经网络性能评测方法 |
CN112364897B (zh) * | 2020-10-27 | 2024-05-28 | 曙光信息产业(北京)有限公司 | 分布式训练方法及装置、存储介质及电子设备 |
CN113343764A (zh) * | 2021-05-10 | 2021-09-03 | 武汉理工大学 | 一种基于级联式网络架构的驾驶员分心检测方法及系统 |
-
2022
- 2022-03-28 CN CN202210313990.9A patent/CN114841345B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108881446A (zh) * | 2018-06-22 | 2018-11-23 | 深源恒际科技有限公司 | 一种基于深度学习的人工智能平台系统 |
Also Published As
Publication number | Publication date |
---|---|
CN114841345A (zh) | 2022-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114841345B (zh) | 一种基于深度学习算法的分布式计算平台及其应用 | |
WO2020181896A1 (zh) | 一种多智能体强化学习调度方法、系统及电子设备 | |
CN104636204B (zh) | 一种任务调度方法与装置 | |
CN112181382B (zh) | 一种基于软件定义的工业智能控制系统 | |
CN113282368B (zh) | 一种用于变电站巡视的边缘计算资源调度方法 | |
US20220129302A1 (en) | Data processing system and method for heterogeneous architecture | |
CN110266771B (zh) | 分布式智能节点及分布式群体智能统部署方法 | |
CN103279390B (zh) | 一种面向小作业优化的并行处理系统 | |
Tang et al. | A container based edge offloading framework for autonomous driving | |
Hu et al. | Software-defined edge computing (SDEC): Principle, open IoT system architecture, applications, and challenges | |
CN105045658A (zh) | 一种利用多核嵌入式dsp实现动态任务调度分发的方法 | |
Ali et al. | A cost and energy efficient task scheduling technique to offload microservices based applications in mobile cloud computing | |
CN110297670B (zh) | 一种提高容器云上分布式任务训练效率的方法及系统 | |
Song et al. | Gaia scheduler: A kubernetes-based scheduler framework | |
CN111897654A (zh) | 将应用迁移到云平台的方法、装置、电子设备和存储介质 | |
WO2022139865A1 (en) | User context migration based on computation graph in artificial intelligence application executing in edge computing environment | |
CN104050043A (zh) | 基于共享缓存感知的虚拟机调度方法和装置 | |
CN110083454B (zh) | 一种带有量子计算机的混合云服务编排方法 | |
CN106681820A (zh) | 基于消息组合的可扩展大数据计算方法 | |
Hu et al. | Software-defined edge computing (SDEC): Principles, open system architecture and challenges | |
CN111309488A (zh) | 无人机集群的计算资源共享方法与系统及计算机存储介质 | |
CN109976894B (zh) | 一种平台无关的可扩展的分布式系统任务调度支撑框架 | |
Sun et al. | Harmonizing artificial intelligence with radio access networks: Advances, case study, and open issues | |
CN104360962B (zh) | 匹配于高性能计算机结构的多级嵌套数据传输方法与系统 | |
Khalili et al. | GAJEL-DSDN: an intelligent hybrid genetic-Jaya-based switch migration algorithm for efficient load balancing in distributed SDNs |
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 |