基于区块链的数据训练方法、装置、存储介质及区块链节点与流程

文档序号:14994740发布日期:2018-07-24 08:24阅读:257来源:国知局

本公开涉及区块链领域,尤其涉及一种基于区块链的数据训练方法、装置、存储介质及区块链节点。



背景技术:

区块链技术是一种分布式、去中心、去信任的网络数据共识存储技术,其基于独特的区块(Block)生成机制和P2P(Point to Point,点对点)网络通信机制实现了分布式计算的同步性问题。

通常意义上,在区块链的形成过程中,每一个节点均享有相同的权限,其中包括转账(Transaction),计算区块(挖矿)等权限。但是,区块链网络中并非每一节点均参与挖矿计算,有的具备计算能力的节点并不参与挖矿,或者不是时刻处于挖矿状态,由于区块链网络是由大量节点共同组成的一个点对点的网络,这就导致了大量的计算资源处于空闲状态,造成资源浪费。而目前的相关技术中还未考虑到如何充分利用区块链计算资源的问题。



技术实现要素:

本公开的主要目的是提供一种基于区块链的数据训练方法、装置、存储介质及区块链节点,以解决现有区块链网络中计算资源浪费的问题。

为了实现上述目的,本公开第一方面提供一种基于区块链的数据训练方法,所述方法包括:

发起节点向区块链中存储的智能合约写入资源请求,所述发起节点是区块链网络中的节点,所述智能合约用于根据所述资源请求向所述发起节点返回其他区块链节点的计算资源信息;

所述发起节点根据所述计算资源信息选择目标区块链节点,并将选择结果写入所述智能合约,所述智能合约根据所述选择结果指示被选中所述目标区块链节点进行数据训练。

本公开第二方面提供另一种基于区块链的数据训练方法,所述方法应用于区块链节点,所述方法包括:

将所述区块链节点自身的计算资源信息写入区块链中,所述计算资源信息用于所述区块链中的智能合约在被发起节点写入资源请求时,将所述区块链节点的计算资源信息返回给所述发起节点;

所述区块链节点在确定自身为被所述发起节点选中的节点时,根据所述智能合约进行所述发起节点发起的数据训练。

本公开第三方面提供一种数据训练装置,所述数据训练装置应用于作为发起节点的区块链节点,包括:

资源请求模块,用于向区块链中存储的智能合约写入资源请求,所述智能合约用于根据所述资源请求向所述发起节点返回其他区块链节点的计算资源信息;

节点选择模块,用于根据所述计算资源信息选择目标区块链节点,并将选择结果写入所述智能合约,所述智能合约根据所述选择结果指示被选中所述目标区块链节点进行数据训练。

本公开第四方面提供一种数据训练装置,所述装置应用于区块链节点,包括:

信息写入模块,用于将所述区块链节点自身的计算资源信息写入区块链中,所述计算资源信息用于所述区块链中的智能合约在被发起节点写入资源请求时,将所述区块链节点的计算资源信息返回给所述发起节点;

数据训练模块,用于在确定所述区块链节点自身为被所述发起节点选中的节点时,根据所述智能合约进行所述发起节点发起的数据训练。

本公开第五方面提供一种非临时性计算机可读存储介质,所述非临时性计算机可读存储介质中包括一个或多个程序,所述一个或多个程序用于执行本公开第一方面或者第二方面所述的方法。

本公开第六方面提供一种区块链节点,包括:

本公开第五方面所述的非临时性计算机可读存储介质;以及

一个或者多个处理器,用于执行所述非临时性计算机可读存储介质中的程序。

采用上述技术方案,针对区块链网络中计算资源处于空闲状态的节点,本公开提供的技术方案能够通过智能合约的方式将区块链的计算资源用以数据训练,例如,区块链网络中某一节点有数据训练的需求,即可向区块链的智能合约发起资源请求,并选择符合训练条件的目标区块链节点,分配训练任务给各个区块链节点执行,从而将区块链网络空闲的计算资源充分利用起来,减少了资源浪费。

本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。

附图说明

为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本公开实施例提供的一种基于区块链的数据训练方法的流程示意图;

图2为本公开实施例提供的另一种基于区块链的数据训练方法的流程示意图;

图3为本公开实施例提供的一种实施环境的示意图;

图4为图3所示的实施环境下的一种基于区块链的数据训练方法的流程示意图;

图5为本公开实施例提供的一种租赁方与资源方步骤组成的示意图;

图6为本公开实施例提供的一种数据训练装置的结构示意图;

图7为本公开实施例提供的另一种数据训练装置的结构示意图;

图8为本公开实施例提供的一种区块链节点的结构示意图。

具体实施方式

为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为了使本领域技术人员更容易理解本公开实施例提供的技术方案,下面首先对涉及到的相关技术进行简单介绍。

