深度学习分布式运算方法、装置、计算机设备及存储介质与流程

文档序号:16917459发布日期:2019-02-19 19:05阅读:252来源:国知局
深度学习分布式运算方法、装置、计算机设备及存储介质与流程

本发明涉及分布式运算方法,更具体地说是指深度学习分布式运算方法、装置、计算机设备及存储介质。



背景技术:

近些年来,深度学习与分布式计算在机器学习领域是备受关注的研究内容,目前被广泛的应用于人工智能相关应用的研究与开发当中。

分布式计算是一种计算方法,和集中式计算是相对的。随着计算技术的发展,有些应用需要非常巨大的计算能力才能完成,如果采用集中式计算,需要耗费相当长的时间来完成。分布式计算将该应用分解成许多小的部分,分配给多台计算机进行处理。这样可以节约整体计算时间,大大提高计算效率。

深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。

目前的分布式运算只能针对固定的运算集群,比如款项等运算集群,并不能进行动态扩展,导致分布运算的适用性受限,也没有一种方法可以实现深度学习中的分布式运算的运行环境与gpu硬件隔离以实现运算集群的动态扩展,导致深度学习模型的训练速度低下。

因此,有必要设计一种新的方法,实现运行环境与图像处理器隔离,进行运算集群的动态扩展,且提高深度学习模型的训练速度。



技术实现要素:

本发明的目的在于克服现有技术的缺陷,提供深度学习分布式运算方法、装置、计算机设备及存储介质。

为实现上述目的,本发明采用以下技术方案:深度学习分布式运算方法,包括:

封装模型,形成模型对象;

确定运算数目;

获取请求;

根据请求获取哈希值;

根据哈希值与模型对象进行任务分发;

根据分发结果在docker容器执行任务所对应的代码;

判断任务所对应的代码是否执行完毕;

若是,则释放docker容器内的任务所对应的代码。

其进一步技术方案为:所述确定运算数目,包括:

获取参与运算的图形处理器的个数;

根据模型对象的参数量、训练步数以及图形处理器的个数获取代码训练量;

根据代码训练量确定运算数目。

其进一步技术方案为:所述根据请求获取哈希值之前,还包括:

上传成功响应请求的数据集。

其进一步技术方案为:所述根据分发结果在docker容器执行任务所对应的代码,还包括:

获取空闲的运算集群;

发送所述运算集群对应任务相关哈希值、模型对象以及图形处理器的个数至所述运算集群;

根据哈希值下载任务所对应的代码以及成功响应请求的数据集;

将任务代码与数据集分发至所述运算集群中的子节点;

启动所述运算集群中的子节点运算所需的docker容器;

在docker容器内运行任务所对应的代码。

其进一步技术方案为:所述释放应用容器内的代码之前,还包括:

获取执行结果;

反馈执行结果。

本发明还提供了深度学习分布式运算装置,包括:

封装单元,用于封装模型,形成模型对象;

数目确定单元,用于确定运算数目;

请求获取单元,用于获取请求;

哈希值获取单元,用于根据请求获取哈希值;

分发单元,用于根据哈希值与模型对象进行任务分发;

代码执行单元,用于根据分发结果在docker容器执行任务所对应的代码;

执行判断单元,用于判断任务所对应的代码是否执行完毕;

释放单元,用于若是,则释放应用容器内的任务所对应的代码。

其进一步技术方案为:所述数目确定单元包括:

个数获取子单元,用于获取参与运算的图形处理器的个数;

训练量获取子单元,用于根据模型对象的参数量、训练步数以及图形处理器的个数获取代码训练量;

确定子单元,用于根据代码训练量确定款项。

其进一步技术方案为:所述装置还包括:

数据集获取单元,用于上传成功响应请求的数据集。

本发明还提供了一种计算机设备,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现上述的方法。

本发明还提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时可实现上述的方法。

本发明与现有技术相比的有益效果是:本发明通过在tensorflow的分布式运算框架的基础上进行进一步的功能封装,调用docker容器,并在docker容器内运行任务所对应的代码,实现了运行环境统一与图像处理器隔离,调用docker容器可进行运算集群的动态扩展,使提高深度学习模型的训练速度。

下面结合附图和具体实施例对本发明作进一步描述。

附图说明

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

图1为本发明实施例提供的深度学习分布式运算方法的应用场景示意图;

图2为本发明实施例提供的深度学习分布式运算方法的流程示意图;

图3为本发明实施例提供的深度学习分布式运算方法的子流程示意图;

图4为本发明实施例提供的深度学习分布式运算方法的子流程示意图;

图5为本发明实施例提供的深度学习分布式运算装置的示意性框图;

图6为本发明实施例提供的深度学习分布式运算装置的数目确定单元的示意性框图;

图7为本发明实施例提供的深度学习分布式运算装置的代码执行单元的示意性框图;

图8为本发明实施例提供的计算机设备的示意性框图。

具体实施方式

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

应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。

还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

请参阅图1和图2,图1为本发明实施例提供的深度学习分布式运算方法的应用场景示意图。图2为本发明实施例提供的深度学习分布式运算方法的示意性流程图。深度学习分布式运算方法应用于管理服务器、代理服务器与处理服务器内,该管理服务器可以为分布式服务平台中的一台服务器,代理服务器也可以为分布式服务平台中的一台服务器,处理服务器也可以为分布式服务平台中的一台服务器,该管理服务器与用户终端进行数据交互,由用户通过用户终端的运算app输入运算数目,以使得管理服务器调动代理服务器,代理服务器根据管理服务器的指令,调动处理服务器进行分布式运算,处理服务器将运算结果反馈至代理服务器,再经过管理服务器反馈至用户终端。

需要说明的是,图2中仅仅示意出一台管理服务器,在实际操作过程中,采用多台管理服务器进行同时运算。

图2是本发明实施例提供的深度学习分布式运算方法的流程示意图。如图2所示,该方法包括以下步骤s110至s210。

s110、封装模型,形成模型对象。

在本实施例中,模型对象指的是以tensorflow为内核,满足接口需求且进行深度学习的模型,上述的模型指的是tensorflow模型

首先用户根据管理服务器提供的简单示例代码,使用管理服务器的接口将模型代码封装为一个模型对象,其中,tensorflow(第二代人工智能学习系统)模型是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的模型,对于封装过程,一般以模型为内核,将其对应的代码以接口的形式进行封装,形成一个可调用的模型对象,避免了各开发端在每次的深度学习开发时需要重新确定训练代码的无效重复操作,提高了产品化效率。

tensorflow是目前应用最为广泛的一个深度学习计算框架,可用于各种感知和语言理解任务的机器学习,通过tensorflow的框架,可以方便的研究、搭建、训练与部署各种深度学习相关的模型,同时在tensorflow底层集成了grpc远程调用功能可以很方便地在此基础上实现模型的分布式训练,基于tensorflow实现分布式运算系统,将会有运行稳定性好,受众面广,应用广泛,开发便捷等优点。

s120、确定运算数目。

在本实施例中,运算数目指的是所需进行分布式运算的数目,比如支付款项或者完成任务量等数值。

在一实施例中,如图3所示,上述步骤s120可包括步骤s121~s123。

s121、获取参与运算的图形处理器的个数。

用户通过用户终端的运算app选择参与运算的图像处理器的个数,若当前的图形处理器的数目少于用户选择的图像处理器个数,则管理服务器处于继续等待状态,等待图像处理器工作完毕,凑足选择参与运算的图像处理器的个数,才可进行确定运算数目。

s122、根据模型对象的参数量、训练步数以及图形处理器的个数获取代码训练量。

在本实施例中,参数量指的是神经网络参数,也就是深度学习后的参数;训练步数指的是深度学习的步数;代码训练量指的是需要进行深度学习的分布运算的量。

模型对象的参数量、训练步数以及图形处理器的个数具备不同的权重,因此,需要先对模型对象的参数量、训练步数以及图形处理器的个数配备一个权重值,获取代码训练量时,可以根据加权求和的方式获取总和,以该总和作为代码训练量。

s123、根据代码训练量确定运算数目。

在本实施例中,代码训练量与运算数目之间具有一定的转换关系,比如线性关系或者一一对应的映射关系,根据转换关系即可将码训练量转换为运算数目。

s130、获取请求。

