对象编码的方法、装置、系统、设备及计算机存储介质与流程

文档序号:21639280发布日期:2020-07-29 02:50阅读:130来源:国知局
对象编码的方法、装置、系统、设备及计算机存储介质与流程

本申请涉及计算机技术领域,尤其涉及一种对象编码的方法、装置、系统、设备及计算机存储介质。



背景技术:

机器阅读理解,要求机器阅读并理解人类自然语言文本,在此基础上,解答跟文本信息相关的问题。该任务通常被用来衡量机器自然语言理解能力,可以帮助人类从大量文本中快速聚焦相关信息,降低人工信息获取成本,在文本问答、信息抽取、对话系统等领域具有极强的应用价值。近年来,机器阅读理解受到工业界和学术界越来越广泛的关注,是自然语言处理领域的研究热点之一。

文本语义编码是机器阅读理解的重要步骤,一般通过模型对文本进行编码,根据编码结果进行答案获取。由于机器阅读理解可用于帮助降低人工信息获取的成本,因此,在阅读理解的内容篇幅较长的情况下,如何能够以较快的速度处理较长的文本,是提高机器阅读理解效果需要解决的问题之一。



技术实现要素:

为了解决现有技术中的至少一个问题,本申请实施例提供一种对象编码的方法、装置、系统、设备及计算机存储介质。

第一方面,本申请实施例提供一种对象编码的方法,应用于节点,节点为服务端包括的多个节点中之一,方法包括:

接收客户端发送的n个任务及其对应的顺序;n为大于等于1的整数;

调用第一编码模型对n个任务进行编码处理,获得每一个任务的处理结果;

将每一个任务的处理结果按照n个任务所对应的顺序排列,得到子编码结果;其中,子编码结果包含按照n个任务所对应的顺序排列的每一个任务的处理结果;

将子编码结果发送至客户端。

第二方面,本申请实施例提供一种对象编码装置,应用于客户端,包括:

划分模块:用于对对象序列进行划分得到多个任务;

分配模块:用于对多个任务进行分配,得到针对服务端的多个节点中每一个服务端节点的分配结果;分配结果包括:分配给节点的n个任务以及n个任务对应的顺序,并且n个任务包含在多个任务中;n为大于等于1的整数;

任务发送模块:用于根据的分配结果,为每一个节点发送对应的n个任务及其对应的顺序;

结果接收模块:用于接收多个节点中每一个节点反馈的子编码结果;其中,子编码结果包含按照n个任务所对应的顺序排列的每一个任务的处理结果;

汇总模块:用于将子编码结果进行汇总,得到对象序列对应的编码结果。

第三方面,本申请实施例一种对象编码的系统,包括客户端和服务端;

服务端包括本申请任意一项实施例提供的应用于服务端的对象编码的装置;

客户端包括本申请任意一项实施例提供的应用于客户端的对象编码的装置。

第四方面,本申请实施例还提供一种电子设备,包括:

至少一个处理器;以及

与至少一个处理器通信连接的存储器;其中,

存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行本申请任意一项实施例所提供的方法。

第五方面,本申请是实施例还提供一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,计算机指令用于使计算机执行本申请任意一项实施例所提供的方法。

上述申请中的一个实施例具有如下优点或有益效果:提高对象编码效率。因为采用服务端多个节点进行可同时接收客户端发送的任务、并同时对任务进行编码技术手段,所以克服了对象编码处理效率低的技术问题。

本申请实施例能够在服务端多个节点上同时处理客户端发送的任务,提高任务处理的速度。在任务处理完成之后,将任务处理结果按照任务的顺序排列,使得得到的子编码结果的顺序与客户端获得的对象序列相对应,然后各节点分别将子编码结果反馈到客户端,从而,能够减少客户端获得全部子编码结果的时间,进而达到提高任务处理效率的技术效果。

上述可选方式所具有的其他效果将在下文中结合具体实施例加以说明。

附图说明