区块链是由区块链网络中所有节点共同参与维护的去中心化分布式数据库系统,它是由一系列基于密码学方法产生的数据块组成,每个数据块即为区块链中的一个区块。根据产生时间的先后顺序,区块被有序地链接在一起,形成一个数据链条,被形象地称为区块链。区块链由其特别的区块和交易产生、验证协议,具有不可更改,不可伪造、完全可追溯的安全特性。

区块链技术中涉及到的相关概念说明:

区块链节点:区块链网络基于P2P(Peer to Peer,对等网络)网络,每个参与交易和区块存储、验证、转发的P2P网络节点都是一个区块链网络中的节点。

智能合约:从技术角度来讲,智能合约被认为是网络服务器,只是这些服务器并不是使用IP地址架设在互联网上,而是架设在区块链上。从而可以在其上面运行特定的合约程序。但是与网络服务器不同的是,所有人都可以看到智能合约,因为这些智能合约的代码和状态都在区块链上(假设区块链是公开的)。而且,与网络服务器不同的是,智能合约不依赖某个特定的硬件设备,事实上,智能合约的代码由所有参与挖矿的设备来执行。

智能合约是编程在区块链上的汇编语言。例如用Solidity,或者与Javascript类似的专用语言在创建区块链时预先制定智能合约。这些字节码确实给区块链的功能性提供了指引,因此代码可以很容易与它进行交互,例如转移密码学货币和记录事件。

另外,本公开所述的数据训练是指可以分布式训练的使用人工智能、机器学习、统计学和数据库的交叉方法在相对较大型的数据集中发现模式的计算过程。例如,建立深度学习的神经网络模型,AI(Artificial Intelligence,人工智能)训练,决策树分类模型等。本公开对此不做限定。

本公开实施例提供一种基于区块链的数据训练方法,如图1所示,该方法包括:

S101、发起节点向区块链中存储的智能合约写入资源请求,该发起节点是区块链网络中的节点,该智能合约用于根据所述资源请求向发起节点返回其他区块链节点的计算资源信息。

例如,该智能合约可以将当前算力处于空闲状态的计算资源信息返回给发起节点。

参照上述对智能合约的介绍,本公开实施例所述的智能合约可以是该区块链网络创建时各个区块链节点协商一致制定的,该智能合约可以包括一个或者多个合约,用于管理资源发布,任务发布,任务申领,交易结算等,作为区块链网络中所有用户的共识。

由于合约的代码和状态都在区块链上,因此发起节点有数据训练的需求时,可以将资源请求写入智能合约,触发智能合约状态变化以及执行代码的执行以实现向发起节点返回其他区块链节点的计算资源信息。也就是说,该发起节点可以在区块链中读取到其他区块链节点的计算资源信息。

其中,在一种可能的实现方式中,该发起节点可以是区块链网络中的任一节点;另一种可能的实现方式,在具有权限控制的区块链网络中,该发起节点是具备资源请求权限的节点。

S102、发起节点根据所述计算资源信息选择目标区块链节点,并将选择结果写入所述智能合约,所述智能合约根据所述选择结果指示被选中所述目标区块链节点进行数据训练。

示例地,发起节点可以根据用户的操作在智能合约返回的计算资源信息中,选择确定要租赁算力的目标区块链节点,也可以根据预定的规则自动选择目标区块链节点。例如,该计算资源信息可以包括其他区块链节点的计算类型(例如CPU/GPU/TPU),主频信息,厂商信息,算力大小等。

可选地,针对具体的数据训练要求,发起节点可以在资源请求中携带训练要求信息,例如该资源请求包括:

{ID:xxxxx,number:10,time:1day,request:GPU}

即包括使用人ID,请求的算力大小,使用时间以及对计算类型的要求,这样,智能合约在被写入该资源请求后,可以根据该训练要求信息选择符合条件的多个节点返回给发起节点选择。

进一步地,在发起节点确定目标区块链节点后,将选择结果写入智能合约,该合约即可指示目标区块链节点执行相应的数据训练。其中,该目标区块链节点包括一个或多个节点,在目标区块链节点包括多个节点的情况下,该智能合约可以将目标区块链节点临时组合成一个分布式集群,以进行分布式数据训练。

对于训练任务的分配,在具体实施时,发起节点写入智能合约的资源请求可以包括一任务地址,所述智能合约用于指示所述目标区块链节点从所述任务地址处获取数据训练任务。例如,该任务地址指向任务服务器中的训练程序包,这样,目标区块链节点即可根据该任务地址领取到对应的训练程序包,以根据该训练程序包进行数据训练。

