CN111241201B - 一种分布式数据处理方法及系统 - Google Patents

一种分布式数据处理方法及系统 Download PDF

Info

Publication number
CN111241201B
CN111241201B CN202010035856.8A CN202010035856A CN111241201B CN 111241201 B CN111241201 B CN 111241201B CN 202010035856 A CN202010035856 A CN 202010035856A CN 111241201 B CN111241201 B CN 111241201B
Authority
CN
China
Prior art keywords
data
processed
end interface
node
sub
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
CN202010035856.8A
Other languages
English (en)
Other versions
CN111241201A (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.)
Xiamen Wangsu Co Ltd
Original Assignee
Xiamen Wangsu Co Ltd
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 Xiamen Wangsu Co Ltd filed Critical Xiamen Wangsu Co Ltd
Priority to CN202010035856.8A priority Critical patent/CN111241201B/zh
Publication of CN111241201A publication Critical patent/CN111241201A/zh
Application granted granted Critical
Publication of CN111241201B publication Critical patent/CN111241201B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Software Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明实施例涉及数据处理技术领域,尤其涉及一种分布式数据处理方法及系统,用以提高分布式系统中数据的传输速度。本发明实施例包括:总节点的网卡接收分节点发送的待处理数据,并将所述待处理数据向半虚拟化后端接口发送;所述半虚拟化后端接口将所述待处理数据向半虚拟化前端接口发送;所述半虚拟化前端接口将所述待处理数据向应用层发送;所述应用层将所述待处理数据处理后得到已处理数据,并将所述已处理数据向所述半虚拟化前端接口发送;所述半虚拟化前端接口将所述已处理数据向所述半虚拟化后端接口发送;所述网卡接收所述半虚拟化后端接口发送的已处理数据,并将所述已处理数据向所述分节点发送。

Description