附图用于更好地理解本方案,不构成对本申请的限定。其中:

图1是根据本申请一实施例的对象编码的方法的示意图;

图2是根据本申请另一实施例的对象编码的方法的示意图;

图3是根据本申请另一实施例的对象编码的方法的示意图;

图4是根据本申请另一实施例的对象编码的方法的示意图;

图5是根据本申请一实施例的对象编码的方法的示意图;

图6是根据本申请另一实施例的对象编码的方法的示意图;

图7是根据本申请另一实施例的对象编码的方法的示意图;

图8是根据本申请另一实施例的对象编码的方法的示意图;

图9是根据本申请另一实施例的对象编码的方法的示意图;

图10是根据本申请一实施例的对象编码的装置的示意图;

图11是根据本申请另一实施例的对象编码的装置的示意图;

图12是根据本申请另一实施例的对象编码的装置的示意图;

图13是根据本申请另一实施例的对象编码的装置的示意图;

图14是根据本申请另一实施例的对象编码的装置的示意图;

图15是根据本申请一实施例的对象编码的装置的示意图;

图16是根据本申请另一实施例的对象编码的装置的示意图;

图17是根据本申请一实施例的对象编码的系统的示意图;

图18是根据本申请另一实施例的对象编码的系统的示意图;

图19是可以实现本申请实施例的对象编码设备图。

具体实施方式

以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

本申请实施例将对象序列进行的编码的任务分发到服务端的多个节点上,使得多个节点能够同时对对象序列的任务进行编码操作,最后汇总多个节点处理任务得到的结果,得到对对象序列的编码结果。

本申请实施例的对象编码的方法,参照图1所示,应用于节点,节点为服务端包括的多个节点中之一,方法包括:

步骤101:接收客户端发送的n个任务及其对应的顺序;n为大于等于1的整数。

在本申请实施例中,任务可以为对语句进行编码的任务。且任务可以由客户端对对象序列进行划分得到。n个任务对应的顺序,可以为任务对应的对象在对象序列中的顺序。

当任务为对语句进行编码的任务时,每个任务可以对应于一个语句。

步骤102:调用第一编码模型对n个任务进行编码处理,获得每一个任务的处理结果。

在本申请实施例中,当任务为对语句进行编码的任务时,第一编码模型可以为文本编码模型,用于对文本进行编码。当任务为对语句进行编码的任务时,每一个任务可以为语句的向量。

在本申请实施例中,第一编码模型为语言模型。语言模型本质上是在回答一个问题:出现的语句是否合理。在历史的发展中,语言模型经历了专家语法规则模型(至80年代),统计语言模型(至00年),神经网络语言模型(到目前)。

在计算机初始阶段,随着计算机编程语言的发展,归纳出的针对自然语言的语法规则。但是自然语言本身的多样性、口语化,在时间、空间上的演化,及人本身强大的纠错能力,导致语法规则急剧膨胀,不可持续。

统计语言模型用简单的方式,加上大量的语料,产生了比较好的效果。统计语言模型通过对句子的概率分布进行建模,统计来说,概率高的语句比概率低的语句更为合理。在实现中,通过给定的上文来预测句子的下一个词,如果预测的词和下一个词是一致(该词在上文的前提下出现的概率比其它词概率要高),那么上文+该词出现的概率就会比上文+其他词词的概率要更大,上文+该词更为合理。

当第一编码模型为语言模型时,第一编码模型具体可以为神经网络语言模型(neuralnetworklanguagemodel,nnlm)对语句进行分词,产生词向量,采用具有一定维度的实数向量,代替统计语言模型使用的高维离散变量,来进行单词的分布式表示,解决了维度过多的问题,同时通过词向量可获取词之间的相似性。进一步,第一编码模型还可以为循环神经网络语言模型(rnnlm)、长短时记忆循环神经网络语言模型(lstm-rnnlm,longshorttermmemoryrnnlm)。

