CN115834669A - 一种分布式ai服务引擎系统 - Google Patents

一种分布式ai服务引擎系统 Download PDF

Info

Publication number
CN115834669A
CN115834669A CN202310108302.XA CN202310108302A CN115834669A CN 115834669 A CN115834669 A CN 115834669A CN 202310108302 A CN202310108302 A CN 202310108302A CN 115834669 A CN115834669 A CN 115834669A
Authority
CN
China
Prior art keywords
service
module
expression
central control
control layer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202310108302.XA
Other languages
English (en)
Other versions
CN115834669B (zh
Inventor
鄂海红
王浩田
宋美娜
周晓阳
竹倩叶
魏文定
刘钟允
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Network Digital Security Beijing Technology Co ltd
Sifang Alliance Beijing Technology Development Co ltd
Beijing University of Posts and Telecommunications
Original Assignee
China Network Digital Security Beijing Technology Co ltd
Sifang Alliance Beijing Technology Development Co ltd
Beijing University of Posts and Telecommunications
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Network Digital Security Beijing Technology Co ltd, Sifang Alliance Beijing Technology Development Co ltd, Beijing University of Posts and Telecommunications filed Critical China Network Digital Security Beijing Technology Co ltd
Priority to CN202310108302.XA priority Critical patent/CN115834669B/zh
Publication of CN115834669A publication Critical patent/CN115834669A/zh
Application granted granted Critical
Publication of CN115834669B publication Critical patent/CN115834669B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明提出了一种分布式AI服务引擎系统,包括原子服务层、引擎中控层和应用层,其中,原子服务层包括负载均衡器和多个AI服务实例,用于实现AI模型的推理能力;引擎中控层包括一个Leader节点和与Leader节点对应的多个Worker节点,用于创建表达式服务、调用表达式服务和更新缓存;其中Leader节点与Worker节点的内部包括功能决策模块、缓存模块、归并优化器、状态控制器、逻辑运算器、排序模块、存储服务模块、溢写模块;应用层,用于调用中控层提供的表达式构建和服务调用的功能。通过本发明提出的分布式AI服务引擎系统,有效的提高了服务开发效率、服务响应速度和减少了系统资源的浪费。

Description

一种分布式AI服务引擎系统
技术领域
本发明属于计算机技术领域。
背景技术
人工智能(AI)技术的出现对经济、教育、医疗等生活中的许多领域都产生了极其重要的意义。在传统的AI服务中,服务与服务之间是解耦的、独立的,因此很难细粒度的复用已有服务的AI原子能力生产新的服务。
现有的服务引擎可以实现服务的编排,即按服务的依赖关系依次调用服务。在现有技术方案中,使用可视化拖拽的方式构建了服务的依赖图,并配置图中节点和线的参数,交给代理去执行此依赖图,实现了服务的编排;或者将用户定义的编排结果中的组件转换为其预定义的QL表达式,按照组件间的依赖关系依次执行这些表达式,得到组件调用的结果。
这些技术方案可以满足对一般服务的编排,对于AI服务会存在重复调用导致的性能下降、依赖图过长导致的响应时间过长、服务编排产生的易用性等问题。
本发明在云环境下提出了一种分布式AI服务引擎,该引擎以表达式即服务方式实现了对已有服务AI原子能力的细粒度复用,并对表达式服务的构建、调用等方面进行了优化,有效的提高了服务开发效率以及服务响应速度和减少了系统资源的浪费。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的目的在于提出一种分布式AI服务引擎系统,用于提高了服务开发效率、服务响应速度和减少了系统资源的浪费。
为达上述目的,本发明第一方面实施例提出了一种分布式AI服务引擎系统,包括原子服务层、引擎中控层和应用层,其中,
所述原子服务层包括负载均衡器和多个AI服务实例,用于实现AI模型的推理能力;
所述引擎中控层包括一个Leader节点和与所述Leader节点对应的多个Worker节点,用于创建表达式服务、调用表达式服务和更新缓存;其中所述Leader节点与所述Worker节点的内部包括功能决策模块、缓存模块、归并优化器、状态控制器、逻辑运算器、排序模块、存储服务模块、溢写模块;
所述应用层,用于调用中控层提供的表达式构建和服务调用的功能。
另外,根据本发明上述实施例的一种分布式AI服务引擎还可以具有以下附加的技术特征:
进一步地,在本发明的一个实施例中,所述引擎中控层用于创建表达式服务,包括:
获取请求的Type字段;
根据所述Type字段通过所述功能决策模块将所述请求转发给所述归并优化器;
通过所述归并优化器进行归并优化,将优化的结果以配置文件的形式存储到所述存储服务模块中,完成表达式服务的创建过程。
进一步地,在本发明的一个实施例中,所述引擎中控层用于调用表达式服务,包括:
获取请求的Type字段;
根据所述Type字段通过所述功能决策模块将所述请求转发给所述状态控制器;
通过所述状态控制器从所述存储服务中找到表达式服务的配置文件;
根据所述配置文件中CallService内容获取线程,并行调用原子服务,直到全部的原子服务返回结果,将所述结果传入到所述逻辑运算器;
根据所述结果和正则列表通过所述逻辑运算器计算真值,将所述真值写入到所述溢写模块并返回给客户端。
进一步地,在本发明的一个实施例中,所述引擎中控层用于更新缓存,包括:
通过溢写模块记录所有请求与表达式服务的运算结果,每当溢写模块存储的键值超过上限时,将记录的运算结果写入到所述存储服务模块中;
通过所述排序模块定期拉取所述存储服务模块中的结果进行聚合并降序排列,将所述结果的前N个写入到缓存中完成缓存的更新。
为达上述目的,本发明第二方面实施例提出了一种计算机设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如上所述的一种分布式AI服务引擎系统。
为达上述目的,本发明第三方面实施例提出了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上所述的一种分布式AI服务引擎系统。
本发明实施例的分布式AI服务引擎系统,以表达式即服务方式实现了对已有服务AI原子能力的细粒度复用。表达式中的项是服务的AI原子能力,解决了服务之间因原子性、隔离性而导致服务利用率低的问题,并对AI服务的构建、调用等方面进行了优化,有效的提高了服务开发效率、服务响应速度和减少了系统资源的浪费。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明实施例所提供的一种分布式AI服务引擎系统的结构示意图。
图2为本发明实施例所提供的一种分布式AI服务引擎系统中的表达式服务举例示意图。
图3为本发明实施例所提供的一种表达式服务的创建示意图。
图4为本发明实施例所提供的一种配置文件示例示意图。
图5为本发明实施例所提供的一种表达式服务创建在引擎中控层中的执行过程示意图。
图6为本发明实施例所提供的一种表达式服务的调用过程示意图。
图7为本发明实施例所提供的一种表达式服务调用在引擎中控层的执行过程示意图。
图8为本发明实施例所提供的一种原子服务的并行调用示意图。
图9为本发明实施例所提供的一种缓存的更新过程示意图。
图10为本发明实施例所提供的一种缓存更新在引擎中控层的执行过程示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
下面参考附图描述本发明实施例的分布式AI服务引擎系统。
图1为本发明实施例所提供的一种分布式AI服务引擎系统的示意图。
如图1所示,该分布式AI服务引擎原子服务层、引擎中控层和应用层,其中,
原子服务层包括负载均衡器和多个AI服务实例,用于实现AI模型的推理能力;
引擎中控层包括一个Leader节点和与Leader节点对应的多个Worker节点,用于创建表达式服务、调用表达式服务和更新缓存;其中Leader节点与Worker节点的内部包括功能决策模块、缓存模块、归并优化器、状态控制器、逻辑运算器、排序模块、存储服务模块、溢写模块;
应用层,用于调用中控层提供的表达式构建和服务调用的功能。
具体的,AI服务引擎的三层结构:原子服务层、引擎中控层和应用层,每一层都采用了分布式的结构。核心层是引擎中控层,它采用Leader-Worker的结构保证中控层的高可用性和一致性,单节点的内部由功能决策、缓存、归并优化器、状态控制器、逻辑运算器、排序模块、存储服务、溢写模块等模块组成,实现了表达式的优化和表达式服务调用的优化。底层是原子服务层,它实现了AI模型的推理能力,由负载均衡器和多个AI服务实例组成。最上层是应用层,提供了表达式构建、表达式准确率在线测试和服务管理的功能。
如表1所示,为分布式服务引擎结构中的主要模块。
表1
Figure SMS_1
图2是AI服务引擎中的表达式服务举例。如图2所示,第一层为示例表达式,其功能为判断文本text是否为问候语。图2的第二层表示表达式“[CallTC(atom_A, text, ‘见面问候’) ||CallTC(atom_A, text, ‘离别问候’) || CallTC(atom_B, text, ‘问候语’) || InRegex(text, [‘你好’,…,’再见’])]&&CallTC(atom_C, text, ‘问候语’)&&NotInRegex(text, [‘我生气’, … ,’不开心’])”由原子服务atom_A、atom_B和atom_C组合而成的。式中方法CallTC(服务ID, 文本, 类别)表示调用文本分类服务【服务ID】判断【文本】是否为【类别】。方法InRegex(文本, 正则列表)表示【文本】是否在【正则列表中】。方法NotInRegex(文本, 正则列表)表示【文本】是否不在【正则列表中】。当表达式的值为1的时候,说明该文本是问候语,反之不是。图中的第三层则表示每个原子服务,在实际运行由负载均衡器和多个实例组成。
进一步地,在本发明的一个实施例中,引擎中控层用于创建表达式服务,包括:
获取请求的Type字段;
根据Type字段通过功能决策模块将请求转发给归并优化器;
通过归并优化器进行归并优化,将优化的结果以配置文件的形式存储到存储服务模块中,完成表达式服务的创建过程。
图3展示了表达式服务创建的过程。功能决策模块首先会根据请求的Type字段判断请求为服务创建类型,然后将请求转发给归并优化器。归并优化器会提取共有的原子服务进行聚合,示例中的表达式有三个项,原子服务共两类atom_A和atom_B,聚合过程与结果如图3所示。具体归并优化的例子为:[CallTC(atom_A,text,‘见面问候’) || CallTC(atom_A,text,‘离别问候’) ||CallTC(atom_B,text, ‘问候语’) || InRegex(‘你好’,…,’再见’ )]&&NotInRegex(‘我生气’, … ,’不开心’),通过提取项中的原子服务,得到atom_A, atom_A和atom_B,然后进行归并得到atom_A和Atom_B,原表达式进行改写,得到:(atom_A_Res==‘见面问候’||atom_A_Res==‘离别问候’||Atom_B_Res==‘问候语’||InList[‘你好’,…,’再见’])&&NotInList(‘我生气’,…,’不开心’),该样例表达式在AI服务引擎中会将原来的3次服务调用优化为2次。最后归并优化器会将得到的优化结果以配置文件(如下图4配置文件示例)的形式存储到存储服务中,完成表达式服务的创建过程。
图5展示了表达式服务创建在引擎中控层的执行过程。输入请求经过功能决策、归并优化器得到服务配置文件,并将文件写入的存储服务中。
进一步地,在本发明的一个实施例中,引擎中控层用于调用表达式服务,包括:
获取请求的Type字段;
根据Type字段通过功能决策模块将请求转发给状态控制器;
通过状态控制器从存储服务中找到表达式服务的配置文件;
根据配置文件中CallService内容获取线程,并行调用原子服务,直到全部的原子服务返回结果,将结果传入到所述逻辑运算器;
根据结果和正则列表通过逻辑运算器计算真值,将真值写入到溢写模块并返回给客户端。
图6展示了表达式服务的调用过程。功能决策模块首先会根据请求的Type字段判断请求为服务调用类型,然后根据(ServiceId, Text)查找缓存中是否命中,如果命中直接返回结果,否则转发请求到状态控制器。状态控制器根据ServiceId从存储服务中找到表达式服务的配置文件,然后根据CallService中原子服务的数量,创建等量的线程,并行调用原子服务,直到全部的原子服务返回结果,将结果传入到逻辑运算器。逻辑运算器根据原子服务的调用结果和正则列表,计算真值,将计算结果写入到溢写模块并返回给客户端。
图7为表达式服务调用在引擎中控层的执行过程,请求会经过功能决策、缓存、状态控制器运算得到结果并返回,同时将结果写入到溢写模块中。当溢写模块存储量到达阈值会将数据写入到存储服务中。
图8为原子服务的并行调用过程,表达式所有项中的原子服务都被归并聚合,并且它们之间没有依赖关系,状态控制器会并行的调用原子服务,使服务的响应时长不受依赖长度的影响,它的值为所有服务调用中响应时间最长的调用时间。此外,服务调用的时候会启动计时器,当服务响应超时(某个实例所在节点宕机或节点网络环境不好),会重新调用服务,确保可靠性。因此,状态控制器实现了服务的可靠调用。
进一步地,在本发明的一个实施例中,引擎中控层用于更新缓存,包括:
通过溢写模块记录所有请求与表达式服务的运算结果,每当溢写模块存储的键值超过上限时,将记录的运算结果写入到所述存储服务模块中;
通过排序模块定期拉取所述存储服务模块中的结果进行聚合并降序排列,将结果的前N个写入到缓存中完成缓存的更新。
图9展示了缓存的更新过程。溢写模块记录了所有请求与表达式服务的运算结果,当记录存储大小等于存储系统的文件块时,将这些记录写入到存储服务中。排序模块会定期拉取历史请求记录以(ServiceId, Text)为Key进行聚合并降序排列,将结果的前N个写入到缓存中。通过以上步骤,完成缓存的更新。
图10是缓存更新在引擎中控层的执行过程,运算结果依次经过溢写模块、存储模块、排序模块,最终到达缓存中。
本发明实施例的分布式AI服务引擎系统,以表达式即服务方式实现了对已有服务的AI原子能力的细粒度复用,并对表达式服务的构建、调用等方面进行了优化,有效的提高了服务开发效率以及服务响应速度和减少了系统资源的浪费。
相对于现有技术,本发明将AI服务定义为表达式,通过表达式对原子服务进行组合,实现对已有服务AI原子能力的细粒度复用,像搭积木一样,可以实现不同的造型;聚合原子服务,减少调用次数;通过Hash缓存,以及命中次数统计服务,提高引擎响应速度;引擎分布式,提高引擎的性能和容错能力;服务分布式,提高服务的响应速度和容错能力;引擎可靠性,引擎由多个节点构成,当Leader节点宕机,Worker节点通过选举获得新的Leader节点;服务可靠性,状态控制器实现了可靠调用,超时重调。
为达上述目的,本发明第二方面实施例提出了一种计算机设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如上所述的分布式AI服务引擎系统。
为达上述目的,本发明第三方面实施例提出了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上所述的分布式AI服务引擎系统。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (6)

1.一种分布式AI服务引擎系统,其特征在于,包括原子服务层、引擎中控层和应用层,其中,
所述原子服务层包括负载均衡器和多个AI服务实例,用于实现AI模型的推理能力;
所述引擎中控层包括一个Leader节点和与所述Leader节点对应的多个Worker节点,用于创建表达式服务、调用表达式服务和更新缓存;其中所述Leader节点与所述Worker节点的内部包括功能决策模块、缓存模块、归并优化器、状态控制器、逻辑运算器、排序模块、存储服务模块、溢写模块;
所述应用层,用于调用中控层提供的表达式构建和服务调用的功能。
2.根据权利要求1所述的系统,其特征在于,所述引擎中控层用于创建表达式服务,包括:
获取请求的Type字段;
根据所述Type字段通过所述功能决策模块将所述请求转发给所述归并优化器;
通过所述归并优化器进行归并优化,将优化的结果以配置文件的形式存储到所述存储服务模块中,完成表达式服务的创建过程。
3.根据权利要求1所述的系统,其特征在于,所述引擎中控层用于调用表达式服务,包括:
获取请求的Type字段;
根据所述Type字段通过所述功能决策模块将所述请求转发给所述状态控制器;
通过所述状态控制器从所述存储服务中找到表达式服务的配置文件;
根据所述配置文件中CallService内容获取线程,并行调用原子服务,直到全部的原子服务返回结果,将所述结果传入到所述逻辑运算器;
根据所述结果和正则列表通过所述逻辑运算器计算真值,将所述真值写入到所述溢写模块并返回给客户端。
4.根据权利要求1所述的系统,其特征在于,所述引擎中控层用于更新缓存,包括:
通过溢写模块记录所有请求与表达式服务的运算结果,每当溢写模块存储的键值超过上限时,将记录的运算结果写入到所述存储服务模块中;
通过所述排序模块定期拉取所述存储服务模块中的结果进行聚合并降序排列,将所述结果的前N个写入到缓存中完成缓存的更新。
5.一种计算机设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如权利要求1-4中任一所述的分布式AI服务引擎系统。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-4任意一项所述的分布式AI服务引擎系统。
CN202310108302.XA 2023-02-14 2023-02-14 一种分布式ai服务引擎系统 Active CN115834669B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310108302.XA CN115834669B (zh) 2023-02-14 2023-02-14 一种分布式ai服务引擎系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310108302.XA CN115834669B (zh) 2023-02-14 2023-02-14 一种分布式ai服务引擎系统

Publications (2)

Publication Number Publication Date
CN115834669A true CN115834669A (zh) 2023-03-21
CN115834669B CN115834669B (zh) 2023-05-09

Family

ID=85521168

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310108302.XA Active CN115834669B (zh) 2023-02-14 2023-02-14 一种分布式ai服务引擎系统

Country Status (1)

Country Link
CN (1) CN115834669B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108829505A (zh) * 2018-06-28 2018-11-16 北京奇虎科技有限公司 一种分布式调度系统及方法
CN110489579A (zh) * 2019-08-21 2019-11-22 深见网络科技(上海)有限公司 分布式向量检索引擎
WO2021253819A1 (zh) * 2020-06-18 2021-12-23 南京龙猫商业智能科技股份有限公司 一种基于 PaaS 的微服务编排引擎管理方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108829505A (zh) * 2018-06-28 2018-11-16 北京奇虎科技有限公司 一种分布式调度系统及方法
CN110489579A (zh) * 2019-08-21 2019-11-22 深见网络科技(上海)有限公司 分布式向量检索引擎
WO2021253819A1 (zh) * 2020-06-18 2021-12-23 南京龙猫商业智能科技股份有限公司 一种基于 PaaS 的微服务编排引擎管理方法

Also Published As

Publication number Publication date
CN115834669B (zh) 2023-05-09

Similar Documents

Publication Publication Date Title
US7979399B2 (en) Database journaling in a multi-node environment
US8261020B2 (en) Cache enumeration and indexing
Karagiannis et al. Scheduling strategies for efficient ETL execution
US7958077B2 (en) Rules engine for enterprise system
CN106095589B (zh) 一种分配分区的方法、装置及系统
CN110908641B (zh) 基于可视化的流计算平台、方法、设备和存储介质
CN104778077B (zh) 基于随机和连续磁盘访问的高速核外图处理方法及系统
CN107273200A (zh) 一种针对异构存储的任务调度方法
CN112162841A (zh) 面向大数据处理的分布式调度系统、方法及存储介质
CN113377868A (zh) 一种基于分布式kv数据库的离线存储系统
CN109460345A (zh) 实时数据的计算方法及系统
CN111752945A (zh) 一种基于容器和层次模型的时序数据库数据交互方法和系统
US7979400B2 (en) Database journaling in a multi-node environment
US20100153571A1 (en) Recording medium storing transaction model generation support program, transaction model generation support computer, and transaction model generation support method
Chen et al. Pisces: optimizing multi-job application execution in mapreduce
Yankovitch et al. Hypersonic: A hybrid parallelization approach for scalable complex event processing
CN115834669A (zh) 一种分布式ai服务引擎系统
CN101968747B (zh) 一种机群应用管理系统及其应用管理方法
CN116389591A (zh) 一种基于跨域分布式处理系统及调度优化方法
CN110362426A (zh) 一种面向突发性负载的选择性副本实现方法及系统
CN115237885A (zh) 数据存储系统的参数调整方法及装置
CN108334603A (zh) 一种大数据互动交换系统
CN112000703B (zh) 数据入库处理方法、装置、计算机设备和存储介质
CN115391341A (zh) 分布式图数据处理系统、方法、装置、设备及存储介质
Xu et al. What-if query processing policy for big data in OLAP system

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant