发明内容
本发明所要解决的技术问题是上述数据在发送时,存在达不到网络提供的最大带宽能力,存在带宽利用率低的问题。
本发明解决上述技术问题,本发明的实施例提供一种通过网络发送数据的方法,包括:
将获得的多个梯度数据,根据每个所述梯度数据的容量,对所述梯度数据执行融合操作或划分操作;得到一个或多个片数据;
将每个片数据,采用一个执行流进行归约allreduce传输。
优选地,所述融合操作包括:根据融合缓冲区buffer的容量,将多个梯度数据合并为一个或多个片数据;
所述划分操作包括:将大于阈值的一个梯度数据划分为多个片数据。
优选地,该方法之前还包括:如果一个梯度数据容量小于第一阈值,则用一个执行流传输。
优选地,各个执行流采用并行的方式传输数据。
优选地,所述网络为分布式网络。
优选地,所述归约传输包括:
在多个GPU组成的逻辑环路中传输每个片数据,每个GPU相邻的左右两边各有一个GPU,从左边的GPU接收数据,再把数据发送至右边的GPU;
直到每个GPU的每个块中,包含所有逻辑环路上的全部GPU的块内的数据。
优选地,所述分布式网络为环型网络,所述执行流传输的数据为包括各个节点的环型数据。
优选地,所述分布式网络为星型网络,所述执行流传输的数据为包括各个节点的树型数据。
优选地,所述的方法还包括:
根据不同的通信参数组合,运算出需要发送的梯度数据后,训练发送梯度数据。
优选地,所述训练的过程包括:
记录当前次的通信参数组合的性能,获取下一次通信参数组合,执行发送梯度数据的过程。
优选地,所述的方法还包括:按照设定的通信参数组合的数量进行训练;
或,筛选满足最优带宽性能的通信参数组合进行训练。
优选地,所述通信参数包括执行流的流数和/或梯度数据的数量。
优选地,所述的方法还包括:判断当前发送的梯度数据是节点内通信还是节点之间通信;
根据判断结果,分配相应的通信参数组合;其中所述节点内通信参数组合的精度高于所述节点之间通信参数组合的精度。
本发明实施例中的方法的效果包括:通过将获得的梯度数据划分为多个片数据,并对每个片数据采用分别采用执行流传输,优化了数据的发送方式,可以充分利用通信网络的带宽,大大提高带宽利用率,同时也提高了通信网络传输数据的稳定性,减小波动。
本发明还提供了一种计算机可读存储介质,存储有计算机程序,该程序被处理器执行时,实现所述的方法。
本发明还提供了一种服务器,安装有所述的计算机可读存储介质。
本发明还提供了一种通过网络发送数据的计算机设备,包括:
划分模块,用于将获得的多个梯度数据,根据每个所述梯度数据的容量,对所述梯度数据执行融合操作或划分操作;得到一个或多个片数据;
传输模块,用于将所述划分模块的每个片数据,采用一个执行流进行归约allreduce传输。
优选地,所述划分模块,包括:
融合子模块,用于根据融合缓冲区buffer的容量,将多个梯度数据合并为一个或多个片数据;
划分子模块,用于将大于阈值的一个梯度数据划分为多个片数据。
优选地,还包括:连接所述划分模块的梯度传输模块,用于如果一个梯度数据容量小于第一阈值,则用一个执行流传输。
优选地,所述传输模块或所述梯度传输模块,用于将各个执行流采用并行的方式传输数据。
优选地,所述计算机设备用于分布式网络;
所述传输模块包括归约子模块,用于实现在多个GPU组成的逻辑环路中传输每个片数据,每个GPU相邻的左右两边各有一个GPU,从左边的GPU接收数据,再把数据发送至右边的GPU;直到每个GPU的每个块中,包含所有逻辑环路上的全部GPU的块内的数据。
优选地,所述的计算机设备还包括:训练模块,用于根据不同的通信参数组合,运算出需要发送的梯度数据后,训练发送梯度数据。
优选地,所述训练模块包括:
控制模块,用于记录当前次的通信参数组合的性能,获取下一次通信参数组合,执行发送梯度数据的过程。
优选地,所述训练模块还包括:
参数模块,用于按照设定的通信参数组合的数量进行训练;
或,筛选满足最优带宽性能的通信参数组合进行训练。
优选地,所述的计算机设备还包括:
连接所述划分模块和传输模块的分配模块,用于判断当前发送的梯度数据是节点内通信还是节点之间通信;
根据判断结果,分配相应的通信参数组合;其中所述节点内通信参数组合的精度高于所述节点之间通信参数组合的精度。
本发明实施例中的计算机设备的效果包括:通过划分模块将获得的梯度数据划分为多个片数据,并通过传输模块对每个片数据采用分别采用执行流传输,优化了数据的发送方式,可以充分利用通信网络的带宽,大大提高带宽利用率,同时也提高了通信网络传输数据的稳定性,减小波动。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
如图1和图2所示,本发明的实施例,通过网络发送数据的方法,包括如下步骤:
S11:将获得的多个梯度数据,根据每个所述梯度数据的容量,对所述梯度数据执行融合操作或划分操作;得到一个或多个片数据;
首先获取将要发送的梯度数据,梯度数据的数量可能是一个,或者多个。将针对所述梯度数据划分为一个或多个片数据。在实施例中,片数据,可以为数据传输的一份数据,如采用桶bucket的数据。
S12:将每个片数据,采用一个执行流进行归约allreduce传输。
针对每一片数据,采用包含有多个节点的执行流将当前的梯度数据进行传输到网络。
相比于现有技术中采用一个梯度数据作为一个执行流直接进行传输,执行流在多个节点之间进行传输,这种情况在VPC网络下,最多只能达到网络带宽的50%。
本发明中,将所述梯度数据划分为多片数据,然后每片数据对应一个执行流进行归约传输。在对梯度数据划分后,对得到的每个片数据分别对应一个执行流进行传输,这样能较大提高通信网络的利用率。
如果所述梯度数据的数量是多个,可以将其中的每一个梯度数据分别进行划分成片数据处理,也可以采用将所有的梯度数据先进行融合,再划分为多个片数据。
如图2所示,将梯度数据Tensor划分为多个片数据Part0、Part1、…、Part n,每一个片数据分别采用对应的执行流进行传输,每个执行流中包括个多节点,每个节点顺次收发对应的片数据。在实施例中,每个执行流包括8个节点的数据,图中的0~7表示每个节点的数据,形成环形数据。这里的环形可以优选多个图形处理单元GPU组成的逻辑环路,每个GPU为一个节点。每个片数据也可以认为一个bucket数据,每个执行流为环形归约RingAllreduce传输,多个GPU被布置在一个逻辑环路(logical ring)之中。每个GPU左右两个各有一个GPU,并且只从左边的GPU接收数据,再把数据发送至右边的GPU。每个GPU把数组分割成N个较小的块(其中N是GPU在环中的数量),GPU会执行N-1次迭代scatter-reduce。在每一次迭代中,GPU将发送其中一个块到右边的GPU,并从左边的GPU接收一个块,把数据累积进该块。在每一次迭代中,被发送的块和被接收的块是不同的。第n个GPU以发送块n和接收块n–1开始,并从那儿接着向后运行。每次迭代发送的块即是上次迭代所接收的块。直到每个GPU的每个块中,包含所有逻辑环路上的全部GPU的块内的数据。
优选地,本发明提供的实施例中,所述各个执行流采用并行的方式传输数据。采用并行传输方式传输所述梯度数据。还可以对每个梯度数据划分后,针对划分后的片数据分散到不同的执行流进行传输,同时并行传输每个片数据,可以提高传输效率,并且还可以大幅降低通信网络的传输性能的波动。
如图3所示,梯度数据Tensor 0、Tensor 1、…、Tensor n,分别采用对应的执行流并行发送,这样多梯度形成了多流通信,这样可以不受限于最慢的执行流。
现有技术中对不同的梯度数据的传输采用单一的执行流的方式,即当第二个梯度数据已经就绪,但是第一个梯度数据仍然在进行网络集合通信的时候,第二个梯度数据的传输会等待前序第二个梯度数据的传输完成。
相比于现有技术,本发明中针对不同的梯度划分后的片数据的传输分散到不同的执行流进行处理,这样后序梯度数据的片数据传输将与前序梯度数据的片数据并行传输,并且各个片数据并不依赖于对方的完成,这样一方面大大提高了梯度数据的传输效率,另一方面还可以大幅度降低通信网络的传输性能的波动。
采用并行方式之后,各个片数据之间的传输可相互独立且同步进行,可以解决在数据传输过程中受限于速度最慢的片数据的传输问题,但是仍然在传输过程中受限于容量最大的梯度数据。因此,本发明的实施例做了以下进一步的改进。
如图4和图5所示,优选地,本发明提供的实施例中,所述梯度数据的数量为多个,在对所述梯度数据进行划分操作之前,先进行融合操作。由于将每个所述梯度数据分为多片,然后对每一片数据通过对应的执行流进行传输时,每一片数据的传输速度不平衡,并且会经常出现带宽波动,对该梯度数据的传输需要等到所有的片数据传输完毕,这样该梯度数据的传输速度实际上取决于最慢的那一片数据的传输速度。
实施例具体包括:
S21:将所述多个梯度数据进行融合操作;
本发明中,在对所述梯度数据进行划分操作之前,先将获取的需要传输的多个所述梯度数据进行融合操作处理,然后再将合并后的整体数据进行划分操作,得到多片更加均匀的数据,这样在后续采用执行流对每一片数据进行传输时,每一片数据的传输速度更加平衡,所有的片数据在相差不大的时间范围内传输完毕,这样可以实现动态梯度融合,多执行流通信模式,便于实现灵活的梯度分配,提高数据的传输效率。
例如,根据融合缓冲区buffer的容量,将多个梯度数据合并为一个片数据;当前的缓冲区的容量为16M,将多个梯度数据合并后,可融合成一个片数据,或桶数据,即一个存储空间的数据,合并后的一个缓冲区的数据且不大于16M。还可以将融合后的16M划分成多个片数据。
S22:将融合后的梯度数据整体划分为多个片数据;
如图5所示,梯度数据Tensor 0、Tensor 1、…、Tensor n、Tensor n+1、Tensor n+2、…、Tensor s,将梯度数据Tensor 0、Tensor 1、…、Tensor n融合后划分为多个片数据Part0、Part1、…、Part m,然后每个片数据分别采用对应的执行流进行传输;将梯度数据Tensor n+1、Tensor n+2、…、Tensor s融合后划分为多个片数据Part0、Part1、…、Part k,然后每个片数据分别采用对应的执行流进行传输。这种动态多梯度融合、多流通信模式,流资源动态分配,实现了最灵活的动态多流通信,最大限度发挥通信资源的潜力。
划分后的片数据,可以是一个,也可能是多个。融合后的16M数据,也可以根据情况分成2个片数据,每个8M。
S23:将每个片数据,采用执行流传输。
需要指出的是,在采用并行传输方式时,可以匹配对应数量的融合缓冲区来对多个梯度数据进行融合,比如针对一个执行流的环型数据的发送,需要准备16M的融合缓冲区,用于对梯度数据进行融合后划分以及执行传输。
如图6所示,优选地,本发明提供的实施例中,该方法之前还包括判断数据容量大小的步骤:
S31:如果一个梯度数据容量小于第一阈值,则用一个执行流传输;否则执行步骤S32;
S32:将所述梯度数据,划分为多个片数据;
S33:将每个片数据,采用执行流传输。
由于不同大小的梯度数据,划分后的片数据并不相同。如果不考虑梯度数据的大小,对所有的梯度数据采用统一的分割粒度进行划分,那么对于数据容量比较小的梯度数据而言会存在划分过细的情况出现,这样不仅不能有效提高数据的传输效率,反而会降低分割后的片数据的传输效率。
因此,在分割之前,首先需要判断每个梯度数据容量大小,如果梯度数据容量小于第一阈值,则不需要对其进行分割,直接将其作为单个发送包用一个执行流、进行传输;如果梯度数据容量超过了设定的阈值,如第一阈值,那么就需要按照前述的实施例中按照所述第一阈值对应的数据容量对其进行划分为多个片数据,从而实现梯度数据的准确分割,保证发送的片数据与通信网络实现自适应的匹配。较大容量的梯度数据的阈值,可以超过第一阈值,并不需要局限于第一阈值。划分的片数据,由于不需要在buffer中合并,也和缓冲区无关。即使划分的片数据的容量大于融合后划分的片数据的容量,也不影响采用执行流的传输方式传输。在步骤S31、S32的顺序只是列举,可以调换,如果梯度数据较大,大于某个阈值,可以先划分为片数据。
需要说明的是,这里所述第一阈值对应的数据容量需要针对不同的网络传输控制协议TCP以及对应的数据处理方式进行调整,比如针对传输控制协议TCP的降低芯片发送数据包负载的技术,单个发送包可以达到65KB,利用底层集合通信软件测试出大于65KB以上的不同发送包的性能,选出最优单片数据的大小,并以此为依据,对所有的梯度数据进行划分,这样可以避免对梯度数据划分过细而引起通信网络的数据传输效率降低。
优选地,本发明提供的实施例中,所述网络为分布式网络。分布式网络是由分布在不同地点且具有多个终端的节点机互连而成的。网络中任一点均至少与两条线路相连,当任意一条线路发生故障时,通信可转经其它链路完成,具有较高的可靠性。同时,网络易于扩充。采用分布式网络网内节点共享资源容易,可改善线路的信息流量分配,可选择最佳路径,传输延时小。分布式网络可以是虚拟机形式的,如多个GPU在一个物理机上,也可以多个物理机形成的分布式网络。
更优选地,所述分布式网络为环型网络,所述执行流传输的数据为包括各个节点的环型数据。
将多个所述梯度数据进行数据融合,并形成一个整体,然后划分为多片数据,然后每片数据对应一个执行流进行传输到环型网络,每个执行流包含多个(比如8个)节点的环型数据流。
更优选地,分布式网络为星型网络,所述执行流传输的数据为包括各个节点的树型数据流。
将多个所述梯度数据进行数据融合,并形成一个整体,然后划分为多片数据,然后每片数据对应一个执行流进行传输到星型网络,每个执行流包含多个(比如8个)节点的树型数据流,每个节点依次对片数据进行收发。
如图7所示,优选地,本发明提供的实施例中,所述的方法还包括:
S41:预先对发送的梯度数据进行训练,以找到最优的通信参数的组合;
S42:将梯度数据划分为多个片数据;
S43:按照最优的通信参数将每个片数据采用执行流传输。
这样使得需要发送的梯度数据容量与通信网络的通信参数匹配,进一步提高传输稳定性,也能提高数据传输的效率。
优选地,在本发明提供的实施例中,所述通信参数包括执行流的流数和/或梯度数据的数量。比如,采用发送100个梯度数据作为训练,先获取发送数据的通信网络的不同通信参数组合后,根据通信网络的不同通信参数组合计算出当前通信参数能够发送的梯度数据的容量为20M,从需要发送的100个梯度数据中选取出一个或多个梯度数据,它们的数据容量加起来接近20M但不超过20M,那么就可以发送该一个或多个梯度数据。在上述的实施例中,每次传输的流数、每个流的流量都是动态可变的,即使在并行的多个流中,也不是固定的,以适应当前带宽的通信状态。
如图8所示,优选地,本发明提供的实施例中,所述训练的过程包括:
首先获取需要训练的梯度数据,并进行前向计算,准备产生梯度数据,再进行后向计算,获取梯度数据融合的数量和执行流的流数,并判断是否需要继续调整,如果是,则记录当前次的通信参数组合的性能,获取下一次通信参数组合,并执行发送梯度数据;否则,记录当前次的通信参数组合的性能,筛选满足最优带宽性能的通信参数,设定最优融合粒度,执行发送梯度数据。执行发送梯度数据后,更新需要训练的梯度数据,如此重复,直到所有的梯度数据都被测试一次。
本发明中的所述训练过程可以是在发送梯度数据之前进行的训练过程,经过多次训练后,用最优的通信参数组合发送一段时间内的梯度数据,也可以是根据条件触发,(比如训练的次数达到设定的通信参数组合的数量,或者找到满足通信要求的通信参数组合)时,进行上述的训练过程,经过多次训练后,根据获取的最优的通信参数组合发送梯度数据。这些梯度数据可以是一个或多个,也会按照上述实施例划分为一个或多个片数据。
比如,当前次(记为第一次)的通信参数组合的性能对应能发送数据容量为20M的梯度数据,还需要获取第二次通信参数组合,然后执行当前次通信参数组合对应的一个或多个梯度数据的传输。当进行第二次训练时,再记录第二次的通信参数组合的性能,比如第二次的性能对应能发送数据容量为50M,还需要获取第三次通信参数组合,然后执行第二次通信参数组合对应的一个或多个梯度数据的传输,如此重复,直到所有的通信参数的组合都测试一次。
或,筛选满足最优带宽性能的通信参数组合进行训练,只要找到满足通信要求的通信参数组合,即停止训练,并不全部测试完全部的通信参数组合。
比如,在训练时,经过多次不同通信参数组合的训练后,筛选出符合阈值要求的最优宽带性能的通信参数,对应的性能为能发送50M数据容量的梯度数据,然后将最优宽带性能对应的通信参数,用于后续的梯度数据的发送。如图8所示。
在实施例的步骤S41中,可以根据当前执行流的流数运算出需要当前次需要发送的梯度数据,然后记录当前次的执行流的流数对应的性能(比如能发送数据容量为50M的),再获取下一次通信参数组合(比如:执行流的流数和/或梯度数据的数量),执行发送梯度数据的发送。
如图9所示,优选地,在本发明提供的实施例中,所述的方法还包括:
S51:判断当前发送的梯度数据是节点内通信还是节点之间通信;
S52:根据判断结果,分配相应的通信参数组合;其中所述节点内通信参数组合的精度高于所述节点之间通信参数组合的精度。
通过判断当前发送的梯度数据是节点内通信还是节点之间通信,并分配节点内通信的参数组合精度高于节点之间通信参数组合,实现混合精度进行数据传输,这样能最大程度的降低对最终数据传输进度的影响,从而整体上提高数据传输的性能。
比如,在单机多卡上,当前发送的梯度数据是节点内通信,那么选取精度较高的通信参数运算出需要发送的梯度数据数量,然后发送梯度数据;再比如,在多机之间,当前发送的梯度数据是节点之间通信,那么就选用精度较低的通信参数运算出需要发送的梯度数据,然后训练发送梯度数据,这样在保证正常的数据传输精度的基础上,利用低精度在通络通信上的优势整体上提高数据的传输性能。
上面详细地介绍了实施例中的网络带宽优化的方法,本发明的实施例对于上述梯度数据,根据各种情形选择不同的方式发送梯度数据,如直接传输、分片后传输、多个梯度数据融合后,再分片传输、并行传输、或按照训练后的通信参数进行传输等。这些方式之间,本领域技术人员,可以根据网络通信状态,合理选择一种或多种的组合方式,实现梯度数据的发送。下面通过本发明的另一个实施例,来举例说明基于本发明的网络带宽优化的数据传输方法。
例如:将获取的梯度数据,判断所述梯度数据容量是否小于第一阈值,如果是则用一个执行流传输,否则将所述梯度数据划分为多个片数据,然后根据不同的通信参数组合,运算出需要发送的梯度数据后,进行训练,再判断当前发送的梯度数据是节点内通信还是节点之间通信发送梯度数据,根据判断结果,分配相应的通信参数组合;其中所述节点内通信参数组合的精度高于所述节点之间通信参数组合的精度,最后采用并行的方式通过对应的执行流进行传输。以下给出一种用于示例的流程,但不限于仅有这一种示例,本领域技术人员可以排列出更多种组合的示例。
所述网络带宽优化的方法具体包括以下步骤:
1、获取需要发送的多个梯度数据;
2、判断所述梯度数据的梯度容量是否小于第一阈值,如果是,则直接用一个执行流传输,否则进入步骤3;
3、将多个所述梯度数据进行融合操作,然后将融合后的整体划分为多个片数据;
4、根据不同的通信参数组合,运算出需要发送的数据容量大小;
5、对经过划分后的需要发送的片数据进行训练,训练后的确定最优的通信参数;
6、判断当前发送的梯度数据是节点内通信还是节点之间通信发送梯度数据,根据判断结果,分配相应的通信参数组合;
7、根据分配的通信参数组合采用执行流对需要发送的片数据进行发送。
本发明还提供了一种计算机可读存储介质,存储有计算机程序,该程序被处理器执行时,实现上述实施例中的全部或部分的实施例的步骤。
本发明还提供了一种服务器,安装有上述的计算机可读存储介质。
如图10所示,本发明还提供了一种通过网络发送数据的计算机设备,包括:
划分模块,用于将获得的多个梯度数据,根据每个所述梯度数据的容量,对所述梯度数据执行融合操作或划分操作;得到一个或多个片数据;
传输模块,用于将所述划分模块的每个片数据,采用一个执行流进行归约allreduce传输。
优选地,所述划分模块,包括:
融合子模块,用于根据融合缓冲区buffer的容量,将多个梯度数据合并为一个或多个片数据;
划分子模块,用于将大于阈值的一个梯度数据划分为多个片数据。
优选地,所述的计算机设备还包括:连接所述划分模块的梯度传输模块,用于如果一个梯度数据容量小于第一阈值,则用一个执行流传输。
优选地,所述传输模块或所述梯度传输模块,用于将各个执行流采用并行的方式传输数据。
优选地,所述计算机设备用于分布式网络;
所述传输模块包括归约子模块,用于在多个GPU组成的逻辑环路中,传输每个片数据,每个GPU相邻的左右两边各有一个GPU,从左边的GPU接收数据,再把数据发送至右边的GPU;直到每个GPU的每个块中,包含所有逻辑环路上的全部GPU的块内的数据。
优选地,所述的计算机设备还包括:连接所述传输模块的训练模块,用于根据不同的通信参数组合,运算出需要发送的梯度数据后,训练发送梯度数据。
优选地,所述训练模块包括:
控制模块,用于记录当前次的通信参数组合的性能,获取下一次通信参数组合,执行发送梯度数据的过程。
优选地,所述训练模块还包括:
参数模块,用于按照设定的通信参数组合的数量进行训练;
或,筛选满足最优带宽性能的通信参数组合进行训练。
优选地,所述的计算机设备还包括:
连接所述划分模块和传输模块的分配模块,用于判断当前发送的梯度数据是节点内通信还是节点之间通信;
根据判断结果,分配相应的通信参数组合;其中所述节点内通信参数组合的精度高于所述节点之间通信参数组合的精度。
本发明实施例中的计算机设备的效果包括:通过划分模块将获得的梯度数据划分为多个片数据,并通过传输模块对每个片数据采用分别采用执行流传输,优化了数据的发送方式,可以充分利用通信网络的带宽,大大提高带宽利用率,同时也提高了通信网络传输数据的稳定性,减小波动。
本发明实施例中的计算机设备可以是各种形式的计算机设备,如单一GPU的,或多GPU服务器级别的等。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。