步骤103:将每一个任务的处理结果按照n个任务所对应的顺序排列,得到子编码结果;其中,子编码结果包含按照n个任务所对应的顺序排列的每一个任务的处理结果。

在本申请实施例中,在服务端多个节点中的一个节点上,将n个任务进行编码操作,得到每个任务的处理结果后,按照n个任务对应的对象在对象序列中的顺序,也就是按照节点接收n个任务时获得的顺序进行排列。

在本申请实施例中,使用任务队列组件调度每一个任务,在多个实例之间分发任务并按顺序聚合处理结果得到自编码结果。

步骤104:将子编码结果发送至客户端。

同时,服务端包括多个节点,每个节点都能够在接收到任务后,调用第一模型对任务进行处理,不同节点之间的操作不相互干扰。从而,服务端的节点能够在需要的时候进行添加,使得服务端接收具有足够的灵活性。具体操作中,可令客户端支持匹配多个服务端的节点,按照服务端的处理能力完成批量任务的分发并完成按顺序结果整合。

在本申请实施例中,服务端多个节点进行可同时接收客户端发送的任务,并同时对任务进行编码,从而,能够减少客户端接收到全部子编码结果的时间,提高任务处理效率。

在任务为语句处理任务的情况下,本申请实施例使服务端的节点可以构成集群,提高语义编码效率,缩短语句所在的文本段落的编码时间。子编码结果发送至客户端后,能够进一步用于获得机器阅读的结果,进而使得机器阅读的速度得以提高。

在一种实施方式中,如图2所示,调用第一编码模型对n个任务进行编码处理,获得每一个任务的处理结果,包括:

步骤201:记录n个任务对应的顺序,将n个任务的状态设置为第一状态;第一状态表征任务为未处理状态;

步骤202:通过状态为空闲的实例对n个任务中第一状态的任务进行处理,得到每一个任务的处理结果。

在本申请实施例中,n个任务对应的顺序,可以是n个任务对应的对象在对象序列中的顺序。例如,在任务为语句处理任务的情况下,对象序列可以为文本序列,包括多个语句,每个语句都有对应的顺序。假设n为3,某节点接收到的任务对应的语句为文本序列中的第2-4个语句,则该节点接收到的3个任务对应的顺序分别可以是3、4和5。

状态为空闲的实例,可以是当前没有处理任何任务的实例。在任意节点上,可运行一个以上的实例。

在本申请实施例中,由状态为空闲的实例对任务进行处理,从而在节点上运行的任务数量为两个以上时,一个节点上能够同时对不同的任务进行处理,进而提高节点的任务处理速度,提高获得子编码结果的速度。

在一种实施方式中,由状态为空闲的实例对n个任务中第一状态的第一任务进行处理,得到每一个任务的处理结果,包括:

判断n个任务中是否存在处于第一状态的任务,若存在,则从处于第一状态的任务中选取第一任务;通过状态为空闲的实例调用文本模型对第一任务进行编码操作得到处理结果,并将第一任务的状态设置为第二状态;第二状态表征任务为处理状态;

若不存在,则确定n个任务处理完成,得到每一个任务的处理结果。

本申请实施例中,节点接收到n个任务后,可首先对n个任务进行状态记录,记为第一状态。然后将n个任务进行分配,若节点上运行的实例个数大于n,则每个任务都无需等待,直接被分配到对应实例进行处理。若节点上运行的实例个数小于n,可首先给每个实例分配一个第一状态的任务,剩余的任务处于等待状态。待有实例将任务处理完时,完成的任务记录为第二状态,然后再次分配仍然处于第一状态的任务给该实例。

在本申请实施例中,通过标记任务的状态来表示任务是否处理完成,从而避免任务在节点上被重复处理,避免得到重复的处理结果。

在本申请实施例中,对象编码方法包括:

通过容器描述节点的运行环境,并产生容器镜像;

将容器镜像复制到节点上;

通过容器镜像产生实例。

