CN113935476A - 深度学习数据集存取方法及系统、电子设备、存储介质 - Google Patents
深度学习数据集存取方法及系统、电子设备、存储介质 Download PDFInfo
- Publication number
- CN113935476A CN113935476A CN202111542576.7A CN202111542576A CN113935476A CN 113935476 A CN113935476 A CN 113935476A CN 202111542576 A CN202111542576 A CN 202111542576A CN 113935476 A CN113935476 A CN 113935476A
- Authority
- CN
- China
- Prior art keywords
- rgb
- memory layer
- index
- address space
- nonvolatile memory
- 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.)
- Pending
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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/51—Indexing; Data structures therefor; Storage structures
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Image Analysis (AREA)
Abstract
本发明公开了一种深度学习数据集存取方法及系统、电子设备、存储介质,所述方法基于存储架构实现,存储架构包括内存层、非易失性内存层和原始数据存储层,方法包括:将原始数据存储层的最初的图片解码成RGB或灰度图,重定义图片大小,以统一的尺寸写入非易失性内存层,并根据RGB或灰度图在非易失性内存层中的地址空间生成索引,将索引写入非易失性内存层;记录每个RGB或灰度图的索引,根据索引,得到每个RGB或灰度图的访问顺序,在DNN模型的每个epoch开始时对索引进行更新;根据访问顺序,利用更新后的索引依次将非易失性内存层中的RGB或灰度图读入内存层中,供DNN模型进行训练。本发明能够显著提高数据DNN图片数据集的读吞吐,进而提升模型的整体训练速度。
Description
技术领域
本申请涉及信息存取技术领域,尤其涉及一种深度学习数据集存取方法及系统、电子设备、存储介质。
背景技术
现有的大规模图像数据集存取框架主要包括早期端到端开源机器学习框架TensorFlow采用的基于TFRecord二进制存储格式的解决方案,MxNet采用的类似的RecordIO,目前使用最广泛的开源机器学习框架PyTorch设计的DataLoader模块,以及微软提出的CoorDL。这些框架的共性是都是面向传统块设备研发的。
PyTorch是一个Torch7团队开源的Python有限的深度学习框架,提供了强大的GPU加速Tensor计算,并构建了基于tape的自动升级系统上的深度神经网络,详情可见官网https://pytorch.org。PyTorch框架中由DataLoader模块负责读取数据,并将输入加载入DNN模型。
PyTorch中的DataLoader本质上是一个基于某一数据集的可迭代的对象。它由数据集Dataset和采样器Sampler组成。数据集中定义了样本范围,维护每个样本的元数据,比如图片的路径,并实现了每个样本的读取方式,比如使用matplotlib.image库中提供的imread函数来根据图片路径进行读取。Dataset是一个抽象类,具体细节需要开发者自己实现。采样器则决定了样本的访问顺序,可以选择顺序读取、随机读取或者随机可重复读取,一般情况下选用的都是随机读取,即RandomSampler。最终由DataLoader将整个数据集分成若干小且随机的batch,在每次迭代中通过内部的yield返回,将图片和标签加载到模型中进行训练。DataLoader是构建于传统ext4等文件系统之上的数据加载器,数据读取的性能取决于底层所使用的操作系统。
TensorFlow由谷歌人工智能团队谷歌大脑开发和维护,其前身为谷歌的神经网络算法库DistBelief,同样被应用于广大机器学习算法的编程实现,详情可见官网https://www.tensorflow.org。TensorFlow框架为自己量身打造了TFRecord格式进行数据存储与读取。
TFRecord是一种统一的二进制格式,理论上可以保存任何格式的信息,即开发者可以将任意的数据转换为TFRecord的格式。整个TFRecord文件由文件长度信息,长度校验码,数据及数据校验码组成。与PyTorch不同,TFRecord并非一个样本对应一个文件,TensorFlow会首先对所有的小图片文件进行shuffle,然后将它们整合序列化为一系列二进制文件,通过这样一种方式将对磁盘的随机读转换为顺序读,更便于网络流式读取数据。
MxNet是亚马逊选择的深度学习库,也是最优秀的库之一。它拥有和TensorFlow类似的数据流图,同样可以在多GPU配置上实现良好的扩展,并且可以在任何硬件上运行,详情可见官网https://mxnet.apache.org。MxNet采用的也适合TFRecord类似的二进制存储格式,由recordio模块负责。
开发者在使用MxNet时,首先将数据集转换成ImageRecord的数据局存储格式,然后在读取数据时利用MxNet提供的mx.recordio模块对ImageRecord文件进行操作,使用多进程来加载数据,提高训练效率。MxNet同时支持顺序读写及随机读写,分别由MXRecordIO和MXIndexedRecordIO这两个子模块来实现。同样地,MxNet支持将任意类型,包括图片在内的数据转换成二进制格式来进行保存,还额外提供了用于打包和解压数据的工具。
CoorDL是微软和德州大学联合开发的数据加载库。设计方案于《Analyzing andMitigating Data Stalls in DNN Training》一文中公开,发表于会议VLDB’21中。
CoorDL针对DNN随机访问且每个样本在每个epoch只会被访问一次的特点,设计固定缓存策略,即当缓存打满后,不再进行缓存的替换,从而将缓存命中率稳定在缓存百分比,提高了缓存命中率的下限,进而提高系统吞吐量。另外,CoorDL在内存中开辟了一块共享空间,超参数搜索中同一个DNN模型的多个超参数配置作业可以共享预处理数据,减少了预处理次数,从而加快预处理过程。CoorDL在一定程度上缓解了DNN训练中数据读取和数据预处理的瓶颈。
在实现本发明的过程中,发明人发现现有技术中至少存在如下问题:
数据集读取阶段效率低下,吞吐量小,由于木桶效应,该阶段将成为DNN训练作业中的瓶颈,GPU总是要等待数据加载完成才能继续下一轮的训练,这部分无意义的闲置时间将影响整个训练作业的性能。
发明内容
本申请实施例的目的是提供一种深度学习数据集存取方法及系统、电子设备、存储介质,以提高系统整体吞吐量,有效缓解深度学习作业中的数据读取瓶颈,进而提高深度学习作业的训练速率。
根据本申请实施例的第一方面,提供一种深度学习数据集存取方法,所述方法基于存储架构实现,所述存储架构包括:
内存层,所述内存层用于存储DNN模型输入;
非易失性内存层,所述非易失性内存层用于存储经过解码的、可直接作为DNN模型输入的RGB或灰度图,存储每个RGB或灰度图的索引,所述索引用于定位RGB或灰度图所在地址空间;
原始数据存储层,所述原始数据存储层用于保存最初的图片;
所述深度学习数据集存取方法,包括:
将原始数据存储层的最初的图片解码成RGB或灰度图,重定义图片大小,以统一的尺寸写入所述非易失性内存层,并根据RGB或灰度图在非易失性内存层中的地址空间生成索引,将所述索引写入所述非易失性内存层;
记录每个RGB或灰度图的索引,根据所述索引,得到每个RGB或灰度图的访问顺序,在DNN模型的每个epoch开始时对所述索引进行更新;
根据所述访问顺序,利用更新后的所述索引依次将非易失性内存层中的RGB或灰度图读入内存层中,供DNN模型进行训练。
可选地,将非易失性内存层中的RGB或灰度图读入内存,包括以下读取方式:
(1)通过CPU将RGB或灰度图从非易失性内存层中的地址空间复制到所述内存层中的地址空间;
(2)CPU只负责向DMA控制器有关寄存器赋值,触发数据传输,然后由DMA控制器将RGB或灰度图从非易失性内存层中的地址空间复制到所述内存层中的地址空间。
可选地,还包括用于对读取方式进行选择,选择规则如下:
分别计算当前负载环境下CPU将RGB或灰度图从非易失性内存层中的地址空间复
制到所述内存层中的地址空间所需要的时间和DMA控制器将RGB或灰度图从非易失性内
存层中的地址空间复制到所述内存层中的地址空间所需要的时间,若,采用(2)的
读取方式,若,同时使用(1)和(2)的读取方式。
可选地,重定义图片大小,以统一的尺寸写入所述非易失性内存层,包括:
计算所有RGB或灰度图的平均长度m和平均宽度n,根据计算结果,确定存入非易失内存层的RGB或灰度图大小为m×n;
采用双线性插值将所有RGB或灰度图缩放到m×n的大小;
将缩放后的图片写入非易失性内存层。
可选地,在DNN模型的每个epoch开始时对所述索引进行更新,包括:
在DNN模型的每个epoch开始时对所述索引进行shuffle操作,以更新所述索引。
根据本申请实施例的第二方面,提供一种深度学习数据集存取系统,所述系统基于存储架构实现,所述存储架构包括:
内存层,所述内存层用于存储DNN模型输入;
非易失性内存层,所述非易失性内存层用于存储经过解码的、可直接作为DNN模型输入的RGB或灰度图,存储每个RGB或灰度图的索引,所述索引用于定位RGB或灰度图所在地址空间;
原始数据存储层,所述原始数据存储层用于保存最初的图片;
所述系统,包括:
加载模块,用于将原始数据存储层的最初的图片解码成RGB或灰度图,重定义图片大小,以统一的尺寸写入所述非易失性内存层,并根据RGB或灰度图在非易失性内存层中的地址空间生成索引,将所述索引写入所述非易失性内存层;
索引模块,用于记录每个RGB或灰度图的索引,根据所述索引,得到每个RGB或灰度图的访问顺序,在DNN模型的每个epoch开始时对所述索引进行更新;
读取模块,用于根据所述访问顺序,利用更新后的所述索引依次将非易失性内存层中的RGB或灰度图读入内存层中,供DNN模型进行训练。
根据本申请实施例的第三方面,提供一种电子设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的方法。
根据本申请实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面所述方法的步骤。
本申请的实施例提供的技术方案可以包括以下有益效果:
由上述实施例可知,本申请在存储构架上,引入NVM后,解决了传统磁盘低吞吐高时延的问题,提高了数据读取的并行度,不同存储层间的数据迁移变得更加高效。本发明实施例提供的方法绕过内核,省去了用户态和内核态的切换开销、数据拷贝的开销,单位时间内可读取的数据量得到提高。原始RGB或灰度图的存储格式省去了解码的昂贵开销,也对数据读取有一定的加速作用。本申请通过软硬件协同设计,有效提高了系统的吞吐率。数据读取效率提高后,将有效缓解预读阶段的瓶颈,减少CPU、GPU等资源的等待时间,达到加速DNN训练的最终目的。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1是根据一示例性实施例示出的存储架构的框图。
图2是根据一示例性实施例示出的一种深度学习数据集存取方法的流程图。
图3是根据一示例性实施例示出的一种深度学习数据集存取系统的框图。
图4是根据一示例性实施例示出的一种电子设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
针对现有数据集读取阶段效率低下,吞吐量小,由于木桶效应,该阶段将成为深度神经网络(DNN)训练作业中的瓶颈,图形处理器(GPU)总是要等待数据加载完成才能继续下一轮的训练,这部分无意义的闲置时间将影响整个训练作业的性能。主要原因如下:
(1)块设备的局限性。上述框架都是针对传统固态硬盘(SSD)、硬盘驱动器(HDD)等块设备设计的,然而DNN训练存在大量的随机小读,空间局部性低,与以“块”为单位的寻址模式并不匹配,会存在读放大的问题,造成部分读带宽的浪费。传统块设备本身也存在着高延迟、低吞吐的问题,无法满足DNN训练的高性能需求。
(2)内存的局限性。动态随机存取存储器(DRAM)容量远小于大规模数据集的大小,内存中无法同时缓存下整个数据集。随机读取且每个样本只读一次的数据访问模式与传统最近最少使用算法(LRU)相违背,大部分情况下缓存将失效,导致频繁的磁盘和内存之间的数据交换。TFRecord虽然可以通过格式转换将随机读改为更高效的顺序读,但依旧与LRU不匹配,导致低缓存命中率。CoorDL通过设计合理的缓存替换算法减少了数据的换入,却依然无法解决硬件上的固有性能瓶颈。
(3)通用操作系统的局限性。上述框架在存取数据时使用的都是操作系统默认的文件系统,比如Windows系统下的文件配置表(FAT)或者Linux系统下的ext4。这类文件系统是为通用计算机而非DNN训练设计专门设计的,I/O路径复杂,内核开销极大,涉及内核态和用户态的切换开销,以及额外的数据拷贝开销,浪费大量的CPU周期。另外,传统文件系统往往以树的结构来管理文件,随着文件目录层数增加,访问会越来约慢,对于DNN数据集这种元数据密集型,由大量小文件组成的数据,树形结构并不是最优的管理方法,会有较大的文件索引开销。
(4)CPU的局限性。在DNN训练中,除了数据搬运外,CPU还负责对数据进行预处理,包括解码、数据增强(例如翻转、旋转、变色、裁剪、变形)、重定义图像尺寸等工作。当CPU资源稀缺,训练负载较重时,任务之间会互相影响,延长整体的CPU处理时间。
(5)额外的数据处理开销。除TensorFlow和MxNet之外,上述框架都将数据存储为JPEG、PNG等格式的单独图片文件,因而还需要额外的解码开销,将图片文件恢复成可作为神经网络输入的RGB或灰度图模型。TensorFlow和MxNet采用自定义的文件格式,虽然在读取数据的过程中不涉及解码,但有额外的将图片转换成框架自定义的二进制存储格式的开销,也给开发者带来使用上的难度。
本发明实施例提供的一种深度学习数据集存取方法,所述方法基于存储架构实现,下面先介绍一下存储架构,图1是根据一示例性实施例示出的存储架构的框图,该存储架构包括:内存层、非易失性内存层和原始数据存储层。
所述内存层用于存储DNN模型输入;所述内存层为DRAM,DRAM内存储DNN模型输入,也就是深度学习数据集,在深度学习训练作业中,数据读取的耗时占比为10%-70%,随着GPU处理器的发展,这一占比会进一步提高,使得磁盘I/O逐渐成为最大的瓶颈。面对这一问题,最好的解决方法便是引入内存计算,将计算数据都放入内存中,减少将数据从磁盘搬运到内存的过程,进而消除磁盘I/O的瓶颈。但是,DRAM是有限的,而深度学习数据集和模型规模都在不断地膨胀,光是存储数据集便需要上百GB甚至一个TB,遑论模型训练中产生的大量的中间数据及最终的参数结果。一味地增大内存容量治标不治本,且价格过于昂贵。因此,本发明实施例引入了非易失性内存(NVM)作为后台持久性存储介质。
所述非易失性内存层用于存储经过解码的、可直接作为DNN模型输入的RGB或灰度图,存储每个RGB或灰度图的索引,所述索引用于定位RGB或灰度图所在地址空间;所述非易失性内存层就是采用上述的非易失性内存NVM,在内存计算场景下,NVM具有以下优势:第一,NVM有着比NAND Flash SSD更好的吞吐和延迟,I/O性能是SSD的一百倍以上;第二,NVM的存储密度比DRAM更大,在同等面积/内存插槽的情况下,能够给多核环境下的CPU提供更多的数据,即具有比DRAM更大的容量。可见,NVM可以完美地解决磁盘I/O慢和内存容量不足这两个燃眉之急。非易失内存主要分为两类,第一类是兼容传统主存控制器的非易失主存,可以直接替换传统的DRAM内存或者两者同时使用构成混合主存;第二类是连接在I/O总线上的存储级内存,是介于DRAM主存和HDD外存之间的存储层次。本发明实施例采用第二类非易失性内存,将NVM看成一种I/O设备。
所述原始数据存储层用于保存最初的图片;所述原始数据存储层为磁盘等,最初的图片将以传统JPEG、PNG等图片文件格式存储在磁盘中。
图2是根据一示例性实施例示出的一种深度学习数据集存取方法的流程图,参考图2,所述深度学习数据集存取方法,可以包括以下步骤:
步骤S11,将原始数据存储层的最初的图片解码成RGB或灰度图,重定义图片大小,以统一的尺寸写入所述非易失性内存层,并根据RGB或灰度图在非易失性内存层中的地址空间生成索引,将所述索引写入所述非易失性内存层;
具体地,在DNN中,需要经过多轮迭代训练,每一轮迭代被称为一个epoch,需要完整地访问一次数据集。在每一个epoch中,深度学习的数据访问模型遵循以下两个原则:①样本的读取顺序是唯一的;② 每个样本只会被读取一次。这种数据访问模式的目的是提高样本的随机性,进而保证模型最终的准确率。在传统的操作系统中,往往以块为单位来寻址,假设一个块的大小为4KB,那么每次访问一个图片文件时,读取的数据量都为4KB的倍数。然而,并不能保证每一个图片样本的大小都是4KB的倍数,当不能被整除时,就产生了读放大的问题。在DNN训练中,图片指的一般是位图,即用像素点表示的图,那么存储图片所需要的内存空间就与像素大小息息相关。神经网络一般将三通道的RGB模型或者单通道的灰度图模型作为输入。对于RGB模型,若是真彩色,一个像素需要24位来表示,即3个字节;对于灰度图,一个像素要求256种状态,需要1个字节。对于这类数据,字节是最基本的单位,而非易失性内存的一大特性恰恰便是以字节为单位进行寻址。利用这一天然特性,以RGB或灰度图的格式存储数据,可以很好地解决传统块设备中读放大的问题,不浪费多余的带宽。在数据读取的过程中,解码是最耗时的步骤,不以JPEG、PNG等格式来存储数据,而是直接将原始的RGB或灰度图以对象的形式持久化到非易失内存中,训练时可直接作为输入,省去解码的开销。
将原始数据存储层的最初的图片解码成RGB或灰度图,之后重定义图片大小,以统一的尺寸写入所述非易失性内存层,具体可以包括:(1)计算所有RGB或灰度图的平均长度m和平均宽度n,根据计算结果,确定存入非易失内存层的RGB或灰度图大小为m×n;(2)采用双线性插值将所有RGB或灰度图缩放到m×n的大小;(3)将缩放后的图片写入非易失性内存层。
图片写入非易失性内存层,可以知晓RGB或灰度图在非易失性内存层中的地址空间,根据RGB或灰度图在非易失性内存层中的地址空间生成索引,所述索引为数组结构的索引,地址空间连续,索引中的每个元素为RGB或灰度图在非易失内存中的地址空间。
为了降低实现的难度和代码的复杂度,本发明未使用libpmem、libpmempool等底层库,而是采用构建于这两个库之上的libpmemobj库,将数据写入NVM大致需要以下几个步骤:① pmemobj_create(),创建持久化内存池;② pmemobj_root(),得到持久化内存池的根节点;③ pmemobj_direct(),得到根节点的指针;④ pmemobj_persist() / pmemobj_memcpy_persist(),将数据持久化存储到非易失内存,前者持久化单变量,后者持久化数组等变量,另外还需要将根节点指针的len变量更新为数据大小,以便进行数据完整性的检验;⑤ pmemobj_close(),关闭内存池。
步骤S13,记录每个RGB或灰度图的索引,根据所述索引,得到每个RGB或灰度图的访问顺序,在DNN模型的每个epoch开始时对所述索引进行更新;
具体地,由于所述索引采用数组结构的索引,地址空间连续,索引中的每个元素为RGB或灰度图在非易失内存中的地址空间,遍历索引获得的地址顺序,即为RGB或灰度图的访问顺序。这样设计的好处在于,数组是一种可遍历的,对shuffle操作友好的数组结构,采用这种数据结构可将数据读取的复杂度降低为O(1)。
在DNN模型的每个epoch开始时对所述索引进行更新,具体可以包括:在DNN模型的每个epoch开始时对所述索引进行shuffle操作,以更新所述索引。其中shuffle操作采用的算法为:假设数组长度为l,遍历索引,对于每一个元素i,生成随机数z = rand() % (l -i),将元素i与元素i+z交换。
步骤S15,根据所述访问顺序,利用更新后的所述索引依次将非易失性内存层中的RGB或灰度图读入内存层中,供DNN模型进行训练。
具体地,遍历索引,依次获取下一个要训练的RGB或灰度图的地址空间,根据地址空间获取到对应RGB或灰度图的数据流,将数据流包装成Image对象,作为输入触发DNN模型的训练。
传统的操作系统为了保证通用性,以支持系统之上的各种应用程序,往往非常庞大,设计极其复杂,一个简单的I/O就会涉及文件系统、块设备层、SCSI层、PCI层以及磁盘,I/O栈之深可见一斑,而其中开销最大的,要属内核态。针对这一点,本发明实施例可使用PMDK直接访问非易失性内存,绕过内核,将图片读取的I/O栈缩减为三层:① 应用程序层。即以PyTorch为框架搭建的深度神经网络程序;② PMDK层。即位于用户态的NVM驱动;③NVM层。即3DXpoint等非易失性内存。其中应用程序层和PMDK层都位于用户态,NVM层为硬件层,完全不涉及内核态。将数据从NVM中读出则大致需要以下几个步骤:① pmemobj_open(),打开已完成持久化的文件;② pmemobj_root(),获取根节点;③ pmemobj_direct(),获取根节点的指针;④ 使用printf()等函数读取指针指向的数据段,在此之前需验证根节点指针指向的数据段长度是否与指针的len变量一致;⑤ pmemobj_close(),关闭内存池。这样设计的好处是可以省去用户态与内核态切换的昂贵开销,提高系统整体吞吐量。
由本发明实施例解码为RGB或灰度图并转存入非易失性内存,最终在深度学习模型训练过程中,将由NVM提供高速的数据I/O,将输入加载到内存完成内存计算。在大规模数据集中,图片样本数量可以达到成百上千万张,这就涉及到大量的数据搬运。在CPU核数较少时,若仅仅依赖CPU完成数据搬运工作,将会产生大量的中断负载,阻碍其他工作,比如预处理的执行。因此,本发明在直接存储器访问(DMA)和CPU之间做出权衡。即将非易失性内存层中的RGB或灰度图读入内存包括以下读取方式:
(1)通过CPU将RGB或灰度图从非易失性内存层中的地址空间复制到所述内存层中的地址空间;此种方式说明当前CPU负载较轻。
(2)CPU只负责向DMA控制器有关寄存器赋值,触发数据传输,然后由DMA控制器将RGB或灰度图从非易失性内存层中的地址空间复制到所述内存层中的地址空间。此种方式说明当前CPU负载较重,DMA效率将大于CPU的效率,使CPU专注于其他更急迫的工作。
进一步地,还包括用于对读取方式进行选择,选择规则如下:
分别计算当前负载环境下CPU将RGB或灰度图从非易失性内存层中的地址空间复
制到所述内存层中的地址空间所需要的时间和DMA控制器将RGB或灰度图从非易失性内
存层中的地址空间复制到所述内存层中的地址空间所需要的时间,若,采用(2)的
读取方式,若,同时使用(1)和(2)的读取方式。
由于NVM具有可字节寻址的特性,相较于传统的以“块”为单位的存储设备而言具有更小的寻址单位,故能有效减小读放大,磁盘和内存的带宽得到更充分的利用。引入DMA之后,能够将更多的CPU周期分配给预处理作业,CPU资源的使用更能落到实处。数据读取的瓶颈得到缓解,也将减少GPU的闲置时间,使得GPU资源得到更有效的利用。总而言之,本申请有效提高了磁盘、内存、CPU以及GPU的资源利用率。数据读取的整体开销减小,加上NVM大容量的优势,系统能更好地支持DNN模型及数据集的膨胀。通过均衡DMA和CPU,还可以良好地适应系统CPU核数及负载的变化,进而提高了系统的可扩展性。
由上述实施例可知,本申请在存储构架上,引入NVM后,解决了传统磁盘低吞吐高时延的问题,提高了数据读取的并行度,不同存储层间的数据迁移变得更加高效。本发明实施例提供的方法绕过内核,省去了用户态和内核态的切换开销、数据拷贝的开销,单位时间内可读取的数据量得到提高。原始RGB或灰度图的存储格式省去了解码的昂贵开销,也对数据读取有一定的加速作用。本申请通过软硬件协同设计,有效提高了系统的吞吐率。数据读取效率提高后,将有效缓解预读阶段的瓶颈,减少CPU、GPU等资源的等待时间,达到加速DNN训练的最终目的。
与前述的深度学习数据集存取方法的实施例相对应,本申请还提供了深度学习数据集存取系统的实施例。
图3是根据一示例性实施例示出的一种深度学习数据集存取系统框图。参照图3,该系统包括加载模块21、索引模块23和读取模块25。所述系统基于存储架构实现,所述存储架构在前面已经描述,这里不做赘述。所述系统,包括:
加载模块21,用于将原始数据存储层的最初的图片解码成RGB或灰度图,重定义图片大小,以统一的尺寸写入所述非易失性内存层,并根据RGB或灰度图在非易失性内存层中的地址空间生成索引,将所述索引写入所述非易失性内存层;
索引模块23,用于记录每个RGB或灰度图的索引,根据所述索引,得到每个RGB或灰度图的访问顺序,在DNN模型的每个epoch开始时对所述索引进行更新;
读取模块25,用于根据所述访问顺序,利用更新后的所述索引依次将非易失性内存层中的RGB或灰度图读入内存层中,供DNN模型进行训练。
关于上述实施例中的系统,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
对于系统实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
相应的,本申请还提供一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述的深度学习数据集存取方法。如图4所示,为本发明实施例提供的一种深度学习数据集存取系统所在任意具备数据处理能力的设备的一种硬件结构图,除了图4所示的处理器、内存、DMA控制器、磁盘、以及非易失内存之外,实施例中装置所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。
相应的,本申请还提供一种计算机可读存储介质,其上存储有计算机指令,其特征在于,该指令被处理器执行时实现如上述的深度学习数据集存取方法。所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是风力发电机的外部存储设备,例如所述设备上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、SD卡、闪存卡(Flash Card)等。进一步的,所述计算机可读存储介还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
本领域技术人员在考虑说明书及实践这里公开的内容后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (10)
1.一种深度学习数据集存取方法,其特征在于,所述方法基于存储架构实现,所述存储架构包括:
内存层,所述内存层用于存储DNN模型输入;
非易失性内存层,所述非易失性内存层用于存储经过解码的、可直接作为DNN模型输入的RGB或灰度图,存储每个RGB或灰度图的索引,所述索引用于定位RGB或灰度图所在地址空间;
原始数据存储层,所述原始数据存储层用于保存最初的图片;
所述深度学习数据集存取方法,包括:
将原始数据存储层的最初的图片解码成RGB或灰度图,重定义图片大小,以统一的尺寸写入所述非易失性内存层,并根据RGB或灰度图在非易失性内存层中的地址空间生成索引,将所述索引写入所述非易失性内存层;
记录每个RGB或灰度图的索引,根据所述索引,得到每个RGB或灰度图的访问顺序,在DNN模型的每个epoch开始时对所述索引进行更新;
根据所述访问顺序,利用更新后的所述索引依次将非易失性内存层中的RGB或灰度图读入内存层中,供DNN模型进行训练。
2.根据权利要求1所述的方法,其特征在于,将非易失性内存层中的RGB或灰度图读入内存,包括以下读取方式:
(1)通过CPU将RGB或灰度图从非易失性内存层中的地址空间复制到所述内存层中的地址空间;
(2)CPU只负责向DMA控制器有关寄存器赋值,触发数据传输,然后由DMA控制器将RGB或灰度图从非易失性内存层中的地址空间复制到所述内存层中的地址空间。
4.根据权利要求2所述的方法,其特征在于,重定义图片大小,以统一的尺寸写入所述非易失性内存层,包括:
计算所有RGB或灰度图的平均长度m和平均宽度n,根据计算结果,确定存入非易失内存层的RGB或灰度图大小为m×n;
采用双线性插值将所有RGB或灰度图缩放到m×n的大小;
将缩放后的图片写入非易失性内存层。
5.根据权利要求2所述的方法,其特征在于,在DNN模型的每个epoch开始时对所述索引进行更新,包括:
在DNN模型的每个epoch开始时对所述索引进行shuffle操作,以更新所述索引。
6.一种深度学习数据集存取系统,其特征在于,所述系统基于存储架构实现,所述存储架构包括:
内存层,所述内存层用于存储DNN模型输入;
非易失性内存层,所述非易失性内存层用于存储经过解码的、可直接作为DNN模型输入的RGB或灰度图,存储每个RGB或灰度图的索引,所述索引用于定位RGB或灰度图所在地址空间;
原始数据存储层,所述原始数据存储层用于保存最初的图片;
所述系统,包括:
加载模块,用于将原始数据存储层的最初的图片解码成RGB或灰度图,重定义图片大小,以统一的尺寸写入所述非易失性内存层,并根据RGB或灰度图在非易失性内存层中的地址空间生成索引,将所述索引写入所述非易失性内存层;
索引模块,用于记录每个RGB或灰度图的索引,根据所述索引,得到每个RGB或灰度图的访问顺序,在DNN模型的每个epoch开始时对所述索引进行更新;
读取模块,用于根据所述访问顺序,利用更新后的所述索引依次将非易失性内存层中的RGB或灰度图读入内存层中,供DNN模型进行训练。
7.根据权利要求6所述的系统,其特征在于,将非易失性内存层中的RGB或灰度图读入内存,包括以下读取方式:
(1)通过CPU将RGB或灰度图从非易失性内存层中的地址空间复制到所述内存层中的地址空间;
(2)CPU只负责向DMA控制器有关寄存器赋值,触发数据传输,然后由DMA控制器将RGB或灰度图从非易失性内存层中的地址空间复制到所述内存层中的地址空间。
9.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-5任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,该指令被处理器执行时实现如权利要求1-5中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111542576.7A CN113935476A (zh) | 2021-12-16 | 2021-12-16 | 深度学习数据集存取方法及系统、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111542576.7A CN113935476A (zh) | 2021-12-16 | 2021-12-16 | 深度学习数据集存取方法及系统、电子设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113935476A true CN113935476A (zh) | 2022-01-14 |
Family
ID=79289000
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111542576.7A Pending CN113935476A (zh) | 2021-12-16 | 2021-12-16 | 深度学习数据集存取方法及系统、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113935476A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107784121A (zh) * | 2017-11-18 | 2018-03-09 | 中国人民解放军国防科技大学 | 一种基于非易失内存的日志文件系统的小写优化方法 |
CN107967124A (zh) * | 2017-12-14 | 2018-04-27 | 南京云创大数据科技股份有限公司 | 一种分布式持久性内存存储系统及方法 |
CN111126619A (zh) * | 2019-12-06 | 2020-05-08 | 苏州浪潮智能科技有限公司 | 一种机器学习方法与装置 |
-
2021
- 2021-12-16 CN CN202111542576.7A patent/CN113935476A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107784121A (zh) * | 2017-11-18 | 2018-03-09 | 中国人民解放军国防科技大学 | 一种基于非易失内存的日志文件系统的小写优化方法 |
CN107967124A (zh) * | 2017-12-14 | 2018-04-27 | 南京云创大数据科技股份有限公司 | 一种分布式持久性内存存储系统及方法 |
CN111126619A (zh) * | 2019-12-06 | 2020-05-08 | 苏州浪潮智能科技有限公司 | 一种机器学习方法与装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110506260B (zh) | 用于神经网络环境中的增强数据处理的方法、系统和介质 | |
US20190220731A1 (en) | Indirectly accessing sample data to perform multi-convolution operations in a parallel processing system | |
JP6639420B2 (ja) | フラッシュ最適化データ・レイアウトのための方法、フラッシュ最適化記憶のための装置、およびコンピュータ・プログラム | |
US11669443B2 (en) | Data layout optimization on processing in memory architecture for executing neural network model | |
US20200342632A1 (en) | Efficient matrix format suitable for neural networks | |
US7911472B2 (en) | System for reducing the number of programs necessary to render an image | |
US9691118B2 (en) | System for optimizing graphics operations | |
US8044963B2 (en) | System for emulating graphics operations | |
KR20220054357A (ko) | 직렬 할당 데이터에 대해 pim(processing-in-memory) 연산을 수행하기 위한 방법, 및 관련 메모리 디바이스 및 시스템 | |
CN103336758B (zh) | 一种采用带有局部信息的压缩稀疏行的稀疏矩阵存储方法及基于该方法的SpMV实现方法 | |
US8704837B2 (en) | High-level program interface for graphics operations | |
US20200074707A1 (en) | Joint synthesis and placement of objects in scenes | |
US11455781B2 (en) | Data reading/writing method and system in 3D image processing, storage medium and terminal | |
US20240338871A1 (en) | Context-aware synthesis and placement of object instances | |
CN112241290A (zh) | 用于在并行处理单元中有效执行数据规约的技术 | |
US20200285618A1 (en) | Decompression techniques for processing compressed data suitable for artificial neural networks | |
US20190278574A1 (en) | Techniques for transforming serial program code into kernels for execution on a parallel processor | |
CN116401502B (zh) | 一种基于NUMA系统特性优化Winograd卷积的方法及装置 | |
CN115237599B (zh) | 一种渲染任务处理方法和装置 | |
US11513686B2 (en) | Techniques for dynamically compressing memory regions having a uniform value | |
CN116529775A (zh) | 用于光线追踪的合并函数调用的方法和装置 | |
CN111753824A (zh) | 使用神经网络翻译模型改进图像分割 | |
CN115836346A (zh) | 存内计算设备及其数据处理方法 | |
US12131775B2 (en) | Keeper-free volatile memory system | |
CN113935476A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20220114 |