深度神经网络的运算系统及运算方法转让专利

申请号 : CN201510364386.9

文献号 : CN105005911B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李毅邹永强金涬郭志懋

申请人 : 深圳市腾讯计算机系统有限公司

摘要 :

本发明提供一种深度神经网络的运算系统,其包括主服务器、多个中心参数服务器以及多个计算模块;其中计算模块包括本地参数服务器以及多个计算单元。本发明还提供一种用于深度神经网络的运算系统的运算方法,本发明的深度神经网络的运算系统及运算方法通过设置本地参数服务器,提高了运算系统的计算效率,降低了运算系统的网络通信开销。

权利要求 :

1.一种深度神经网络的运算系统,其特征在于,包括:

主服务器,用于将训练任务下发至计算模块;以及进行中心参数服务器的逻辑控制;

多个中心参数服务器,用于根据所述计算模块的传输请求,将计算模型传输至相应的计算模块;以及接收所述计算模块上报的计算梯度,并根据所述计算梯度对相应的所述计算模型进行更新操作;以及多个所述计算模块,包括:

本地参数服务器,用于按计算周期,从所述中心参数服务器下载相应的所述计算模型,并将所述计算模型分发至各个计算单元;以及按所述计算周期,接收所述计算单元上报的计算梯度,并对所述计算梯度进行累加,以将累加后的计算梯度上传至所述中心参数服务器;以及多个所述计算单元,用于根据所述训练任务生成相应的所述传输请求;根据所述计算模型进行训练计算,以得到相应计算梯度;以及将所述计算梯度上报至所述本地参数服务器。

2.根据权利要求1所述的深度神经网络的运算系统,其特征在于,所述计算模型分片存储在多个所述中心参数服务器上;

所述本地参数服务器,用于按所述计算周期,从所有的所述中心参数服务器下载全部的所述计算模型。

3.根据权利要求1所述的深度神经网络的运算系统,其特征在于,所述本地参数服务器还包括用于存储所述计算梯度的计算梯度存储单元;

在每个所述计算周期开始时,所述本地参数服务器将所述计算梯度存储单元清零,以便将相应的所述计算单元上报的所述计算梯度在所述计算梯度存储单元中进行累加;

在每个所述计算周期结束时,所述本地参数服务器将累加后的计算梯度上传至相应的所述中心参数服务器。

4.根据权利要求1所述的深度神经网络的运算系统,其特征在于,所述本地参数服务器包括用于存储计算模型的计算模型存储单元;

当所述本地参数服务器将所述计算模型分发至各个所述计算单元时,所述计算模型存储单元设置为只读状态。

5.根据权利要求1所述的深度神经网络的运算系统,其特征在于,所述本地参数服务器在所述计算周期开始时,从所述中心参数服务器下载相应的所述计算模型,并将所述计算模型分发至各个计算单元。

6.根据权利要求1所述的深度神经网络的运算系统,其特征在于,同一所述本地参数服务器对应的多个所述计算单元,根据所述计算模型进行并行训练计算。

7.一种用于深度神经网络的运算系统的运算方法,其中所述运算系统包括主服务器、多个中心参数服务器以及多个计算模块;每个所述计算模块包括本地参数服务器以及多个计算单元;其特征在于,所述运算方法包括:所述主服务器将训练任务下发至所述计算模块,所述计算模块根据所述训练任务生成传输请求;

所述中心参数服务器根据所述传输请求,将计算模型传输至相应的所述计算模块;

所述计算模块的所述本地参数服务器按计算周期,从所述中心参数服务器下载所述计算模型,并将所述计算模型分发至各个所述计算单元;

所述计算模块的所述计算单元根据所述计算模型进行训练计算,以得到相应的计算梯度,并将所述计算梯度上报至所述本地参数服务器;

所述本地参数服务器按所述计算周期,接收所述计算单元上报的计算梯度,并对所述计算梯度进行累加,以得到累加后的计算梯度;以及所述中心参数服务器接收所述累加后的计算梯度,并根据所述累加后的计算梯度对相应的所述计算模型进行更新操作。