在本申请实施例中,容器可采用docker(应用容器引擎)产生。docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖环境到一个可移植的容器中,然后发布到任何流行的linux机器或windows机器上。docker也可以用于硬件资源虚拟化。每个docker容器都完全使用沙箱机制,相互之间不会有任何接口,从而在docker容器中的实例可以相互不干扰地对任务进行处理。docker容器可以在任何操作系统的基础上完成应用软件运行环境的配置,并打包导出docker镜像。部署docker镜像或从docker镜像启动多个docker容器都只依赖docker环境。docker技术大大简化了应用软件部署与移植流程。

在一种实施方式中,如图3所示,方法还包括:

步骤301:获得第二编码模型;

步骤302:将第二编码模型进行模型蒸馏,获得第一编码模型;所述第一编码模型所消耗的资源小于所述第二编码模型。具体可以第一编码模型为第二编码模型的学生模型。第一模型的模型参数量总体上小于第二模型,且模型的输出结果与第二模型的差别在设定范围内。从而第一模型更易于部署,运行速度更快。

知识蒸馏(kd,knowledgedistillation)是想将复杂的老师模型(teacher)中的知识迁移到简单的学生模型(student)中去teacher具有强大的表达能力和预测效果,而student的模型结构则更为紧凑小巧。通过知识蒸馏,希望student能尽可能逼近亦或是超过teacher,从而用更少的计算复杂度来获得类似的预测效果。

在本申请实施例中,第二编码模型可以为第一编码模型的原型,其规模、所消耗的资源小于第一编码模型。第一编码模型为第二编码模型的学生模型,但是处理任务所得到的结果与第一编码模型所得到的结果之间的差别在设定范围内,保证第二编码模型对于同样输入数据的输出结果与第一编码模型处理该数据得到的输出结果相差较小。

在本申请实施例中,第一编码模型为第二编码模型蒸馏后的模型,不选用原始版本的第二编码模型进行句级别语义编码,而是选用经过模型蒸馏的第一编码模型,易于部署,消耗资源较小;且在很大程度保留原始版本的第一编码模型的语义编码能力,从而能够得到与第二编码模型足够进行的处理效果,从而减少整个服务端运行时所需要的消耗。

在本申请实施例中,第一编码模型和第二编码模型可以采用“编码器-解码器”结构和自注意力机制,在提高模型的表达能力的同时,还令模型预测过程中的很多计算可以被并行执行。

在一种实施方式中,如图4所示,任务为文本编码任务,获得第二编码模型,包括:

步骤401:根据目标语句,生成训练语句;训练语句为遮盖目标语句的字符得到的;

步骤402:将训练语句输入待训练模型,获得模型填写被遮盖的目标字符得到的输出结果;

步骤403:根据输出结果和目标语句,对待训练模型进行训练;

步骤404:根据训练结果,得到第二编码模型。

在本申请实施例中,任务为文本编码任务,即对语句进行编码的任务。目标语句可以为训练样本语句。按照一定的规则选择目标语句中的字符,进行遮盖,得到训练语句。训练语句部分字符空缺,将训练语句输入待训练模型,由模型填写,然后根据填写内容是否与目标语句接近,对待训练模型进行训练。

一般情况下,先获取词向量再生成句向量的语义编码方法将受限于词语切分的质量。如果词语切分不准确,就无法保证每个词语获得正确的语义表示,这将导致整段文本的语义表示结果发生偏差。同时,词级别语义编码即词向量无法解决一词多义的问题。当语句中某个词使用了比较少见的语义,其对应的词向量仍然倾向于表达该词最常见的语义,而语句中单个词的语义表达偏差,将导致语句甚至整段文本的语义表示结果发生偏差。

本申请实施例中,采用遮盖字符的方式,得到训练语句,对待训练模型进行训练。从而训练得到的模型能够以字符为单位对输入的语句进行编码,无需对语句进行分词,直接进行句级别的语义编码,而不是利用模型对不定长文本的词向量序列进行语义综合。从而在一词多义的情况下,也能够保证编码具有较高的准确性。

