基于中央数据池的遥感信息提取模型分布式训练方法

文档序号:34842443发布日期:2023-07-21 19:07阅读:43来源:国知局
基于中央数据池的遥感信息提取模型分布式训练方法

本发明涉及数据训练,具体涉及基于中央数据池的遥感信息提取模型分布式训练方法。


背景技术:

1、遥感影像提取在气象、智慧城市、军事等领域具有广泛的应用。近年来,随着高分辨率和宽覆盖成像等遥感技术的不断进步和发展,遥感卫星使用频率越来越高的同时,遥感影像的数据量也在急剧地升,单幅能有gb级别的大小,整轨数据量甚至突破百gb乃至tb级别,这在给应用领域带来大量数据的同时也加大了处理难度。事实上,在使用单机训练遥感影像提取模型时,大规模训练集和高复杂度模型通常不能被完整的存储,而且其训练时间也令人无法忍受。例如把tb级以上的遥感数据放在一台计算机上,以目前的数据传输技术和计算机性能,模型的训练进度将非常迟缓,这时通常会对整体数据进行分配。又比如深度学习模型在训练过程中会产生大量的矩阵运算,运算的结果和中间值通常保存在内存或者显存当中,而有些深度学神经网络参数量过多,那么cnn层权值矩阵所占用的存储空间可能将会超过单个gpu显存的容量。这时需要将cnn层的超大矩阵做分块处理,可将其拆分到不同的显卡上进行协同计算。故而,多节点多显卡协同并行训练的分布式技术在深度学习网络训练中地应用显得尤为重要。

2、tensorflow作为工业化背景最成熟的深度学习框架,自其被推出以来凭借着谷歌公司强劲的科技实力背景以及其本身较为稳定的性能和较为完善的功能等特点,一直统治着人工智能领域深度学习框架市场,受到了各种开源团队的推崇与维护,现已更新至2.11版本。以tensorflow技术为基础研究遥感影像信息分布式提取具有重要的价值意义。

3、tensorflow是一个基于数据流编程(dataflow programming)的符号数学系统,顾名思义,它的核心要义是令张量(tensor)流动起来。tensorflow也是一个设计用于快速执行数值计算和并行自动化的库,并行化是由其智能执行引擎自动实现的,通常无需做很大的调整,自动实现的并行化效果就很好,支持在一个或多个cpu和gpu中执行和部署并行代码。此外,tensorflow像theano那样创建数学表达式,但不将表达式编译成机器码,而是在使用c++编写的外部引擎中执行他们,从本质上来讲,在程序没有执行时,它是一个静态图,当程序启动并有数据输入时,其成为数据流图。tensorflow使用数据流图进行数值计算,图中的每个节点代表数学运算,节点之间的边代表其中传递的多维数组,使用之前需提前定义好静态图,这种计算模式促使tensorflow拥有了移植性强、生态完善、性能最优的特点,它灵活的架构让开发者们在多种平台开展计算任务。更进一步的:tensorflow原生的分布式训练框架在对神经网络进行训练时,各节点会将全部训练数据加载至计算节点,这虽然从一定程度上减少了训练数据传输的时间延迟,加快了训练速度,但给计算节点带来了沉重的内存负担,限制了其处理大规模数据的能力。

4、现有的tensorflow分布式深度学习框架,使用grpc作为跨主机通信层的具体方法,同时通过nvidia的nccl来实现基于同步环形梯度更新的全规约算法。(1)grpc:rpc远端服务的思想或者形式在分布式系统中有着广泛的应用,其性能对分布式训练中各个节点之间的通信有着至关重要的作用。通常rpc实现多基于xml、json序列化或http等传输协议。grpc是一种特殊的rpc协议框架,具有跨语言跨平台的特点,其数据报文基于http2.0协议标准而自定义设计的,可以支持双向流、头部压缩、多复用请求等特性。(2)数据分配:在多节点分布式训练中,需要对数据集进行分片以确保模型的收敛性和可重现性。基于远程调用的数据集分片如图1所示,假设集群中有4个计算节点,每个计算节点配备4块显卡,每个计算节点都分配有一个代表完整数据集的数据副本,每批次训练数据长度为l,当训练至当前批次数据时将该批次数据平分至所有节点,即每个节点分得l/4长度的数据,又因为节点内每个线程负责各自负责一块gpu训练,所以节点内将l/4的数据再分至每个线程,每个线程相对当前批次数据长度的l/16。单个节点内的各gpu将各自负责的训练数据利用其中模型前向反向传播后,得到4份模型更新参数梯度,然后在cpu求和并平均。最后,集群内的各个节点通过全规约算法完成模型参数的接收和更新。计算集群在使用原始tensorflow分布式框架进行深度学习训练时,完全的训练数据副本会被各个计算节点中的训练进程重复调用至各自内存中,训练副本大小的极限取决于各计算节点的内存容量,而计算机的内存通常比较昂贵,其容量有限。此时,这种具有明显冗余数据的训练方法会限制模型训练集规模,从而造成神经网络模型整体得不到充分学习以至于性能较差的后果。

5、因此,提供一种通过对数据分片并控制进程动态对从磁盘加载数据至内存的方式解决分布式训练框架各进程占用的内存资源过多的问题,提升分布式训练算法的空间效率的基于中央数据池的遥感信息提取模型分布式训练方法,已是一个值得研究的问题。