在确定运算数目后,用户通过用户终端的运算app进行运算数目的结算或者领取,以此作为请求。

s140、上传成功响应请求的数据集;

s150、根据请求获取哈希值。

在请求成功响应后,比如支付成功或者任务领取成功后,管理服务器内的eos(嵌入式操作系统,embeddedoperationsystem)的节点进行请求的响应操作,比如付款转账操作,确认节点返回付款完成信息后,开始向ipfs(星际文件系统,interplanetaryfilesystem)上传成功响应请求的数据集,成功响应请求的数据集上传完毕后返回存储哈希值。

s160、根据哈希值与模型对象进行任务分发。

在本实施例中,管理服务器向代理服务器反馈哈希值与模型对象,代理服务器根据哈希值与模型对象进行任务分发,具体是不同哈希值以及不同模型对象搭配时,可进行不同的运算任务,因此,需要将哈希值与模型对象一一对应的运算任务下发至指定的处理服务器;此外,管理服务器还向代理服务器发送启动运算任务的命令。

s170、根据分发结果在docker容器执行任务所对应的代码。

在本实施例中,分发结果指的是哪一任务分配到哪一处理服务器的运算集群做处理。

在一实施例中,如图4所示,上述步骤s170可包括步骤s171~s176。

s171、获取空闲的运算集群。

运算集群集成在处理服务器内,具体地,代理服务器在接收到管理服务器发送的启动运算任务的命令后进行任务调度操作,空闲的处理服务器会进行排队,形成列队,按照等待队列选取空闲的处理服务器。

s172、发送所述运算集群对应任务相关哈希值、模型对象以及图形处理器的个数至所述运算集群。

管理服务器向处理服务器发送任务相关哈希值、模型对象的代码以及用户选取的图形处理器节点个数,通知该处理器开始运算任务。

s173、根据哈希值下载任务所对应的代码以及成功响应请求的数据集。

处理服务器接收到运算任务的通知后,由运算集群主节点利用哈希值从ipfs(星际文件系统,interplanetaryfilesystem)服务器下载相关任务代码以及成功响应请求的数据集。

s174、将任务所对应的代码与数据集分发至所述运算集群中的子节点。

在本实施例中,运算集群主节点分发给各个运算集群子节点。

s175、启动所述运算集群中的子节点运算所需的docker容器。

s176、在docker容器内运行任务所对应的代码。

docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口,使用docker容器作为基本环境运行tensorflow分布式代码,采用docker的虚拟化技术调用docker容器执行代码,可以保证各个分布式节点代码运行的环境一致,同时可实现同一台节点机器上各gpu之间的硬件隔离,防止gpu运行互相干扰,使用docker技术可以更方便的进行系统运算集群的动态扩展。

s180、判断任务所对应的代码是否执行完毕;

s190、若是,则获取执行结果;

s200、反馈执行结果;

s210、释放docker容器内的任务所对应的代码;

若否,则返回所述根据分发结果在docker容器执行任务所对应的代码。

处理服务器执行完任务代码,即运算完成后,终止各个docker容器的运行,并释放各个docker容器内的运算资源,也就是任务所对应的代码,将运算完成后的执行结果通过代理服务器、ipfs和管理服务器发送给用户。

举一个例子,在支付款项的过程中,首先用户根据提供的简单示例代码,使用接口将模型代码封装为一个模型对象,用户选择参与运算gpu的个数,根据模型对象参数量的大小,训练步数的多少以及运算gpu的个数对代码训练量进行预估确定费用,并通知用户做最后确认,若确认超时,则发送提醒至用户终端;用户确认任务内容后系统向用户提起支付请求,若支付超时,也发送提醒至用户终端,用户确认支付后,eos节点进行付款转账操作,系统确认节点返回付款完成信息后,开始向ipfs上传数据集。数据集上传完毕后返回存储hash值,管理服务器发送数据集、hash值以及模型对象代码进行任务分发。代理服务器在接收到任务启动的命令后进行任务调度操作,按照等待队列选取空闲的运算集群,向其发送任务相关的hash值、模型对象代码以及用户选取的gpu(图形处理器,graphicsprocessingunit)节点个数,通知其开始运算任务。运算集群主节点在接收到任务指令后利用hash值从ipfs服务器下载相关任务代码以及数据集,分发给各个子节点后,启动运算所需的docker容器,在其中运行获取的任务代码,并开始模型对象的分布式运算训练,运算训练完成后终止各个docker容器的运行,并释放各个docker容器的运算资源,然后将训练完成后的运行结果通过ipfs和代理服务器、管理服务器发送给用户。

上述的例子结合eos区块链技术进行费用的支付与结算以及实现用户的激励策略,文件的存储与转发利用ipfs分布式存储系统实现。

上述的深度学习分布式运算方法,通过在tensorflow的分布式运算框架的基础上进行进一步的功能封装,调用docker容器,并在docker容器内运行任务所对应的代码,实现了运行环境统一与图像处理器隔离,调用docker容器可进行运算集群的动态扩展,使提高深度学习模型的训练速度。

图5是本发明实施例提供的深度学习分布式运算装置300的示意性框图。如图5所示,对应于以上深度学习分布式运算方法,本发明还提供深度学习分布式运算装置300。该深度学习分布式运算装置300包括用于执行上述深度学习分布式运算方法的单元,该装置可以被配置于服务器中。

具体地,请参阅图5,该深度学习分布式运算装置300包括

封装单元301,用于封装模型,形成模型对象;

数目确定单元302,用于确定运算数目;

请求获取单元303,用于获取请求;

哈希值获取单元305,用于根据请求获取哈希值;

分发单元306,用于根据哈希值与模型对象进行任务分发;

代码执行单元307,用于根据分发结果在docker容器执行任务所对应的代码;

执行判断单元308,用于判断任务所对应的代码是否执行完毕;

释放单元311,用于若是,则释放应用容器内的任务所对应的代码。

在一实施例中,如图6所示,所述数目确定单元302包括:

个数获取子单元3021,用于获取参与运算的图形处理器的个数;

训练量获取子单元3022,用于根据模型对象的参数量、训练步数以及图形处理器的个数获取代码训练量;

确定子单元3023,用于根据代码训练量确定款项。

在一实施例中,上述的装置还包括:

数据集获取单元304,用于上传成功响应请求的数据集。

在一实施例中,如图7所示,上述的代码执行单元307包括:

集群获取子单元3071,用于获取空闲的运算集群;

发送子单元3072,用于发送所述运算集群对应任务相关哈希值、模型对象以及图形处理器的个数至所述运算集群;

下载子单元3073,用于根据哈希值下载任务所对应的代码以及成功响应请求的数据集;

分发子单元3074,用于将任务代码与数据集分发至所述运算集群中的子节点;

启动子单元3075,用于启动所述运算集群中的子节点运算所需的docker容器;

执行子单元3076,用于在docker容器内运行任务所对应的代码。

在一实施例中,上述的装置还包括:

结果获取单元309,用于获取执行结果;

反馈单元310,用于反馈执行结果。

需要说明的是,所属领域的技术人员可以清楚地了解到,上述深度学习分布式运算装置300和各单元的具体实现过程,可以参考前述方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。

上述深度学习分布式运算装置300可以实现为一种计算机程序的形式,该计算机程序可以在如图8所示的计算机设备上运行。

请参阅图8,图8是本申请实施例提供的一种计算机设备的示意性框图。该计算机设备500是服务器,服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群。

参阅图8,该计算机设备500包括通过系统总线501连接的处理器502、存储器和网络接口505,其中,存储器可以包括非易失性存储介质503和内存储器504。

该非易失性存储介质503可存储操作系统5031和计算机程序5032。该计算机程序5032包括程序指令,该程序指令被执行时,可使得处理器502执行一种深度学习分布式运算方法。

该处理器502用于提供计算和控制能力,以支撑整个计算机设备500的运行。

该内存储器504为非易失性存储介质503中的计算机程序5032的运行提供环境,该计算机程序5032被处理器502执行时,可使得处理器502执行一种深度学习分布式运算方法。

该网络接口505用于与其它设备进行网络通信。本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备500的限定,具体的计算机设备500可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

其中,所述处理器502用于运行存储在存储器中的计算机程序5032,以实现如下步骤:

