CN113742204A - 一种基于模糊测试的深度学习算子测试工具 - Google Patents

一种基于模糊测试的深度学习算子测试工具 Download PDF

Info

Publication number
CN113742204A
CN113742204A CN202010487165.1A CN202010487165A CN113742204A CN 113742204 A CN113742204 A CN 113742204A CN 202010487165 A CN202010487165 A CN 202010487165A CN 113742204 A CN113742204 A CN 113742204A
Authority
CN
China
Prior art keywords
operator
test
deep learning
case
fuzzy
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
CN202010487165.1A
Other languages
English (en)
Other versions
CN113742204B (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.)
Nanjing University
Original Assignee
Nanjing University
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 Nanjing University filed Critical Nanjing University
Priority to CN202010487165.1A priority Critical patent/CN113742204B/zh
Publication of CN113742204A publication Critical patent/CN113742204A/zh
Application granted granted Critical
Publication of CN113742204B publication Critical patent/CN113742204B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Molecular Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

一种基于模糊测试的深度学习算子测试工具,通过训练集分析、随机数据补充、中间数据获取等多种方式得到一批测试数据作为种子,转化为可用测试用例并初始化模糊测试的语料集。然后根据具体的待测算子获取可用的变异方法并制定用例扩增策略。接着按照扩增策略,抽取语料集中的元素,生成大批新测试用例,并作为待测算子接口的输入。最后采用差分测试的方法评估用例的对应输出结果,分析是否发现待测算子的运算过程或运算结果存在异常。

Description