技术实现思路

1、本发明的目的是提供一种通过对数据分片并控制进程动态对从磁盘加载数据至内存的方式解决分布式训练框架各进程占用的内存资源过多的问题,提升分布式训练算法的空间效率的基于中央数据池的遥感信息提取模型分布式训练方法,本发明弃用tensorflow的分布式训练方法,使用horovod分布式训练框架对tensorflow单机程序进行ring-all-reduce同步梯度更新全归约分布式训练,同时结合mpi跨主机通信技术和lmdb数据库数据映射技术,设计了基于构建中央数据池的数据加载优化算法,通过对数据分片并控制进程动态对从磁盘加载数据至内存的方式解决分布式训练框架各进程占用的内存资源过多的问题,提升分布式训练算法的空间效率。

2、本发明的目的是这样实现的:

3、基于中央数据池的遥感信息提取模型分布式训练方法,包括以下步骤:

4、步骤s1、建立lmdb数据集:引入lmdb数据进行分布式深度学习模型训练,其中lmdb数据为原始数据并通过lmdb数据库原语制作而成,为数据并行提供数据源;

5、步骤s2、生成数据块指针集:基于s1步骤建立的lmdb数据集,通过基于构建中央数据池的数据切分方法在训练初始化时对其进行实时切割,生成供网络训练的数据块指针集,为朴素分布式训练提供训练数据地址;

6、步骤s3、进行朴素分布式训练:基于s2步骤生成的数据块指针集,通过中央数据池数据加载方法将训练数据从磁盘映射至内存,而后集群据此映射数据对模型进行朴素梯度下降情况下的多机分布式深度学习训练。

7、所述步骤s1的具体步骤如下:将图像数据裁剪至多个小块数据并对其进行标准化,然后使用原语操作对所述每块数据进行编号并通过set<key,value>键值对的关系给每块数据赋予唯一的地址值,数据块(value)和地址值(key)呈现出一一对应的关系,最终得到整个数据集,每个set变量构成单个数据块实体,数据集整体即为set集合;

8、set集合:{set1,set2,……setn-1,setn},其中n代表第n块数据的编号。所述步骤s2的具体步骤如下:基于s1步骤生成的set集合,抽取set集合中的key值,形成key值集合,然后将其随机打乱,构成乱序key值集合,乱序数据有效提升模型的训练精度;

9、乱序key集合:{key3,key1,key4,……keyn,keyn-1},其中n代表第n块数据的编号。

10、所述步骤s3的具体步骤如下:

11、步骤s3.1将训练样本数据从文件系统中映射至内存空间:基于步骤s2生成的乱序key值集合,设有方法getvalue(key)可以通过地址值获得数据块,则有getvalue(keyn)=dn,又有批训练样本集合其中xp指训练数据,yp指标签,m指显卡数量,p指当前样本数据块所在显卡的进程编号;

12、设置数据集迭代次数为n,小批量mini-batch的大小b,当前步长为s,全局步长step_per_epoch,步长计算为key集合长度除以批大小,即为len(keys)/b,进程号为rank,进程(gpu)总数为j,数据块指针地址(key)为pointer,训练过程和步骤如下所示:

13、首先cpu端初始化模型参数w;

14、对于每一次迭代中:

15、①每个gpu训练任务进程获得的数据块指针为pointer=rank+(j×s),然后通过getvalue(keyn)

16、即可获得对应样本;

17、②j块gpu进行并行训练;

18、③训练完毕后gpu在各自计算节点基于分得数据块内完成神经网络的前向后向传播,并通小批量随机梯度下降法完成梯度下降,最终得到模型更新后的参数w,其过程如下式所示:

19、

20、其中,ws-1代表上一步长的全局模型参数,drank表示当前步长模型变量的梯度,表示当前步长下rank号显卡进程所负责的模型更新参数;

21、步骤s3.2各gpu通过全规约通信架构完成模型参数更新:各gpu基于步骤s3.1的③步中的结果,通过全规约通信架构进行全局模型参数更新。

22、所述步骤s3.2中的全规约具体步骤如下:

23、①将模型参数等分为j个部分,j为gpu数量;

24、②scatter-reduce,gpu交换j-1次数据,使每个gpu可得到模型一部分的最终结果;

25、③all-gather,gpu将各自得到的部分最终结果再进行j-1次交换,最后所有gpu得到完整的最终结果;

26、④各gpu中存储参数进行平均,完成本次步长的模型参数更新。

27、本发明的有益效果是:本发明的分析方法在数据并行和通信方面的策略和原理,指出其在数据调用方面存在的瓶颈。然后以horovod高级并行框架为基础,参照mpi消息传递模型,为每个mpi进程绑定一块显卡,首先把随机打乱后的全部训练数据抽象化为一个为各进程(单个显卡)不断提供训练数据的中央数据池,同时结合lmdb数据库内存映射数据技术,并将数据池顺序划分成编号数据块,通过构建中央数据池和数据编号,重定义进程的数据读取传输过程,每个进程结合编号和当前训练批次数从中央数据池中取得与自己唯一匹配得数据进行训练,达到节约内存资源目的,实现了大规模数据下的多节点多显卡高效稳定计算。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1