CN117555697B - 一种面向分布式训练的缓存加载系统、方法、装置及设备 - Google Patents

一种面向分布式训练的缓存加载系统、方法、装置及设备 Download PDF

Info

Publication number
CN117555697B
CN117555697B CN202410043642.3A CN202410043642A CN117555697B CN 117555697 B CN117555697 B CN 117555697B CN 202410043642 A CN202410043642 A CN 202410043642A CN 117555697 B CN117555697 B CN 117555697B
Authority
CN
China
Prior art keywords
node
data
sub
loaded
loading
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
CN202410043642.3A
Other languages
English (en)
Other versions
CN117555697A (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.)
Zhejiang Lab
Original Assignee
Zhejiang Lab
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 Zhejiang Lab filed Critical Zhejiang Lab
Priority to CN202410043642.3A priority Critical patent/CN117555697B/zh
Publication of CN117555697A publication Critical patent/CN117555697A/zh
Application granted granted Critical
Publication of CN117555697B publication Critical patent/CN117555697B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Evolutionary Computation (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本说明书公开的一种面向分布式训练的缓存加载系统、方法、装置及设备中,管理节点确定各计算节点对应的数据加载任务,并将待训练模型的向无环图以及数据加载任务发送给各计算节点。然后第一子节点用于负责数据加载,先根据有向无环图确定无依赖关系的计算节点需要的数据并进行加载,再当接受到第二子节点的加载请求时,判断该数据是否被加载过,若是,将加载了该数据的第一子节点的标识发送给该第二子节点,若否,则获取待加载的数据后返回给对应的第二子节点,第二子节点根据第一子节点的返回,获取待加载数据,执行训练任务。减少了计算节点向远计算端数据源的访问,降低了远计算端的I/O口堵塞、资源抢占等状况的出现,提高了模型训练的效率。

Description

一种面向分布式训练的缓存加载系统、方法、装置及设备
技术领域
本说明书涉及机器学习领域,尤其涉及一种面向分布式训练的缓存加载系统、方法、装置及设备。
背景技术
随着机器学习领域的发展,机器学习征迈向大模型时代,由于大模型的训练往往需要大量的训练数据,需求的计算资源较多,因此,为了更好的训练大模型,目前常常通过分布式训练的方法对大模型进行训练。但是,在分布式训练的场景下,训练需要原始数据往往存储在远计算端的分布式存储模块中,训练前,需要将原始数据加载到近计算端的缓存。
在现有技术中,通常会采用在近计算段采用高速的缓存进行异步数据加载,在训练开始之前,从远计算端的分布式存储模块中,获取用于训练的原始数据。但是,当多个大模型的分布式训练任务需要在同一时刻,向同一个分布式存储模块请求加载数据时,会出现资源抢占、磁盘输入/输出口(Input /Output,I/O)堵塞等状况,因此,如何在充分利用近计算端的资源的情况下,减少对远计算段的分布式存储模块的访问成为了亟待解决的问题。
本说明书提供了一种面向分布式训练的缓存加载系统、方法、装置及设备。
发明内容
本说明书提供一种面向分布式训练的缓存加载系统、方法、装置及设备,以部分的解决现有技术存在的上述问题。
本说明书采用下述技术方案:
本说明书提供了一种面向分布式训练的缓存加载系统,包括:
所述管理节点,用于响应于用户下发的数据加载指令,根据待训练的模型对应的有向无环图,确定用于训练所述待训练的模型的各计算节点的数据加载任务,将所述数据加载任务以及所述有向无环图发送至各计算节点;存储所述第一子节点发送的加载结果;根据所述第一子节点发送的查询请求,确定待加载数据的加载结果并返回所述第一子节点;
所述第一子节点,用于根据所述有向无环图,确定无依赖关系的计算节点所需的数据,获取所述无依赖关系的计算节点所需的数据,并向所述管理节点发送加载结果;当自身存储了所述加载请求对应的待加载数据,将所述待加载数据返回第二子节点,当自身未存储所述加载请求对应的待加载数据时,向所述管理节点发送查询请求;根据所述加载结果,当确定所述待加载数据已被加载过时,则将已加载所述待加载数据的其他第一子节点的标识返回所述第二子节点;当确定所述待加载数据未被加载过,则获取所述待加载数据返回所述第二子节点;
所述第二子节点,用于根据所述数据加载任务,向所述第一子节点发送待加载数据的加载请求;根据所述其他第一子节点的标识,从所述其他第一子节点的标识获取所述待加载数据,或者接收所述第一子节点返回的所述待加载数据,根据所述待加载数据执行训练任务。
可选地,所述管理节点,用于根据待训练的模型对应的有向无环图,从所述系统的计算节点中,确定用于训练所述待训练模型的各计算节点。
可选地,所述管理节点,用于确定训练所述待训练模型的各计算节点的节点类型,所述节点类型包括:第一子节点以及第二子节点,针对训练所述待训练模型的每个计算节点,将该计算节点的数据加载任务、所述有向无环图以及该计算节点的类型,发送至该计算节点;
其中,所述第一子节点的数量满足预设数量。
可选地,所述管理节点,用于根据训练所述待训练模型的计算节点中第一子节点的数量,对所述第二子节点进行划分,确定所述第一子节点与所述第二子节点之间的对应关系,向所述第一子节点发送对应的各第二子节点的标识,并向各所述第二子节点发送对应的第一子节点的标识;
所述第二子节点,用于根据所述管理节点发送的所述对应的第一子节点的标识,确定对应的第一子节点,根据所述数据加载任务,向所述对应的第一子节点发送待加载数据的加载请求。
可选地,所述第一子节点,用于根据所述管理节点发送的对应的各第二子节点的标识,确定对应的第二子节点,再根据所述有向无环图,确定所述对应的第二子节点中,无依赖关系的第二子节点所需的数据,加载所述无依赖关系的第二子节点所需的数据,并将加载结果发送至所述管理节点。
可选地,所述第二子节点,用于根据所述第一子节点返回的所述待加载数据执行训练任务,存储训练过程中得到的中间数据,根据所述有向无环图,将所述中间数据发送至对应的计算节点。
可选地,所述第一子节点,用于当所述第一子节点加载的数据量达到第一预设值时,按照数据加载顺序,删除第二预设值的数据,并向所述管理节点发送数据删除结果;
所述管理节点,用于根据所述第一子节点返回的所述数据删除结果,确定所述第一子节点已存储的数据。
本说明书提供了一种面向分布式训练的缓存加载方法,所述方法用于执行所述面向分布式训练的缓存加载系统中的第一子节点,其中:
响应于管理节点发送的数据加载任务以及待训练模型的有向无环图,确定无依赖关系的计算节点,获取所述无依赖关系的计算节点所需的数据,并向所述管理节点发送加载结果,使所述管理节点根据所述加载结果确定所述第一子节点已存储的数据;
当接收到第二子节点发送的数据加载请求时,判断自身是否存储了所述加载请求对应的待加载数据;
若是,将所述待加载数据返回第二子节点,使所述第二子节点根据所述待加载数据执行训练任务;
若否,向所述管理节点发送查询请求,使所述管理节点根据所述查询请求,确定所述第一子节点的加载结果并返回;根据所述管理节点返回的所述加载结果,当确定所述待加载数据已被加载过时,将已加载所述待加载数据的其他第一子节点的标识返回所述第二子节点,使所述第二子节点根据所述标识,向所述标识对应的第一子节点发送数据加载请求,获取待加载数据执行训练任务;当确定所述待加载数据未被加载过时,获取所述待加载数据返回所述第二子节点,使所述第二子节点根据收到的待加载数据执行训练任务。
可选地,确定无依赖关系的计算节点,获取所述无依赖关系的计算节点所需的数据,并向所述管理节点发送加载结果,具体包括:
根据所述管理节点发送的对应的各第二子节点的标识,确定对应的第二子节点,再根据所述有向无环图,确定所述对应的第二子节点中,无依赖关系的第二子节点所需的数据,加载所述无依赖关系的第二子节点所需的数据,并将加载结果发送至所述管理节点。
可选地,所述方法还包括:当所述第一子节点加载的数据量达到第一预设值时,按照数据加载顺序,删除第二预设值的数据,并向所述管理节点发送数据删除结果,使所述管理节点根据所述第一子节点返回的所述数据删除结果,确定所述第一子节点已存储的数据。
本说明书提供了一种面向分布式训练的缓存加载方法,所述方法用于执行所述面向分布式训练的缓存加载系统中的第二子节点,其中:
响应于管理节点发送的数据加载任务,确定待加载的数据,并向所述第一子节点发送所述待加载数据对应数据加载请求,使所述第一子节点根据所述待加载数据对应数据加载请求,确定自身是否已加载所述待加载数据,并返回;
当所述第一子节点的返回为其他第一子节点的标识时,向所述标识对应的第一子节点发送所述待加载数据对应数据加载请求,根据所述标识对应的第一子节点返回的所述待加载数据执行训练任务;
当所述第一子节点的返回为所述待加载数据时,根据所述待加载数据执行训练任务。
可选地,向所述第一子节点发送所述待加载数据对应数据加载请求,具体包括:根据所述管理节点发送的所述对应的第一子节点的标识,确定对应的第一子节点,根据所述数据加载任务,向所述对应的第一子节点发送待加载数据的加载请求。
可选地,所述方法还包括:根据所述第一子节点返回的所述待加载数据执行训练任务,存储训练过程中得到的中间数据,根据所述有向无环图,将所述中间数据发送至对应的计算节点。
本说明书提供了一种面向分布式训练的缓存加载装置,所述装置应用于执行面向分布式训练的缓存加载系统中的第一子节点,包括:
响应模块,用于响应于管理节点发送的数据加载任务、以及待训练模型的有向无环图,确定无依赖关系的计算节点所需的数据,获取所述无依赖关系的计算节点所需的数据,并向所述管理节点发送加载结果,使所述管理节点根据所述加载结果确定所述第一子节点已存储的数据;
判断模块,用于当接收到所述第二子节点发送的数据加载请求时,判断自身是否存储了所述加载请求对应的待加载数据;若是,将所述待加载数据返回第二子节点,使所述第二子节点根据所述待加载数据执行训练任务,若否,向所述管理节点发送查询请求,使所述管理节点根据所述查询请求,确定所述第一子节点的加载结果并返回;
加载模块,用于根据所述管理节点返回的所述加载结果,当确定所述待加载数据已被加载过时,将已加载所述待加载数据的其他第一子节点的标识返回所述第二子节点,使所述第二子节点根据所述标识,向所述标识对应的第一子节点发送数据加载请求,获取待加载数据执行训练任务;当确定所述待加载数据未被加载过时,获取所述待加载数据返回所述第二子节点,使所述第二子节点根据收到的待加载数据执行训练任务。
本说明书提供了一种面向分布式训练的缓存加载装置,所述装置应用于执行面向分布式训练的缓存加载系统中的第二子节点,包括:
第一请求模块,用于响应于管理节点发送的数据加载任务,确定待加载的数据,并向所述第一子节点发送所述待加载数据对应数据加载请求,使所述第一子节点根据所述待加载数据对应数据加载请求,确定自身是否已加载所述待加载数据,并返回;
第二请求模块,当所述第一子节点的返回为其他第一子节点的标识时,向所述标识对应的第一子节点发送所述待加载数据对应数据加载请求,根据所述标识对应的第一子节点返回的所述待加载数据执行训练任务;
训练模块,用于当所述第一子节点的返回为所述待加载数据时,根据所述待加载数据执行训练任务。
本说明书提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述面向分布式训练的缓存加载系统。
本说明书采用的上述至少一个技术方案能够达到以下有益效果:
在本说明书提供的一种面向分布式训练的缓存加载系统中,管理节点确定各计算节点对应的数据加载任务,并将待训练模型的向无环图以及数据加载任务发送给各计算节点。然后第一子节点用于负责数据加载,先根据有向无环图确定无依赖关系的计算节点需要的数据并进行加载,再当接受到第二子节点的加载请求时,判断该数据是否被加载过,若是,将加载了该数据的第一子节点的标识发送给该第二子节点,若否,则获取待加载的数据后返回给对应的第二子节点,第二子节点根据第一子节点的返回,获取待加载数据,执行训练任务。
从上述系统可以看出,本系统通过管理节点确定待训练模型的有向无环图和数据加载任务,并将有向无环图和数据加载任务发送给各计算节点的同时,记录第一子节点加载过的数据,当其他计算节点向第一子节点发送数据请求时,该第一子节点先判断自身或其他第一子节点是否已经加载了该数据,若是,获取数据并返回给对应的第二子节点,若否,再进行数据加载任务。减少了各计算节点向远计算端数据源的访问,提高了第一子节点的缓存利用率,降低了远计算端的I/O口堵塞、资源抢占等状况出现的概率,提高了模型训练的效率。
附图说明
此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:
图1为本说明书实施例提供的一种面向分布式训练的缓存加载系统的结构示意图;
图2为本说明书实施例提供的一种面向分布式训练的缓存加载系统的流程的示意图;
图3为本说明书实施例提供的一种待训练模型的有向无环图的示意图;
图4为本说明书实施例提供的一种面向分布式训练的缓存加载方法的流程示意图;
图5为本说明书实施例提供的一种面向分布式训练的缓存加载方法的流程示意图;
图6为本说明书实施例提供的一种面向分布式训练的缓存加载装置的示意图;
图7为本说明书实施例提供的一种面向分布式训练的缓存加载装置的示意图;
图8为本说明书提供的对应于图1的电子设备示意图。
具体实施方式
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在以下结合附图,详细说明本说明书各实施例提供的技术方案。
图1为本说明书中提供的一种面向分布式训练的缓存加载系统的结构示意图,其中,每个圆形代表一个计算节点,各计算节点中,由斜线填充的计算节点为第一计算节点,无填充的计算节点为第二计算节点。该缓存加载系统可用于执行模型训练中的数据加载的任务,也可以用于业务执行场景下的数据加载任务,在本说明书一个或多个实施例中,不限制该缓存加载系统应用于何种场景,为方便后续描述,以该缓存加载模型应用于模型训练场景为例。
该缓存加载系统由用于数据加载任务调度的管理节点和用于执行计算任务的计算节点构成。一般,各计算节点对应为一个待训练模型的中管理节点通常为一个,而计算节点可以为多各计算节点,当然,本说明书对此不做限制。需要说明的是,各计算节点也可以为多个模型的计算节点,为方面描述,后续先以各计算节点为一个模型的各节点为例。则,此时该缓存加载系统的管理节点有一个,各计算节点为一个待训练模型的各计算节点。
另外,需要说明的是,在本说明书一个或多个实施例中,该缓存加载系统的管理节点和各计算节点是何种计算设备,本说明书不做限制,可以是个人终端、平板电脑、服务器、异构计算设备等,且各计算节点之间可互相通信。
在本说明书一个或多个实施例中,为提高计算节点的缓存利用率,减少各计算节点向远计算端数据源的访问,降低了远计算端的I/O口堵塞、资源抢占等状况出现的概率,提高模型训练的效率,管理节点确定各计算节点对应的数据加载任务,并将待训练模型的向无环图以及数据加载任务发送给各计算节点。然后第一子节点用于负责数据加载,先根据有向无环图确定无依赖关系的计算节点需要的数据并进行加载,再当接受到第二子节点的加载请求时,判断该数据是否被加载过,若是,将加载了该数据的第一子节点的标识发送给该第二子节点,若否,则获取待加载的数据后返回给对应的第二子节点,第二子节点根据第一子节点的返回,获取待加载数据,执行训练任务。当然,第二子节点在获取到待加载数据后,具体用于何种计算,在本说明书一个或多个实施例中,不做限制。
可见,通过第一子节点对数据进行加载,当第二子节点需要获取数据时,向第一子节点发送数据加载请求,确定第一子节点是否已加载该数据,增加了第一子节点的缓存利用率,减少了各计算节点对远计算端的访问,充分的利用了第一子节点和第二子节点的接口资源、计算资源以及存储资源。
该分布式训练的缓存加载系统在进行数据缓存加载时,过程如图2所示,具体如下:
S100:管理节点响应于用户下发的数据加载指令,根据待训练的模型对应的有向无环图,确定用于训练所述待训练的模型的各计算节点的数据加载任务,将所述数据加载任务以及所述有向无环图发送至各计算节点。
具体的,在本说明书一个或多个实施例中,管理节点是实现缓存加载的调度中心,因此当接收到用户下发的数据加载指令时,该管理节点根据用户下发的数据加载指令,确定待训练模型的有向无环图,并确定有向无环图中各节点所需的数据。该管理节点可以由一台设备执行,也可以将该管理节点的功能继续划分,如划分为控制节点和调度节点,其中控制节点用于获取待训练模型的有向无环图以及确定各计算节点所需的数据,调度节点用于确定第一子节点和第二子节点,以及确定各结算节点的数据加载任务,并实时更新各第一子节点的数据加载结果。当然,上述只是本说明书实施例提供的一种可行的划分方案,本说明书对此不做限制,无论上述任务被划分成哪些模块来执行,都可被统称为管理节点。
需要说明的是,上述的用户可以是真实的用户,也可以是一段程序或服务器等具有下发指令权限的设备,在本说明书一个或多个实施例中,对此不做限制。有向无环图中各节点对应于缓存加载系统中的各计算节点。
当然,在本说明书一个或多个实施例中,所述缓存加载系统为数据加载系统,负责将存储在远结算端的数据,在模型训练开始前以及训练过程中,加载到近计算端,因此,上述的数据加载指令应至少包含待训练模型的有向无环图、各计算节点需要的数据或上述内容存储地址,使得缓存加载系统可根据数据加载指令,确定待训练模型的有向无环图以及各计算节点需要的数据。当然,根据数据加载指令确定的各计算节点需要的数据是原始数据,并非是模型训练过程中产生的中间结果。
此外,该管理节点在确定待训练模型的有向无环图将有向无环图发送给确定用于训练该待训练模型的各计算节点,然后确定训练该待训练模型的各计算节点分别所需的数据,并确定各个数据的唯一标识。然后,向各个计算节点发送对应的唯一标识。需要说明的是,发送给每个计算节点的唯一标识的数量取决于该计算节点在训练过程中所需的数据量,本说明书对此不做限制,在确定各数据的唯一标识时,可通过对该数据存储地址进行哈希计算,确定出一个唯一标识。当然,也可以通过对该数据的名字进行加密计算,确定出一个唯一标识,本说明书对此不做限制,保证各数据之间具有不同的唯一标识即可。
为减少各个计算节点对远计算端的数据源的访问以及增加各计算节点的缓存利用率,管理节点从各计算节点中确定出预设数量的第一子节点,负责对各计算节点需要的数据进行加载,当然,在确定第一子节点时,可以是根据该各计算节点的计算资源确定,也可以随机确定,本说明书对此不做限制,同时确定第一子节点可以是在确定出用于训练该待训练模型的各计算节点后,从各计算节点中确定出指定数量的第一子节点,其余计算节点作为第二子节点。也可以是,该缓存加载系统包含的各计算节点中,某些计算节点被固定作为第一子节点,其余作为第二子节点,在管理节点响应于数据加载指令后,从固定作为第一子节点的计算节点中选择指定数量的第一子节点,再选择一部分第二子节点,作为训练该待训练模型需要的各计算节点。
当然,若是在确定出用于训练该待训练模型的各计算节点后,从各计算节点中确定出指定数量的第一子节点,其余计算节点作为第二子节点,那么向各计算节点发送有向无环图和数据加载任务时,还应将各计算节点对应的身份发送至各计算节点,使第一子节点根据收到的数据加载请求或有向无环图进行数据加载,使第二子节点可根据收到的数据加载任务以及有向无环图向第一子节点发送数据加载请求获取待加载的数据执行模型训练任务。
S102:第一子节点根据所述有向无环图,确定无依赖关系的计算节点所需的数据,获取所述无依赖关系的计算节点所需的数据,并向所述管理节点发送加载结果。
为方便描述,先以管理节点确定的第一子节点的数量是一为例,该第一子节点在接收到管理节点发送的有向无环图以及数据加载任务后,为了模型的训练效率,应先对无依赖关系的计算节点需要的数据进行加载,以图3中的有向无环图为例,如图3所示,图3为本说明书提供的一种待训练模型的有向无环图的示意图,其中标有数字1的圆形为第一子节点,标有数字2的圆形为第二子节点,根据该有向无环图可知,第一层的两个第二子节点在进行计算时,无需根据其他计算节点计算后的中间结果,即无依赖关系,因此,该第一子节点应先对第一层的两个第二子节点需要的数据进行加载。
当第一子节点将有向无环图中的无依赖关系的计算节点需要的数据加载完成后,将所述加载完成后的数据发送给对应的计算节点,也可以是加载后先存储在第一子节点的缓存中,当接收到其他计算节点发送的数据加载请求后再将数据发送至对应的计算节点,本说明书对此不做限制。
需要说明的是,第一子节点的缓存为第一子节点的存储器,可以是缓存块、移动硬盘、磁盘或者内存等具有存储能力模块,在本说明书一个或多个实施例中,对此不做限制,为方便描述,后续以缓存为列。
第一子节点在对无依赖的计算节点所需的数据进行加载后,可开始对除上层的无依赖关系的计算节点的下一层计算节点所需的数据进行加载,在这种情况下,也有可能出现第一层的计算节点已经计算完成,第二层的计算节点开始向第一子节点发送数据加载请求,但第一子节点还并未开始对有向无环图中第二层的计算节点所需的数据进行加载的情况。当然,第一子节点也可以在加载完无依赖的计算节点所需的数据后,暂时停止对数据的加载,当收到第二子节点发送的数据加载请求时,再进行数据加载,在本说明书一个或多个实施例中,对此不做限制,可根据第一子节点的性能以及可利用资源确定。
S104:管理节点存储所述第一子节点发送的加载结果。
需要说明的是,第一子节点每次在完成了数据加载后,可将数据加载结果发送给管理节点,使管理节点根据第一子节点发送的数据加载结果确定该第一子节点存储了哪些数据。该加载结果可以是数据对应的唯一标识,也可以是数据的唯一标识以及第一子节点的标识,本说明书对此不做限制,只需保证该管理节点根据该加载结果可确定该第一子节点存储了哪些数据即可。
S106:第二子节点根据所述数据加载任务,向所述第一子节点发送待加载数据的加载请求。
在本说明书一个或多个实施例中,各第二子节点在需要执行训练任务时,可根据管理节点发送的数据加载任务,生成数据加载请求,直接发送给第一子节点,确定该第一子节点是否已经加载过该数据,从而减少对远计算端的数据源的访问。
当然,针对每个计算节点,无论书第一子节点还是第二子节点,当接收到对应的中间数据后或等待预设时长后,即可开始为了执行训练任务,向第一子节点发送数据加载请求并进行计算。
当第二子节点确定需要获取待加载数据执行训练任务时,该第二子节点可根据管理节点发送的数据加载任务,生成数据加载请求,并发送给第一子节点。
S108:第一子节点当自身存储了所述加载请求对应的待加载数据,将所述待加载数据返回第二子节点。
S110:第一子节点当自身未存储所述加载请求对应的待加载数据时,向所述管理节点发送查询请求。
第一子节点根据该第二子节点发送的数据加载请求,确定待加载的数据,先在自身的缓存中查找,判断自身是否已经加载过该待加载数据,若是,则将该待加载数据返回给对应的第二子节点,若否,则需向管理节点发送查询请求,确定是否有其他待训练模型的第一子节点已经加载该待加载数据。
S112:管理节点根据所述第一子节点发送的查询请求,确定待加载数据的加载结果并返回所述第一子节点。
由于管理节点存储了第一子节点的数据加载结果,所以在接收到第一子节点发送的查询请求时,先根据存储的加载结果确定该第一子节点是否加载了该数据,若加载了,直接返回该加载结果即可,若未加载则需判断该管理节点下的其他第一子节点是否加载过,若是,将加载了该数据的第一子节点的标识返回对应的第一子节点,若否,返回加载结果给对应的第一子节点。
S114:第一子节点根据所述加载结果,当确定所述待加载数据已被加载过时,则将已加载所述待加载数据的其他第一子节点的标识返回所述第二子节点;当确定所述待加载数据未被加载过,则获取所述待加载数据返回所述第二子节点。
该第一子节点根据该管理节点返回的加载结果,判断是否有其他第一子节点加载过该待加载数据,若有,则将加载了该待加载数据的第一子节点的标识发给该第一子节点,该第一子节点将标识发给对应的第二子节点,然后该第二子节点根据标识,确定加载了该待加载数据的第一子节点,并向其发送数据加载请求,获取该待加载数据,存储并用于执行训练任务。
需要说明的是,该第一子节点在接受到管理节点返回的标识时,也可以先根据该标识,确定加载了该待加载数据的第一子节点,并向其发送数据加载请求,获取该待加载数据,然后再将该待加载数据返回对应的第二子节点。
当管理节点返回该第一子节点的加载结果为未加载时,第一子节点向数据源获取该待加载数据,并将该待加载数据返回对应的第二子节点。
S116:第二子节点根据所述其他第一子节点的标识,从所述其他第一子节点的标识获取所述待加载数据,或者接收所述第一子节点返回的所述待加载数据,根据所述待加载数据执行训练任务。
若第二子节点接收到第一子节点的返回为一个标识时,根据该表示确定对应的第一子节点,然后向对应的第一子节点获取待加载的数据。然后该第二子节点根据第一子节点返回的待加载数据,执行训练任务。当然,该第二子节点在获取待加载数据后,具体执行何种任务,本说明书对此不做限制。
基于图2所示的分布式模型编译系统,该系统的管理节点确定各计算节点对应的数据加载任务,并将待训练模型的向无环图以及数据加载任务发送给各计算节点。然后第一子节点用于负责数据加载,先根据有向无环图确定无依赖关系的计算节点需要的数据并进行加载,再当接受到第二子节点的加载请求时,判断该数据是否被加载过,若是,将加载了该数据的第一子节点的标识发送给该第二子节点,若否,则获取待加载的数据后返回给对应的第二子节点,第二子节点根据第一子节点的返回,获取待加载数据,执行训练任务。
可见,本系统通过管理节点确定待训练模型的有向无环图和数据加载任务,并将有向无环图和数据加载任务发送给各计算节点的同时,记录第一子节点加载过的数据,当其他计算节点向第一子节点发送数据请求时,该第一子节点先判断自身或其他第一子节点是否已经加载了该数据,若是,获取数据并返回给对应的第二子节点,若否,再进行数据加载任务。减少了各计算节点向远计算端数据源的访问,提高了第一子节点的缓存利用率,降低了远计算端的I/O口堵塞、资源抢占等状况出现的概率,提高了模型训练的效率。
此外,由于在确定第一子节点时,通常是根据待训练模型的计算节点的数量,确定指定数量的第一子节点,当第一子节点的数量大于1时,可对其余的第二子节点进行划分,确定第一子节点与第二子节点之间的对应关系,向第一子节点发送对应的各第二子节点的标识,并向各第二子节点发送对应的第一子节点的标识。
当第二子节点需要进行数据加载时,向对应的第一子节点发送对应的数据加载请求。
当然,若第一子节点的数量大于1时,那么,第一子节点在接收到对应的第二子节点发送的数据加载请求时,根据该第二子节点发送的数据加载请求,确定待加载的数据,先在自身的缓存中查找,判断自身是否已经加载过该待加载数据,若是,则将该待加载数据返回给对应的第二子节点,若否,则需向管理节点发送查询请求,确定在该待训练模型的各第一子节点中,是否有其他第一子节点已经加载该待加载数据,若有,则将加载了该待加载数据的第一子节点的标识发给该第一子节点,该第一子节点将标识发给对应的第二子节点,然后该第二子节点根据标识,确定加载了该待加载数据的第一子节点,并向其发送数据加载请求,获取该待加载数据,存储并用于执行训练任务。
需要说明的是,在管理节点确定是否有其他第一子节点加载过待加载数据时,该管理节点下的第一子节点可以是与该第一子节点属于同一待训练模型的计算节点,也可以是其他待训练模型中的第一子节点,即该管理节点下课包含多个待训练的模型,每一个待训练模型的第一子节点在完成数据加载后,都将数据加载结果发送给该管理节点,然后,当某一第一子节点接收到第二子节点发来的数据加载请求后,且自身没有存储该待加载数据时,可先判断该管理节点下的各带训练模型中,是否有第一子节点缓存了该待加载数据,进一步的减少了各计算节点对远计算端数据源的访问。
此外,为减少对第一子节点的存储资源的浪费,当第一子节点加载的数据量达到第一预设值时,按照数据加载顺序,删除第二预设值的数据,并向管理节点发送数据删除结果,使管理节点根据所述第一子节点返回的所述数据删除结果,确定所述第一子节点已存储的数据。
另外,无论是第一子节点还是第二子节点,当计算完成后,可根据管理节点发送的有向无环图,确定与该计算节点具有依赖关系的计算节点,并将自身的计算结果发送给该有依赖关系的对应的计算节点。当然,也可以是任意计算节点在预设时长后,根据有向无环图,确定有依赖关系的上层计算节点,并向其发送数据获取请求,获取该有依赖关系的上层计算节点的计算结果,然后再向第一子节点发送数据加载请求,获取训练任务需要的数据。
基于上述面向分布式训练的缓存加载系统的描述,本说明书还提供一种应用于面向分布式训练的缓存加载系统中第一子节点的缓存加载方法,如图4所示。
S300:响应于管理节点发送的数据加载任务以及待训练模型的有向无环图,确定无依赖关系的计算节点,获取所述无依赖关系的计算节点所需的数据,并向所述管理节点发送加载结果,使所述管理节点根据所述加载结果确定所述第一子节点已存储的数据。
在本说明书一个或多个实施例中,为了提高各计算节点的缓存利用率,减少各计算节点对远计算端数据源的访问,将各计算节点的数据加载任务都调度给第一子节点,由第一子节点执行。第一子节点根据管理节点发送的待训练模型的有向无环图以及数据加载任务,为了模型的训练效率,应先对无依赖关系的计算节点需要的数据进行加载,并将数据加载结果发送给管理节点,使管理节点根据第一子节点发送的数据加载结果确定该第一子节点存储了哪些数据。
当第一子节点将有向无环图中的无依赖关系的计算节点需要的数据加载完成后,将所述加载完成后的数据发送给对应的计算节点,也可以是加载后先存储,当接收到其他计算节点发送的数据加载请求后再将数据发送至对应的计算节点,本说明书对此不做限制。
S302:当接收到第二子节点发送的数据加载请求时,判断自身是否存储了所述加载请求对应的待加载数据,若是,执行步骤S304,若否执行步骤S306。
需要说明的是,第一子节点在对无依赖的计算节点所需的数据进行加载后,可开始对除上层的无依赖关系的计算节点的下一层计算节点所需的数据进行加载,在这种情况下,也有可能出现第一层的计算节点已经计算完成,第二层的计算节点开始向第一子节点发送数据加载请求,但第一子节点还并未开始对有向无环图中第二层的计算节点所需的数据进行加载的情况。当然,第一子节点也可以在加载完无依赖的计算节点所需的数据后,暂时停止对数据的加载,当收到第二子节点发送的数据加载请求时,再进行数据加载,在本说明书一个或多个实施例中,对此不做限制,可根据第一子节点的性能以及可利用资源确定。
因此,无论那种情况,第一子节点都有可能接收到第二子节点发送的数据加载请求。第二子节点在需要执行训练任务时,根据管理节点发送的数据加载任务,生成数据加载请求,并发送给第一子节点,第一子节点接收到第二子节点发送的数据加载请求,确定待加载的数据,先在自身的缓存中查找,判断自身是否已经加载过该待加载数据,从而实现减少各计算节点对远计算端的数据源的访问。
S304:将所述待加载数据返回第二子节点,使所述第二子节点根据所述待加载数据执行训练任务。
在本说明书一个或多个实施例中,若该第一子节点已经存储了该待加载数据,则该第一子节点可以确定该数据加载请求命中该第一子节点的缓存,于是该第一子节点可确定命中的该待加载数据,并将该待加载数据返回该第二子节点。
可见,由于该第一子节点预先加载了数据,当第二子节点需要数据进行计算时,可直接向该第一子节点发送数据加载请求,减少了第二子节点对远计算端数据源的访问,也减少了远计算端数据源的I/O接口的调用,降低了出现接口堵塞的概率。
S306:向所述管理节点发送查询请求,使所述管理节点根据所述查询请求,确定所述第一子节点的加载结果并返回;根据所述管理节点返回的所述加载结果,当确定所述待加载数据已被加载过时,将已加载所述待加载数据的其他第一子节点的标识返回所述第二子节点,使所述第二子节点根据所述标识,向所述标识对应的第一子节点发送数据加载请求,获取待加载数据执行训练任务;当确定所述待加载数据未被加载过时,获取所述待加载数据返回所述第二子节点,使所述第二子节点根据收到的待加载数据执行训练任务。
若第一子节点未加载过该待加载数据,则需向管理节点发送查询请求,确定是否有其他第一子节点已经加载该待加载数据,若有,则将加载了该待加载数据的第一子节点的标识发给该第一子节点,该第一子节点将标识发给对应的第二子节点,然后该第二子节点根据标识,确定加载了该待加载数据的第一子节点,并向其发送数据加载请求,获取该待加载数据,存储并用于执行训练任务。
需要说明的是,该第一子节点在接受到管理节点返回的标识时,也可以先根据该标识,确定加载了该待加载数据的第一子节点,并向其发送数据加载请求,获取该待加载数据,然后再将该待加载数据返回对应的第二子节点。
当管理节点返回该第一子节点的加载结果为未加载时,第一子节点向数据源获取该待加载数据,并将该待加载数据返回对应的第二子节点,用于第二子节点执行训练任务。
基于图4所示的面向分布式训练的缓存加载方法,可见通过第一子节点根据有向无环图以及第二子节点的数据加载任务,对各计算节点所需的数据进行加载,提高了第一子节点的缓存命中率,减少了各计算节点对远计算端的数据源的访问,提高了模型训练效率。
此外,为减少对第一子节点的存储资源的浪费,当第一子节点加载的数据量达到第一预设值时,按照数据加载顺序,删除第二预设值的数据,并向管理节点发送数据删除结果,使管理节点根据所述第一子节点返回的所述数据删除结果,确定所述第一子节点已存储的数据。
基于上述面向分布式训练的缓存加载系统的描述,本说明书还提供一种应用于面向分布式训练的缓存加载系统中第二子节点的缓存加载方法,如图5所示。
S400:响应于管理节点发送的数据加载任务,确定待加载的数据,并向所述第一子节点发送所述待加载数据对应数据加载请求,使所述第一子节点根据所述待加载数据对应数据加载请求,确定自身是否已加载所述待加载数据,并返回。
各第二子节点在接收到管理节点发送的数据加载任务后,可根据待训练模型的有向无环图确定自身是否为无依赖关系的计算节点,若为无依赖关系的计算节点,该第二子节点可直接向第一子节点发送数据加载请求,若不是无依赖关系的计算节点,可在获取到上层计算节点发送的数据时,再向第一子节点发送数据加载请求,当然,也可以在接受到管理节点发送的数据加载任务后,就开始向第一子节点发送数据加载请求,在本说明书一个或多个实施例中,对此不做限制。
然后接收第一子节点的返回。
S402:当所述第一子节点的返回为其他第一子节点的标识时,向所述标识对应的第一子节点发送所述待加载数据对应数据加载请求,根据所述标识对应的第一子节点返回的所述待加载数据执行训练任务。
当第一子节点的返回为一个计算节点的标识时,说明有其他的子节点已经加载过该待加载数据,此时,该第二子节点可根据标识确定对应的第一子节点。并向该标识对应的第一子节点发送数据加载请求,获取该待加载数据,用于执行训练任务。
S404:当所述第一子节点的返回为所述待加载数据时,根据所述待加载数据执行训练任务。
当第一子节点返回的为待加载数据时,该第二子节点可根据返回的待加载数据执行相应的训练任务,需要说明的是,该第二子节点得到的计算结果可根据有向无环图确定,该第二子节点是否有下层计算节点,若有,将该计算结果发送给对应的计算节点。
基于图5所示的面向分布式训练的缓存加载方法,可见通过第一子节点根据第二子节点的数据加载任务,对各第二子节点所需的数据进行加载,提高了第一子节点的缓存命中率,减少了各计算节点对远计算端的数据源的访问,提高了模型训练效率。
以上为本说明书的一个或多个实施例提供的面向分布式训练的缓存加载系统以及方法,基于同样的思路,本说明书还提供了相应的面向分布式训练的缓存加载装置,如图6所示。该面向分布式训练的缓存加载装置应用于执行面向分布式训练的缓存加载系统中的第一子节点。
响应模块500,用于响应于管理节点发送的数据加载任务、以及待训练模型的有向无环图,确定无依赖关系的计算节点所需的数据,获取所述无依赖关系的计算节点所需的数据,并向所述管理节点发送加载结果,使所述管理节点根据所述加载结果确定所述第一子节点已存储的数据;
判断模块501,用于当接收到所述第二子节点发送的数据加载请求时,判断自身是否存储了所述加载请求对应的待加载数据;若是,将所述待加载数据返回第二子节点,使所述第二子节点根据所述待加载数据执行训练任务,若否,向所述管理节点发送查询请求,使所述管理节点根据所述查询请求,确定所述第一子节点的加载结果并返回;
加载模块502,用于根据所述管理节点返回的所述加载结果,当确定所述待加载数据已被加载过时,将已加载所述待加载数据的其他第一子节点的标识返回所述第二子节点,使所述第二子节点根据所述标识,向所述标识对应的第一子节点发送数据加载请求,获取待加载数据执行训练任务;当确定所述待加载数据未被加载过时,获取所述待加载数据返回所述第二子节点,使所述第二子节点根据收到的待加载数据执行训练任务。
可选地,响应模块500,具体用于根据所述管理节点发送的对应的各第二子节点的标识,确定对应的第二子节点,再根据所述有向无环图,确定所述对应的第二子节点中,无依赖关系的第二子节点所需的数据,加载所述无依赖关系的第二子节点所需的数据,并将加载结果发送至所述管理节点。
可选地,所述装置还包括删除模块503,用于当所述第一子节点加载的数据量达到第一预设值时,按照数据加载顺序,删除第二预设值的数据,并向所述管理节点发送数据删除结果,使所述管理节点根据所述第一子节点返回的所述数据删除结果,确定所述第一子节点已存储的数据。
本说明书还提供了相应的面向分布式训练的缓存加载装置,如图7所示。该面向分布式训练的缓存加载装置应用于执行面向分布式训练的缓存加载系统中的第二子节点。
第一请求模块600,用于响应于管理节点发送的数据加载任务,确定待加载的数据,并向所述第一子节点发送所述待加载数据对应数据加载请求,使所述第一子节点根据所述待加载数据对应数据加载请求,确定自身是否已加载所述待加载数据,并返回;
第二请求模块601,当所述第一子节点的返回为其他第一子节点的标识时,向所述标识对应的第一子节点发送所述待加载数据对应数据加载请求,根据所述标识对应的第一子节点返回的所述待加载数据执行训练任务;
训练模块602,用于当所述第一子节点的返回为所述待加载数据时,根据所述待加载数据执行训练任务。
可选地,第一请求模块600,具体用于根据所述管理节点发送的所述对应的第一子节点的标识,确定对应的第一子节点,根据所述数据加载任务,向所述对应的第一子节点发送待加载数据的加载请求。
可选地,所述装置还包括存储模块603,用于根据所述第一子节点返回的所述待加载数据执行训练任务,存储训练过程中得到的中间数据,根据所述有向无环图,将所述中间数据发送至对应的计算节点。
本说明书还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述图4或图5提供的面向分布式训练的缓存加载方法。
本说明书还提供了图7所示的电子设备的示意结构图。如图8所述,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述图1所述的面向分布式训练的缓存加载系统。当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device, PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。

Claims (12)

1.一种面向分布式训练的缓存加载系统,其特征在于,所述系统包括管理节点以及计算节点,所述计算节点包括第一子节点以及第二子节点,其中:
所述管理节点,用于响应于用户下发的数据加载指令,根据待训练的模型对应的有向无环图,确定用于训练所述待训练的模型的各计算节点的数据加载任务,将所述数据加载任务以及所述有向无环图发送至各计算节点;存储所述第一子节点发送的加载结果;根据所述第一子节点发送的查询请求,确定待加载数据的加载结果并返回所述第一子节点;
所述第一子节点,用于根据所述有向无环图,确定无依赖关系的计算节点所需的数据,获取所述无依赖关系的计算节点所需的数据,并向所述管理节点发送加载结果;当自身存储了加载请求对应的待加载数据,将所述待加载数据返回第二子节点,当自身未存储所述加载请求对应的待加载数据时,向所述管理节点发送查询请求;根据所述加载结果,当确定所述待加载数据已被加载过时,则将已加载所述待加载数据的其他第一子节点的标识返回所述第二子节点;当确定所述待加载数据未被加载过,则获取所述待加载数据返回所述第二子节点;
所述第二子节点,用于根据所述数据加载任务,向所述第一子节点发送待加载数据的所述加载请求;根据所述其他第一子节点的标识,从所述其他第一子节点的标识获取所述待加载数据,或者接收所述第一子节点返回的所述待加载数据,根据所述待加载数据执行训练任务。
2.如权利要求1所述系统,其特征在于,所述管理节点,用于根据待训练的模型对应的有向无环图,从所述系统的计算节点中,确定用于训练所述待训练模型的各计算节点。
3.如权利要求2所述系统,其特征在于,所述管理节点,用于确定训练所述待训练模型的各计算节点的节点类型,所述节点类型包括:第一子节点以及第二子节点,针对训练所述待训练模型的每个计算节点,将该计算节点的数据加载任务、所述有向无环图以及该计算节点的类型,发送至该计算节点;
其中,所述第一子节点的数量满足预设数量。
4.如权利要求1所述系统,其特征在于,所述管理节点,用于根据训练所述待训练模型的计算节点中第一子节点的数量,对所述第二子节点进行划分,确定所述第一子节点与所述第二子节点之间的对应关系,向所述第一子节点发送对应的各第二子节点的标识,并向各所述第二子节点发送对应的第一子节点的标识;
所述第二子节点,用于根据所述管理节点发送的所述对应的第一子节点的标识,确定对应的第一子节点,根据所述数据加载任务,向所述对应的第一子节点发送待加载数据的加载请求。
5.如权利要求4所述系统,其特征在于,所述第一子节点,用于根据所述管理节点发送的对应的各第二子节点的标识,确定对应的第二子节点,再根据所述有向无环图,确定所述对应的第二子节点中,无依赖关系的第二子节点所需的数据,加载所述无依赖关系的第二子节点所需的数据,并将加载结果发送至所述管理节点。
6.如权利要求1所述系统,其特征在于,所述第二子节点,用于根据所述第一子节点返回的所述待加载数据执行训练任务,存储训练过程中得到的中间数据,根据所述有向无环图,将所述中间数据发送至对应的计算节点。
7.如权利要求1所述系统,其特征在于,所述第一子节点,用于当所述第一子节点加载的数据量达到第一预设值时,按照数据加载顺序,删除第二预设值的数据,并向所述管理节点发送数据删除结果;
所述管理节点,用于根据所述第一子节点返回的所述数据删除结果,确定所述第一子节点已存储的数据。
8.一种面向分布式训练的缓存加载方法,其特征在于,所述方法用于执行权利要求1-7任意一项所述面向分布式训练的缓存加载系统中的第一子节点,其中:
响应于管理节点发送的数据加载任务以及待训练模型的有向无环图,确定无依赖关系的计算节点,获取所述无依赖关系的计算节点所需的数据,并向所述管理节点发送加载结果,使所述管理节点根据所述加载结果确定所述第一子节点已存储的数据;
当接收到第二子节点发送的数据加载请求时,判断自身是否存储了所述加载请求对应的待加载数据;
若是,将所述待加载数据返回第二子节点,使所述第二子节点根据所述待加载数据执行训练任务;
若否,向所述管理节点发送查询请求,使所述管理节点根据所述查询请求,确定所述第一子节点的加载结果并返回;根据所述管理节点返回的所述加载结果,当确定所述待加载数据已被加载过时,将已加载所述待加载数据的其他第一子节点的标识返回所述第二子节点,使所述第二子节点根据所述标识,向所述标识对应的第一子节点发送数据加载请求,获取待加载数据执行训练任务;当确定所述待加载数据未被加载过时,获取所述待加载数据返回所述第二子节点,使所述第二子节点根据收到的待加载数据执行训练任务。
9.一种面向分布式训练的缓存加载方法,其特征在于,所述方法用于执行权利要求1-7任意一项所述面向分布式训练的缓存加载系统中的第二子节点,其中:
响应于管理节点发送的数据加载任务,确定待加载的数据,并向第一子节点发送所述待加载数据对应数据加载请求,使所述第一子节点根据所述待加载数据对应数据加载请求,确定自身是否已加载所述待加载数据,并返回;
当所述第一子节点的返回为其他第一子节点的标识时,向所述标识对应的第一子节点发送所述待加载数据对应数据加载请求,根据所述标识对应的第一子节点返回的所述待加载数据执行训练任务;
当所述第一子节点的返回为所述待加载数据时,根据所述待加载数据执行训练任务。
10.一种面向分布式训练的缓存加载装置,其特征在于,所述装置应用于执行权利要求1-7任意一项所述面向分布式训练的缓存加载系统中的第一子节点,包括:
响应模块,用于响应于管理节点发送的数据加载任务、以及待训练模型的有向无环图,确定无依赖关系的计算节点所需的数据,获取所述无依赖关系的计算节点所需的数据,并向所述管理节点发送加载结果,使所述管理节点根据所述加载结果确定所述第一子节点已存储的数据;
判断模块,用于当接收到第二子节点发送的数据加载请求时,判断自身是否存储了所述加载请求对应的待加载数据;若是,将所述待加载数据返回第二子节点,使所述第二子节点根据所述待加载数据执行训练任务,若否,向所述管理节点发送查询请求,使所述管理节点根据所述查询请求,确定所述第一子节点的加载结果并返回;
加载模块,用于根据所述管理节点返回的所述加载结果,当确定所述待加载数据已被加载过时,将已加载所述待加载数据的其他第一子节点的标识返回所述第二子节点,使所述第二子节点根据所述标识,向所述标识对应的第一子节点发送数据加载请求,获取待加载数据执行训练任务;当确定所述待加载数据未被加载过时,获取所述待加载数据返回所述第二子节点,使所述第二子节点根据收到的待加载数据执行训练任务。
11.一种面向分布式训练的缓存加载装置,其特征在于,所述装置应用于执行权利要求1-7任意一项所述面向分布式训练的缓存加载系统中的第二子节点,包括:
第一请求模块,用于响应于管理节点发送的数据加载任务,确定待加载的数据,并向所述第一子节点发送所述待加载数据对应数据加载请求,使所述第一子节点根据所述待加载数据对应数据加载请求,确定自身是否已加载所述待加载数据,并返回;
第二请求模块,当所述第一子节点的返回为其他第一子节点的标识时,向所述标识对应的第一子节点发送所述待加载数据对应数据加载请求,根据所述标识对应的第一子节点返回的所述待加载数据执行训练任务;
训练模块,用于当所述第一子节点的返回为所述待加载数据时,根据所述待加载数据执行训练任务。
12.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求8~9任一项所述的方法。
CN202410043642.3A 2024-01-11 2024-01-11 一种面向分布式训练的缓存加载系统、方法、装置及设备 Active CN117555697B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410043642.3A CN117555697B (zh) 2024-01-11 2024-01-11 一种面向分布式训练的缓存加载系统、方法、装置及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410043642.3A CN117555697B (zh) 2024-01-11 2024-01-11 一种面向分布式训练的缓存加载系统、方法、装置及设备

Publications (2)

Publication Number Publication Date
CN117555697A CN117555697A (zh) 2024-02-13
CN117555697B true CN117555697B (zh) 2024-04-05

Family

ID=89821912

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410043642.3A Active CN117555697B (zh) 2024-01-11 2024-01-11 一种面向分布式训练的缓存加载系统、方法、装置及设备

Country Status (1)

Country Link
CN (1) CN117555697B (zh)

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110401700A (zh) * 2019-07-03 2019-11-01 阿里巴巴集团控股有限公司 模型加载方法及系统、控制节点及执行节点
CN112749072A (zh) * 2021-01-22 2021-05-04 北京聚云科技有限公司 一种对存储训练数据的云存储系统的测试方法及装置
CN112905325A (zh) * 2021-02-10 2021-06-04 山东英信计算机技术有限公司 一种分布式数据缓存加速训练的方法、系统及介质
CN113010376A (zh) * 2021-03-01 2021-06-22 北京聚云科技有限公司 一种对存储训练数据的云存储系统的监测方法及装置
CN113079200A (zh) * 2021-03-19 2021-07-06 北京三快在线科技有限公司 一种数据处理的方法、装置及系统
CN114492834A (zh) * 2022-01-14 2022-05-13 北京百度网讯科技有限公司 训练方法、训练装置、设备、系统及存储介质
CN114780225A (zh) * 2022-06-14 2022-07-22 支付宝(杭州)信息技术有限公司 一种分布式模型训练系统、方法及装置
CN115688906A (zh) * 2022-11-15 2023-02-03 南京大学 一种面向超参训练的数据自动编排加载方法和系统
CN117195997A (zh) * 2023-11-06 2023-12-08 之江实验室 一种模型训练方法、装置、存储介质及电子设备
CN117215973A (zh) * 2023-09-13 2023-12-12 之江实验室 一种缓存数据的处理方法、深度学习训练方法和系统
WO2023236357A1 (zh) * 2022-06-07 2023-12-14 之江实验室 一种面向多并发深度学习训练任务的数据缓存方法和装置
CN117290557A (zh) * 2023-09-22 2023-12-26 度小满科技(北京)有限公司 一种数据加载方法、相关装置、设备以及可读存储介质
CN117312394A (zh) * 2023-11-08 2023-12-29 之江实验室 一种数据访问方法、装置、存储介质及电子设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230394307A1 (en) * 2022-06-07 2023-12-07 Zhejiang Lab Data caching method and apparatus for multiple concurrent deep learning training tasks

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110401700A (zh) * 2019-07-03 2019-11-01 阿里巴巴集团控股有限公司 模型加载方法及系统、控制节点及执行节点
CN112749072A (zh) * 2021-01-22 2021-05-04 北京聚云科技有限公司 一种对存储训练数据的云存储系统的测试方法及装置
CN112905325A (zh) * 2021-02-10 2021-06-04 山东英信计算机技术有限公司 一种分布式数据缓存加速训练的方法、系统及介质
CN113010376A (zh) * 2021-03-01 2021-06-22 北京聚云科技有限公司 一种对存储训练数据的云存储系统的监测方法及装置
CN113079200A (zh) * 2021-03-19 2021-07-06 北京三快在线科技有限公司 一种数据处理的方法、装置及系统
CN114492834A (zh) * 2022-01-14 2022-05-13 北京百度网讯科技有限公司 训练方法、训练装置、设备、系统及存储介质
WO2023236357A1 (zh) * 2022-06-07 2023-12-14 之江实验室 一种面向多并发深度学习训练任务的数据缓存方法和装置
CN114780225A (zh) * 2022-06-14 2022-07-22 支付宝(杭州)信息技术有限公司 一种分布式模型训练系统、方法及装置
CN115688906A (zh) * 2022-11-15 2023-02-03 南京大学 一种面向超参训练的数据自动编排加载方法和系统
CN117215973A (zh) * 2023-09-13 2023-12-12 之江实验室 一种缓存数据的处理方法、深度学习训练方法和系统
CN117290557A (zh) * 2023-09-22 2023-12-26 度小满科技(北京)有限公司 一种数据加载方法、相关装置、设备以及可读存储介质
CN117195997A (zh) * 2023-11-06 2023-12-08 之江实验室 一种模型训练方法、装置、存储介质及电子设备
CN117312394A (zh) * 2023-11-08 2023-12-29 之江实验室 一种数据访问方法、装置、存储介质及电子设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Learning-based dynamic cache management in a cloud;Choi J 等;《Journal of Parallel and Distributed Computing》;20200703;第98-110页 *
面向分布式系统的高性能缓存管理软件设计及应用;杨谦;;信息技术与信息化;20200528(第05期);第77-79页 *

Also Published As

Publication number Publication date
CN117555697A (zh) 2024-02-13

Similar Documents

Publication Publication Date Title
CN108628688B (zh) 一种消息处理方法、装置及设备
CN117312394B (zh) 一种数据访问方法、装置、存储介质及电子设备
CN110955720B (zh) 一种数据加载方法、装置及系统
CN116305298B (zh) 一种算力资源管理方法、装置、存储介质及电子设备
CN116225669B (zh) 一种任务执行方法、装置、存储介质及电子设备
CN115374117A (zh) 一种数据处理方法、装置、可读存储介质及电子设备
CN116048800A (zh) 一种数据处理的方法、装置、存储介质及电子设备
CN115617799A (zh) 一种数据存储的方法、装置、设备及存储介质
CN116822657B (zh) 一种模型训练加速的方法、装置、存储介质及电子设备
CN116048977B (zh) 一种基于数据还原的测试方法及装置
CN117555697B (zh) 一种面向分布式训练的缓存加载系统、方法、装置及设备
CN117112227A (zh) 一种内存管理方法、系统、装置、存储介质及电子设备
CN116737345A (zh) 分布式任务处理系统及方法、装置、存储介质以及设备
CN111209062B (zh) 信息获取方法、装置、电子设备及计算机存储介质
CN115134349B (zh) 一种执行传输任务的方法、装置、介质及设备
CN117081931B (zh) 一种异构分布式存储系统在线扩容方法及装置
CN115174587B (zh) 一种数据传输系统、方法、装置、计算机可读存储介质及电子设备
CN117171401B (zh) 基于分层预计算的图数据中最短路径的查询方法和装置
CN116644090B (zh) 一种数据查询方法、装置、设备及介质
CN116737367B (zh) 一种基于Minio的数据保鲜方法、设备及介质
CN117348999B (zh) 一种业务执行系统及业务执行方法
CN116089434B (zh) 一种数据存储方法、装置、存储介质及电子设备
CN117041980A (zh) 一种网元管理方法、装置、存储介质及电子设备
CN117522669A (zh) 一种图形处理器内存优化方法、装置、介质及设备
CN117369784A (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
GR01 Patent grant
GR01 Patent grant