一种基于模糊测试的深度学习算子测试工具
技术领域
本发明属于软件工程和机器学习领域,尤其是针对机器学习框架可靠性的软件测试方法在软件工程领域的应用,用于检测深度学习算子接口运算的合理性。
背景技术
在过去的数年里,随着人们对神经网络研究的不断深入,深度神经网络模型在医疗诊断、自动驾驶、智能合约、智慧法院等领域展现了广阔的前景。因此为开发者与使用者提供便于使用且功能强大的深度学习框架,引起了许多组织的兴趣。Caffe、Tensorflow与Pytorch都是目前使用广泛的深度学习框架。尽管丰富可选的深度学习框架使得用户可以根据具体需求和框架特点选择最适合的辅助工具,不同框架的实现方式差异造成相同结构的深度学习模型,其泛化误差和性能表现存在一定差异。
神经网络算子是一个神经网络模型的基本组成单元。常见的神经网络算子包括Convolution、Pooling、ReLU、Softmax、Sigmoid、Dense、Dropout等,这些算子的内部逻辑和运算复杂性各不相同。只有当算子接口的功能满足要求,整个神经网络框架才能为用户提供良好的服务。
然而,众所周知的是,直接针对算子接口功能的测试比较困难。首先,神经网络算子接口在功能上与传统软件存在差异,神经网络算子执行过程中的逻辑判断与分支较少,数值运算比重较大。其次,算子接口测试用例缺少测试oracle,难以评估执行结果的合理性与准确性;同时,由于不同硬件平台对算子接口内部数值运算优化方式和不同框架对硬件平台的支持存在差异,算子接口的运算结果也随之改变。最后,由于算子接口的输入空间较大,且算子接口的数量较多,测试任务需要数量庞大的测试用例。
目前已有一批针对深度学习模型的测试工具,这些工具采用了不同的测试数据扩增方案和测试结果评估方案。典型的测试数据扩增方式包括随机噪声、二进制变化、尺度变化(如截断、旋转、放缩)等,也包括一些包含特定语义的方式,如在自动驾驶过程中改变环境因素或改变道路状况。同时,用例评估方式以是否发现模型错误为主,也有一些研究致力于提出适用于神经网络模型的覆盖值表征方式,如神经元覆盖等。但是,目前尚未有针对神经网络算子接口这一更小单元的测试工具与系统化的测试方法。因此我们提出了一种基于模糊测试的深度学习算子测试工具,采用已有数据扩增方式产生算子测试用例,并采用差分测试思想对算子的输出结果进行评估,从而检测算子接口运算的准确性。
发明内容
本发明要解决的问题是:如何测试神经网络算子接口的功能,从而完善深度学习框架的可靠性,推动人工智能领域发展。
本发明的技术方案为:一种基于模糊测试的深度学习算子测试工具,包括以下步骤:
1)获取已有测试数据作为种子,生成初始测试用例,从而初始化模糊测试语料集,主要通过以下几个详细步骤:
1.1)确定种子数据来源,包括常用训练数据集,随机生成的用例数据,以及执行与该算子相关的神经网络模型的过程中,收集到的中间数据。
1.2)根据获取到的种子数据,对种子数据进行类型转化,生成一批初始测试用例Samples。
1.3)利用2)中获取到的初始测试用例Samples,初始化模糊测试过程中用于保存所有已有测试用例的语料集Corpus。
2)利用语料集中的已有测试用例,根据待测算子和相应的测试用例扩增策略,生成新的测试用例,主要包括以下几个详细步骤:
2.1)获取记录测试工具支持的算子类型与具体算子接口的算子表,并确定待测算子的类型classi,其中i∈[1,n],n表示算子表中支持的算子类型个数。根据类型在算子表中获取不同框架下的对应算子接口集合Operators={operatorsj|1≤j≤k},其中k表示框架个数。
2.2)获取所有对当前待测算子接口集合Operators可用的变异方法列表List,List={mutationFunction1,mutationFunction2,...,mutationFunctionm}。目前工具自带了一部分变异方法实现,包括基于二进制的数值变化,基于多维矩阵尺度的变化(旋转、放缩、截断)等。用户也可以利用工具的可扩展性增加自定义的变异方法。
2.3)制定变异策略Strategy。变异策略Strategy=(FunctionList,FunctionExecution),即从变异方法列表中选择使用的变异方法集合FunctionList,与变异方法执行顺序与参数设定方式FunctionExecution两个部分。目前我们在工具中提供了两种策略,一种是随机选择一批变异方法,并以随机顺序执行。另一种采用MCMC方法选择变异方法,并采用能量函数制定每次变异生成的新用例个数。其中,能量函数规定的新生成用例个数与选用的变异方法,从语料集中抽取的待变异测试用例的属性(如添加时间等)相关。MCMC方法计算所有可选变异方法的成功率,即生成可发现待测接口功能问题的测试用例的成功概率,表示为:
Figure BSA0000210360410000021
其中success(po)表示该变异方法的成功次数,selected(po)表示该变异方法的总调用次数。然后,扰动方法的成功率,可以通过二项分布估计当前扰动方法每次选中的成功概率:
Sr(X=k)=(1-p)k-1p
接着采用Metropolis-Hasting算法随机选择扰动方法,并通过Metropolis选择原则接受或拒绝扰动方法。Metropolis选择原则接受扰动方法的概率表示为:
Figure BSA0000210360410000031
其中,p为m1选中的成功概率。以此动态维护转移概率A,经过多次迭代可以使整个马尔可夫链的概率收敛,最后获得扰动方法的转移概率常量。最后根据获得的转移概率常量,可以指导扰动方法的选择过程。
2.4)根据变异策略调用具体变异方法接口,生成新测试用例。
3)获取新生成的测试用例并根据不同框架下的具体算子接口进行适配,从而保证用例在不同具体框架和算子实现下具有等价性。执行完成后收集执行结果,以及是否出现执行异常。执行结果集合表示为Outputs={outputi|1≤i≤k},其中k表示不同框架下待测算子个数。
4)使用基于差分测试的评估方法分析待测算子的运算过程或运算结果是否存在异常。由于输出结果为Tensor张量,差分测试方法首先计算多个输出结果中任意两个输出结果的最大欧氏距离,平均欧式距离与均方欧式距离。然后通过比较多组距离结果Distance=(distancemax,distancemean,distancenorm),如果某一框架下的算子与其他算子都产生较大差异,且其他算子间的差异较小,可以判断该算子的实现存在缺陷。
本发明的特点在于:1、针对神经网络框架中的算子接口这一构成神经网络模型的单元组件进行测试;2、在测试过程中引入模糊测试思想,避免了针对算子接口内部实现的代码分析,提高了测试效率;3、使用差分测试技术,通过对比不同框架下具体算子接口的输出值,解决了测试用例缺乏oracle的问题;4、本发明极大程度上保证了工具的可扩展性,使用者可以在测试流程中增加自定义的部分,包括变异方法、变异策略、评估策略等。
本发明的有益效果是:作为一种基于模糊测试的深度学习算子测试工具,可以大批量地扩增算子接口可用的测试用例,并有效发现算子接口中隐含的功能缺陷。
附图说明
图1为本发明整体流程图。
图2为算子列表
图3为对应算子接口的执行过程
具体实施方式
本发明中涉及的几项关键技术是深度学习、深度学习算子,基于待测算子的深度学习框架Caffe、Pytorch、Tensorflow,用于对输出结果进行处理的Numpy库等具体技术来实现。
1、Caffe
本发明中,利用了Caffe提供的深度学习算子进行差分测试。Caffe是由伯克利人工智能研究小组和伯克利视觉和学习中心开发的,功能丰富的深度学习框架。Caffe提供了Python和Matlab相关接口,支持多种类型的深度学习架构,面向图像分类和图像分割,还支持CNN、RCNN、LSTM和全连接神经网络设计。Caffe支持基于GPU和CPU的加速计算内核库,如NVIDIACUDNN。
2、深度学习算子
本发明中,利用了PyTorch提供的深度学习算子进行差分测试。PyTorch是由Facebook的人工智能研究团队开发的开源Python机器学习框架,其底层是由C++实现的Torch,提供了丰富的神经网络构建和数据处理方式。PyTorch具有类似于NumPy的张量计算,可使用GPU加速,同时支持自动微分的深度神经网络构建,可以极大提高神经网络训练和执行效率。
3、Tensorflow
本发明中,Tensorflow提供了用于差分测试的深度学习算子。TensorFlow由谷歌人工智能团队开发和维护的深度学习框架,提供不同量级和不同硬件平台的支持,包括TensorFlow Hub、TensorFlow Lite、TensorFlow Research Cloud等。Tensorflow易于部署,提供了各类服务器、PC终端和网页的支持,同时支持并优化了在GPU和TPU上的高性能数值计算,在业界被广泛应用于训练和部署神经网络系统。
4、Nunpy库
在本发明中,Numpy主要用于保证输入等价性的输入数据转化,以及输出数据的比较分析。Nunpy库是Python自带的数值计算方法库,提供了支持大型矩阵存储和处理的ndarray类型,以及丰富高效的矩阵运算函数。
下面用一个具体的示例来说明本方法的步骤,并展示结果。
实验环境为:Windows 10,运行内存16GB,显卡为GeForce GTX 1080
本发明的整体流程如图1所示,具体实施步骤如下:
1)设定测试接口为conv,目前可选的包括conv、pooling、relu、Sigmoid、tanh。SampleFunction为uniform_sample_function。变异策略为MCMC,目前可选的还有Random,Type等。精度阈值为1e-8,评估策略为差分测试,用例生成上限个数为10000个;
2)提供算子表,见图2,根据算子表可得到Caffe、Tensorflow与PyTorch中实现卷积算子功能的具体算子接口的名称;
3)将已有测试数据放入″corpus″文件夹中,并设定读取路径为″.\\corpus″:;
4)工具根据抽样方法自动执行抽样过程,并将抽取出的测试用例作为变异模块的输入;
5)变异模块根据设定的具体策略(即MCMC),生成大批新测试用例,并作为多个具体算子接口的输入;
6)利用Numpy库转化测试用例类型,使其对每个算子接口等价。接着执行测试用例,获取测试结果,并使用Numpy库将输出结果转化为相同的数据类型,该过程见图3。
7)利用Numpy库分析输出结果,计算输出多维矩阵间对应元素的最大距离、平均距离和距离标准差,如果数值大于设定精度阈值则进行记录。对比Caffe/Tensorflow,Caffe/Pytorch和Tensorflow/Pytorch的运行结果,分析是否有具体算子接口存在功能缺陷。