一种分布式数据处理方法及系统
技术领域
本发明涉及数据处理技术领域,尤其涉及一种分布式数据处理方法及系统。
背景技术
分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据。
深度学习的分布式训练有两种常见的模式,一种是模型并行,一种是数据并行。针对模型并行的方式,由于模型内层与层之间的依赖关系严重,难以拆分,所以数据并行方式是主流方式,以PS(Parameter-Server,参数服务器)架构较为常见。PS架构把计算资源分为两个部分,参数服务器节点和工作节点。其中,工作节点从参数服务器上取下最新的参数,然后计算梯度,再将更新的梯度返回参数服务器。参数服务器节点收集各个工作节点计算出来的梯度,并且根据这些梯度更新保存在参数服务器节点上的模型参数。
一般的优化方案为工作节点与参数服务器节点之间的通信方式入手,减少数据在网络通讯上占用的时间。由于参数服务器节点汇总所有工作节点计算的数据,数据量较大,而现有技术中参数服务器中数据从网卡到应用层之间的数据传输也占用了较长时间,需要进一步优化。
发明内容
本申请提供一种分布式数据处理方法及系统,用以提高分布式系统中数据的传输速度。
本发明实施例提供的一种分布式数据处理方法,包括:
总节点的网卡接收分节点发送的待处理数据,并将所述待处理数据向半虚拟化后端接口发送;
所述半虚拟化后端接口将所述待处理数据向半虚拟化前端接口发送;
所述半虚拟化前端接口将所述待处理数据向应用层发送;
所述应用层将所述待处理数据处理后得到已处理数据,并将所述已处理数据向所述半虚拟化前端接口发送;
所述半虚拟化前端接口将所述已处理数据向所述半虚拟化后端接口发送;
所述网卡接收所述半虚拟化后端接口发送的已处理数据,并将所述已处理数据向所述分节点发送。
一种可选的实施例中,所述总节点的网卡接收分节点发送的待处理数据,包括:
所述总节点的网卡接收多个分节点发送的待处理数据;所述待处理数据中包括对应分节点的节点标识;所述总节点中预设有节点标识与通道标识之间的对应关系;
所述半虚拟化后端接口将所述待处理数据向半虚拟化前端接口发送,包括:
所述半虚拟化后端接口根据所述节点标识,确定对应的通道标识;
所述半虚拟化后端接口根据所述通道标识,将所述待处理数据通过对应的通道向所述半虚拟化前端接口发送。
一种可选的实施例中,所述多个分节点发送的待处理数据对应于同一个模型;所述半虚拟化前端接口将所述待处理数据向应用层发送之后,还包括:
所述应用层确定每个分节点的待处理数据的处理进度;
所述应用层在确定第一分节点的待处理数据的处理进度减去第二分节点的待处理数据的处理进度大于阈值后,暂停接收所述第一分节点的待处理数据;所述第一分节点为所述多个分节点中任一分节点,所述第二分节点为所述多个分节点中除所述第一分节点之外的任一分节点。
一种可选的实施例中,所述已处理数据中包括通道标识;所述半虚拟化前端接口将所述已处理数据向所述半虚拟化后端接口发送,包括:
所述半虚拟化前端接口根据所述通道标识,将所述已处理数据添加至环形队列的对应位置;
所述半虚拟化后端接口循环读取所述环形队列中的已处理数据。
一种可选的实施例中,所述总节点的网卡接收分节点发送的待处理数据之前,还包括:
所述总节点的应用层在初始化时,调用所述半虚拟化前端接口,与半虚拟化后端接口建立通道;
所述总节点的应用层建立所述半虚拟化前端接口与所述应用层操作接口之间的关联关系,以及所述半虚拟化前端接口与实现函数之间的关联关系。
一种可选的实施例中,所述半虚拟化前端接口为virtio接口,所述半虚拟化后端接口为vhost接口。
本发明实施例还提供一种分布式数据处理系统,包括:
网卡单元,用于接收分节点发送的待处理数据,并将所述待处理数据向后端接口单元发送;
后端接口单元,用于将所述待处理数据向前端接口单元发送;
前端接口单元,用于将所述待处理数据向应用单元发送;
应用单元,用于将所述待处理数据处理后得到已处理数据,并将所述已处理数据向所述前端接口单元发送;
所述前端接口单元,还用于将所述已处理数据向所述后端接口单元发送;
所述网卡单元,还用于接收所述后端接口单元发送的已处理数据,并将所述已处理数据向所述分节点发送。
一种可选的实施例中,所述网卡单元,具体用于接收多个分节点发送的待处理数据;所述待处理数据中包括对应分节点的节点标识;所述总节点中预设有节点标识与通道标识之间的对应关系;
所述后端接口单元,具体用于根据所述节点标识,确定对应的通道标识;根据所述通道标识,将所述待处理数据通过对应的通道向所述前端接口单元发送。
一种可选的实施例中,所述应用单元,还用于:
确定每个分节点的待处理数据的处理进度;
在确定第一分节点的待处理数据的处理进度减去第二分节点的待处理数据的处理进度大于阈值后,暂停接收所述第一分节点的待处理数据;所述第一分节点为所述多个分节点中任一分节点,所述第二分节点为所述多个分节点中除所述第一分节点之外的任一分节点。
一种可选的实施例中,所述已处理数据中包括通道标识;所述前端接口单元,具体用于根据所述通道标识,将所述已处理数据添加至环形队列的对应位置;
所述后端接口单元,用于循环读取所述环形队列中的已处理数据。
一种可选的实施例中,所述应用单元,还用于:
在初始化时,调用所述前端接口单元,与所述后端接口单元建立通道;
建立所述前端接口单元与应用层操作接口之间的关联关系,以及所述前端接口单元与实现函数之间的关联关系。
一种可选的实施例中,所述前端接口单元包括virtio接口,所述后端接口单元包括vhost接口。
本发明实施例还提供一种电子设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上所述的方法。
本发明实施例还提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上所述的方法。
本发明实施例中,分节点将待处理数据向总节点发送。总节点的网卡接口接收到待处理数据后,将向半虚拟化后端接口发送待处理数据。待处理数据通过半虚拟化后端接口、半虚拟化前端接口,发送至应用层。应用层将待处理数据处理后,得到已处理数据,并将已处理数据向半虚拟化前端接口发送。已处理数据通过半虚拟化前端接口、半虚拟化后端接口,发送至网卡,再通过网卡接口向对应的分节点发送。本发明实施例中,利用半虚拟化接口技术,通过半虚拟化的前端接口和后端接口配合执行,数据直接在网卡和应用层之间传输,节省了数据经过操作系统多次数据拷贝的过程,实现了零拷贝,减少数据从网卡到应用层的延迟,提高了总节点的数据吞吐量,从而提高了整体的数据传输速度。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种可能的系统构架的结构示意图;
图2为本发明实施例提供的一种参数服务器的结构框架图;
图3为本发明实施例提供的一种分布式数据处理方法的流程示意图;
图4为本发明实施例提供的主节点中多个通道的示意图;
图5为本发明实施例提供的一种环形队列的示意图;
图6为本发明实施例提供的一种分布式数据处理系统的结构示意图;
图7为本发明实施例提供的电子设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明实施例提供了一种分布式数据处理方法。如图1所示,本发明实施例所适用的一种系统架构,包括参数服务器101和多个工作节点102,其中,每个工作节点可以为计算机、服务器等网络设备,服务器可以是计算机等网络设备,服务器可以是一个独立的设备,也可以是多个服务器所形成的服务器集群。优选的,服务器可以采用云计算技术进行信息处理。参数服务器101与工作节点102之间通过有线或无线网络相连。可选地,上述的无线网络或有线网络使用标准通信技术和/或协议。网络通常为因特网、但也可以是任何网络,包括但不限于局域网(Local Area Network,LAN)、城域网(Metropolitan Area Network,MAN)、广域网(Wide Area Network,WAN)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合)。在一些实施例中,使用包括超文本标记语言(Hyper Text Mark-upLanguage,HTML)、可扩展标记语言(Extensible Markup Language,XML)等的技术和/或格式来代表通过网络交换的数据。此外还可以使用诸如安全套接字层(Secure SocketLayer,SSL)、传输层安全(Transport Layer Security,TLS)、虚拟专用网络(VirtualPrivate Network,VPN)、网际协议安全(Internet Protocol Security,IPsec)等常规加密技术来加密所有或者一些链路。在另一些实施例中,还可以使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。
本发明实施例提供的一种优选的实施方式,以参数服务器为总节点,工作节点为分节点为例进行介绍。本发明实施例中提供的分布式数据处理方法,其执行主体可以是参数服务器。图2示出了一种参数服务器的结构框架图。在深度学习的分布式训练中,参数服务器的应用层中包括多个处理进程,每个处理进程对应于一个工作节点,用于根据对应工作节点训练得出的数据计算梯度,并根据梯度更新保存在参数服务器上的模型参数。参数服务器的网卡接口接收工作节点发送的数据。网卡与应用层之间通过vhost/virtio接口连接,每个处理进程均可以通过vhost/virtio接口实现与网卡的数据交互。参数服务器设置有虚拟交换机,虚拟交换机的一端与网卡连接,另一端设置有vhost接口,vhost接口与应用层侧的virtio接口配合工作,实现网卡与应用层之间数据的收发。
需要注意的是,上文提及的应用场景仅是为了便于理解本申请的精神和原理而示出,本申请实施例在此方面不受任何限制。相反,本申请实施例可以应用于适用的任何场景。
现有技术中,PS架构的性能瓶颈在于带宽和延时上。一般参数服务器接收到工作节点发送的数据后,数据从参数服务器的网卡传送至内核,内核再到用户空间,其中会有多次数据拷贝,由于数据量十分庞大,因此,上述过程会占用较长时间,大大影响了参数服务器的处理进度。随着云计算的发展,参数服务器可以在云端部署。云端虚拟机的网卡是利用虚拟化技术来实现的,虚拟化出来的网卡往往性能会大打折扣,且虚拟网卡同实体网卡一样,数据从网卡到用户空间也会经过多次拷贝。
为了解决上述问题,基于图1和图2的架构,本发明实施例提供了一种分布式数据处理方法,如图3所示,本发明实施例提供的分布式数据处理方法包括以下步骤:
步骤301、总节点的网卡接收分节点发送的待处理数据。
步骤302、网卡将待处理数据向半虚拟化后端接口发送。
步骤303、半虚拟化后端接口将待处理数据向半虚拟化前端接口发送。
步骤304、半虚拟化前端接口将待处理数据向应用层发送。
步骤305、应用层将待处理数据处理后得到已处理数据。
步骤306、应用层将已处理数据向半虚拟化前端接口发送。
步骤307、半虚拟化前端接口将已处理数据向半虚拟化后端接口发送。
步骤308、网卡接收半虚拟化后端接口发送的已处理数据。
步骤309、网卡将已处理数据向分节点发送。
本发明实施例中,分节点将待处理数据向总节点发送。总节点的网卡接口接收到待处理数据后,将向半虚拟化后端接口发送待处理数据。待处理数据通过半虚拟化后端接口、半虚拟化前端接口,发送至应用层。应用层将待处理数据处理后,得到已处理数据,并将已处理数据向半虚拟化前端接口发送。已处理数据通过半虚拟化前端接口、半虚拟化后端接口,发送至网卡,再通过网卡接口向对应的分节点发送。本发明实施例中,利用半虚拟化接口技术,通过半虚拟化的前端接口和后端接口配合执行,数据直接在网卡和应用层之间传输,节省了数据经过操作系统多次数据拷贝的过程,实现了零拷贝,减少数据从网卡到应用层的延迟,提高了总节点的数据吞吐量,从而提高了整体的数据传输速度。
进一步地,为了处理分布式系统中多个分节点发送的数据,本发明实施例中,总节点的应用层包括多个线程/进程,每个线程/进程对应于处理一个分节点的数据。同时,为了提高效率,本发明实施例采用多通道的方式进行数据传输。上述总节点的网卡接收分节点发送的待处理数据,包括:
所述总节点的网卡接收多个分节点发送的待处理数据;所述待处理数据中包括对应分节点的节点标识;所述总节点中预设有节点标识与通道标识之间的对应关系;
所述半虚拟化后端接口将所述待处理数据向半虚拟化前端接口发送,包括:
所述半虚拟化后端接口根据所述节点标识,确定对应的通道标识;
所述半虚拟化后端接口根据所述通道标识,将所述待处理数据通过对应的通道向所述半虚拟化前端接口发送。
具体实施过程中,半虚拟化后端接口和半虚拟化前端接口之间设置有多个通道,每个通道用于传输一个分节点对应的数据。分节点发送的待处理数据中包括节点标识,网卡接口接收到待处理数据后,将待处理数据向半虚拟化后端接口发送。半虚拟化后端接口根据节点标识与通道标识之间的对应关系,确定该待处理数据对应的通道,并将待处理数据通过对应的通道向半虚拟化前端接口发送。从而,半虚拟化后端接口与半虚拟化前端接口之间可以同时传输多个数据,提高了数据的传输效率。
总节点收集各个分节点训练出的数据,并根据这些数据更新模型梯度,所有分节点在总节点计算出最新的模型参数后获取这些参数数据,并在此基础上训练出下一个批次的数据。同步模式下,总节点在获取所有分节点的数据后,根据所有数据进行梯度更新,所有分节点在总节点计算出最新的参数后获取这些参数。而由于各个分节点处理进度不一致,因此,同步模式需花费大量时间在网络通讯等待中。为了节省时间,一般用异步模式代替同步模式,即不同分节点的计算无需保持同步,总节点接收到分节点发送的数据后,根据新到来的数据先进行梯度更新。但在异步模式下,容易出现模型无法收敛的问题。
基于上述多个通道传输数据,为了保证异步模式下模型收敛,所述多个分节点发送的待处理数据对应于同一个模型;所述半虚拟化前端接口将所述待处理数据向应用层发送之后,还包括:
所述应用层确定每个分节点的待处理数据的处理进度;
所述应用层在确定第一分节点的待处理数据的处理进度减去第二分节点的待处理数据的处理进度大于阈值后,暂停接收所述第一分节点的待处理数据;所述第一分节点为所述多个分节点中任一分节点,所述第二分节点为所述多个分节点中除所述第一分节点之外的任一分节点。
具体实施过程中,应用层在接收到多个通道发送的待处理数据后,会根据接收到的数据判断通道情况,确保任意两个分节点的数据处理进度不超过阈值,从而保证模型的收敛。一种可选的实施例中,用迭代次数表示待处理数据的处理进度。其中,主节点从分节点获取训练后的数据进行一次梯度更新算作一次迭代。具体实现过程可以为应用层确定第一分节点的待处理数据的第一迭代次数以及第二分节点的待处理数据的第二迭代次数,将两者相减,若差值大于迭代阈值,则认为第一分节点和第二分节点处理进程差距过大,需要阻塞通道。例如,若第一迭代次数大于第二迭代次数,则应用层向半虚拟化前端接口发送阻塞通知消息,阻塞通知消息中包含第一分节点对应的通道标识。半虚拟化前端接口根据通道标识,暂停发送通道标识对应的待处理数据,达到对第一分节点对应的第一通道阻塞的目的。
举例来说,如图4所示,通道(thread)1的数据相较于通道2的数据,迭代次数大于3次,而迭代阈值(staleness threshold)设置为3,则需要对通道1进行阻塞,以保证收敛。
进一步地,应用层可以在第一迭代次数等于第二迭代次数之后,再向半虚拟化前端接口发送阻塞取消消息,半虚拟化前端接口根据阻塞取消消息开始继续发送第一分节点的待处理数据。
此外,应用层也可以将阻塞通知消息向半虚拟化后端接口发送,由半虚拟化后端接口执行对通道的阻塞。
一种可选的实施例中,已处理数据中包括通道标识;所述半虚拟化前端接口将所述已处理数据向所述半虚拟化后端接口发送,包括:
所述半虚拟化前端接口根据所述通道标识,将所述已处理数据添加至环形队列的对应位置;
所述半虚拟化后端接口循环读取所述环形队列中的已处理数据。
具体实施过程中,半虚拟化前端接口利用环形队列向半虚拟化后端接口发送应用层已处理数据。环形队列是一个承载大量数据的队列,具体设置有多少存储区域取决于需求,应用层中每一个进程对应环形队列中的一部分存储区域,当该进程处理完成待处理数据后,将已处理数据发送给半虚拟化前端接口,半虚拟化前端接口将已处理数据存入环形队列的对应存储区域。半虚拟化后端接口可以利用循环线程循环读取环形队列中存储的已处理数据,已处理数据被读取后,环形队列中对应的存储区域删除该已处理数据,将空间空出来等待新的已处理数据存入。若某进程对应的存储区域已存储满,则后续数据无法继续存入,只有等待循环线程将该存储区域的已处理数据取出,才可以继续向存储区域中加入新的已处理数据。此外,若某存储区域为空,即无数据存储,则循环线程跳过该存储区域,继续读取下一存储区域。本发明实施例中,半虚拟化前端接口利用环形队列的发送形式,解决了数据并发情况下,资源的竞争问题。
图5示出了本发明实施例提供的一种环形队列的示意图。如图5所示,环形队列中的区域1-3为应用层中进程1对应的存储区域,区域4-6为应用层中进程2对应的存储区域,区域7-9为应用层中进程3对应的存储区域。另设置循环线程以顺时针方向循环读取环形队列中的数据。例如,进程1依次将已处理数据a存入区域1中,将已处理数据b存入区域2中,将已处理数据c存入区域3中。循环线程也依次从区域1中读取已处理数据a,从区域2中读取已处理数据b,从区域3中读取已处理数据c。当循环线程读取了已处理数据a,则可将已处理数据d存入区域1。
进一步地,为了保证上述数据处理的执行,本发明实施例中的总节点在处理数据之前,需要执行初始化过程。总节点的网卡接收分节点发送的待处理数据之前,还包括:
所述总节点的应用层在初始化时,调用所述半虚拟化前端接口,与半虚拟化后端接口建立通道;
所述总节点的应用层建立所述半虚拟化前端接口与所述应用层操作接口之间的关联关系,以及所述半虚拟化前端接口与实现函数之间的关联关系。
具体实施过程中,在总节点启动时,需要将半虚拟化前端接口初始化,即通过应用层中的驱动,调用半虚拟化前端接口建立联接,并建立通道,一般通道的数量等于分节点的数量。另外,关联半虚拟化前端接口与应用层操作接口和实现函数,关联半虚拟化前端接口与发送包实现函数,关联半虚拟化前端接口与接收包实现函数。
进一步地,本发明实施例中的半虚拟化前端接口为virtio接口,半虚拟化后端接口为vhost接口。
其中,virtio是一种半虚拟化I/O(Input/Output,输入/输出)解决方案,是一套通用的I/O设备虚拟化的程序。virtio提供了一套上层应用程序与各虚拟化设备之间的通信框架和编程接口,减少跨平台所带来的兼容性问题,大大提高驱动程序开发效率。
vhost技术是virtio的一种后端实现方案,是在内核中加入了vhost-net.ko模块,使得网络数据可以在内核态得到处理,从而将部分virtio驱动的操作从用户态移到内核态,减少了用户态/内核态切换时间和数据包的拷贝次数,从而更进一步的提升了性能。
为了更清楚地理解本发明,下面以具体实施例对上述流程进行详细描述,在具体实施例中,数据处理过程为深度学习模型的训练过程,总节点为参数服务器,分节点为工作节点,半虚拟化前端接口为virtio接口,半虚拟化后端接口为vhost接口,具体过程如下所示,包括:
virtio接口初始化:与vhost接口建立Linux domain socket的联接,并建立相应的工作节点的通道,关联应用层操作接口和实现函数,关联发送包实现函数,关联接收包实现函数。创建virtio接口与vhost接口的连接后,根据配置的工作节点的节点IP,进行哈希计算并创建相应的通道,从而建立通道IP与节点IP的对应关系。应用层中的进程可以根据工作节点对应的通道获取数据进行梯度更新。
参数服务器的网卡接口接收到工作节点发送的待处理数据后,将待处理数据发送至vhost接口。vhost接口根据待处理数据中包含的节点IP,确定对应的通道,并利用对应的通道将待处理数据发送给virtio接口。
virtio接口将待处理数据发送至应用层。
应用层获取待处理数据后,根据SSP协议,计算该工作节点与其它工作节点的迭代次数之差,若该工作节点的迭代次数减去任一其它工作节点的迭代次数之差大于迭代阈值,则向vhost接口发送阻塞通知消息,阻塞通知消息中包含该工作节点的节点IP。从而vhost接口暂停向应用层发送该工作节点对应的待处理数据。
应用层根据待处理数据更新模型梯度,将得到的梯度参数发送至vhost接口。vhost接口利用环形队列的形式,将梯度参数发送至virtio接口。virtio接口再将梯度参数发送至网卡接口,网卡接口将梯度参数发送至对应的工作节点。从而工作节点根据接收到的梯度参数进行下一轮的训练。
本发明实施例还提供了一种分布式数据处理系统,如图6所示,包括:
网卡单元601,用于接收分节点发送的待处理数据,并将所述待处理数据向后端接口单元发送;
后端接口单元602,用于将所述待处理数据向前端接口单元发送;
前端接口单元603,用于将所述待处理数据向应用单元发送;
应用单元604,用于将所述待处理数据处理后得到已处理数据,并将所述已处理数据向所述前端接口单元发送;
所述前端接口单元603,还用于将所述已处理数据向所述后端接口单元发送;
所述网卡单元601,还用于接收所述后端接口单元发送的已处理数据,并将所述已处理数据向所述分节点发送。
一种可选的实施例中,所述网卡单元,具体用于接收多个分节点发送的待处理数据;所述待处理数据中包括对应分节点的节点标识;所述总节点中预设有节点标识与通道标识之间的对应关系;
所述后端接口单元,具体用于根据所述节点标识,确定对应的通道标识;根据所述通道标识,将所述待处理数据通过对应的通道向所述前端接口单元发送。
一种可选的实施例中,所述应用单元,还用于:
确定每个分节点的待处理数据的处理进度;
在确定第一分节点的待处理数据的处理进度减去第二分节点的待处理数据的处理进度大于阈值后,暂停接收所述第一分节点的待处理数据;所述第一分节点为所述多个分节点中任一分节点,所述第二分节点为所述多个分节点中除所述第一分节点之外的任一分节点。
一种可选的实施例中,所述已处理数据中包括通道标识;所述前端接口单元,具体用于根据所述通道标识,将所述已处理数据添加至环形队列的对应位置;
所述后端接口单元,用于循环读取所述环形队列中的已处理数据。
一种可选的实施例中,所述应用单元,还用于:
在初始化时,调用所述前端接口单元,与所述后端接口单元建立通道;
建立所述前端接口单元与应用层操作接口之间的关联关系,以及所述前端接口单元与实现函数之间的关联关系。
一种可选的实施例中,所述前端接口单元包括virtio接口,所述后端接口单元包括vhost接口。
基于相同的原理,本发明还提供一种电子设备,如图7所示,包括:
包括处理器701、存储器702、收发机703、总线接口704,其中处理器701、存储器702与收发机703之间通过总线接口704连接;
所述处理器701,用于读取所述存储器702中的程序,执行下列方法:
接收分节点发送的待处理数据,并将所述待处理数据向半虚拟化后端接口发送;
将所述待处理数据向半虚拟化前端接口发送;
将所述待处理数据向应用层发送;
将所述待处理数据处理后得到已处理数据,并将所述已处理数据向所述半虚拟化前端接口发送;
将所述已处理数据向所述半虚拟化后端接口发送;
接收所述半虚拟化后端接口发送的已处理数据,并将所述已处理数据向所述分节点发送。
所述处理器701,还用于:
接收多个分节点发送的待处理数据;所述待处理数据中包括对应分节点的节点标识;所述总节点中预设有节点标识与通道标识之间的对应关系;
根据所述节点标识,确定对应的通道标识;
根据所述通道标识,将所述待处理数据通过对应的通道向所述半虚拟化前端接口发送。
所述多个分节点发送的待处理数据对应于同一个模型;所述处理器701,还用于:
确定每个分节点的待处理数据的处理进度;
在确定第一分节点的待处理数据的处理进度减去第二分节点的待处理数据的处理进度大于阈值后,暂停接收所述第一分节点的待处理数据;所述第一分节点为所述多个分节点中任一分节点,所述第二分节点为所述多个分节点中除所述第一分节点之外的任一分节点。
所述已处理数据中包括通道标识;所述处理器701,还用于:
根据所述通道标识,将所述已处理数据添加至环形队列的对应位置;
循环读取所述环形队列中的已处理数据。
所述处理器701,还用于:
在初始化时,调用所述半虚拟化前端接口,与半虚拟化后端接口建立通道;
建立所述半虚拟化前端接口与所述应用层操作接口之间的关联关系,以及所述半虚拟化前端接口与实现函数之间的关联关系。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。