在本申请实施例中,第一编码模型和第二编码模型均可包括至少一个transformer模型组件,充分学习输入文本的多角度句法知识。

可选的,第二编码模型可选用bert(bidirectionalencoderrepresentationfromtransformers,基于transformer的双向编码器表征)、xlnet(xl网络)、ernie(知识增强语义表示模型,enhancedrepresentationfromknowledgeintegration)、albert(alitebert,低量bert);推荐的候选语言模型包括而不限于:tinybert(小bert)、ernie-tiny(小ernie)。

本申请实施例提供一种对象编码的方法,应用于客户端,如图5所示,包括:

步骤501:对对象序列进行划分得到多个任务。

在本申请实施例中,对象序列可以是需要编码的任意对象。在本申请实施例中,对象序列可以是文本序列。

在对象序列是文本序列的情况下,可以按照语句对对象序列进行划分,每个语句对应一个任务。

步骤502:对多个任务进行分配,得到针对服务端的多个节点中每一个服务端节点的分配结果;分配结果包括:分配给节点的n个任务以及n个任务对应的顺序,并且n个任务包含在多个任务中。n为大于等于1的整数。

在本申请实施例中,对多个任务进行分配,使得任务被分配给服务端的多个节点中的各节点。服务端的多个节点,可以是服务端的全部节点,也可以是服务端全部节点中的一部分。每个被分配任务的节点,可以被分配一个任务或一个以上的任务。在本实施例中,n至少为1,且不超过任务总数。

例如,当前有12个句子需要进行编码,服务端的结点node1启动4个服务实例,服务端的结点node2启动3个服务实例,节点node3启动3个服务实例:

对node1,由于待分配句子数量12大于node1的服务实例数量4,且12*4/(4+3+3)=4.8,向上取整为5,为node1分配5个句子。剩余7个句子待分配。

对node2,由于待分配句子数量7大于node2的服务实例数量3,且12*3/(4+3+3)=3.6,向上取整为4,为node2分配4个句子。剩余3个句子。

对node3,由于待分配句子数量3小于或等于node2的服务实例数量3,直接为node2分配3个句子。剩余0个句子。

又如,当前有2个句子需要进行编码,服务端的结点node1启动4个服务实例,服务端的结点node2启动6个服务实例:

对node1,由于待分配句子数量2小于或等于node1的服务实例数量4,直接为node1分配2个句子。剩余0个句子。

上述例子中,向上取整操作确保了遍历所有可用服务端结点后,不会有剩余未分配的任务。

在本申请实施例中,节点可以是服务器,具有独立的运算能力。不同节点之间的运算过程不相互干扰。客户端在对对象序列进行任务分配时,可以平均分配,也可以根据客观参数或者人为设置信息,对不同的节点划分不同数量的任务。

步骤503:根据的分配结果,为每一个节点发送对应的n个任务及其对应的顺序。

在本申请实施例中,客户端进行任务分配后,向被分配任务的节点发送相应的任务,同时以一定的方式使得节点能够得知任务的顺序。

步骤504:接收多个节点中每一个节点反馈的子编码结果;其中,子编码结果包含按照n个任务所对应的顺序排列的每一个任务的处理结果。

在本申请实施例中,若对象序列为文本序列,每个任务对应文本序列的一个语句,则处理结果为语句的向量。n个任务对应于n个语句,将处理结果按照n各任务的顺序进行排列,得到子编码结果。

步骤505:将子编码结果进行汇总,得到对象序列对应的编码结果。