8.根据权利要求7所述的用于深度神经网络的运算系统的运算方法,其特征在于,所述计算模型分片存储在多个所述中心参数服务器上;

所述本地参数服务器按计算周期,从所述中心参数服务器下载所述计算模型的步骤具体为:所述本地参数服务器按所述计算周期,从所有的所述中心参数服务器下载全部的所述计算模型。

9.根据权利要求7所述的用于深度神经网络的运算系统的运算方法,其特征在于,所述本地参数服务器还包括用于存储所述计算梯度的计算梯度存储单元;

所述本地参数服务器按所述计算周期,接收所述计算单元上报的计算梯度,并对所述计算梯度进行累加,以得到累加后的计算梯度的步骤包括:在每个所述计算周期开始时,所述本地参数服务器将所述计算梯度存储单元清零,以便将相应的所述计算单元上报的所述计算梯度在所述计算梯度存储单元中进行累加;

在每个所述计算周期结束时,所述本地参数服务器将累加后的计算梯度上传至相应的所述中心参数服务器。

10.根据权利要求7所述的用于深度神经网络的运算系统的运算方法,其特征在于,所述本地参数服务器包括用于存储计算模型的计算模型存储单元;

所述本地参数服务器将所述计算模型分发至各个所述计算单元的步骤包括:当所述本地参数服务器将所述计算模型分发至各个所述计算单元时,将所述计算模型存储单元设置为只读状态。

11.根据权利要求7所述的用于深度神经网络的运算系统的运算方法,其特征在于,所述计算模块的所述本地参数服务器按计算周期,从所述中心参数服务器下载所述计算模型,并将所述计算模型分发至各个所述计算单元的步骤具体为:所述本地参数服务器在所述计算周期开始时,从所述中心参数服务器下载相应的所述计算模型,并将所述计算模型分发至各个计算单元。

12.根据权利要求7所述的用于深度神经网络的运算系统的运算方法,其特征在于,所述计算模块的所述计算单元根据所述计算模型进行训练计算的步骤具体为:同一所述本地参数服务器对应的多个所述计算单元,根据所述计算模型进行并行训练计算。

说明书 :

深度神经网络的运算系统及运算方法

技术领域

[0001] 本发明涉及运算结构领域,特别是涉及一种深度神经网络的运算系统及运算方法。

背景技术

[0002] 目前,业内进行广告投放时,广泛使用了基于广告点击率预估的方法对广告进行排序。具体方法为,首先通过深度神经网络预估候选广告的点击率,即广告点击率预估值(pCTR,predicted click-through rate),然后基于pCTR计算广告的质量度(Quality),最后将广告按照出价(Bid)*Quality逆序排列并展现,出价越高且质量度越高的广告排序越靠前。在排序时遵循普遍二级价格拍卖(GSP,Generalized SecondPrice Auction)机制,该机制可以最大化搜索引擎的收益,达到GSP均衡。因此一个较好的深度神经网络的运算系统可以较为快速以及较为准确的获取广告点击率预估值。
[0003] 如图1所示,图1为现有的深度神经网络的运算系统的结构示意图。该深度神经网络的运算系统10包括主服务器101、多个中心参数服务器102以及多个计算单元103。其中主服务器101负责训练任务的下发以及调度。多个中心参数服务器102具有计算模型的不同分片,用于通过网络将计算模型传输给相应的计算单元103、接收计算单元103上报的计算梯度,并将该计算梯度与相应的计算模型进行合并操作。多个计算单元103从中心参数服务器102获取最近的计算模型,分批处理计算模型的训练计算过程,并将计算出来的计算梯度上报至相应的中心参数服务器102。
[0004] 上述运算系统10进行计算模型的参数训练时,将耗费大量的时间以及通信能力在计算模型的拉取、计算梯度的接收以及计算模型与计算梯度的合并操作上,这样导致网络通信的开销巨大,且对中心参数服务器102的要求较高。