Claims (14)

1.一种分布式数据处理方法,其特征在于,包括:
总节点的网卡接收分节点发送的待处理数据,并将所述待处理数据向半虚拟化后端接口发送;
所述半虚拟化后端接口将所述待处理数据向半虚拟化前端接口发送;
所述半虚拟化前端接口将所述待处理数据向应用层发送;
所述应用层将所述待处理数据处理后得到已处理数据,并将所述已处理数据向所述半虚拟化前端接口发送;
所述半虚拟化前端接口将所述已处理数据向所述半虚拟化后端接口发送;
所述网卡接收所述半虚拟化后端接口发送的已处理数据,并将所述已处理数据向所述分节点发送;
所述半虚拟化前端接口将所述待处理数据向应用层发送之后,还包括:
所述应用层确定每个分节点的待处理数据的处理进度;
所述应用层在确定第一分节点的待处理数据的处理进度减去第二分节点的待处理数据的处理进度大于阈值后,暂停接收所述第一分节点的待处理数据。
2.如权利要求1所述的方法,其特征在于,所述总节点的网卡接收分节点发送的待处理数据,包括:
所述总节点的网卡接收多个分节点发送的待处理数据;所述待处理数据中包括对应分节点的节点标识;所述总节点中预设有节点标识与通道标识之间的对应关系;
所述半虚拟化后端接口将所述待处理数据向半虚拟化前端接口发送,包括:
所述半虚拟化后端接口根据所述节点标识,确定对应的通道标识;
所述半虚拟化后端接口根据所述通道标识,将所述待处理数据通过对应的通道向所述半虚拟化前端接口发送。
3.如权利要求2所述的方法,其特征在于,所述多个分节点发送的待处理数据对应于同一个模型;所述第一分节点为所述多个分节点中任一分节点,所述第二分节点为所述多个分节点中除所述第一分节点之外的任一分节点。
4.如权利要求2所述的方法,其特征在于,所述已处理数据中包括通道标识;所述半虚拟化前端接口将所述已处理数据向所述半虚拟化后端接口发送,包括:
所述半虚拟化前端接口根据所述通道标识,将所述已处理数据添加至环形队列的对应位置;
所述半虚拟化后端接口循环读取所述环形队列中的已处理数据。
5.如权利要求1所述的方法,其特征在于,所述总节点的网卡接收分节点发送的待处理数据之前,还包括:
所述总节点的应用层在初始化时,调用所述半虚拟化前端接口,与半虚拟化后端接口建立通道;
所述总节点的应用层建立所述半虚拟化前端接口与所述应用层操作接口之间的关联关系,以及所述半虚拟化前端接口与实现函数之间的关联关系。
6.如权利要求1至5任一项所述的方法,其特征在于,所述半虚拟化前端接口为virtio接口,所述半虚拟化后端接口为vhost接口。
7.一种分布式数据处理系统,其特征在于,包括:
总节点的网卡单元,用于接收分节点发送的待处理数据,并将所述待处理数据向后端接口单元发送;
后端接口单元,用于将所述待处理数据向前端接口单元发送;
前端接口单元,用于将所述待处理数据向应用单元发送;
应用单元,用于将所述待处理数据处理后得到已处理数据,并将所述已处理数据向所述前端接口单元发送;
所述前端接口单元,还用于将所述已处理数据向所述后端接口单元发送;
所述网卡单元,还用于接收所述后端接口单元发送的已处理数据,并将所述已处理数据向所述分节点发送;
所述应用单元,还用于:
确定每个分节点的待处理数据的处理进度;
在确定第一分节点的待处理数据的处理进度减去第二分节点的待处理数据的处理进度大于阈值后,暂停接收所述第一分节点的待处理数据。
8.如权利要求7所述的系统,其特征在于,所述网卡单元,具体用于接收多个分节点发送的待处理数据;所述待处理数据中包括对应分节点的节点标识;所述总节点中预设有节点标识与通道标识之间的对应关系;
所述后端接口单元,具体用于根据所述节点标识,确定对应的通道标识; 根据所述通道标识,将所述待处理数据通过对应的通道向所述前端接口单元发送。
9.如权利要求8所述的系统,其特征在于,所述第一分节点为所述多个分节点中任一分节点,所述第二分节点为所述多个分节点中除所述第一分节点之外的任一分节点。
10.如权利要求8所述的系统,其特征在于,所述已处理数据中包括通道标识;所述前端接口单元,具体用于根据所述通道标识,将所述已处理数据添加至环形队列的对应位置;
所述后端接口单元,用于循环读取所述环形队列中的已处理数据。
11.如权利要求7所述的系统,其特征在于,所述应用单元,还用于:
在初始化时,调用所述前端接口单元,与所述后端接口单元建立通道;
建立所述前端接口单元与应用层操作接口之间的关联关系,以及所述前端接口单元与实现函数之间的关联关系。
12.如权利要求7至11任一项所述的系统,其特征在于,所述前端接口单元包括virtio接口,所述后端接口单元包括vhost接口。
13.一种电子设备,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-6任一所述的方法。
14.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行权利要求1~6任一所述方法。
CN202010035856.8A 2020-01-14 2020-01-14 一种分布式数据处理方法及系统 Active CN111241201B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010035856.8A CN111241201B (zh) 2020-01-14 2020-01-14 一种分布式数据处理方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010035856.8A CN111241201B (zh) 2020-01-14 2020-01-14 一种分布式数据处理方法及系统