在本申请实施例中,对象序列是具有一定顺序的,例如文本序列。则分配给不同节点的任务也具有相应的顺序。比如,对象序列为文本序列,其中包含10个语句,将10个语句分配给服务端的3个节点,则分配给第一个节点2个任务,对应于文本序列中的第1-2个语句;分配给第二个节点5个任务,对应于文本序列中的第3-7个语句;分配给第三个节点3个任务,对应于文本序列中的第8-10个语句。第一个节点反馈的子编码结果为第1-2个语句的语句向量,第二个节点反馈的子编码结果为第3-7个语句的语句向量,第三个节点反馈的子编码结果为第8-10个语句的语句向量,将三个节点反馈的子编码结果按照文本序列的顺序进行汇总,得到文本序列的编码结果。

在本申请实施例中,将对象序列针对服务端的节点进行分配,从而使得服务端的多个节点能够同时对对象序列拆分出的任务进行编码,从而提高对对象序列进行编码的效率。

当本申请实施例中的对象序列为文本序列时,能够对较长的文本序列进行编码时,能够使用多节点同时处理文本序列中的语句,减少文本序列的编码时间,在阅读效率方面改善机器阅读的效果。

在本申请实施例中,若对象序列为文本序列,则得到对象序列的编码结果后,将编码结果发送给下一模块进行进一步处理,以使得能够最终得到阅读理解的结果。

在一种实施方式中,如图6所示,对多个任务进行分配,得到针对服务端的多个节点中每一个节点的分配结果,包括:

步骤601:根据多个节点中每一个节点的地址,获取每一个节点的配置信息;

步骤602:根据每一个节点的配置信息,确定每一个节点的任务处理能力;

步骤603:根据每一个节点的任务处理能力,计算每一个节点的任务的分配数量;

步骤604:根据分配数量,得到每一个节点的分配结果。

在本申请实施例中,根据配置信息确定节点的任务处理能力,根据任务处理能力,对不同节点分配不完全相等数量的任务,从而使得各节点接收到任务后,处理自己任务所花费的时间相差不大,从而充分对节点进行了利用,进一步提高了效率。

在本申请实施例中,配置信息可以是节点运行的实例个数。

在本申请一种示例中,对象编码方法应用于节点,该节点为服务端多个节点中的一个,包括如图7所示的流程:

步骤701:回应客户端的连接请求。

当判断与客户端的连接正常时,继续执行步骤702。

步骤702:通过任务队列接收来自客户端的编码请求序列,并按照每个任务的编号记录任务顺序。

步骤703:记录每个任务的状态为“等待”。

步骤704:判断是否有空闲的实例。

步骤705:如果有空闲的实例,向其下发状态为“等待”的任务。

步骤706:如果没有空闲编码服务实例,则令状态为“等待”的任务等待。

步骤707:如果状态为“等待”的任务等待超过配置的时间限制,丢弃该任务并记录该任务状态为“失败”。

步骤708:任务完成后,向任务队列反馈处理结果,并记录该任务状态为“成功”。

步骤709:通过任务队列汇总各服务实例的处理结果,按任务顺序排序处理结果即文本语义向量(子编码结果)。

步骤710:将当前批次的子编码结果按顺序反馈给客户端。

在本申请一种示例中,对象编码方法应用于客户端,还包括:

步骤801:接收需要进行语义编码的不定长文本序列。包括多个语句的序列。

步骤802:为每个序列创建唯一的任务编号并记录文本序列的任务顺序。

步骤803:根据配置向服务端的各节点的地址发送请求,尝试与各服务端节点建立连接。

步骤804:判断是否连接成功,若是,进入步骤805;否则,进入步骤806。

步骤805:维护连接状态。

步骤806:跳过该节点。

步骤807:发送请求查询各服务端节点的配置,确定每个节点的编码任务处理能力。

步骤808:根据不同节点的任务处理能力,向成功建立连接的服务端节点按比例分发编码任务序列。

步骤809:如果等待时间超过配置的时间限制,记录对应至少一个任务的编码状态为“失败”。

步骤810:如果接收到来自服务端节点的子编码结果,记录对应至少一个任务的编码状态为“成功”。

