CN113901007A - 一种面向ai训练的海量小文件分布式缓存方法 - Google Patents
一种面向ai训练的海量小文件分布式缓存方法 Download PDFInfo
- Publication number
- CN113901007A CN113901007A CN202111220222.0A CN202111220222A CN113901007A CN 113901007 A CN113901007 A CN 113901007A CN 202111220222 A CN202111220222 A CN 202111220222A CN 113901007 A CN113901007 A CN 113901007A
- Authority
- CN
- China
- Prior art keywords
- chunk
- training
- cache
- reading
- small file
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/154—Networked environment
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种面向AI训练的海量小文件分布式缓存方法,以实现海量小文件高性能分布式缓存。本发明首先对小文件按照拟合AI训练中Batch Size特征的规则合并为chunk;其次,分析chunk的缓存状态,对小文件序列进行双层shuffle操作;最后,在AI训练读取数据时,针对重复I/O采用Local Cache短路读取,并在Local Cache短路读取时机开启异步分组预读。本发明通过高效利用缓存解决面向AI训练的海量小文件随机读取难题,在面向AI训练的场景下,显著提升数据访问速率与缓存命中率,减少AI训练的迭代时间。
Description
技术领域
本发明面向智慧城市,对于人脸识别、视频查询、智能存储等场景,设计了一种面向AI训练的海量小文件分布式缓存方法,以实现海量小文件高性能分布式缓存。
背景技术
近年来,随着全球范围内社会经济与科学技术的高速发展,AI技术在安防领域的大规模落地与应用,强有力地助力了平安智慧城市发展。与此同时,平安智慧城市中诸如人脸识别、行人跨境追踪等场景对AI技术提出了挑战。通常AI训练任务需要的文件数量都在几百万甚至上千万的量级,例如Google OpenImages数据集包含900万个图像,Tencent ML-Images数据集包含近1,769万个图像。通常需要对百亿级规模的海量小文件进行缓存处理,然后采用ResNet50,ResNet101等大规模AI网络模型进行分布式训练。因此,针对海量小文件进行大规模AI训练是AI发展的重要趋势,而针对AI训练的海量小文件高性能分布式缓存方案是当前亟待解决的重要问题。
UC Berkley于2018年提出的一种开源分布式缓存***Alluxio。该***在数据存储时支持大文件分块存储,数据访问时,采用按访问频率采取MEM、SSD、HDD的分层缓存,并在每层独立采取缓存替换策略。但该***在缓存策略上默认使用传统的LRU替换策略,由于AI随机访问特性,访问的数据不存在热点数据,因此传统缓存替换策略无法提高缓存命中率,不适用于AI训练时的随机访问场景。
商汤提出一种主从架构***DIESEL。该***提出了将海量小文件合并数据块存储的方案,并且提出了组内shuffle来代替AI训练随机访问,但该***由于AI任务在首次访问数据块时仍然存在缓存缺失现象,需要等待较长的磁盘I/O时间,影响数据访问速率。
发明内容
本发明的目的为了克服面向AI训练时存在的:数据随机访问速度过低、缓存命中率较低问题,提出了一种面向AI训练的海量小文件分布式缓存方法。
本发明步骤如下:
步骤1:在客户端创建以key-value键值存储的Local Cache,并在分布式存储设备中创建Alluxio缓存。
步骤2:在AI训练的数据存储阶段,对数据集基于拟合Batch Size特征进行chunk合并操作。
步骤3:在AI训练迭代前,分析chunk的缓存状态,对chunk中的小文件序列采取chunk shuffle+group内小文件shuffle的双层shuffle操作,生成本次迭代的遍历序列。
步骤4:在AI训练迭代时对重复I/O采用Local Cache短路读取,并同时,采用异步分组预读方法将后续chunk预读到Alluxio缓存。
本发明具有的有益效果是:
1、本发明在数据存储阶段按照拟合Batch Size特征的规则合并为chunk,即采用2的N次方规则合并小文件,合并后的chunk结构更加拟合AI数据读取。
2、分析chunk的缓存状态,采用chunk shuffle+group内小文件shuffle的双层shuffle,解决随机访问难题,在每次迭代中优先利用缓存中的chunk数据,高效利用缓存。
3、在AI训练迭代时对重复I/O采用Local Cache短路读取,并同时,采用异步分组预读方法将后续chunk预读到Alluxio缓存,增大缓存命中率,提升数据访问速率。
附图说明
图1为小文件合并流程图;
图2为双层shuffle流程图;
图3为AI训练迭代流程图。
具体实施方式
下面结合附图,对本发明的具体实施方案作进一步详细描述。
本发明包括以下步骤:
步骤1:创建Local Cache和Alluxio缓存。
在客户端创建以key-value键值存储的Local Cache,并在分布式存储设备中创建Alluxio缓存。
Alluxio缓存:Alluxio缓存支持block单元存储,主要存储合并后的chunk数据,每当应用程序访问到一个不在Alluxio缓存中的chunk时,会把这个chunk从底层存储中取出,并存到Alluxio缓存中,以便后续访问。
Local Cache:Local Cache以key-value键值存储,位于客户端,主要存储chunk解析出的所有小文件,每当从Alluxio缓存取出一个chunk,chunk中小文件会被解析并存储在Local Cache中。
步骤2:在AI训练的数据存储阶段,对数据集基于拟合Batch Size特征进行chunk合并操作。
AI训练都需要准备和存储数据集,本发明在数据存储阶段将小文件合并为chunk,来保证缓存***可以更好的管理和存储小文件,具体步骤如下。
如图1所示,首先获取所有小文件序列,并对小文件序列进行初始shuffle,以便保证每个chunk中的小文件分布均匀。
其次将小文件按照拟合Batch Size特征的规则合并为chunk。AI训练遍历数据时,往往会以批次为单位进行数据读取,由于GPU对2的幂次的批次可以发挥更佳的性能,因此batch size通常被设置成16、32、64、128等。基于此特征,采用将小文件按照2的N次方合并规则合并为chunk,N可以由用户自定义。假设Batch Size设置为2的M次方,在数据访问中普遍存在以下三种情况。(1)若M=N,那么访问一个批次的数据则为一个chunk的小文件数量组成。(2)若M>N,那么访问一个批次的数据由k个chunk的小文件数量组成,k=2M-N。(3)若M<N,那么访问k个批次的数据由一个chunk的小文件数量组成,k=2N-M。因此,该合并规则普遍情况均能很好的配合AI训练的数据访问。
最后在客户端保存小文件到chunk的映射文件,当应用程序发起对某一小文件的I/O请求时,则通过该映射信息转换为对chunk的I/O请求。
步骤3:在AI训练迭代前,分析chunk的缓存状态,对chunk中的小文件序列采取chunk shuffle+group内小文件shuffle的双层shuffle操作,生成本次迭代的遍历序列。
在小文件合并为chunk后,每个chunk所包含的都是固定的小文件序列,在AI训练迭代前,通常需要对数据进行shuffle以此满足遍历数据的随机性。为了能够更好的拟合AI训练的随机访问操作,本发明设计了一个可靠的shuffle策略。
首先基于chunk的缓存状态将chunk分为两个序列,分别对应着位于缓存中的chunk序列(图2中的序列1),以及不在缓存中的chunk序列(如图2中的序列2)。接下来对序列1和序列2进行双层shuffle。
第一层shuffle:第一层shuffle为chunk shuffle。将每一个序列中的chunk顺序进行打乱。以图2中序列2为例,序列2经过第一层shuffle后,chunk内的小文件顺序不变,而序列中的chunk顺序发生了改变。
第二层shuffle:第二层shuffle为group内小文件shuffle。分别将两个序列中的chunk分组,若干个chunk分为一个group,获取每个group内的全部小文件序列并对小文件进行group内shuffle操作。以图2中序列2为例,经过分组,chunk被分为了group2与group3,group2与group3中的小文件分别在group内进行了彻底的shuffle,但group之间仍然为顺序排列。
最后,将两个小文件序列前后拼接,组成本次迭代中AI训练的文件访问序列,此时访问序列不仅进行了合理的打乱,还将缓存中已经存在的数据优先放在了访问序列前部,高效利用了缓存中已有的数据。
步骤4:在AI训练迭代时对重复I/O采用Local Cache短路读取,并同时,采用异步分组预读方法将后续chunk预读到Alluxio缓存
当准备完AI训练的遍历序列,则可以开始进行数据遍历,本发明在AI训练迭代时,对重复I/O采用Local Cache短路读取,并同时,采用异步分组预读方法将后续chunk预读到Alluxio缓存,从而提高缓存命中率和数据访问速率,具体步骤如下。
步骤1:在访问一个group的某一个小文件,判断该小文件是否已存在于LocalCache,若不存在执行步骤2,若存在,则执行步骤3。
步骤2:将对该小文件的I/O请求转换为对chunk的I/O请求。该I/O请求会从底层存储***中访问chunk,并存入Alluxio缓存。随后解析chunk并从中取出目标小文件,同时将当前chunk中所有的小文件存入Local Cache。接下来跳转到步骤5。
步骤3:若目标小文件已存在于Local Cache,则说明该小文件对应的chunk已被访问过,此时判断为重复I/O,在客户端拦截此次发起对该小文件的I/O请求,采取LocalCache短路读取的方式,直接在Local Cache中取出目标小文件,随后执行步骤4。
步骤4:为了避免Local Cache耗尽,当从Local Cache访问完某个小文件后,会从Local Cache中删除当前文件,随后跳转到步骤5。
步骤5:判断此时是否已经访问完一个group中的全部chunk,即图3中访问group1中的chunk c后,Local Cache中存储了chunk a、chunk b、chunk c中的全部小文件,则后续访问均为Local Cache短路读取。因此采取异步分组预读,在后续访问的同时,对底层存储***发起对下一个group中的chunk的I/O请求,将chunk预读到Alluxio缓存。并同时跳转到步骤1继续访问后续文件。
本发明在AI训练迭代时对重复I/O采用Local Cache短路读取,因此应用程序不需要反复发起I/O请求访问同一个chunk,这减少了I/O请求数量,加速数据访问。并同时,采用异步分组预读方法将后续chunk预读到Alluxio缓存,提升缓存命中率,加快缓存响应。
Claims (6)
1.一种面向AI训练的海量小文件分布式缓存方法,其特征在于该方法包括以下步骤:
步骤1:在客户端创建以key-value键值存储的Local Cache,并在分布式存储设备中创建Alluxio缓存;
步骤2: 在AI训练的数据存储阶段,对数据集基于拟合Batch Size特征进行chunk合并操作;
步骤3:在AI训练迭代前,分析chunk的缓存状态,采取chunk shuffle+group内小文件shuffle的双层shuffle操作,生成本次迭代的遍历序列;
步骤4:在AI训练迭代时对重复I/O采用Local Cache短路读取,并同时,采用异步分组预读方法将后续chunk预读到Alluxio缓存。
2.根据权利要求1所述的一种面向AI训练的海量小文件分布式缓存方法,其特征在于:所述的步骤2中所述对数据集基于拟合Batch Size特征进行chunk合并,即将小文件按照2的N次方合并规则合并为chunk。
3.根据权利要求1所述的一种面向AI训练的海量小文件分布式缓存方法,其特征在于:所述的步骤3中所述的分析chunk的缓存状态,即在shuffle操作的初始过程通过缓存状态将chunk划分为两个序列,分别是位于缓存中的chunk序列,以及不在缓存中的chunk序列,并分别对这两个序列采取双层shuffle操作。
4.根据权利要求1所述的一种面向AI训练的海量小文件分布式缓存方法,其特征在于:所述的步骤3中所述的对chunk中的小文件序列采取chunk shuffle+group内小文件shuffle的双层shuffle操作,具体是:
第一层shuffle操作为chunk shuffle操作,即获取序列中的所有chunk,并在序列中整体shuffle;
第二层shuffle操作为group内小文件shuffle操作,即将序列中的所有chunk分组,分别获取每个group中的小文件序列,在group内对小文件整体shuffle。
5.根据权利要求1所述的一种面向AI训练的海量小文件分布式缓存方法,其特征在于:所述的步骤4中所述重复I/O是指:当前I/O请求所访问的目标文件已存在于Local Cache,则此次I/O请求为重复I/O;所述Local Cache短路读取是指:在客户端拦截此次发起的I/O请求,从Local Cache中取出目标小文件,随后在Local Cache中删除此文件。
6.根据权利要求1所述的一种面向AI训练的海量小文件分布式缓存方法,其特征在于:所述的步骤4中所述的采用异步分组预读方法将后续chunk预读到Alluxio缓存,具体是:判断Local Cache中是否存储了当前group中的全部chunk,若已经存储,则后续访问均为Local Cache短路读取,因此采用异步分组预读,在后续访问的同时,对底层存储***发起对下一个group中的chunk的 I/O请求,将chunk预读到Alluxio缓存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111220222.0A CN113901007A (zh) | 2021-10-20 | 2021-10-20 | 一种面向ai训练的海量小文件分布式缓存方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111220222.0A CN113901007A (zh) | 2021-10-20 | 2021-10-20 | 一种面向ai训练的海量小文件分布式缓存方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113901007A true CN113901007A (zh) | 2022-01-07 |
Family
ID=79192744
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111220222.0A Pending CN113901007A (zh) | 2021-10-20 | 2021-10-20 | 一种面向ai训练的海量小文件分布式缓存方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113901007A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116185308A (zh) * | 2023-04-25 | 2023-05-30 | 山东英信计算机技术有限公司 | 一种数据集处理方法、装置、设备、介质及模型训练*** |
-
2021
- 2021-10-20 CN CN202111220222.0A patent/CN113901007A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116185308A (zh) * | 2023-04-25 | 2023-05-30 | 山东英信计算机技术有限公司 | 一种数据集处理方法、装置、设备、介质及模型训练*** |
CN116185308B (zh) * | 2023-04-25 | 2023-08-04 | 山东英信计算机技术有限公司 | 一种数据集处理方法、装置、设备、介质及模型训练*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110825748B (zh) | 利用差异化索引机制的高性能和易扩展的键值存储方法 | |
Yue et al. | Building an efficient put-intensive key-value store with skip-tree | |
US11080196B2 (en) | Pattern-aware prefetching using parallel log-structured file system | |
CN113535670B (zh) | 一种虚拟化资源镜像存储***及其实现方法 | |
CN110569245A (zh) | 重复数据删除***中基于强化学习的指纹索引预取方法 | |
KR20160060550A (ko) | 효율적인 맵핑을 위한 페이지 캐시 장치 및 방법 | |
US11262929B2 (en) | Thining databases for garbage collection | |
KR20220143578A (ko) | 데이터 접속 방법, 데이터 접속 제어 장치 및 데이터 접속 시스템 | |
CN106569963A (zh) | 缓存方法和装置 | |
CN102355502B (zh) | 存储***远程接入桌面操作***的远程接入方法 | |
Liu et al. | A High Performance Memory Key-Value Database Based on Redis. | |
CN113901007A (zh) | 一种面向ai训练的海量小文件分布式缓存方法 | |
US20180075116A1 (en) | Information processing system, control device, and computer-readable recording medium having processing program recorded therein | |
Chen et al. | Low‐overhead inline deduplication for persistent memory | |
Yan et al. | Hmfs: efficient support of small files processing over HDFS | |
US10585802B1 (en) | Method and system for caching directories in a storage system | |
Hamandawana et al. | Accelerating ml/dl applications with hierarchical caching on deduplication storage clusters | |
CN108614879A (zh) | 小文件处理方法与装置 | |
US11586353B2 (en) | Optimized access to high-speed storage device | |
Wang et al. | Sfp: Smart file-aware prefetching for flash based storage systems | |
CN114461635A (zh) | 一种MySQL数据库数据存储方法、装置和电子设备 | |
Dongjie et al. | A data grouping model based on cache transaction for unstructured data storage systems | |
CN107506156B (zh) | 一种块设备的io优化方法 | |
CN113127717A (zh) | 一种密钥检索方法和*** | |
US20210064259A1 (en) | Managing data objects |
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 |