Publications (2)

Publication Number Publication Date
CN111241201A CN111241201A (zh) 2020-06-05
CN111241201B true CN111241201B (zh) 2023-02-07

Family

ID=70865399

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010035856.8A Active CN111241201B (zh) 2020-01-14 2020-01-14 一种分布式数据处理方法及系统

Country Status (1)

Country Link
CN (1) CN111241201B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111539829B (zh) 2020-07-08 2020-12-29 支付宝(杭州)信息技术有限公司 一种基于区块链一体机的待过滤交易识别方法及装置
CN111541726B (zh) 2020-07-08 2021-05-18 支付宝(杭州)信息技术有限公司 一种基于区块链一体机的重放交易识别方法及装置
CN111541783B (zh) * 2020-07-08 2020-10-20 支付宝(杭州)信息技术有限公司 一种基于区块链一体机的交易转发方法及装置
CN111541789A (zh) 2020-07-08 2020-08-14 支付宝(杭州)信息技术有限公司 一种基于区块链一体机的数据同步方法及装置
CN113726875A (zh) 2020-07-08 2021-11-30 支付宝(杭州)信息技术有限公司 一种基于区块链一体机的交易处理方法及装置
CN112380068A (zh) * 2020-12-04 2021-02-19 海光信息技术股份有限公司 一种虚拟机容错系统及其容错方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101430674A (zh) * 2008-12-23 2009-05-13 北京航空航天大学 一种分布式虚拟机监控器内连通信方法
CN103618809A (zh) * 2013-11-12 2014-03-05 华为技术有限公司 一种虚拟化环境下通信的方法、装置和系统
CN106095580A (zh) * 2016-06-14 2016-11-09 上海交通大学 一种针对半虚拟化网卡的数据包高效发送方法
WO2017026931A1 (en) * 2015-08-11 2017-02-16 Telefonaktiebolaget Lm Ericsson (Publ) Implementing input/output in a virtualized environment
CN108491278A (zh) * 2018-03-13 2018-09-04 网宿科技股份有限公司 一种处理业务数据的方法和网络设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9680764B2 (en) * 2013-04-06 2017-06-13 Citrix Systems, Inc. Systems and methods for diameter load balancing

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101430674A (zh) * 2008-12-23 2009-05-13 北京航空航天大学 一种分布式虚拟机监控器内连通信方法
CN103618809A (zh) * 2013-11-12 2014-03-05 华为技术有限公司 一种虚拟化环境下通信的方法、装置和系统
WO2017026931A1 (en) * 2015-08-11 2017-02-16 Telefonaktiebolaget Lm Ericsson (Publ) Implementing input/output in a virtualized environment
CN106095580A (zh) * 2016-06-14 2016-11-09 上海交通大学 一种针对半虚拟化网卡的数据包高效发送方法
CN108491278A (zh) * 2018-03-13 2018-09-04 网宿科技股份有限公司 一种处理业务数据的方法和网络设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
虚拟化技术在容灾系统中的应用;刘其成等;《小型微型计算机系统》;20101015(第10期);全文 *