Claims (5)

1.一种基于模糊测试的深度学习算子测试工具,其特征是获取已有测试用例作为种子,初始化模糊测试语料集。然后根据具体算子确定用例扩增策略,利用语料集中的元素生成大量新的可用测试用例并进行接口适配,最后采用差分测试的方法评估用例是否发现待测算子的运算过程或运算结果存在异常。
2.根据权利要求1所描述的一种基于模糊测试的深度学习算子测试工具,其特征是获取已有测试用例作为种子,从而初始化模糊测试语料集。语料集用于在模糊测试的迭代过程中保留所有已有的测试用例。主要通过以下几个步骤进行用例收集:
1)确定种子数据来源,包括常用训练数据集,随机生成的用例数据,以及执行与该算子相关的神经网络模型的过程中,收集到的中间数据。
2)对种子数据进行类型转化,把获取到的初始数据转化为语料集中保存的元素类型。
3)将转化后的数据作为初始测试用例,初始化语料集。
3.根据权利要求1所描述的一种基于模糊测试的深度学习算子测试工具,其特征是在用例扩增模块,根据待测算子和相应的测试用例扩增策略,生成新的测试用例,包括:
1)获取记录测试工具支持的算子类型与具体算子接口的算子表,并确定待测算子的类型classi,其中i∈[1,n],n表示算子表中支持的算子类型个数。根据类型在算子表中获取不同框架下的对应算子接口集合Operators={operatorsj]1≤j≤k},其中k表示框架的个数。
2)获取所有对当前待测算子接口集合Operators可用的变异方法列表List,List={mutationFunction1,mutationFunction2,...,mutationFunctionm}。
3)制定变异策略Strategy。变异策略Strategy包含两个部分,即从变异方法列表中选择使用的变异方法集合FunctionList,与变异方法执行顺序与参数设定方式FunctionExecution。
4)根据变异策略调用具体变异方法接口,生成新测试用例。
4.根据权利要求1所描述的一种基于模糊测试的深度学习算子测试工具,其特征是获取新生成的测试用例并根据不同框架下的具体算子接口进行适配,从而保证用例在不同具体框架和算子实现下具有等价性。执行完成后收集执行结果,以及是否出现执行异常。
5.根据权利要求1所描述的一种基于模糊测试的深度学习算子测试工具,其特征是使用基于差分测试的评估方法分析待测算子的运算过程或运算结果是否存在异常。由于输出结果为Tensor张量,差分测试方法计算多个输出结果中任意两个输出结果的最大欧氏距离,平均欧式距离与均方欧式距离。通过比较多组距离结果Distance=(distancemax,distancemean,distancenorm),可以推断是否存在有缺陷的算子实现。
CN202010487165.1A 2020-05-27 2020-05-27 一种基于模糊测试的深度学习算子测试方法 Active CN113742204B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010487165.1A CN113742204B (zh) 2020-05-27 2020-05-27 一种基于模糊测试的深度学习算子测试方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010487165.1A CN113742204B (zh) 2020-05-27 2020-05-27 一种基于模糊测试的深度学习算子测试方法