封装模型,形成模型对象;

确定运算数目;

获取请求;

根据请求获取哈希值;

根据哈希值与模型对象进行任务分发;

根据分发结果在docker容器执行任务所对应的代码;

判断任务所对应的代码是否执行完毕;

若是,则释放docker容器内的任务所对应的代码。

在一实施例中,处理器502在实现所述确定运算数目步骤时,具体实现如下步骤:

获取参与运算的图形处理器的个数;

根据模型对象的参数量、训练步数以及图形处理器的个数获取代码训练量;

根据代码训练量确定运算数目。

在一实施例中,处理器502在实现所述根据请求获取哈希值步骤之前,还实现如下步骤:

上传成功响应请求的数据集。

在一实施例中,处理器502在实现所述根据分发结果在docker容器执行任务所对应的代码步骤时,具体实现如下步骤:

获取空闲的运算集群;

发送所述运算集群对应任务相关哈希值、模型对象以及图形处理器的个数至所述运算集群;

根据哈希值下载任务所对应的代码以及成功响应请求的数据集;

将任务代码与数据集分发至所述运算集群中的子节点;

启动所述运算集群中的子节点运算所需的docker容器;

在docker容器内运行任务所对应的代码。

在一实施例中,处理器502在实现所述释放应用容器内的代码步骤之前,还实现如下步骤:

获取执行结果;

反馈执行结果。

在一实施例中,处理器502在实现所述判断任务所对应的代码是否执行完毕步骤之后,还实现如下步骤:

若否,则返回所述根据分发结果在docker容器执行任务所对应的代码。

应当理解,在本申请实施例中,处理器502可以是中央处理单元(centralprocessingunit,cpu),该处理器502还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

本领域普通技术人员可以理解的是实现上述实施例的方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成。该计算机程序包括程序指令,计算机程序可存储于一存储介质中,该存储介质为计算机可读存储介质。该程序指令被该计算机系统中的至少一个处理器执行,以实现上述方法的实施例的流程步骤。

因此,本发明还提供一种存储介质。该存储介质可以为计算机可读存储介质。该存储介质存储有计算机程序,其中该计算机程序被处理器执行时使处理器执行如下步骤:

封装模型,形成模型对象;

确定运算数目;

获取请求;

根据请求获取哈希值;

根据哈希值与模型对象进行任务分发;

根据分发结果在docker容器执行任务所对应的代码;

判断任务所对应的代码是否执行完毕;

若是,则释放docker容器内的任务所对应的代码。

在一实施例中,所述处理器在执行所述计算机程序而实现所述确定运算数目步骤时,具体实现如下步骤:

获取参与运算的图形处理器的个数;

根据模型对象的参数量、训练步数以及图形处理器的个数获取代码训练量;

根据代码训练量确定运算数目。

在一实施例中,所述处理器在执行所述计算机程序而实现所述根据请求获取哈希值步骤之前,还实现如下步骤:

上传成功响应请求的数据集。

在一实施例中,所述处理器在执行所述计算机程序而实现所述根据分发结果在docker容器执行任务所对应的代码步骤时,具体实现如下步骤:

获取空闲的运算集群;

发送所述运算集群对应任务相关哈希值、模型对象以及图形处理器的个数至所述运算集群;

根据哈希值下载任务所对应的代码以及成功响应请求的数据集;

将任务代码与数据集分发至所述运算集群中的子节点;

启动所述运算集群中的子节点运算所需的docker容器;

在docker容器内运行任务所对应的代码。

在一实施例中,所述处理器在执行所述计算机程序而实现所述释放应用容器内的代码步骤之前,还实现如下步骤:

获取执行结果;

反馈执行结果。

在一实施例中,所述处理器在执行所述计算机程序而实现所述判断任务所对应的代码是否执行完毕步骤之后,还实现如下步骤:

若否,则返回所述根据分发结果在docker容器执行任务所对应的代码。

所述存储介质可以是u盘、移动硬盘、只读存储器(read-onlymemory,rom)、磁碟或者光盘等各种可以存储程序代码的计算机可读存储介质。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的。例如,各个单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。

本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本发明实施例装置中的单元可以根据实际需要进行合并、划分和删减。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。

该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

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