CN110401681A - 用于数据传输、数据接收的方法以及电子设备 - Google Patents
用于数据传输、数据接收的方法以及电子设备 Download PDFInfo
- Publication number
- CN110401681A CN110401681A CN201810362378.4A CN201810362378A CN110401681A CN 110401681 A CN110401681 A CN 110401681A CN 201810362378 A CN201810362378 A CN 201810362378A CN 110401681 A CN110401681 A CN 110401681A
- Authority
- CN
- China
- Prior art keywords
- cryptographic hash
- data
- initial data
- server
- hash
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/01—Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
- H04L67/5651—Reducing the amount or size of exchanged application data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Computational Linguistics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本公开的实施例涉及用于数据传输、数据接收的方法以及电子设备。数据传输方法包括:确定待传输的原始数据的哈希值;确定所述哈希值是否存在于预定的哈希值集合中;响应于在所述哈希值集合中存在所述哈希值,向服务器发送所述哈希值而不发送所述原始数据;以及响应于在所述哈希值集合中缺少所述哈希值,向所述服务器发送所述原始数据;以及将所述哈希值添加到所述哈希值集合中。本公开的实施例可以避免在客户端和服务器之间重复发送数据,同时无需在客户端和服务器之间增加额外的远程过程调用命令。
Description
技术领域
本公开的实施例涉及数据传输和数据接收领域,并且更具体地涉及在客户端设备和服务器之间进行数据传输和接收的方法、电子设备和计算机可读存储介质。
背景技术
目前,很多数据处理和计算的任务依赖于专用处理器来执行。例如,图形处理单元(GPU)作为一种常用的专用处理器,由于其高性能而被广泛地用作诸如高性能计算(HPC)、机器学习(ML)或深度学习(DL)之类的密集型计算任务的加速器。同时利用GPU和中央处理单元(CPU)能够提供GPU加速计算。GPU加速计算能够将应用程序的计算密集的工作负荷转移到GPU上,而其余程序代码仍由CPU运行。从用户的角度来看,应用程序的运行速度明显加快。
由于GPU之类的专用处理器的价格通常比较昂贵,如果每个用户只使用其本地的专用处理器,则专用处理器的总体使用率将是非常低的。当前,利用客户端-服务器模型建立了一种共享专用处理器的架构,来改善专用处理器的利用率。对于机器学习之类的应用而言,往往需要在客户端和服务器之间传送大量的数据(例如图像),从而会占用大量的网络带宽资源。因此,如何在这种架构中减少客户端和服务器之间传送的数据的量是一个需要解决的问题。
发明内容
本公开的实施例提供了一种数据传输方法、数据接收方法、电子设备和计算机可读存储介质,其能够避免在客户端和服务器之间传送重复的数据。
在本公开的第一方面,提供了一种数据传输方法。该方法包括:确定待传输的原始数据的哈希值;确定哈希值是否存在于预定的哈希值集合中;响应于在哈希值集合中存在所述哈希值,向服务器发送所述哈希值而不发送原始数据;以及响应于在哈希值集合中缺少所述哈希值,向所述服务器发送原始数据,并将所述哈希值添加到哈希值集合中。
在本公开的第二方面,提供了一种数据接收方法。该方法包括:接收数据;确定数据的类型;响应于数据为待接收的原始数据,确定原始数据的哈希值,并利用所述哈希值来存储原始数据;响应于数据为原始数据的哈希值,利用所述哈希值获取原始数据。
在本公开的第三方面,提供了一种电子设备。该电子设备包括处理器和存储器。存储器存储有指令,指令在被处理器执行时使得电子设备执行动作,所述动作包括:确定待传输的原始数据的哈希值;确定哈希值是否存在于预定的哈希值集合中;响应于在哈希值集合中存在所述哈希值,向服务器发送所述哈希值而不发送原始数据;以及响应于在哈希值集合中缺少所述哈希值,向所述服务器发送原始数据,并将所述哈希值添加到哈希值集合中。
在本公开的第四方面,提供了一种电子设备。该电子设备包括处理器和存储器。存储器存储有指令,指令在被处理器执行时使得电子设备执行动作,所述动作包括:接收数据;确定数据的类型;响应于数据为待接收的原始数据,确定原始数据的哈希值,并利用所述哈希值来存储原始数据;响应于数据为原始数据的哈希值,利用所述哈希值获取原始数据。
在本公开的第五方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,计算机可执行指令在被执行时使机器执行根据本公开第一方面或第二方面的方法。
提供发明内容部分是为了以简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。发明内容部分无意标识本公开的关键特征或主要特征,也无意限制本公开的范围。
附图说明
通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施例中,相同的参考标号通常代表相同部件。
图1示出了用于提供共享的专用处理器的架构的示意图。
图2示出了利用图1的架构对深度学习模型进行训练的过程的示意图。
图3示出了在没有数据去重处理的情况下在客户端和服务器之间传输数据的流程图。
图4示出了现有的避免数据重复的方法的流程图。
图5示出了可以在其中实施本公开实施例的示例性运行环境的示意图。
图6示出了根据本公开实施例的数据传输方法的流程图。
图7示出了根据本公开实施例的数据接收方法的流程图。
图8A-8H示出了根据本公开实施例的待传输数据状态、哈希值集合状态和键-值存储状态的示意图。
图9示出了可以用来实施本公开的实施例的示例性设备的框图。
具体实施方式
下面将参考附图中示出的若干示例实施例来描述本公开的原理。虽然附图中显示了本公开的优选实施例,但应当理解,描述这些实施例仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。
为了清楚的描述本公开的实施例,在下文中先结合图1到图4来描述共享专用处理器的架构、在该架构下进行模型训练的过程、在该架构下现有的数据传输方法以及现有方法所存在的问题。然后结合图 5到图9来描述根据本公开的实施例的方案。
图1示出了用于提供共享的专用处理器的架构100的示意图。这种架构100的示意图。如图所示,架构100可以包括客户端102、104、 106、服务器108和网络114。虽然在图1中示出了三个客户端102、 104、106和一个服务器108,但是本领域技术人员将理解的是,架构100可以包括任意数目的客户端和任意数目的服务器。
客户端102、104、106可以是通过网络114连接到服务器108的用户设备,例如台式计算机、膝上型计算机、平板电脑、智能手机等。客户端102、104、106上可以运行有应用程序,例如高性能计算应用、机器学习应用和深度学习应用等。
服务器108为客户端102、104、106上运行的应用提供共享的专用处理器,例如共享的GPU、共享的现场可编程门阵列(FPGA)等,以提供加速计算。服务器108可以包括专用处理器110、112。虽然图 1仅仅示出了两个专用处理器110、112,但是本领域技术人员将理解的是,服务器108可以包括任意数目的专用处理器。除了专用处理器 110、112以外,服务器108还可以包括未示出的其他部件,例如诸如中央处理单元(CPU)之类的通用处理器、存储系统等等。
客户端102、104、106向用户暴露虚拟的专用处理器接口(图1 中未示出)。当客户端102、104、106上的应用程序请求调用虚拟的专用处理器接口时,在客户端102、104、106与服务器108之间建立远程过程调用(RPC)信道。利用所建立的RPC信道来传送表示专用处理器函数的命令。例如,这些命令可以包括将客户端102、104、106 上的数据复制到专用处理器110、112上、运行专用处理器函数、将专用处理器110、112上的数据复制到客户端102、104、106等等。
图1所示的架构100当前被用于提升机器学习训练的性能。图2 示出了在架构100下对机器学习模型进行训练的过程200的示意图。
数据集210用于训练机器学习模型。数据集210可以具有多个数据块201、202、203、204、205、206、207、208。例如,在训练用于面部识别的模型时,每个数据块可以表示一张面部图像;在训练用于语音识别的模型时,每个数据块可以表示一段语音,等等。数据集210可以存储在客户端102、104、106的存储器中,也可以存储在云中。
在利用数据集210训练模型期间,通常进行多轮的训练220、230。虽然在图2中仅示出了两轮训练,但是本领域技术人员将理解的是,本公开的实施例并不限于两轮训练。在每轮训练220、230中,都会对用于训练的数据集210进行完整的访问,以不断地完善所训练的模型。
每轮训练220、230由多个训练步骤组成。在每轮训练220、230 中,数据集210首先被随机排序,然后针对不同的训练步骤被划分成大小相等的子集。如图2所示,在第一轮训练220中,数据集210被随机排序为数据块204、数据块205、数据块208、数据块201、数据块202、数据块207、数据块203、数据块206;而在第二轮训练230 中,数据集被随机排序为数据块202、数据块203、数据块208、数据块206、数据块205、数据块207、数据块204、数据块201。本领域技术人员将理解的是,图2中所示的数据块的数目以及顺序只是示例性的,本公开的实施例并不限于此。
如图所示,随机排序的数据集210随后针对多个训练步骤被划分成大小相等的多个子集,每个子集需要从客户端102、104、106被复制到服务器108中的专用处理器110、112上,以供专用处理器110、 112训练模型。例如,在第一轮训练220中,数据块204和数据块205用于步骤1,数据块208和数据块201用于步骤2,数据块202和数据块207用于步骤3,数据块203和数据块206用于步骤4。在第二轮训练230中,数据块202和203用于步骤1,数据块208和206用于步骤2,数据块205和207用于步骤3,数据块204和201用于步骤4。本领域技术人员将理解的是,图2中所示的步骤的数目以及子集中所包括的数据块的数目仅仅是示例性的,本公开的实施例并不限于此。
在每个训练步骤中,需要将用于该步骤的数据块从客户端102、 104、106传送到服务器108。图3示出了在不进行数据去重处理的情况下在客户端102与服务器108之间进行数据传输的过程300的示意图。
客户端102向服务器108发送(310)一组数据块,例如用于第一轮训练220的步骤1的数据块204和205。服务器108将接收到的组数据块复制(350)到专用处理器110、112上。客户端102向服务器108发送(320)运行专用处理器函数的请求。服务器108基于接收到的请求使得(360)专用处理器110、112利用被复制到专用处理器110、112上的数据块进行模型训练。对于每个训练步骤,在客户端102和服务器108之间重复上述过程,从而完成对所训练的模型的不断完善。
图3所示的过程300会造成在客户端102与服务器108之间传送大量重复的数据,使得在网络传输上上浪费时间和资源。如果网络带宽较低,将会导致专用处理器110、112一直等待数据,从而影响专用处理器110、112的性能。举例来说,在第一轮训练220的步骤1 中需要将数据块204从客户端102发送到服务器108,而在第二轮训练230的步骤4中还需要将数据块204从客户端102发送到服务器 108。随着训练轮数的不断增加,将会消耗更多的网络资源,甚至造成网络拥塞,这进而导致专用处理器110、112需要等待数据,从而影响专用处理器的性能。
针对这一问题,已经提出了在客户端102与服务器108之间避免数据重复传输的方法。图4示出了现有的避免数据重复传输的方法 400的流程图。
客户端102确定一组数据块的摘要,并将其发送(410)到服务器108。服务器108基于接收到的摘要来确定(450)服务器108中缺少这组数据块中的那些数据块。服务器108将缺少的数据块的指示发送(460)到客户端102。客户端102接收(420)到所述指示。客户端102基于所述指示,将服务器108上所缺少的数据块发送(430) 到服务器108。服务器108将接收到的数据块复制(470)到专用处理器110、112。客户端102发送(440)运行专用处理器函数的请求。服务器108基于接收到的所述请求利用专用处理器进行加速运算 (480)。
方法400利用数据块摘要,避免了数据的重复传输。这在网络带宽较低的情况下,能够达到比方法300更好的性能。但是与方法300 相比,在客户端102与服务器108之间增加了用于传送缺少的数据块的指示以及传送缺少的数据块的远程过程调用命令,这在网络时延 (每秒的查询次数)较大的情况下,每个远程过程调用命令可能都需要花费很长的时间才能到达目的地,从而导致专用处理器需要等待这些命令的完成,才能获得所需的数据,进而影响专用处理器的性能。
另一方面,当网络带宽很大时(例如使用无限带宽技术时),利用方法300可能会很快地将数据传输到服务器108,即使这些数据中存在重复。而方法400需要在客户端102和服务器108之间传送额外的远程过程调用命令,从而导致专用处理器110、112的等待时间可能更长。在这种情况下,方法400反而不如方法300。
鉴于此,本公开的实施例提出了一种在客户端和服务器之间传输数据的方案,其能够避免数据重复传输,同时确保不会在客户端和服务器之间增加额外的远程过程调用,从而确保专用处理器的性能不会受到网络环境的影响。
在根据本公开实施例的方案中,在客户端处维护一个预定的哈希值集合,其存储之前已经发送的原始数据的哈希值。对于待传输的原始数据(例如之前所述的数据块)而言,通过确定原始数据的哈希值是否存在于该哈希值集合中,来判断原始数据是否之前已经被发送过。如果之前已经发送过原始数据,则直接向服务器发送哈希值而不发送原始数据,否则向服务器发送原始数据,并将其哈希值添加到哈希值集合中。相应地,在服务器侧维护一个数据存储库,其按照原始数据的哈希值来存储原始数据。如果服务器接收到原始数据的哈希值,则基于哈希值从数据存储库中获取原始数据。如果服务器接收到原始数据,则利用原始数据的哈希值来将原始数据存储在数据存储库中。
在本公开的实施例的方案中,在客户端侧确定待传输的原始数据之前是否被发送过,而无需在客户端和服务器两者之间来回传递关于所缺少的数据的指示以及所缺少的数据(如图4所示)。与现有方法 400相比,这减少了远程调用命令的数目,同时避免了对数据的重复传输。进一步地,由于减少了远程调用命令的数目,所以在任何网络环境下(无论网络带宽、网络时延如何),服务器侧的等待时间都不会变长,从而确保了服务器侧的专用处理器的性能。
图5示出了可以在其中实施本公开实施例的示例性运行环境500 的示意图。需要注意的是,环境500与图1所示的架构100类似,但是包括更多的细节,以便清楚透彻地描述本公开的实施例。
环境500包括客户端502、服务器512以及网络510。客户端502 和服务器512通过网络510进行通信。客户端502上可以运行有应用 504,例如高性能计算应用、机器学习应用和深度学习应用等。客户端502可以包括存储器506,其存储与应用504相关联的各种数据。在应用504为深度学习应用的情况下,存储器506中可以存储用于训练深度学习模型的数据集,例如图像数据集、语音数据集、文本数据集等等。
服务器512可以包括存储器514和专用处理器516。存储器514 可以存储各种类型的数据,例如从客户端502接收到的数据。专用处理器516可以为客户端502上运行的应用504提供加速运算。专用处理器510具有专门的存储器518,其容量通常较小,例如大小为8GB-16GB,但是吞吐量极高,例如达到900GB/s。
为了使得客户端502与服务器512能够进行与专用处理器516相关联的通信,客户端502可以包括通信模块508,服务器512可以包括对应的通信模块520。如之前所描述的,客户端502向应用504暴露虚拟的专用处理器接口。当应用504请求调用该虚拟的专用处理器接口时,通信模块508拦截该请求,并将该请求发送到服务器512的通信模块520。通信模块520接收到所述请求,并将所述请求转发到专用处理器516以进行相关处理。
在本公开的实施例中,通信模块508从存储器506获取应用504 要向服务器512发送的原始数据,并确定原始数据的哈希值是否存在于预定的哈希值集合中。如果该哈希值存在于哈希值集合中,则表明该原始数据已经被发送过,为此通信模块508向服务器512中的通信模块520发送该哈希值而不发送原始数据。如果该哈希值不存在于哈希值集合中,则表明之前未发送过该原始数据,为此通信模块508向通信模块520发送该原始数据,并将该原始数据的哈希值添加到哈希值集合中。
在服务器512处,在从客户端502接收到数据时,通信模块520 确定接收到的数据是原始数据还是原始数据的哈希值。如果接收到的数据是原始数据,则通信模块520利用原始数据的哈希值将原始数据存储在存储器514中,并将原始数据复制到专用处理器516的存储器 518中。如果接收到的数据是哈希值,则通信模块520利用该哈希值从存储器514获取原始数据,并将原始数据复制到存储器518中,以供专用处理器516来处理。
在本公开的实施例中,通过在客户端502处维持一个哈希值集合,来判断待传输的原始数据之前是否已被发送过,从而能够实现在客户端502本地确定待传输的数据是否属于重复数据,而无需等待来自服务器512的响应。从而减少了客户端502与服务器512之间传递的远程过程调用命令的数目,同时避免数据重复传输。与现有方法400相比,本公开的实施例的方案能够显著减少专用处理器516等待要被处理的数据的时间,从而确保专用处理器516的性能。
图6示出了根据本公开实施例的数据传输方法600的流程图。方法600可以由图5中所示的客户端502来执行,例如由客户端502中的通信模块508来执行。
在框602,通信模块508确定待传输的原始数据的哈希值。通信模块508可以从存储器506获取待传输的原始数据。在本公开的实施例中,所述原始数据可以是应用504用于训练机器学习模型的图像、语音、文本等,但本公开的实施例并不限于机器学习。原始数据可以是任何需要在客户端502与服务器512之间传输的数据。
在本公开的实施例中,通信模块508可以利用哈希函数来确定原始数据的哈希值。哈希值的长度小于原始数据的长度。例如,可以利用哈希函数将1M字节的图像变换为256比特的哈希值,从而获得图像的压缩表示。
在框604,通信模块508确定该哈希值是否存在于预定的哈希值集合中。预定的哈希值集合中存储之前已经被发送到服务器518的原始数据的哈希值。在本公开的实施例中,哈希值集合初始为空,随着原始数据被发送到服务器512,哈希值集合不断地被填充。
在框606,响应于在哈希值集合中存在该哈希值,通信模块508 向服务器512发送该哈希值,而不发送原始数据。如果哈希值集合中存在该哈希值,则表明与该哈希值相关联的原始数据之前已经被发送到服务器512。在这种情况下,仅仅发送比原始数据的长度小得多的哈希值,从而减少了在网络上传输的数据量。
在本公开的实施例中,通信模块508可以将关于哈希值的类型的指示与哈希值一起发送到服务器512,使得服务器512可以基于该指示来确定接收到的数据为哈希值,而不是原始数据。
在框606,响应于在哈希值集合中缺少该哈希值,通信模块508 向服务器发送原始数据。如果该哈希值不存在于哈希值集合中,则表明原始数据之前未被发送过。在这种情况下,需要将原始数据发送到服务器518。
在本公开的实施例中,通信模块508可以将关于原始数据的类型的指示与原始数据一起发送到服务器518,使得服务器512可以基于该指示来确定接收到的数据为原始数据而不是哈希值。
在本公开的实施例中,通信模块508可以将该哈希值与原始数据一起发送到服务器518。以这种方式,可以避免在服务器512处重新计算原始数据的哈希值,从而节省服务器512处的计算资源。
在框610,通信模块508将哈希值添加到哈希值集合中,以表明与该哈希值相关联的原始数据已经被发送给服务器512。从而,当需要再次向服务器512发送该原始数据时,可以避免对该原始数据的重复传输。
利用方法600,在客户端本地确定待传输的原始数据之前是否被发送过,如果之前被发送过则仅发送原始数据的哈希值,从而减少了对网络资源的占用。并且,方法600利用本地维护的哈希值集合来确定原始数据之前是否被发送,而不需要和服务器512进行交互,从而不需要在网络上传递额外的远程过程调用命令。这进而使得服务器 512能够快速地获得所需的数据,而不必像现有方法400那样需要等待远程过程调用命令的完成才能获得所需数据。从而,无论是在网络带宽受限的情况下,还是在网络时延高的情况下,抑或是在利用无线带宽技术的情况下,方法600都能够确保服务器512中的专用处理器 516的高性能。
图7示出了根据本公开的实施例的数据接收方法700的流程图。方法700可以由图5中所示的服务器512来执行,例如由服务器512 中的通信模块520来执行。
在框702,通信模块520接收数据。例如,通信模块520可以接收来自客户端502的数据。该数据可以是待接收的原始数据,也可以是待接收的原始数据的哈希值。
在框704,通信模块520确定所接收的数据是待接收的原始数据还是所述原始数据的哈希值。在本公开的实施例中,通信模块520可以基于随数据一起接收到的关于该数据的类型的指示,来确定该数据的类型。举例而言而非限制地,可以利用一个类型指示位来表示数据的类型。例如,“0”表示哈希值,“1”表示原始数据,反之亦然。通信模块520也可以利用接收到的数据的长度来确定该数据的类型。例如,如果数据长度为256比特,则表明该数据为哈希值,如果数据长度为1M,这表明该数据为原始数据(例如图像)。本领域技术人员将理解的是,这些数值仅仅是示例性的,本公开的实施例并不限于此。
在框706,响应于接收到的数据为原始数据的哈希值,通信模块 520利用哈希值来获取原始数据。如果接收到的数据为哈希值,则表明原始数据之前已经被发送到服务器512,并且服务器512已经存储了原始数据。在这种情况下,通信模块520可以利用原始数据的哈希值来从存储器514获取该原始数据。在本公开的实施例中,服务器512 可以在存储器514中维护一个键-值存储数据库,用来基于哈希值来存储原始数据。通信模块520可以以接收到的哈希值为键,来从键- 值存储数据库中获取已经存储的原始数据。
在框708,响应于接收到的数据为待接收的原始数据,通信模块 520确定原始数据的哈希值。在本公开的实施例中,在客户端502将哈希值与原始数据一起发送给服务器512的情况下,通信模块520可以直接从接收到的数据中提取出该哈希值。以这种方式,可以重复利用在客户端502处确定的哈希值,避免在服务器518处进行重复计算,从而节省了服务器512处的计算资源。
在本公开的实施例中,在客户端502仅仅发送原始数据而未发送哈希值的情况下,通信模块520可以使用与客户端502处所使用的哈希函数相同的哈希函数来确定原始数据的哈希值。
在框710,通信模块520利用所确定的哈希值来将原始数据存储到存储器514中。如果所接收到的数据为原始数据,则表明该原始数据是第一次被发送到服务器512。在这种情况下,需要在服务器512 处存储原始数据,以便在再次需要使用该原始数据时能够取回该原始数据。在本公开的实施例中,服务器512可以在存储器514中维护一个键-值存储数据库。通信模块512可以以哈希值为键将原始数据存储在键-值存储数据库中。利用键-值存储数据库,可以基于键快速地取回原始数据。
在本公开的实施例中,考虑到存储器的容量以及存储条目的规模,键-值存储可以是哈希映射、B树或两者的组合中的一个。例如,在不需要将原始数据存储到硬盘的情况下,可以采用哈希映射。在需要将原始数据存储到硬盘的情况下,可以采用B树。或者,可以针对高速缓存采用哈希映射,而针对存储条目退回硬盘而采用B树。
之后,通信模块520可以将接收到的原始数据或者从存储器514 获取的原始数据复制到专用处理器516的存储器518中,以供专用处理器516进行处理,例如训练机器学习模型。
方法700与方法600相互配合,实现了在客户端502与服务器512 之间避免重复发送数据,同时无须在客户端502与服务器512之间来回地传递关于数据是否重复的指示以及服务器512所缺少的数据,从而减少了两者之间传递的远程调用命令的数目。以这种方式,确保了专用处理器516的性能不会受到网络环境的影响。
参考图8A-8H,将会更容易理解本公开的实施例的总构思和优点。图8A-8H示出了随着方法600、700的执行待传输数据的状态、哈希值集合的状态和键-值存储的状态的变化的示意图。
如图8A所示,初始时,待传输的数据序列800为数据块801、 802、805、804、801、803、805、802。客户端502处的哈希值集合 810和服务器512处的键-值存储分别为空。在图8A所示的例子中,当前待传输的原始数据为数据块801。客户端502确定数据块801的哈希值801’不存在于哈希值集合810中,从而将数据块801发送到服务器512,并将哈希值801’添加到哈希值集合810中,如图8B所示。服务器512接收到数据块801,并以哈希值801’为键,将数据块801 存储到键-值存储820中,如图8B所示。
在图8B中,待传输的原始数据为数据块802,此时哈希值集合 810包括哈希值801’,键-值存储820包括哈希值801’-数据块801。客户端502确定数据块802的哈希值802’不存在于哈希值集合810中,从而将数据块802发送到服务器512,并将哈希值802’添加到哈希值集合中,如图8C所示。服务器512接收到数据块802,并以哈希值 802’为键,将数据块802存储到键-值存储820中,如图8C所示。
在图8C中,待传输的原始数据为数据块805,此时哈希值集合 810包括哈希值801’和哈希值802’,键-值存储820包括哈希值801’- 数据块801和哈希值802’-数据块802。客户端502确定数据块805 的哈希值805’不存在于哈希值集合810中,从而将数据块805发送到服务器512,并将哈希值805’添加到哈希值集合810中,如图8D所示。服务器512接收到数据块805,并以哈希值805’为键,将数据块805存储到键-值存储820中,如图8D的所示。
在图8D中,待传输的原始数据为数据块804,此时哈希值集合810包括哈希值801’、哈希值802’和哈希值805’,键-值存储820包括哈希值801’-数据块801、哈希值802’-数据块802和哈希值805’- 数据块805。客户端502确定数据块804的哈希值804’不存在于哈希值集合810中,从而将数据块804发送到服务器512,并将哈希值804’添加到哈希值集合810中,如图8E所示。服务器512接收到数据块 804,并以哈希值804’为键,将数据块804存储到键-值存储820中,如图8E的所示。
在图8E中,待传输的原始数据为数据块801,此时哈希值集合 810包括哈希值801’、哈希值802’、哈希值805’和哈希值804’,键- 值存储820包括哈希值801’-数据块801、哈希值802’-数据块802、哈希值805’-数据块805和哈希值804’-数据块804。客户端502确定数据块801的哈希值801’存在于哈希值集合810中,从而将哈希值 801’发送到服务器512而不再发送数据块801,从而避免了数据块801 的重复传输。服务器512接收到哈希值801’,并以哈希值801’为键,从键-值存储820中获取先前存储的数据块801。
在图8F中,待传输的原始数据为数据块805,此时哈希值集合 810包括哈希值801’、哈希值802’、哈希值805’和哈希值804’,键- 值存储820包括哈希值801’-数据块801、哈希值802’-数据块802、哈希值805’-数据块805和哈希值804’-数据块804。客户端502确定数据块805的哈希值805’存在于哈希值集合810中,从而将哈希值 805’发送到服务器512而不再发送数据块805,从而避免了数据块805 的重复传输。服务器512接收到哈希值805’,并以哈希值805’为键,从键-值存储820中获取先前存储的数据块805。
在图8G中,待传输的原始数据为数据块804,此时哈希值集810 合包括哈希值801’、哈希值802’、哈希值805’和哈希值804’,键-值存储820包括哈希值801’-数据块801、哈希值802’-数据块802、哈希值805’-数据块805和哈希值804’-数据块804。客户端502确定数据块804的哈希值804’存在于哈希值集合810中,从而将哈希值804’发送到服务器512而不再发送数据块804,从而避免了数据块804的重复传输。服务器512接收到哈希值804’,并以哈希值804’为键,从键-值存储820中获取先前存储的数据块804。
在图8H中,待传输的原始数据为数据块802,此时哈希值集合 810包括哈希值801’、哈希值802’、哈希值805’和哈希值804’,键- 值存储820包括哈希值801’-数据块801、哈希值802’-数据块802、哈希值805’-数据块805和哈希值804’-数据块804。客户端502确定数据块802的哈希值802’存在于哈希值集合810中,从而将哈希值 802’发送到服务器512而不再发送数据块802,从而避免了数据块802 的重复传输。服务器512接收到哈希值802’,并以哈希值802’为键,从键-值存储820中获取先前存储的数据块802。
在本公开的实施例中,客户端502基于待传输的原始数据的哈希值以及本地维护的哈希值集合来确定待传输的原始数据之前是否被发送过,而不需要请求服务器512进行这种确定,从而在避免数据重复传输的同时,减少了客户端502与服务器512之间的远程过程调用命令的数目。另一方面,服务器512基于客户端502所发送的哈希值来确定与哈希值相关联的原始数据之前已经存储在服务器512处,并基于哈希值来获取该原始数据,而不必等待客户端502发送该原始数据就可利用专用处理器516进行加速运算。从而避免了数据的重复传输,并确保了专用处理器516的性能不会受到网络环境的影响。
图9示出了可以用来实施本公开的实施例的示例设备900的示意性框图。设备900可以用于实现图5的客户端502和服务器512两者。如图9所示,设备900包括中央处理单元(CPU)901,其可以根据存储在只读存储器(ROM)902中的计算机程序指令或者从存储单元908加载到随机访问存储器(RAM)903中的计算机程序指令,来执行各种适当的动作和处理。在RAM 903中,还可存储设备900操作所需的各种程序和数据。CPU 901、ROM 902以及RAM903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
设备900中的多个部件连接至I/O接口905,包括:输入单元906,例如键盘、鼠标等;输出单元907,例如各种类型的显示器、扬声器等;存储单元908,例如磁盘、光盘等;以及通信单元909,例如网卡、调制解调器、无线通信收发机等。通信单元909允许设备900通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/ 数据。
处理单元901执行上文所描述的各个方法和处理,例如方法600 和/或方法700。例如,在一些实施例中,方法600和/或方法700可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元908。在一些实施例中,计算机程序的部分或者全部可以经由 ROM 902和/或通信单元909而被载入和/或安装到设备900上。当计算机程序加载到RAM903并由CPU 901执行时,可以执行上文描述的方法600和/或方法700的一个或多个步骤。备选地,在其他实施例中,CPU 901可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法600和/或方法700。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)等等。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (19)
1.一种数据传输方法,包括:
确定待传输的原始数据的哈希值;
确定所述哈希值是否存在于预定的哈希值集合中;
响应于在所述哈希值集合中存在所述哈希值,向服务器发送所述哈希值而不发送所述原始数据;以及
响应于在所述哈希值集合中缺少所述哈希值,
向所述服务器发送所述原始数据;以及
将所述哈希值添加到所述哈希值集合中。
2.根据权利要求1所述的方法,其中向所述服务器发送所述哈希值包括:
将关于所述哈希值的类型的指示与所述哈希值一起发送到所述服务器。
3.根据权利要求1所述的方法,其中向所述服务器发送所述原始数据包括:
将关于所述原始数据的类型的指示与所述原始数据一起发送到所述服务器。
4.根据权利要求1所述的方法,其中向所述服务器发送所述原始数据包括:
将所述哈希值与所述原始数据一起发送到所述服务器。
5.一种数据接收方法,包括:
接收数据;
确定所述数据的类型;
响应于所述数据为待接收的原始数据,
确定所述原始数据的哈希值;以及
利用所述哈希值来存储所述原始数据;
响应于所述数据为所述原始数据的哈希值,
利用所述哈希值获取所述原始数据。
6.根据权利要求5所述的方法,其中利用所述哈希值来存储所述原始数据包括:
以所述哈希值为键将所述原始数据存储在键-值存储中。
7.根据权利要求5所述的方法,其中利用所述哈希值获取所述原始数据包括:
利用所述哈希值从键-值存储中获取所述原始数据。
8.根据权利要求5所述的方法,还包括:
将所述原始数据复制到专用处理器中以由所述专用处理器处理。
9.根据权利要求6或7所述的方法,其中所述键-值存储包括哈希映射、B树或两者的组合中的一个。
10.一种电子设备,包括:
处理器;以及
存储器,所述存储器存储有指令,所述指令在被所述处理器执行时使得所述电子设备执行以下动作:
确定待传输的原始数据的哈希值;
确定所述哈希值是否存在于预定的哈希值集合中;
响应于在所述哈希值集合中存在所述哈希值,向服务器发送所述哈希值而不发送所述原始数据;以及
响应于在所述哈希值集合中缺少所述哈希值,
向所述服务器发送所述原始数据;以及
将所述哈希值添加到所述哈希值集合中。
11.根据权利要求10所述的电子设备,其中向所述服务器发送所述哈希值包括:
将关于所述哈希值的类型的指示与所述哈希值一起发送到所述服务器。
12.根据权利要求10所述的电子设备,其中向所述服务器发送所述原始数据包括:
将关于所述原始数据的类型的指示与所述原始数据一起发送到所述服务器。
13.根据权利要求10所述的电子设备,其中向所述服务器发送所述原始数据包括:
将所述哈希值与所述原始数据一起发送到所述服务器。
14.一种电子设备,包括:
处理器;以及
存储器,所述存储器存储有指令,所述指令在被所述处理器执行时使得所述电子设备
接收数据;
确定所述数据的类型;
响应于所述数据为待接收的原始数据,
确定所述原始数据的哈希值;以及
利用所述哈希值来存储所述原始数据;
响应于所述数据为所述原始数据的哈希值,
利用所述哈希值获取所述原始数据。
15.根据权利要求14所述的电子设备,其中利用所述哈希值来存储所述原始数据包括:
以所述哈希值为键将所述原始数据存储在键-值存储中。
16.根据权利要求14所述的电子设备,其中利用所述哈希值获取所述原始数据包括:
利用所述哈希值从键-值存储中获取所述原始数据。
17.根据权利要求14所述的电子设备,还包括:
将所述原始数据复制到专用处理器中以由所述专用处理器处理。
18.根据权利要求15或16所述的电子设备,其中所述键-值存储包括哈希映射、B树或两者的组合中的一个。
19.一种计算机可读存储介质,其存储有计算机可执行指令,所述计算机可执行指令在被执行时使得机器执行根据权利要求1-9中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810362378.4A CN110401681B (zh) | 2018-04-20 | 2018-04-20 | 用于数据传输、数据接收的方法以及电子设备 |
US16/381,719 US11190620B2 (en) | 2018-04-20 | 2019-04-11 | Methods and electronic devices for data transmission and reception |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810362378.4A CN110401681B (zh) | 2018-04-20 | 2018-04-20 | 用于数据传输、数据接收的方法以及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110401681A true CN110401681A (zh) | 2019-11-01 |
CN110401681B CN110401681B (zh) | 2022-06-24 |
Family
ID=68236609
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810362378.4A Active CN110401681B (zh) | 2018-04-20 | 2018-04-20 | 用于数据传输、数据接收的方法以及电子设备 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11190620B2 (zh) |
CN (1) | CN110401681B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113227958A (zh) * | 2019-12-03 | 2021-08-06 | 华为技术有限公司 | 用于重复数据删除中优化的设备、系统和方法 |
CN115470175A (zh) * | 2022-10-10 | 2022-12-13 | 维塔科技(北京)有限公司 | 应用程序远程通信方法、客户端及服务端 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10698766B2 (en) * | 2018-04-18 | 2020-06-30 | EMC IP Holding Company LLC | Optimization of checkpoint operations for deep learning computing |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1914635A2 (en) * | 2006-05-24 | 2008-04-23 | NEC Display Solutions Ltd | Image displaying device having image cache memory |
US20130136125A1 (en) * | 2011-11-29 | 2013-05-30 | Wyse Technology Inc. | Bandwidth optimization for remote desktop protocol |
CN106682215A (zh) * | 2016-12-30 | 2017-05-17 | 华为技术有限公司 | 一种数据处理方法和管理节点 |
CN107294937A (zh) * | 2016-04-11 | 2017-10-24 | 平安科技(深圳)有限公司 | 基于网络通信的数据传输方法、客户端及服务器 |
CN107391298A (zh) * | 2017-07-06 | 2017-11-24 | 上海策链信息科技有限公司 | 数据存储状态检测方法、装置及计算机可读存储介质 |
CN107590157A (zh) * | 2016-07-08 | 2018-01-16 | 腾讯科技(深圳)有限公司 | 一种数据存储方法、数据查询方法及相关设备 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5942634B2 (ja) * | 2012-06-27 | 2016-06-29 | 富士通株式会社 | 秘匿化装置、秘匿化プログラムおよび秘匿化方法 |
US9378179B2 (en) * | 2012-11-21 | 2016-06-28 | International Business Machines Corporation | RDMA-optimized high-performance distributed cache |
JP2014119486A (ja) * | 2012-12-13 | 2014-06-30 | Hitachi Solutions Ltd | 秘匿検索処理システム、秘匿検索処理方法、および秘匿検索処理プログラム |
KR102070149B1 (ko) * | 2013-06-10 | 2020-01-28 | 에스케이텔레콤 주식회사 | 통신 네트워크에서 컨텐츠 전달 방법 및 이를 위한 장치 |
CN104866351B (zh) * | 2015-05-27 | 2018-03-09 | 百富计算机技术(深圳)有限公司 | 一种数据传输方法、服务端及客户端 |
JP6675227B2 (ja) * | 2016-02-26 | 2020-04-01 | キヤノン株式会社 | 情報処理装置、情報処理システム、情報処理方法、及びプログラム |
US11075744B2 (en) * | 2017-11-20 | 2021-07-27 | Acronis International Gmbh | Blockchain-based media content authentication methods and systems |
-
2018
- 2018-04-20 CN CN201810362378.4A patent/CN110401681B/zh active Active
-
2019
- 2019-04-11 US US16/381,719 patent/US11190620B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1914635A2 (en) * | 2006-05-24 | 2008-04-23 | NEC Display Solutions Ltd | Image displaying device having image cache memory |
US20130136125A1 (en) * | 2011-11-29 | 2013-05-30 | Wyse Technology Inc. | Bandwidth optimization for remote desktop protocol |
CN107294937A (zh) * | 2016-04-11 | 2017-10-24 | 平安科技(深圳)有限公司 | 基于网络通信的数据传输方法、客户端及服务器 |
CN107590157A (zh) * | 2016-07-08 | 2018-01-16 | 腾讯科技(深圳)有限公司 | 一种数据存储方法、数据查询方法及相关设备 |
CN106682215A (zh) * | 2016-12-30 | 2017-05-17 | 华为技术有限公司 | 一种数据处理方法和管理节点 |
CN107391298A (zh) * | 2017-07-06 | 2017-11-24 | 上海策链信息科技有限公司 | 数据存储状态检测方法、装置及计算机可读存储介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113227958A (zh) * | 2019-12-03 | 2021-08-06 | 华为技术有限公司 | 用于重复数据删除中优化的设备、系统和方法 |
CN113227958B (zh) * | 2019-12-03 | 2023-07-18 | 华为技术有限公司 | 用于重复数据删除中优化的设备、系统和方法 |
CN115470175A (zh) * | 2022-10-10 | 2022-12-13 | 维塔科技(北京)有限公司 | 应用程序远程通信方法、客户端及服务端 |
Also Published As
Publication number | Publication date |
---|---|
CN110401681B (zh) | 2022-06-24 |
US11190620B2 (en) | 2021-11-30 |
US20190327342A1 (en) | 2019-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102412937B1 (ko) | 합성곱 계층 가속 장치, 그것을 포함하는 임베디드 시스템 및 그것의 동작 방법 | |
CN109074377B (zh) | 用于实时处理数据流的受管理功能执行 | |
CN105765554B (zh) | 在分布式存储系统上分发数据 | |
CN106503791A (zh) | 用于有效神经网络部署的系统和方法 | |
US10693816B2 (en) | Communication methods and systems, electronic devices, and computer clusters | |
CN104216865B (zh) | 映射和化简运算加速系统及方法 | |
CN109783472A (zh) | 表数据的迁移方法、装置、计算机设备和存储介质 | |
CN110401681A (zh) | 用于数据传输、数据接收的方法以及电子设备 | |
CN114861911B (zh) | 深度学习模型的训练方法、装置、系统、设备和介质 | |
CN105407356B (zh) | 高速实时jpeg2000解码方法 | |
WO2022206717A1 (zh) | 一种模型训练方法及装置 | |
TW202207031A (zh) | 用於記憶體通道控制器之負載平衡 | |
CN108920281A (zh) | 大规模图片处理方法及系统 | |
CN107646105A (zh) | 云计算基础架构 | |
CN112667562B (zh) | 一种基于cpu-fpga的大规模图上的随机游走异构计算系统 | |
CN105144099B (zh) | 通信系统 | |
TWI758223B (zh) | 具有動態最小批次尺寸之運算方法,以及用於執行該方法之運算系統及電腦可讀儲存媒體 | |
CN117015767A (zh) | 存储器信道控制器的芯片上互连 | |
WO2022236128A1 (en) | Asynchronous distributed data flow for machine learning workloads | |
CN108804502A (zh) | 大数据查询系统、方法、计算机设备及存储介质 | |
CN114741161A (zh) | 一种基于混合集群的hpc作业集群感知方法 | |
US11263517B1 (en) | Flexible weight expansion | |
CN114424174A (zh) | 用于神经网络加速器的参数高速缓存 | |
WO2022228060A1 (zh) | 数据处理方法、装置及系统 | |
CN110362457A (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 |