Publications (2)

Publication Number Publication Date
CN113742204A true CN113742204A (zh) 2021-12-03
CN113742204B CN113742204B (zh) 2023-12-12

Family

ID=78727940

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010487165.1A Active CN113742204B (zh) 2020-05-27 2020-05-27 一种基于模糊测试的深度学习算子测试方法

Country Status (1)

Country Link
CN (1) CN113742204B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116232967A (zh) * 2023-05-09 2023-06-06 中国科学技术大学先进技术研究院 网络安全检测方法、装置、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090006300A1 (en) * 2005-02-11 2009-01-01 Gunther Battenberg System for Detecting and Evaluating Operation-Dependent Processes and/or Components in Automated Production and Test Sequences
WO2012093962A1 (en) * 2011-01-03 2012-07-12 Nanyang Polytechnic Intelligent and efficient computation of point spread function for high speed image processing applications
CN104765690A (zh) * 2015-04-22 2015-07-08 哈尔滨工业大学 基于模糊遗传算法的嵌入式软件测试数据生成方法
CN110196815A (zh) * 2019-07-26 2019-09-03 中国人民解放军国防科技大学 一种软件模糊测试方法
CN110443045A (zh) * 2019-08-13 2019-11-12 北京计算机技术及应用研究所 一种基于机器学习方法的模糊测试用例生成方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090006300A1 (en) * 2005-02-11 2009-01-01 Gunther Battenberg System for Detecting and Evaluating Operation-Dependent Processes and/or Components in Automated Production and Test Sequences
WO2012093962A1 (en) * 2011-01-03 2012-07-12 Nanyang Polytechnic Intelligent and efficient computation of point spread function for high speed image processing applications
CN104765690A (zh) * 2015-04-22 2015-07-08 哈尔滨工业大学 基于模糊遗传算法的嵌入式软件测试数据生成方法
CN110196815A (zh) * 2019-07-26 2019-09-03 中国人民解放军国防科技大学 一种软件模糊测试方法
CN110443045A (zh) * 2019-08-13 2019-11-12 北京计算机技术及应用研究所 一种基于机器学习方法的模糊测试用例生成方法

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
COSIMO IERACITANO等: "A novel statistical analysis and autoencoder driven intelligent intrusion detection approach", NEUROCOMPUTING, vol. 387, pages 51 - 62, XP086089151, DOI: 10.1016/j.neucom.2019.11.016 *
JIANMIN GUO等: "DLFuzz: Differential Fuzzing Testing of Deep Learning Systems", PROCEEDINGS OF THE 26TH ACM JOINT EUROPEAN SOFTWARE ENGINEERING CONFERENCE AND SYMPOSIUM ON THE FOUNDATIONS OF SOFTWARE ENGINEERING (ESEC/FSE ’18), pages 739 - 743 *
KEXIN PEI等: "DeepXplore: Automated whitebox testing of deep learning systems", SOSP \'17: PROCEEDINGS OF THE 26TH SYMPOSIUM ON OPERATING SYSTEMS PRINCIPLES, pages 1 - 18 *
XUFAN ZHANG等: "Duo: Differential Fuzzing for Deep Learning Operators", IEEE TRANSACTIONS ON RELIABILITY, vol. 70, no. 4, pages 1671 - 1685, XP011890702, DOI: 10.1109/TR.2021.3107165 *
周祥增: "基于深度学习的运动目标检测与跟踪研究", 中国博士学位论文全文数据库 信息科技辑, no. 6, pages 138 - 116 *
陈锦富 等: "基于变异技术的第三方构件安全性测试系统", 江苏大学学报(自然科学版), vol. 39, no. 01, pages 71 - 77 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116232967A (zh) * 2023-05-09 2023-06-06 中国科学技术大学先进技术研究院 网络安全检测方法、装置、设备及存储介质
CN116232967B (zh) * 2023-05-09 2023-07-04 中国科学技术大学先进技术研究院 网络安全检测方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN113742204B (zh) 2023-12-12