发明内容

[0005] 本发明实施例提供一种计算效率较高且网络通信开销较小的深度神经网络的运算系统及运算方法;以解决现有的深度神经网络的运算系统及运算方法的计算效率较低以及网络通信开销较大的技术问题。
[0006] 本发明实施例提供一种深度神经网络的运算系统,其包括:
[0007] 主服务器,用于将训练任务下发至计算模块,以及进行中心参数服务器的逻辑控制;
[0008] 多个中心参数服务器,用于根据所述计算模块的传输请求,将计算模型传输至相应的计算模块;以及接收所述计算模块上报的计算梯度,并根据所述计算梯度对相应的所述计算模型进行更新操作;以及
[0009] 多个所述计算模块,包括:
[0010] 本地参数服务器,用于按计算周期,从所述中心参数服务器下载相应的所述计算模型,并将所述计算模型分发至各个计算单元;以及按所述计算周期,接收所述计算单元上报的计算梯度,并对所述计算梯度进行累加,以将累加后的计算梯度上传至所述中心参数服务器;以及
[0011] 多个所述计算单元,用于根据所述训练任务生成相应的所述传输请求;根据所述计算模型进行训练计算,以得到相应计算梯度;以及将所述计算梯度上报至所述本地参数服务器。
[0012] 本发明实施例还提供一种用于深度神经网络的运算系统的运算方法,其中所述运算系统包括主服务器、多个中心参数服务器以及多个计算模块;每个所述计算模块包括本地参数服务器以及多个计算单元;其中所述运算方法包括:
[0013] 所述主服务器将训练任务下发至所述计算模块,所述计算模块根据所述训练任务生成传输请求;
[0014] 所述中心参数服务器根据所述传输请求,将计算模型传输至相应的所述计算模块;
[0015] 所述计算模块的所述本地参数服务器按计算周期,从所述中心参数服务器下载所述计算模型,并将所述计算模型分发至各个所述计算单元;
[0016] 所述计算模块的所述计算单元根据所述计算模型进行训练计算,以得到相应的计算梯度,并将所述计算梯度上报至所述本地参数服务器;
[0017] 所述本地参数服务器按所述计算周期,接收所述计算单元上报的计算梯度,并对所述计算梯度进行累加,以得到累加后的计算梯度;以及
[0018] 所述中心参数服务器接收所述累加后的计算梯度,并根据所述累加后的计算梯度对相应的所述计算模型进行更新操作。
[0019] 相较于现有技术的深度神经网络的运算系统及运算方法,本发明的深度神经网络的运算系统及运算方法通过设置本地参数服务器,提高了运算系统的计算效率,降低了运算系统的网络通信开销;解决了现有的深度神经网络的运算系统及运算方法的计算效率较低以及网络通信开销较大的技术问题。

附图说明

[0020] 图1为现有的深度神经网络的运算系统的结构示意图。
[0021] 图2为本发明的深度神经网络的运算系统的优选实施例的结构示意图;
[0022] 图3为本发明的深度神经网络的运算系统的优选实施例的本地参数服务器的结构示意图;
[0023] 图4为本发明的用于深度神经网络的运算系统的运算方法的优选实施例的流程图;
[0024] 图5为本发明的深度神经网络的运算系统及运算方法中的计算模型的存储示意图;
[0025] 图6为本发明的深度神经网络的运算系统及运算方法中的计算模型的分发示意图;
[0026] 图7为本发明的深度神经网络的运算系统及运算方法中的计算梯度的累加示意图;
[0027] 图8为本发明的深度神经网络的运算系统及运算方法中的计算模型的更新示意图;
[0028] 图9为本发明的深度神经网络的运算系统所在的电子设备的工作环境结构示意图。

具体实施方式