步骤811:汇总子编码结果,按文本的输入顺序输出每个待编码文本的编码状态和编码结果。

本申请一种示例中,如图9所示,对象编码方法包括:

步骤901:客户端接收需要进行语义编码的文本序列,并向服务端集群分发编码任务。编码任务根据文本序列获得。

步骤902:服务端各节点向服务端各节点的实例进一步分发任务。

步骤903:各实例调用第一编码模型完成文本语义编码。第一编码模型为语言模型。

步骤904:服务端各节点汇总任务的处理结果并向客户端反馈子编码结果。

步骤905:客户端接收子编码结果,汇总编码结果。

本申请实施例还提供一种对象编码的装置,应用于节点,节点为服务端包括的多个节点中之一,如图10所示,装置包括:

任务接收模块1001:用于接收客户端发送的n个任务及其对应的顺序;n为大于等于1的整数;

模型调用模块1002:用于调用第一编码模型对n个任务进行编码处理,获得每一个任务的处理结果;

处理结果排序模块1003:用于将每一个任务的处理结果按照n个任务所对应的顺序排列,得到子编码结果;其中,子编码结果包含按照n个任务所对应的顺序排列的每一个任务的处理结果;

发送模块1004:用于将子编码结果发送至客户端。

在一种实施方式中,如图11所示,模型调用模块1002包括:

第一状态记录单元1101:用于记录n个任务对应的顺序,将n个任务的状态设置为第一状态;第一状态表征任务为未处理状态;

处理结果获得单元1102:通过状态为空闲的实例对n个任务中第一状态的任务进行处理,得到每一个任务的处理结果。

在一种实施方式中,处理结果获得单元还用于:

判断n个任务中是否存在处于第一状态的任务,若存在,则从处于第一状态的任务中选取第一任务;通过状态为空闲的实例调用文本模型对第一任务进行编码操作得到处理结果,并将第一任务的状态设置为第二状态;第二状态表征任务为处理状态;

若不存在,则确定n个任务处理完成,得到每一个任务的处理结果。

在一种实施方式中,如图12所示,对象编码的装置还包括:

容器镜像生成模块1201:用于通过容器描述节点的运行环境,并产生容器镜像;

容器镜像复制模块1202:用于将容器镜像复制到节点上;

实例产生模块1203:用于通过容器镜像产生实例。

在一种实施方式中,如图13所示,对象编码的装置还包括:

第二编码模型获得模块1301:用于获得第二编码模型;

蒸馏模块1302:用于将第二编码模型进行模型蒸馏,获得第一编码模型;所述第一编码模型所消耗的资源小于所述第二编码模型。具体可以是,第一编码模型为第二编码模型的学生模型。

在一种实施方式中,任务为文本编码任务,如图14所示,第二编码模型获得模块1302,包括:

训练语句生成单元1401:用于根据目标语句,生成训练语句;训练语句为遮盖目标语句的字符得到的;

输出结果获得单元1402:用于将训练语句输入待训练模型,获得模型填写被遮盖的目标字符得到的输出结果;

训练单元1403:用于根据输出结果和目标语句,对待训练模型进行训练;

训练结果模块1404:用于根据训练结果,得到第二编码模型。

本申请实施例还提供一种对象编码的装置,应用于客户端,如图15所示,包括:

划分模块1501:用于对对象序列进行划分得到多个任务;

分配模块1502:用于对多个任务进行分配,得到针对服务端的多个节点中每一个服务端节点的分配结果;分配结果包括:分配给节点的n个任务以及n个任务对应的顺序,并且n个任务包含在多个任务中;n≥1;

任务发送模块1503:用于根据的分配结果,为每一个节点发送对应的n个任务及其对应的顺序;

结果接收模块1504:用于接收多个节点中每一个节点反馈的子编码结果;其中,子编码结果包含按照n个任务所对应的顺序排列的每一个任务的处理结果;

汇总模块1505:用于将子编码结果进行汇总,得到对象序列对应的编码结果。