Also Published As

Publication number Publication date
CN111241201A (zh) 2020-06-05

Similar Documents

Publication Publication Date Title
CN111241201B (zh) 一种分布式数据处理方法及系统
US10884808B2 (en) Edge computing platform
CN107025205B (zh) 一种分布式系统中的训练模型的方法及设备
US9614812B2 (en) Control methods and systems for improving virtual machine operations
US20190171435A1 (en) Distributed upgrade in virtualized computing environments
EP3454215A1 (en) Method for calling remote procedure in network device, and network device
EP3472988A1 (en) Providing data plane services for applications
US9753783B2 (en) System and method for accelerating mapreduce operation
US11245551B2 (en) Generating flexible, programmable, and scalable network tunnels on demand
WO2017066931A1 (zh) 网络功能虚拟化架构中证书的管理方法及装置
US10693801B2 (en) Packet drop reduction in virtual machine migration
US10164892B2 (en) Overhead management for virtual machines
CN105335211A (zh) 一种基于Xen虚拟化集群的FPGA加速器调度系统及方法
EP2814206A1 (en) Performing operations on nodes of distributed computer networks
US20150341427A1 (en) Systems and methods for using virtual machines to sequence native applications into virtual packages and for reimaging virtual machines
Wu et al. Computing meets network: Coin-aware offloading for data-intensive blind source separation
CN107534577B (zh) 一种网络业务实例化的方法及设备
KR102127591B1 (ko) 이벤트 기반 비동기식 통신 프레임워크에서의 동기식 통신 방법 및 장치
US10929167B2 (en) Low-latency events across a virtual machine boundary
CN111198698A (zh) 基于EtherCAT的多设备固件程序并行下载方法及系统
CN114780228A (zh) 一种混合云资源创建方法及系统
CN111147369B (zh) 路由系统、路由方法和服务器
US10977064B2 (en) Live virtual machine migration
CN111427634A (zh) 一种原子服务调度的方法及装置
CN115296956B (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