[0029] 请参照图式,其中相同的组件符号代表相同的组件,本发明的原理是以实施在一适当的运算环境中来举例说明。以下的说明是基于所例示的本发明具体实施例,其不应被视为限制本发明未在此详述的其它具体实施例。
[0030] 在以下的说明中,本发明的具体实施例将参考由一部或多部计算机所执行之作业的步骤及符号来说明,除非另有述明。因此,其将可了解到这些步骤及操作,其中有数次提到为由计算机执行,包括了由代表了以一结构化型式中的数据之电子信号的计算机处理单元所操纵。此操纵转换该数据或将其维持在该计算机之内存系统中的位置处,其可重新配置或另外以本领域技术人员所熟知的方式来改变该计算机之运作。该数据所维持的数据结构为该内存之实体位置,其具有由该数据格式所定义的特定特性。但是,本发明原理以上述文字来说明,其并不代表为一种限制,本领域技术人员将可了解到以下所述的多种步骤及操作亦可实施在硬件当中。
[0031] 本发明的深度神经网络的运算系统可使用具有计算能力的电子设备进行实施,该电子设备包括但不限于个人计算机、服务器计算机、手持式或膝上型设备、移动设备(比如移动电话、个人数字助理(PDA)、媒体播放器等等)、多处理器系统、消费型电子设备、小型计算机、大型计算机、包括上述任意系统或设备的分布式计算环境,等等。本发明的深度神经网络的运算系统通过设置本地参数服务器,提高了运算系统的计算效率,降低了运算系统的网络通信开销。
[0032] 请参照图2,图2为本发明的深度神经网络的运算系统的优选实施例的结构示意图。本优选实施例的深度神经网络的运算系统20包括主服务器201、多个中心参数服务器202以及多个计算模块205。
[0033] 主服务器201用于将训练任务下发至计算模块205以及进行中心参数服务器202的逻辑控制;中心参数服务器202用于根据计算模块205的传输请求,将计算模型传输至相应的计算模块205;以及接收计算模块205上报的计算梯度,并根据计算梯度对相应的计算模型进行更新操作。
[0034] 计算模块205包括本地参数服务器203以及多个计算单元204。本地参数服务器203用于按计算周期,从中心参数服务器202下载相应的计算模型,并将计算模型分发至各个计算单元204;以及按计算周期,接收计算单元204上报的计算梯度,并对计算梯度进行累加,以将累加后的计算梯度上传至中心参数服务器202。计算单元204用于根据训练任务生成相应的传输请求;根据计算模型进行训练计算,以得到相应计算梯度;以及将计算梯度上报至本地参数服务器203。同一本地参数服务器203对应多个计算单元204,上述多个计算单元204根据计算模型进行并行训练计算。
[0035] 本优选实施例的计算模型分片存储在中心参数服务器202上,本地参数服务器203可按计算周期,从所有的中心参数服务器202下载全部的计算模型。这里的计算周期可为深度神经网络的一个训练周期或多个训练周期。
[0036] 请参照图3,图3为本发明的深度神经网络的运算系统的优选实施例的本地参数服务器的结构示意图。本优选实施例的本地参数服务器203还包括计算梯度存储单元2031以及计算模型存储单元2032,计算梯度存储单元2031用于存储计算梯度,计算模型存储单元2032用于存储从中心参数服务器202下载的计算模型。
[0037] 在每个计算周期开始时,本地参数服务器203从中心参数服务器202下载相应的计算模型,并将计算模型分发至各个计算单元204;此外将计算梯度存储单元2031清零,以便相应的计算单元204上报的计算梯度在计算梯度存储单元2031中进行累加。在每个计算周期结束时,本地参数服务器203将累加后的计算梯度上传至相应的中心参数服务器202。
[0038] 优选的,为了保证计算单元204获取的计算模型的准确性,本地参数服务器203将计算模型分发至各个计算单元204时,计算模型存储单元2032设置为只读状态。
[0039] 本优选实施例的深度神经网络的运算系统20使用时,首先将计算模型分片存储在多个中心参数服务器202上;为了保证中心参数服务器的工作效率,计算模型平均分片存储在多个中心参数服务器202上,即每个中心参数服务器202上的计算模型的存储量基本相等。
[0040] 随后主服务器201将深度神经网络的训练任务下发至计算模块205的各个计算单元204;计算单元204根据训练任务生成的传输请求并发送至中心参数服务器202;然后相应的中心参数服务器202根据接收到的传输请求将计算模型传输至相应的计算模块。
[0041] 计算模块的本地参数服务器203按照计算周期从所有的中心参数服务器202上下载全部的计算模型;具体为:在计算周期开始时,本地参数服务器203从中心参数服务器202上下载相应的计算模型,并将下载的计算模型存储在计算模型存储单元2032。然后将接收到的计算模型分发至各个计算单元204,此时本地参数服务器203的计算模型存储单元2032设置为只读状态,以避免计算单元204的读取操作修改了计算模型。同时本地参数服务器203将计算梯度存储单元2031清零,以便将相应的计算单元204上报的计算梯度在计算梯度存储单元2031中进行累加。
[0042] 随后计算单元204根据计算模型进行训练计算,以得到相应的计算梯度,并将计算梯度上报至本地参数服务器203进行累加。优选的,同一本地参数服务器203对应的多个计算单元204,根据计算模型进行并行训练计算。
[0043] 在计算周期结束时,本地参数服务器203将累加的计算梯度上传至相应的中心参数服务器202。
[0044] 中心参数服务器202接收计算模块上传的累加的计算梯度,并根据计算梯度对相应的计算模型进行更新操作。
[0045] 这样即完成了本优选实施例的深度神经网络的运算系统20的运算过程。
[0046] 本优选实施例的深度神经网络的运算系统通过设置本地参数服务器,本地参数服务器进行计算模型的分发以及计算梯度的累加,因此提高了运算系统的计算效率,降低了运算系统的网络通信开销。
[0047] 本发明还提供一种用于深度神经网络的运算系统的运算方法,请参照图4,图4为本发明的用于深度神经网络的运算系统的运算方法的优选实施例的流程图。本优选实施例的运算方法可使用上述的运算系统进行实施,其包括:
[0048] 步骤S401,主服务器将训练任务下发至所述计算模块,所述计算模块根据所述训练任务生成传输请求;
[0049] 步骤S402,中心参数服务器根据传输请求,将计算模型传输至相应的计算模块;
[0050] 步骤S403,计算模块的本地参数服务器按计算周期,从中心参数服务器下载计算模型,并将计算模型分发至各个计算单元;
[0051] 步骤S404,计算模块的计算单元根据计算模型进行训练计算,以得到相应的计算梯度,并将计算梯度上报至本地参数服务器;
[0052] 步骤S405,本地参数服务器按计算周期接收计算单元上报的计算梯度,并对计算梯度进行累加,以得到累加后的计算梯度;
[0053] 步骤S406,中心参数服务器接收累加后的计算梯度,并根据累加后的计算梯度对相应的计算模型进行更新操作。
[0054] 下面详细说明本优选实施例的用于深度神经网络的运算系统的运算方法。
[0055] 在步骤S401中,主服务器将训练任务下发至计算模块,计算模块根据该训练任务生成传输请求,并发送至相应的中心参数服务器;这里的训练任务是指深度神经网络进行集群并行模型训练时,可进行并行运算的多个并行数据训练任务。随后转到步骤S402。
[0056] 在步骤S402中,中心参数服务器根据步骤S401获取的传输请求,将计算模型传输至相应的计算模块。随后转到步骤S403。
[0057] 在步骤S403中,计算模块的本地参数服务器按计算周期,从所有的中心参数服务器上下载全部的计算模型,该计算模型分片存储在多个中心参数服务器上,这样可以较好的避免某一中心参数服务器成为热点。
[0058] 优选的,本地参数服务器在计算周期开始时,从中心参数服务器下载相应的计算模型,并将下载的计算模型存储在计算模型存储单元。然后将计算模型存储单元设置为只读状态后,再将计算模型分发至各个计算单元。同时本地参数服务器将用于存储计算梯度的计算梯度存储单元清零,以便相应的计算单元上报的计算梯度在计算梯度存储单元中进行累加。随后转到步骤S404。
[0059] 在步骤S404中,计算模块的计算单元根据计算模型进行训练计算,以得到相应的计算梯度,并将计算梯度上报至本地参数服务器。在本步骤中,同一本地参数服务器对应的多个计算单元,可根据计算模型进行并行训练计算。随后转到步骤S405。
[0060] 在步骤S405中,本地参数服务器按计算周期接收计算单元上报的计算梯度,并对计算梯度进行累加,以得到累加后的计算梯度;并在每个计算周期结束时,将累加后的计算梯度上传至相应的中心参数服务器。随后转到步骤S406。
[0061] 在步骤S406中,中心参数服务器接收累加后的计算梯度,并根据累加后的计算梯度对相应的计算模型进行更新操作。
[0062] 这样即完成了本优选实施例的用于深度神经网络的运算系统的运算方法的运算过程。
[0063] 下面通过一具体实施例说明本发明的深度神经网络的运算系统及运算方法的具体工作原理。
[0064] 首先,如图5所示,图5为本发明的深度神经网络的运算系统及运算方法中的计算模型的存储示意图。图中完整的计算模型分片存储在多个中心参数服务器51上,即每个中心参数服务器存储一部分计算模型,所有的中心参数服务器上存储有完整的计算模型。在图5中,计算模型被分为八片存储在八个中心参数服务器上。
[0065] 随后中心参数服务器51根据计算模块的传输请求,将计算模型传输至相应的本地参数服务器52的计算模型存储单元,并通过计算模型存储单元分发至各个计算单元53,分发过程中计算模型存储单元为只读状态,具体如图6所示,图6为本发明的深度神经网络的运算系统及运算方法中的计算模型的分发示意图。
[0066] 然后本地参数服务器52的计算梯度存储单元清零,接收计算单元53上报的计算梯度,并对计算梯度进行累加,这里可多条线程并行进行运算,具体如图7所示,图7为本发明的深度神经网络的运算系统及运算方法中的计算梯度的累加示意图。
[0067] 随后本地参数服务器52将累加后的计算梯度上传至相应的中心参数服务器51;中心参数服务器51接收累加后的计算梯度,并根据累加后的计算梯度对相应的计算模型进行更新操作,具体如图8所示。
[0068] 这样即完成了本发明的深度神经网络的运算系统及运算方法的具体实施例的运算过程。
[0069] 本发明的深度神经网络的运算系统及运算方法在实际运行时,可根据实际需要设置计算周期的长度,即计算单元和本地参数服务器的数据交换频率,本地参数服务器和中心参数服务器的数据交换频率,以及中心参数服务器的更新频率。
[0070] 本发明的深度神经网络的运算系统及运算方法在本地参数服务器上进行计算模型的同步分发以及计算梯度的积累,从而减小了中心参数服务器的计算负载以及通信负载。
[0071] 本发明的深度神经网络的运算系统及运算方法可以根据深度神经网络的训练特点对计算周期的长度,即中心参数服务器的更新频率进行设定。如深度神经网络为稠密模型,则可设置较短的计算周期长度,即较大的中心参数服务器的更新频率,以保证中心参数服务器上的计算模型的及时更新。如深度神经网络为稀疏模型,则可设置较长的计算周期长度,即较小的中心参数服务器的更新频率,在保证计算准确性的基础上,减少了中心参数服务器的通信开销。
[0072] 本发明的深度神经网络的运算系统及运算方法通过设置本地参数服务器,提高了运算系统的计算效率,降低了运算系统的网络通信开销;解决了现有的深度神经网络的运算系统及运算方法的计算效率较低以及网络通信开销较大的技术问题。
[0073] 如本申请所使用的术语“组件”、“模块”、“系统”、“接口”、“进程”等等一般地旨在指计算机相关实体:硬件、硬件和软件的组合、软件或执行中的软件。例如,组件可以是但不限于是运行在处理器上的进程、处理器、对象、可执行应用、执行的线程、程序和/或计算机。通过图示,运行在控制器上的应用和该控制器二者都可以是组件。一个或多个组件可以有在于执行的进程和/或线程内,并且组件可以位于一个计算机上和/或分布在两个或更多计算机之间。
[0074] 而且,要求保护的主题可以被实现为使用标准编程和/或工程技术产生软件、固件、硬件或其任意组合以控制计算机实现所公开的主题的方法、装置或制造品。本文所使用的术语“制造品”旨在包含可从任意计算机可读设备、载体或介质访问的计算机程序。当然,本领域技术人员将认识到可以对该配置进行许多修改,而不脱离要求保护的主题的范围或精神。
[0075] 图9和随后的讨论提供了对实现本发明所述的深度神经网络的运算系统所在的电子设备的工作环境的简短、概括的描述。图9的工作环境仅仅是适当的工作环境的一个实例并且不旨在建议关于工作环境的用途或功能的范围的任何限制。实例电子设备912包括但不限于个人计算机、服务器计算机、手持式或膝上型设备、移动设备(比如移动电话、个人数字助理(PDA)、媒体播放器等等)、多处理器系统、消费型电子设备、小型计算机、大型计算机、包括上述任意系统或设备的分布式计算环境,等等。
[0076] 尽管没有要求,但是在“计算机可读指令”被一个或多个电子设备执行的通用背景下描述实施例。计算机可读指令可以经由计算机可读介质来分布(下文讨论)。计算机可读指令可以实现为程序模块,比如执行特定任务或实现特定抽象数据类型的功能、对象、应用编程接口(API)、数据结构等等。典型地,该计算机可读指令的功能可以在各种环境中随意组合或分布。
[0077] 图9图示了包括本发明的深度神经网络的运算系统的一个或多个实施例的电子设备912的实例。在一种配置中,电子设备912包括至少一个处理单元916和存储器918。根据电子设备的确切配置和类型,存储器918可以是易失性的(比如RAM)、非易失性的(比如ROM、闪存等)或二者的某种组合。该配置在图9中由虚线914图示。
[0078] 在其他实施例中,电子设备912可以包括附加特征和/或功能。例如,设备912还可以包括附加的存储装置(例如可移除和/或不可移除的),其包括但不限于磁存储装置、光存储装置等等。这种附加存储装置在图9中由存储装置920图示。在一个实施例中,用于实现本文所提供的一个或多个实施例的计算机可读指令可以在存储装置920中。存储装置920还可以存储用于实现操作系统、应用程序等的其他计算机可读指令。计算机可读指令可以载入存储器918中由例如处理单元916执行。
[0079] 本文所使用的术语“计算机可读介质”包括计算机存储介质。计算机存储介质包括以用于存储诸如计算机可读指令或其他数据之类的信息的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。存储器918和存储装置920是计算机存储介质的实例。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字通用盘(DVD)或其他光存储装置、盒式磁带、磁带、磁盘存储装置或其他磁存储设备、或可以用于存储期望信息并可以被电子设备912访问的任何其他介质。任意这样的计算机存储介质可以是电子设备912的一部分。
[0080] 电子设备912还可以包括允许电子设备912与其他设备通信的通信连接926。通信连接926可以包括但不限于调制解调器、网络接口卡(NIC)、集成网络接口、射频发射器/接收器、红外端口、USB连接或用于将电子设备912连接到其他电子设备的其他接口。通信连接926可以包括有线连接或无线连接。通信连接926可以发射和/或接收通信媒体。
[0081] 术语“计算机可读介质”可以包括通信介质。通信介质典型地包含计算机可读指令或诸如载波或其他传输机构之类的“己调制数据信号”中的其他数据,并且包括任何信息递送介质。术语“己调制数据信号”可以包括这样的信号:该信号特性中的一个或多个按照将信息编码到信号中的方式来设置或改变。
[0082] 电子设备912可以包括输入设备924,比如键盘、鼠标、笔、语音输入设备、触摸输入设备、红外相机、视频输入设备和/或任何其他输入设备。设备912中也可以包括输出设备922,比如一个或多个显示器、扬声器、打印机和/或任意其他输出设备。输入设备924和输出设备922可以经由有线连接、无线连接或其任意组合连接到电子设备912。在一个实施例中,来自另一个电子设备的输入设备或输出设备可以被用作电子设备912的输入设备924或输出设备922。
[0083] 电子设备912的组件可以通过各种互连(比如总线)连接。这样的互连可以包括外围组件互连(PCI)(比如快速PCI)、通用串行总线(USB)、火线(IEEE 1394)、光学总线结构等等。在另一个实施例中,电子设备912的组件可以通过网络互连。例如,存储器918可以由位于不同物理位置中的、通过网络互连的多个物理存储器单元构成。
[0084] 本领域技术人员将认识到,用于存储计算机可读指令的存储设备可以跨越网络分布。例如,可经由网络928访问的电子设备930可以存储用于实现本发明所提供的一个或多个实施例的计算机可读指令。电子设备912可以访问电子设备930并且下载计算机可读指令的一部分或所有以供执行。可替代地,电子设备912可以按需要下载多条计算机可读指令,或者一些指令可以在电子设备912处执行并且一些指令可以在电子设备930处执行。
[0085] 本文提供了实施例的各种操作。在一个实施例中,所述的一个或多个操作可以构成一个或多个计算机可读介质上存储的计算机可读指令,其在被电子设备执行时将使得计算设备执行所述操作。描述一些或所有操作的顺序不应当被解释为暗示这些操作必需是顺序相关的。本领域技术人员将理解具有本说明书的益处的可替代的排序。而且,应当理解,不是所有操作必需在本文所提供的每个实施例中存在。
[0086] 而且,本文所使用的词语“优选的”意指用作实例、示例或例证。奉文描述为“优选的”任意方面或设计不必被解释为比其他方面或设计更有利。相反,词语“优选的”的使用旨在以具体方式提出概念。如本申请中所使用的术语“或”旨在意指包含的“或”而非排除的“或”。即,除非另外指定或从上下文中清楚,“X使用A或B”意指自然包括排列的任意一个。即,如果X使用A;X使用B;或X使用A和B二者,则“X使用A或B”在前述任一示例中得到满足。
[0087] 而且,尽管已经相对于一个或多个实现方式示出并描述了本公开,但是本领域技术人员基于对本说明书和附图的阅读和理解将会想到等价变型和修改。本公开包括所有这样的修改和变型,并且仅由所附权利要求的范围限制。特别地关于由上述组件(例如元件、资源等)执行的各种功能,用于描述这样的组件的术语旨在对应于执行所述组件的指定功能(例如其在功能上是等价的)的任意组件(除非另外指示),即使在结构上与执行本文所示的本公开的示范性实现方式中的功能的公开结构不等同。此外,尽管本公开的特定特征已经相对于若干实现方式中的仅一个被公开,但是这种特征可以与如可以对给定或特定应用而言是期望和有利的其他实现方式的一个或多个其他特征组合。而且,就术语“包括”、“具有”、“含有”或其变形被用在具体实施方式或权利要求中而言,这样的术语旨在以与术语“包含”相似的方式包括。
[0088] 本发明实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。上述提到的存储介质可以是只读存储器,磁盘或光盘等。上述的各装置或系统,可以执行相应方法实施例中的方法。
[0089] 综上所述,虽然本发明已以优选实施例揭露如上,但上述优选实施例并非用以限制本发明,本领域的普通技术人员,在不脱离本发明的精神和范围内,均可作各种更动与润饰,因此本发明的保护范围以权利要求界定的范围为准。