采用上述方法,针对区块链网络中计算资源处于空闲状态的节点,本公开提供的技术方案能够通过智能合约的方式将区块链的计算资源用以数据训练,例如,区块链网络中某一节点有数据训练的需求,即可向区块链的智能合约发起资源请求,并选择符合训练条件的目标区块链节点,分配训练任务给各个区块链节点执行,从而将区块链网络空闲的计算资源充分利用起来,减少了资源浪费。

本公开实施例还提供另一种基于区块链的数据训练方法,该方法应用于区块链节点,如图2所示,包括:

S201、将区块链节点自身的计算资源信息写入区块链中,该计算资源信息用于所述区块链中的智能合约在被发起节点写入资源请求时,将所述区块链节点的计算资源信息返回给所述发起节点。

S202、该区块链节点在确定自身为被该发起节点选中的节点时,根据该智能合约进行所述发起节点发起的数据训练。

示例地,区块链网络中每一区块链节点可以包括device_info存储参数、minner_status状态参数和train_status状态参数,其中,device_info存储参数用于存储区块链节点的设备信息,minner_status状态参数用于表明区块链节点是否处于挖矿状态,train_status状态参数用于表明区块链节点是否处于数据训练状态。

这样,智能合约在被写入资源请求时,可以根据区块链节点的minner_status状态参数以及train_status状态参数,将未处于挖矿状态且未处于训练状态的区块链节点的device_info存储参数返回给发起节点。

在具体实施时,minner_status包含start和stop两种状态,当minner_status为start的时候,表示该节点正在执行例行的挖矿任务,反之表示该节点未处于挖矿状态;train_status包含true和false两种状态,如果为true表示为正在训练中,已被用户租赁使用,如果为false表示未处于训练状态中。这样,每一区块链节点在状态发生变化时,相应变更minner_status和train_status,并主动将变更后的状态写入区块链中。实现对每个节点状态的灵活控制。

智能合约和发起节点发起资源请求的过程参照上述对图1所示方法的说明,此处不再赘述。

下面结合作为发起方的节点以及其他区块链节点详细说明本公开实施例提供的数据训练方法。

图3是本公开实施例提供的一种实施环境的示意图,如图3所示,包括由个人计算机301、机柜集群302、手机303、平板电脑304以及代表CPU,GPU或者TPU的305组成的计算集群,其中,301至305均为区块链网络中的一节点。基于图3所示的实施环境,假设个人计算机301作为发起节点,则其请求资源进行数据训练的方法步骤如图4所示,包括:

S401、发起节点301向区块链中存储的智能合约写入资源请求。

其中,基于区块链的介绍,区块链网络中每一节点本地均存储有区块链,因此,发起节点301写入智能合约的资源请求可以被其他节点获知。

S402、区块链节点302在区块链中读取到该资源请求时,将自身的计算资源信息写入区块链。

值得说明的是,步骤S402只是以区块链节点302进行举例说明,在图3所示的实施环境中,其他任一区块链节点均会执行如节点302执行的步骤。

另外,在具体实施时,该资源请求可以包括训练要求信息,这样,该区块链节点302可以是在确定自身满足训练要求的情况下,将自身的计算资源信息写入区块链中。

在一种可能的实现方式中,参照上述对图2所示方法的说明,区块链节点也可以是在自身的算力状态变化时,主动将变更后的状态写入区块链中。由智能合约在被写入资源请求时,筛选符合要求的区块链节点。本公开对此不做限定。

S403、发起节点301从区块链中读取其他区块链节点的计算资源信息,并根据计算资源信息选择目标区块链节点。

具体地,该发起节点301可以显示候选区块链节点供用户选择,并根据用户的操作确定选定的目标区块链节点。

S404、发起节点301将选择结果写入智能合约。

S405、若区块链节点302在智能合约中确定自身为被选中的目标区块链节点,则根据资源请求的任务地址从任务服务器获取训练任务。

其中,该任务服务器可以与发起节点为同一设备,也可以为不同的设备。在具体实施时,该任务服务器可以预先存储训练程序包,并为每一训练程序包生成一下载地址,并且,每一训练程序包可以对应一训练要求信息。这样,符合训练要求的区块链节点即可根据对应的下载地址获取到对应的训练程序包。可选地,任务地址也可以是该任务服务器的链接地址,这样,在区块链节点与任务服务器建立链接后,训练程序包的分配具体可以由任务服务器进行。

S406、区块链节点302根据获取到的训练任务进行数据训练,并将训练结果返回给任务服务器进行结果验证。

参照上述针对图2举例说明的train_status状态参数,区块链节点302在数据训练开始时,可以将自身的train_status状态参数更改为正在训练中。

具体地,该任务服务器与发起节点为同一设备的情况下,该区块链节点302可以采用将训练结果写入区块链的方式实现将训练结果返回给任务服务器,保证了数据的安全性。

S407、任务服务器在确定训练结果验证通过后,指示发起节点301根据智能合约中的转账合约向区块链节点302转账。