Similar Documents

Publication Publication Date Title
CN111860982A (zh) 一种基于vmd-fcm-gru的风电场短期风电功率预测方法
CN110659207A (zh) 基于核谱映射迁移集成的异构跨项目软件缺陷预测方法
CN111680820A (zh) 分布式光伏电站故障诊断方法和装置
CN112765890A (zh) 基于动态域适应网络的多工况旋转机械剩余寿命预测方法
CN116450486B (zh) 多元异构计算系统内节点的建模方法、装置、设备及介质
CN112257911A (zh) 基于并行时空注意力机制的tcn多元时间序列预测方法
CN116774086B (zh) 一种基于多传感器数据融合的锂电池健康状态估计方法
CN115021679A (zh) 一种基于多维离群点检测的光伏设备故障检测方法
CN117829822B (zh) 一种电力变压器故障预警方法及系统
CN113449920A (zh) 一种风电功率预测方法、系统及计算机可读介质
CN114897085A (zh) 一种基于封闭子图链路预测的聚类方法及计算机设备
CN114420217A (zh) 一种新型量子化学分子性能预测的方法和系统
CN113151842B (zh) 风光互补电解水制氢的转化效率的确定方法和确定装置
CN113742204A (zh) 一种基于模糊测试的深度学习算子测试工具
CN114330815A (zh) 一种基于改进goa优化lstm的超短期风电功率预测方法与系统
CN112418504A (zh) 一种基于混合变量选择优化深度信念网络风速预测方法
CN116916195A (zh) 无源光网络管理方法、设备及可读存储介质
CN116662893A (zh) 一种基于改进的樽海鞘算法优化svm的水质预测方法
CN116247658A (zh) 一种基于dlrm深度学习模型的光伏发电量预测方法
CN112348700B (zh) 一种结合som聚类与ifou方程的线路容量预测方法
CN113656279A (zh) 基于残差网络和度量注意机制的代码气味检测方法
CN112184037A (zh) 一种基于加权svdd的多模态过程故障检测方法
CN114282614B (zh) 基于随机森林和ifda优化cnn-gru的中长期径流预测方法
CN117521898B (zh) 一种基于关联分析的电费结算优化方法及系统
CN113326182B (zh) 一种基于采样和集成学习的软件缺陷预测方法

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