在一种实施方式中,如图16所示,结果接收模块1504包括:

配置信息单元1601:用于根据多个节点中每一个节点的地址,获取每一个节点的配置信息;

任务处理能力确定单元1602:根据每一个节点的配置信息,确定每一个节点的任务处理能力;

分配数量计算单元1603:用于根据每一个节点的任务处理能力,计算每一个节点的任务的分配数量;

分配结构单元1604:用于根据分配数量,得到每一个节点的分配结果。

本申请实施例还提供一种对象编码的系统,如图17所示,包括客户端1701和服务端1702;

服务端1702包括本申请任意一项实施例所提供的应用于服务端的对象编码的装置;

客户端1701包括本申请任意一项实施例所提供的应用于客户端的节点的对象编码的装置。

本申请一种示例中,对象编码系统的架构如附图18所示:

对象编码系统的每个服务端的节点1802应部署在一台独立的物理或虚拟服务器上,具有独立的运算与存储资源。

对象编码系统的每个服务端的节点1802的环境依赖由一个docker容器1803维护。具体地,需要在docker容器1803环境中安装语言模型依赖的深度学习模型运行环境1804。

对象编码系统的每个服务端的节点1802都有一个任务队列组件1805,负责向每个编码服务实例1806(相当于本申请实施例中的示例)分发编码任务与汇总编码结果。

对象编码系统的每个服务端的节点1802都有一个节点状态监控组件1807,负责监控当前节点状态与编码任务的执行状态的统计信息。

对象编码系统的每个服务端的节点1802根据配置启动多个编码服务实例1806,处理编码任务。

对象编码系统的每个客户端1808都有一个服务端适配组件1809,根据服务端的节点1802的地址,获取每个服务端的节点1802的配置并确定其任务处理能力。

对象编码系统的每个客户端1808都有一个任务调度组件1810,负责向每个编码系统服务端的节点1802分发编码任务与汇总编码结果。

本申请实施例各装置中的各模块的功能可以参见上述方法中的对应描述,在此不再赘述。

根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。

如图19所示,是根据本申请实施例的对象编码的方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。

如图19所示,该电子设备包括:一个或多个处理器1901、存储器1902,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示gui的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图19中以一个处理器1901为例。

存储器1902即为本申请所提供的非瞬时计算机可读存储介质。其中,存储器存储有可由至少一个处理器执行的指令,以使至少一个处理器执行本申请所提供的对象编码的方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的对象编码的方法。

存储器1902作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的对象编码的方法对应的程序指令/模块(例如,附图10所示的任务接收模块1001、模型调用模块1002、处理结果排序模块1003和发送模块1004)。处理器1901通过运行存储在存储器1902中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的对象编码的方法。

存储器1902可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据对象编码的电子设备的使用所创建的数据等。此外,存储器1902可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器1902可选包括相对于处理器1901远程设置的存储器,这些远程存储器可以通过网络连接至对象编码的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

对象编码的方法的电子设备还可以包括:输入装置1903和输出装置1904。处理器1901、存储器1902、输入装置1903和输出装置1904可以通过总线或者其他方式连接,图19中以通过总线连接为例。

输入装置1903可接收输入的数字或字符信息,以及产生与对象编码的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置1904可以包括显示设备、辅助照明装置(例如,led)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(lcd)、发光二极管(led)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。

此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用asic(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。

这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(pld)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。

为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。

可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。

计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。

根据本申请实施例的技术方案,服务端多个节点进行可同时接收客户端发送的任务,并同时对任务进行编码,从而,能够减少客户端接收到全部子编码结果的时间,提高任务处理效率。

在任务为语句处理任务的情况下,本申请实施例使服务端的节点可以构成集群,提高语义编码效率,缩短语句所在的文本段落的编码时间。子编码结果发送至客户端后,能够进一步用于获得机器阅读的结果,进而使得机器阅读的速度得以提高。

应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。

上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

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