也就是说,发起节点301在发起资源请求时,可以约定租赁其他节点的算力进行数据训练应付的报酬,这样,在被选中的区块链节点完成数据训练后,可以按照事先写入的转账合约转账,确保了用户交易的信誉。

进一步地,区块链节点302接收到发起节点301支付的报酬后,可以将自身的train_status状态参数更改为未训练,结束本次数据训练流程。

值得说明的是,对于上述方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本公开所必须的。

为了使本领域技术人员更加理解本公开实施例提供的技术方案,图5示出了本公开实施例涉及到的资源方,租赁房以及任务计算分别的要素组成。图5所示的资源方即上述目标区块链节点,租赁方即上述发起节点。本领域的技术人员应该知悉,智能合约的协商可以有多种方式,基于图5中所示的各方要素制定的智能合约均属于本公开的保护范围之内。

本公开实施例还提供一种数据训练装置60,所述数据训练装置应用于作为发起节点的区块链节点,用于实施上述方法实施例中图1所示的方法步骤,如图6所示,包括:

资源请求模块601,用于向区块链中存储的智能合约写入资源请求,所述智能合约用于根据所述资源请求向所述发起节点返回其他区块链节点的计算资源信息;

节点选择模块602,用于根据所述计算资源信息选择目标区块链节点,并将选择结果写入所述智能合约,所述智能合约根据所述选择结果指示被选中所述目标区块链节点进行数据训练。

可选地,所述资源请求还包括转账合约,所述装置还包括:

转账模块603,用于在确定所述目标区块链节点完成数据训练时,根据所述转账合约从所述发起节点的账户中转账给所述目标区块链节点。

本公开实施例还提供一种数据训练装置70,所述装置应用于区块链节点,用于实施上述方法实施例中图2所示的方法步骤,如图7所示,包括:

信息写入模块701,用于将所述区块链节点自身的计算资源信息写入区块链中,所述计算资源信息用于所述区块链中的智能合约在被发起节点写入资源请求时,将所述区块链节点的计算资源信息返回给所述发起节点;

数据训练模块702,用于在确定所述区块链节点自身为被所述发起节点选中的节点时,根据所述智能合约进行所述发起节点发起的数据训练。

可选地,所述资源请求包括任务地址,所述数据训练模块702包括:任务获取子模块7021,用于根据所述任务地址从任务服务器获取训练程序包;训练子模块7022,用于根据所述训练程序包进行数据训练,并将训练结果发送给所述任务服务器,所述训练结果用于所述任务服务器进行有效性验证。

可选地,所述资源请求还包括转账合约,所述装置还包括:转账模块703,用于根据所述转账合约,在完成数据训练时,从所述发起节点的账户中接受转账。

可选地,所述区块链节点包括device_info存储参数、minner_status状态参数和train_status状态参数,其中,所述device_info存储参数用于存储区块链节点的设备信息,所述minner_status状态参数用于表明区块链节点是否处于挖矿状态,所述train_status状态参数用于表明区块链节点是否处于数据训练状态。

可选地,所述资源请求包括数据训练条件,所述智能合约在被写入所述资源请求后,根据每一区块链节点的device_info存储参数、minner_status状态参数和train_status状态参数向所述发起节点返回符合所述数据训练条件的区块链节点。

所属本领域的技术人员应该清楚地了解到,为描述的方便和简洁,上述描述的各模块的具体工作过程,可以参考前述方法实施例中对应的过程,此处不再赘述。

相应地,本公开实施例还提供一种非临时性计算机可读存储介质,所述非临时性计算机可读存储介质中包括一个或多个程序,所述一个或多个程序用于执行上述图1或图2所示的基于区块链的数据训练方法。

相应地,本公开实施例还提供一种区块链节点,包括上述非临时性计算机可读存储介质;以及一个或者多个处理器,用于执行所述非临时性计算机可读存储介质中的程序。

图8是根据一示例性实施例示出的一种区块链节点800的框图。如图8所示,该区块链节点800可以包括:处理器801,存储器802,多媒体组件803,输入/输出(I/O)接口804,以及通信组件805。

其中,处理器801用于控制该区块链节点800的整体操作,以完成上述图1或图2所示的基于区块链的数据训练方法中的全部或部分步骤。存储器802用于存储各种类型的数据以支持在该区块链节点800的操作,这些数据例如可以包括用于在该区块链节点800上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器802可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件803可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器802或通过通信组件805发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口804为处理器801和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件805用于该区块链节点800与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near Field Communication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件805可以包括:Wi-Fi模块,蓝牙模块,NFC模块。

在一示例性实施例中,区块链节点800可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(Digital Signal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述图1或图2所示的基于区块链的数据训练方法。

以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。

另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。

此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1