CN117171577A - 一种高性能算子选择的动态决策方法及装置 - Google Patents

一种高性能算子选择的动态决策方法及装置 Download PDF

Info

Publication number
CN117171577A
CN117171577A CN202311450171.XA CN202311450171A CN117171577A CN 117171577 A CN117171577 A CN 117171577A CN 202311450171 A CN202311450171 A CN 202311450171A CN 117171577 A CN117171577 A CN 117171577A
Authority
CN
China
Prior art keywords
operator
performance
trained
model
determining
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
CN202311450171.XA
Other languages
English (en)
Other versions
CN117171577B (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.)
Zhejiang Lab
Original Assignee
Zhejiang Lab
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 Zhejiang Lab filed Critical Zhejiang Lab
Priority to CN202311450171.XA priority Critical patent/CN117171577B/zh
Publication of CN117171577A publication Critical patent/CN117171577A/zh
Application granted granted Critical
Publication of CN117171577B publication Critical patent/CN117171577B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本说明书公开了一种高性能算子选择的动态决策方法及装置,包括:在选择模型中特定算子应该由算子库中具体的哪一个算子实现时,需要定位到模型中特定算子的shape特征的特征区间下,并确定该特征区间下的性能排序子表是否被更新过,若是,则可以直接通过该特征区间下更新好的性能排序子表选取出目标算子,若还未更新,则在模型训练阶段可以在每一轮训练时选取不同的算子在模型中进行训练,从而得到算子的性能分数,对性能排序子表进行更新,那么在后续训练这个模型(或者其他模型中需要相同特征区间下的shape特征的算子)时,可以直接使用该性能排序子表选取出合适的算子,从而相比于现有技术能够更加准确的选择出性能良好的算子。

Description

一种高性能算子选择的动态决策方法及装置
技术领域
本说明书涉及深度学习算子优化领域,尤其涉及一种高性能算子选择的动态决策方法及装置。
背景技术
在深度学习模型训练中,基于不同加速芯片的算子库其性能表现不同,对于硬件厂商而言,开发出适合自家芯片的计算算子库,并进行持续的迭代优化是十分重要的工作。
然而,一方面由于深度学习加速卡的弱复杂逻辑判断处理能力,硬件算子库的开发人员或AI编译器很难将计算密集型算子的泛化性能和性能相统一;另一方面,定制化AI芯片的算子库建设往往也需要定制化,面临巨大的工作量。因此,为了解决算子泛化性和高性能之间的矛盾,通常的做法是对同一算子进行多种不同的实现,每种实现所适用的算子特征参数(shape特征)的区间不一致,其性能的侧重点不同,通过添加算子特征区间的限制,这样就可以在小范围内实现性能较好的算子,也有利于算子库的开发和迭代。然而,在具体的模型训练中,如何高效的选择到性能最佳的算子实现是算子库面临的一个重要问题。如果在训练中没有选择到算子库中的高性能那个算子,往往会导致模型训练的性能极差,而目前所采用的主要方法是通过给定每个算子一个静态的分值来表示这个算子的性能好坏,根据分值大小进行算子选择。这种做法的一个问题是,在具体场景下的选择精度问题,即所选算子并不一定是库中性能最佳的实现,因为每个算子在其所适用的特征区间内的性能并不保持一致。
所以,在模型训练时如何更加准确地选择出合适的算子,则是一个亟待解决的问题。
发明内容
本说明书提供一种高性能算子选择的动态决策方法及装置,以部分的解决现有技术存在的上述问题。
本说明书采用下述技术方案:
本说明书提供了一种高性能算子选择的动态决策方法,包括:
确定构建出的待训练模型;
确定所述待训练模型对应的计算图,并根据所述计算图,确定出所述待训练模型中的特定算子;
确定所述特定算子的shape特征,基于所述shape特征,确定在算子库中用于实现所述特定算子的各候选算子,并确定所述shape特征落入的特征区间;
判断所述特征区间对应的性能排序子表是否已被更新,所述性能排序子表用于排序所述特征区间下所述各候选算子的性能分数;
若所述性能排序子表未被更新,在训练所述待训练模型时在不同轮次的训练中采用所述各候选算子中的不同候选算子实现所述特定算子,以得到所述各候选算子在所述特征区间下的性能分数,并根据所述性能分数,对性能排序子表进行更新,以及基于更新后的性能排序子表从所述各候选算子中选取出目标算子,将所述目标算子应用在所述待训练模型中以对所述待训练模型进行训练;
若所述性能排序子表已被更新,基于所述性能排序子表从所述各候选算子中选取出目标算子,并将所述目标算子应用在所述待训练模型中以对所述待训练模型进行训练,所述待训练模型完成训练后用于执行所述待训练模型所对应的业务。
可选地,所述shape特征用于表示算子的输入参数、输出参数以及算子相关参数中的至少一种,算子相关参数包括卷积核相关参数。
可选地,确定所述shape特征落入的特征区间,具体包括:
根据所述shape特征中的各参数值,确定优化半径;
根据所述优化半径以及所述shape特征,确定所述shape特征落入的特征区间。
可选地,根据所述shape特征中的各参数值,确定优化半径,具体包括:
针对所述shape特征中的每个参数,根据该参数、该参数对应的方差、该参数对应的均值,确定该参数的归一化值;
根据所述shape特征中的各归一化值,确定所述优化半径。
可选地,确定构建出的待训练模型之前,所述方法还包括:
初始化性能排序表,并按照所述性能排序表,初始化不同特征区间下初始化的性能排序子表。
本说明书提供了一种高性能算子选择的动态决策装置,包括:
第一确定模块,用于确定构建出的待训练模型;
第二确定模块,用于确定所述待训练模型对应的计算图,并根据所述计算图,确定出所述待训练模型中的特定算子;
区间定位模块,用于确定所述特定算子的shape特征,基于所述shape特征,确定在算子库中用于实现所述特定算子的各候选算子,并确定所述shape特征落入的特征区间;
判断模块,用于判断所述特征区间对应的性能排序子表是否已被更新,所述性能排序子表用于排序所述特征区间下所述各候选算子的性能分数;
更新模块,用于若所述性能排序子表未被更新,在训练所述待训练模型时在不同轮次的训练中采用所述各候选算子中的不同候选算子实现所述特定算子,以得到所述各候选算子在所述特征区间下的性能分数,并根据所述性能分数,对性能排序子表进行更新,以及基于更新后的性能排序子表从所述各候选算子中选取出目标算子,将所述目标算子应用在所述待训练模型中以对所述待训练模型进行训练;
训练模块,用于若所述性能排序子表已被更新,基于所述性能排序子表从所述各候选算子中选取出目标算子,并将所述目标算子应用在所述待训练模型中以对所述待训练模型进行训练,所述待训练模型完成训练后用于执行所述待训练模型所对应的业务。
可选地,所述shape特征用于表示算子的输入参数、输出参数以及算子相关参数中的至少一种,算子相关参数包括卷积核相关参数。
可选地,所述区间定位模块具体用于,根据所述shape特征中的各参数值,确定优化半径;根据所述优化半径以及所述shape特征,确定所述shape特征落入的特征区间。
本说明书提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述高性能算子选择的动态决策方法。
本说明书提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述高性能算子选择的动态决策方法。
本说明书采用的上述至少一个技术方案能够达到以下有益效果:
从上述一种高性能算子选择的动态决策方法中可以看出,本方法中,在选择模型中特定算子应该由算子库中具体的哪一个算子实现时,需要定位到模型中特定算子的shape特征的特征区间下,并确定该特征区间内各算子的性能分数是否是在这一特征区间下测试过的(即,性能排序子表是否被更新过)。
若已经更新,则可以直接通过该特征区间对应下更新好的性能排序子表选取出性能最好的目标算子,若还未更新,则在模型训练阶段可以在每一轮训练时选取不同的算子在模型中进行训练,从而得到算子的性能分数(通过算子的运行速度等性能参数得到),对性能排序子表进行更新,那么在后续训练这个模型(或者其他模型中需要相同特征区间下的shape特征的算子)时,可以直接使用该性能排序子表选取出合适的算子,从而相比于现有技术能够更加准确的选择出性能良好的算子。
附图说明
此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:
图1为本说明书提供的一种特定算子的多个具体实现算子泛化性和性能分布示意图;
图2为本说明书提供的一种在shape特征区间上单算子性能分布示意图;
图3为本说明书提供的一种高性能算子选择的动态决策方法的流程示意图;
图4为本说明书提供的一种各特征区间的示意图;
图5为本说明书中提供的一种算子动态选择策略的示意图;
图6为本说明书提供的三种优化半径的示意图;
图7为本说明书提供的一种高性能算子选择的动态决策装置示意图;
图8为本说明书提供的对应于图1的电子设备示意图。
具体实施方式
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
本说明书所提供的方法是基于通用算子库中常见的计算密集型算子进行展开的,因为此类算子往往难以平衡算子的泛化性及其高性能之间的矛盾,需要算子开发人员进行多种算子的开发或者AI编译器生成多种算子的实现。
因此,在算子库中针对某一特定算子往往有多个不同的算子实现,而这些算子的性能会有差异(特殊情况下,不同算子性能悬殊巨大);另一方面,对于某一具体算子,其在不同的算子特征区间所表现的性能差别较大。传统的算子库中,往往会给每个算子一个确定的分值用来进行算子选择,尽管此分值是基于开发人员的丰富经验和多轮测试评估的,但对于模型训练来讲,这种静态算子选择策略仍具有很大的先验性,针对特定算子往往性能不佳,导致大量的算子库优化工作是在某一特定情况下对不同满足要求的算子选择上。
图1为本说明书提供的一种特定算子的多个具体实现算子泛化性和性能分布示意图。
如图1所示,对于算子库中某一计算密集型算子往往有多种实现,每种算子实现并不能满足该算子的所有特征(也即替代通用算子开发的次优选择)。图中以shape信息变量作为同一算子在不同特征区间的不同实现(在实际开发中,shape特征是通用算子实现中最难满足的要求,shape特征能够表示出算子在输入、算子内部参数等方面上的适用范围)。
图1中op0~op9为一种算子(如卷积算子)在算子库中的10个具体的实现的算子,可以看到在整个shape区间有多个算子出现重叠部分,但在传统算子库中仅用一个静态score来标记该算子性能。
如图1,在shape特征为S处有op2、op3、op4三个算子均满足使用要求,其中op4的算子性能最优,如果模型中的算子的shape特征恰好为S,则静态选择到了最佳算子;然而,当算子特征略大于或略小于S,算子op4的实际性能出现了较大波动,很可能其性能是不如同样满足算子特征的op2和op3,但是由于算子op4的分数最大,因此在实际决策中依然选择了op4。
图2为本说明书提供的一种在shape特征区间上单算子性能分布示意图。
更具体地,如图2所示,某一算子满足的shape特征区间为[0,S4],假设以初始化的算子性能score为性能基准,则算子可能会在不同的shape特征区间表现出性能波动,图示[0,S1]和[S2,S3]区间算子性能高于初始化的性能基准,而[S1,S2]和[S3,S4]区间算子性能低于初始化性能基准。尽管实际中算子性能并不是严格的连续性曲线,但具有相近特征参数的算子性能往往接近,这也与实现中的分块循环和内存局部性考虑等因素保持一致,因此算子性能往往对特征参数有聚类特点。
综上所示,对于某一特定特征参数的算子选择采用静态赋分策略往往会导致调度到性能低下的算子,致使选择策略失效。针对特定性算子进行选择是调度高性能算子的重要手段,因此需要在基础性能序列表中针对某一特定特征区间进行重新排序,以适应具体的应用场景。某类算子的基础性能列表的初始化则可采用原始算子库的静态赋分策略进行给定,一般情况下,会根据算子实现过程中的数据搬运策略、缓存策略、各级缓存繁忙程度、计算核心利用率、计算强度和流水并行程度等因素进行测试,综合评估后进行算子性能列表初始化。随后,将具有多种实现以及且各实现的算子特征区间有重叠的算子性能列表进行整合,作为整个算子库的配置文件进行更新和存储。
图3为本说明书中提供的一种高性能算子选择的动态决策方法的流程示意图,具体包括以下步骤:
S300:确定构建出的待训练模型。
在实际应用中,对于每一种特定算子,算子库中可以存在有多种具体实现的算子,例如,对于卷积算子,在算子库中存在有多个具体的算子能够实现卷积算子,当然,每个具体的算子的适用的shape特征的范围可以是不同的,例如,shape特征中能够表示出卷积核大小,算子A、B均能够适用于卷积核维度为3*3的卷积计算,而算子C能够适用于卷积核维度为5*5的卷积计算。
对于构建出的一个模型来说,这个模型中的某一个特定算子可能会存在有多个具体的算子能够实现。例如,模型中有一个特定算子是一个卷积算子,这个卷积算子的shape特征能够表示输入该卷积算子的矩阵维度为100*100,卷积核为3*3等,算子库中共有10个实现卷积的算子,能够实现这个卷积算子的存在有5个(即,这5个算子适用于该卷积算子的shape特征),那么需要从这五个卷积算子中选取出一个算子应用在模型中实现卷积计算。
本说明提供的方式即是用于选取出算子库中的某个算子来实现模型中具有特定shape特征的特定算子,基于此,服务器可以确定构建出的待训练模型,进而,确定该待训练模型对应的计算图,并根据计算图,确定出待训练模型所需的特定算子。
当然,待训练模型中往往存在有多个特定算子,每一个特定算子均可以通过以下方式选取出算子库中的一个算子来实现。
S302:确定所述待训练模型对应的计算图,并根据所述计算图,确定出所述待训练模型中的特定算子。
S304:确定所述特定算子的shape特征,基于所述shape特征,确定在算子库中用于实现所述特定算子的各候选算子,并确定所述shape特征落入的特征区间。
而后,可以确定出在算子库中用于实现上述特定算子的各候选算子,以及确定特定算子的shape特征,并基于该shape特征,确定在算子库中用于实现该特定算子的各候选算子,以及确定shape特征落入的特征区间。
也就是说,在步骤S300中的示例中提到了,对于模型中的一个具有特定shape特征的卷积算子,能够实现这个卷积算子的存在5个,那么对于这个卷积算子来说,他的候选算子就是这5个算子。shape特征落入的特征区间可以是以该shape特征为中心划定一定范围的区间,即,该特征区间可以表示出基于该shape特征的算子参数(比如输入参数等)的适用范围。
S306:判断所述特征区间对应的性能排序子表是否已被更新,所述性能排序子表用于排序述特征区间下所述各候选算子的性能分数。
S308:若所述性能排序子表未被更新,在训练所述待训练模型时在不同轮次的训练中采用所述各候选算子中的不同候选算子实现所述特征算子,以得到所述各候选算子在所述特征区间下的性能分数,并根据所述性能分数,对性能排序子表进行更新,以及基于更新后的性能排序子表从所述各候选算子中选取出目标算子,将所述目标算子应用在所述待训练模型中以对所述待训练模型进行训练。
S310:若所述性能排序子表已被更新,基于所述性能排序子表从所述各候选算子中选取出目标算子,并将所述目标算子应用在所述待训练模型中以对所述待训练模型进行训练,所述待训练模型完成训练后用于执行所述待训练模型所对应的业务。
在确定出特定算子的shape特征所落入的特征区间后,可以判断该特征区间对应的性能排序子表是否已被更新,其中,性能排序子表用于排序在该特征区间下的各算子的性能分数,如图4所示。
图4为本说明书提供的一种各特征区间的示意图。
如图4所示,动态算子选择决策的目的即获得一个基于shape特征区间的算子性能序列化列表,对于整个shape特征区间可分为N个连续的小shape特征区间,对于每个特征区间有一个不同的算子性能排序(即,性能排序子表)。
其中在shape2所指示的特征区间表示未经更新写入的初始排序(即保持原算子库的初始化的性能排序表),如果某一算子调用命中在shape2区间,则需要一定的策略进行性能排序的更新,使其转化成适应本shape区间的最优算子选择排序,如shape1、shapeN指示的区间所示,最后将其存储起来以便当下次算子调度命中时的高效选择。
需要说明的是,对于一种算子来说,这个算子每个特征区间的性能排序子表在最初时,可以通过初始化这种算子统一的性能排序表,并按照该统一的性能排序表来得到不同特征区间的性能排序子表。
即,一种算子(如卷积算子)的性能排序表为通过常规的方式得到算子库中各算子静态的性能分数并进行排序得到的。也就是说,不同特征区间的性能排序子表在初始化时本质是一样的,区别在于不同特征区间下包含的算子可能会存在一定不同。
在服务器不断训练不同模型的过程中,可以将各种算子在各特征区间的性能排序子表进行更新。
其中,在服务器需要对上述待训练模型进行训练时,若确定性能排序子表未被更新,在训练该待训练模型时在不同轮次的训练中采用各候选算子中的不同候选算子实现特定算子,以得到各候选算子在特征区间下的性能分数,并根据性能分数,对性能排序子表进行更新,以及基于更新后的性能排序子表从各候选算子中选取出目标算子,将该目标算子应用在待训练模型中以对待训练模型进行继续进行训练。
若性能排序子表已被更新,则可以直接基于性能排序子表从各候选算子中选取出目标算子,并将目标算子应用在待训练模型中以对待训练模型进行训练,该待训练模型完成训练后用于执行该待训练模型所对应的业务。
图5为本说明书中提供的一种算子动态选择策略的示意图。
如图5所示,为高性能算子选择策略的流程示意。首先在IR层面会根据框架调度规则进行算子拆分,如图所示,拆分出的dot算子(矩阵乘算子)和conv算子(卷积算子)在算子库中有多种实现,因此需要进行算子选择。然后,算子调度模块会匹配到所有满足待训练模型中算子shape特征的候选算子。
在初始状态下,在算子库的配置文件中有多种算子不同实现的静态性能排序表,调度模块会根据算子信息加载配置文件的性能排序子表进内存,该性能排序子表为对应算子在特征范围内,且满足算子特征匹配信息的一个算子性能排序,如图4所示的一个性能排序子表。
其次,不同算子会根据加载的性能排序表的标识符进行决策,如果算子的shape特征所在的性能排序子表已经进行过性能排序的更新,则直接选择具有最高分值的算子实现,如果算子的shape特征所在的性能排序子表尚未经过性能排序更新,即仍然保持初始化状态,则需要进行算子性能的排序更新。
最后,性能排序子表的更新是通过算子选择模式下的模型训练完成的,此模式可通过调度模块的自动检查进入,训练开始的多轮batch(一批训练)中,不同batch选择不同的候选算子实现进行训练,并且每轮训练会对算子性能进行测试,根据测试结果进行各个候选算子实现的赋分,得到性能分数,根据赋分结果进行性能列表的更新;由于每轮训练过程中都选择当前已测试的实现中性能最好的一个算子实现进行下一轮训练,因此当最后检测完所有算子实现后所选择的即是满足特征信息的最优算子(目标算子)实现,随后依旧通过调度模块的自动检查退出选择模式,使用最佳性能算子完成后续的模型训练;同时,在退出选择模式的同时也代表这此特征信息区间的算子性能排序列表更新完成,因此框架调度也会将完成更新的性能排序子表重新写回算子库的配置信息中。
当然,上述高性能算子选择策略完全可在算子调度模块进行开关设计,在模型预训练中进行触发设置,以最大程度降低算子选择对模型训练的影响。
需要说明的是,在确定上述特定算子的shape特征的特征区间时,可以以shape特征为中心,并向外扩大一定半径,得到该shape特征所落入的特征区间,而半径的大小影响得到的性能分数列表的精度,因此,这里提到的半径可以通过下面的方式进行确定,当然,也可以定义一个较小的值作为半径。
进一步地,为了更加准确的定位特征区间,可以确定出优化半径,即,根据shape特征中的各参数值,确定优化半径,根据该优化半径以及shape特征,确定shape特征落入的特征区间。
如图4所示的性能排序子表均在shape特征维上有一个宽度,如果此宽度值越大则表明某shape特征值的算子性能排序代表的shape特征区间越大。即动态选择决策的粒度越大,决策精度越低,相反如果此宽度越小,则选择决策的精度越高。先引入选择决策的优化半径对此区间宽度进行量化,一方面,由于不同算子的特征参数尺度对算子计算的影响程度不一,因此优化半径要考虑具体算子特征参数的影响;另一方面,由于算子库中算子的不同实现在shape特征区间的分布并不均匀,因此优化半径也应考虑不同shape特征段的影响。
具体的,可以针对shape特征中的每个参数,可以根据该参数、该参数对应的方差、该参数对应的均值,确定该参数的归一化值,并根据该shape特征中各参数的归一化值,确定出上述优化半径。
在此分别以矩阵乘算子和卷积算子进行举例:
对于矩阵乘算子,其优化半径确定如下:
其中,为当前矩阵乘算子特征shape下的优化半径,/>,/>和/>为当前算子特征参数(矩阵乘的3个维度值)的归一化值,/>、/>为规约维和非规约维的权重参数,可根据各特征之间的比例确定。
对于卷积算子,其优化半径确定如下:
其中,为当前卷积算子特征shape下的优化半径,/>为当前卷积算子批尺寸的归一化值,/>、/>为输入通道和卷积核通道的归一化值,/>、/>、/>、/>为输入和输出的特征高度和特征宽度的归一化值,/>、/>为卷积核特征高度和特征宽度的归一化值,规约维和非规约维的权重参数,/>、/>、/>、/>为规约维和非规约维的权重参数,可根据各特征之间的比例确定。
各个特征参数的归一化值可通过如下公式确定:
其中,代表算子特征的归一化值,/>代表当前算子的特征参数值,常数/>为添加较小的值到方差中以防止除零,/>和/>为算子库中同一算子不同实现的特征参数值的统计数据,具体计算如下:
其中代表同一算子不同实现的特征参数值的中位数,n代表该算子有多少种实现。
通过上述方式确定出的优化半径是固定的,可以通过下面的方式对该优化半径进行加权,O1对应权重为1,O2对应权重为,O2对应权重为/>,从而得到三种优化半径,可以根据实际需求从三种优化半径中,选取出所需的优化半径。
图6为本说明书提供的三种优化半径的示意图。
如图6所示,可以设置O1、O2、O3三种优化选项,其对应不同的优化半径,针对某一给定的算子特征尺寸,其优化半径的确定如下:
其中,为半径放大因子,具体可根据算子库中不同实现在shape特征维度的分布密度进行w的确定,可以看出,e1、e2、e3分别为O1、O2、O3三种优化选项所对应的优化半径大小。
从上述内容中可以看出,本方法中,在选择模型中特定算子应该由算子库中具体的哪一个算子实现时,需要定位到模型中特定算子的shape特征的特征区间下,并确定该特征区间内各算子的性能分数是否是在这一特征区间下测试过的(即,性能排序子表是否被更新过),若是,则可以直接通过该特征区间对应下更新好的性能排序子表选取出性能最好的目标算子,若还未更新,则在模型训练阶段可以在每一轮训练时选取不同的算子在模型中进行训练,从而得到算子的性能分数(通过算子的运行速度等性能参数得到),对性能排序子表进行更新,那么在后续训练这个模型(或者其他模型中需要相同特征区间下的shape特征的算子)时,可以直接使用该性能排序子表选取出合适的算子,从而相比于现有技术能够更加准确的选择出性能良好的算子。
需要说明的是,为了便于描述,将执行本方法的执行主体作为服务器进行描述,本方法的执行主体可以是计算机、大型的服务平台等,在此不进行限定。还需说明的是,在不冲突的情况下,下述的实施例及实施方式中的特征可以相互组合。
另外,需要说明的是,本说明书中所有获取信号、信息或数据的动作都是在遵照所在地相应的数据保护法规政策的前提下,并获得由相应装置所有者给予授权的情况下进行的。
以上为本说明书的一个或多个实施例提供的高性能算子选择的动态决策方法,基于同样的思路,本说明书还提供了高性能算子选择的动态决策装置,如图7所示。
图7为本说明书提供的一种高性能算子选择的动态决策装置示意图,包括:
第一确定模块701,用于确定构建出的待训练模型;
第二确定模块702,用于确定所述待训练模型对应的计算图,并根据所述计算图,确定出所述待训练模型中的特定算子;
区间定位模块703,用于确定所述特定算子的shape特征,基于所述shape特征,确定在算子库中用于实现所述特定算子的各候选算子,并确定所述shape特征落入的特征区间;
判断模块704,用于判断所述特征区间对应的性能排序子表是否已被更新,所述性能排序子表用于排序所述特征区间下所述各候选算子的性能分数;
更新模块705,用于若所述性能排序子表未被更新,在训练所述待训练模型时在不同轮次的训练中采用所述各候选算子中的不同候选算子实现所述特定算子,以得到所述各候选算子在所述特征区间下的性能分数,并根据所述性能分数,对性能排序子表进行更新,以及基于更新后的性能排序子表从所述各候选算子中选取出目标算子,将所述目标算子应用在所述待训练模型中以对所述待训练模型进行训练;
训练模块706,用于若所述性能排序子表已被更新,基于所述性能排序子表从所述各候选算子中选取出目标算子,并将所述目标算子应用在所述待训练模型中以对所述待训练模型进行训练,所述待训练模型完成训练后用于执行所述待训练模型所对应的业务。
可选地,所述shape特征用于表示算子的输入参数、输出参数以及算子相关参数中的至少一种,算子相关参数包括卷积核相关参数。
可选地,所述区间定位模块703具体用于,根据所述shape特征中的各参数值,确定优化半径;根据所述优化半径以及所述shape特征,确定所述shape特征落入的特征区间。
可选地,所述区间定位模块703具体用于,针对所述shape特征中的每个参数,根据该参数、该参数对应的方差、该参数对应的均值,确定该参数的归一化值;
根据所述shape特征中各参数的归一化值,确定所述优化半径。
可选地,确定构建出的待训练模型之前,所述装置还包括:
初始化模块707,用于初始化性能排序表,并按照所述性能排序表,初始化不同特征区间下性能排序子表。
本说明书还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述高性能算子选择的动态决策方法。
本说明书还提供了图8所示的电子设备的示意结构图。如图8所述,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现高性能算子选择的动态决策方法。
当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device, PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书的实施例可提供为方法、系统、或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。

Claims (10)

1.一种高性能算子选择的动态决策方法,其特征在于,包括:
确定构建出的待训练模型;
确定所述待训练模型对应的计算图,并根据所述计算图,确定出所述待训练模型中的特定算子;
确定所述特定算子的shape特征,基于所述shape特征,确定在算子库中用于实现所述特定算子的各候选算子,并确定所述shape特征落入的特征区间;
判断所述特征区间对应的性能排序子表是否已被更新,所述性能排序子表用于排序所述特征区间下所述各候选算子的性能分数;
若所述性能排序子表未被更新,在训练所述待训练模型时在不同轮次的训练中采用所述各候选算子中的不同候选算子实现所述特定算子,以得到所述各候选算子在所述特征区间下的性能分数,并根据所述性能分数,对性能排序子表进行更新,以及基于更新后的性能排序子表从所述各候选算子中选取出目标算子,将所述目标算子应用在所述待训练模型中以对所述待训练模型进行训练;
若所述性能排序子表已被更新,基于所述性能排序子表从所述各候选算子中选取出目标算子,并将所述目标算子应用在所述待训练模型中以对所述待训练模型进行训练,所述待训练模型完成训练后用于执行所述待训练模型所对应的业务。
2.如权利要求1所述的方法,其特征在于,所述shape特征用于表示算子的输入参数、输出参数以及算子相关参数中的至少一种,算子相关参数包括卷积核相关参数。
3.如权利要求1或2所述的方法,其特征在于,确定所述shape特征落入的特征区间,具体包括:
根据所述shape特征中的各参数值,确定优化半径;
根据所述优化半径以及所述shape特征,确定所述shape特征落入的特征区间。
4.如权利要求3所述的方法,其特征在于,根据所述shape特征中的各参数值,确定优化半径,具体包括:
针对所述shape特征中的每个参数,根据该参数、该参数对应的方差、该参数对应的均值,确定该参数的归一化值;
根据所述shape特征中各参数的归一化值,确定所述优化半径。
5.如权利要求1所述的方法,其特征在于,确定构建出的待训练模型之前,所述方法还包括:
初始化性能排序表,并按照所述性能排序表,初始化不同特征区间下性能排序子表。
6.一种高性能算子选择的动态决策装置,其特征在于,包括:
第一确定模块,用于确定构建出的待训练模型;
第二确定模块,用于确定所述待训练模型对应的计算图,并根据所述计算图,确定出所述待训练模型中的特定算子;
区间定位模块,用于确定所述特定算子的shape特征,基于所述shape特征,确定在算子库中用于实现所述特定算子的各候选算子,并确定所述shape特征落入的特征区间;
判断模块,用于判断所述特征区间对应的性能排序子表是否已被更新,所述性能排序子表用于排序所述特征区间下所述各候选算子的性能分数;
更新模块,用于若所述性能排序子表未被更新,在训练所述待训练模型时在不同轮次的训练中采用所述各候选算子中的不同候选算子实现所述特定算子,以得到所述各候选算子在所述特征区间下的性能分数,并根据所述性能分数,对性能排序子表进行更新,以及基于更新后的性能排序子表从所述各候选算子中选取出目标算子,将所述目标算子应用在所述待训练模型中以对所述待训练模型进行训练;
训练模块,用于若所述性能排序子表已被更新,基于所述性能排序子表从所述各候选算子中选取出目标算子,并将所述目标算子应用在所述待训练模型中以对所述待训练模型进行训练,所述待训练模型完成训练后用于执行所述待训练模型所对应的业务。
7.如权利要求6所述的装置,其特征在于,所述shape特征用于表示算子的输入参数、输出参数以及算子相关参数中的至少一种,算子相关参数包括卷积核相关参数。
8.如权利要求6所述的装置,其特征在于,所述区间定位模块具体用于,根据所述shape特征中的各参数值,确定优化半径;根据所述优化半径以及所述shape特征,确定所述shape特征落入的特征区间。
9.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求1~5任一项所述的方法。
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述权利要求1~5任一项所述的方法。
CN202311450171.XA 2023-11-02 2023-11-02 一种高性能算子选择的动态决策方法及装置 Active CN117171577B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311450171.XA CN117171577B (zh) 2023-11-02 2023-11-02 一种高性能算子选择的动态决策方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311450171.XA CN117171577B (zh) 2023-11-02 2023-11-02 一种高性能算子选择的动态决策方法及装置

Publications (2)

Publication Number Publication Date
CN117171577A true CN117171577A (zh) 2023-12-05
CN117171577B CN117171577B (zh) 2024-03-22

Family

ID=88932069

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311450171.XA Active CN117171577B (zh) 2023-11-02 2023-11-02 一种高性能算子选择的动态决策方法及装置

Country Status (1)

Country Link
CN (1) CN117171577B (zh)

Citations (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180089271A1 (en) * 2015-04-15 2018-03-29 Hewlett Packard Enterprise Development Lp Database query classification
CN110046298A (zh) * 2019-04-24 2019-07-23 中国人民解放军国防科技大学 一种查询词推荐方法、装置、终端设备及计算机可读介质
CN113312175A (zh) * 2021-04-27 2021-08-27 北京迈格威科技有限公司 一种算子确定、运行方法及装置
CN113642730A (zh) * 2021-08-30 2021-11-12 Oppo广东移动通信有限公司 卷积网络剪枝方法和装置、电子设备
CN114065948A (zh) * 2021-11-17 2022-02-18 中国平安人寿保险股份有限公司 构建预训练模型的方法、装置、终端设备和存储介质
US20220092381A1 (en) * 2020-09-18 2022-03-24 Baidu Usa Llc Neural architecture search via similarity-based operator ranking
CN114329207A (zh) * 2021-12-29 2022-04-12 完美世界(北京)软件科技发展有限公司 多业务信息排序系统、方法、存储介质及电子设备
US20220284283A1 (en) * 2021-03-08 2022-09-08 Nvidia Corporation Neural network training technique
CN115293292A (zh) * 2022-08-31 2022-11-04 北京沃东天骏信息技术有限公司 自动驾驶决策模型的训练方法及装置
CN116167461A (zh) * 2023-04-21 2023-05-26 之江实验室 一种模型训练的方法、装置、存储介质及电子设备
CN116244059A (zh) * 2021-12-07 2023-06-09 上海寒武纪信息科技有限公司 算子调优方法、装置、电子设备及存储介质
CN116402165A (zh) * 2023-06-07 2023-07-07 之江实验室 一种算子检测的方法、装置、存储介质以及电子设备
CN116450344A (zh) * 2023-03-13 2023-07-18 之江实验室 一种任务执行方法、装置、存储介质及电子设备
CN116501325A (zh) * 2022-01-17 2023-07-28 华为技术有限公司 一种算子的处理方法及计算机设备
CN116521380A (zh) * 2023-07-05 2023-08-01 之江实验室 一种资源自适应协同的模型训练加速方法、装置及设备
WO2023150912A1 (zh) * 2022-02-08 2023-08-17 华为技术有限公司 算子的调度运行时间比较方法、装置及存储介质
CN116663618A (zh) * 2023-07-28 2023-08-29 之江实验室 一种算子优化方法、装置、存储介质及电子设备
CN116842060A (zh) * 2023-08-30 2023-10-03 之江实验室 一种基于代理模型重排技术的推理查询优化方法及装置

Patent Citations (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180089271A1 (en) * 2015-04-15 2018-03-29 Hewlett Packard Enterprise Development Lp Database query classification
CN110046298A (zh) * 2019-04-24 2019-07-23 中国人民解放军国防科技大学 一种查询词推荐方法、装置、终端设备及计算机可读介质
US20220092381A1 (en) * 2020-09-18 2022-03-24 Baidu Usa Llc Neural architecture search via similarity-based operator ranking
US20220284283A1 (en) * 2021-03-08 2022-09-08 Nvidia Corporation Neural network training technique
CN113312175A (zh) * 2021-04-27 2021-08-27 北京迈格威科技有限公司 一种算子确定、运行方法及装置
CN113642730A (zh) * 2021-08-30 2021-11-12 Oppo广东移动通信有限公司 卷积网络剪枝方法和装置、电子设备
CN114065948A (zh) * 2021-11-17 2022-02-18 中国平安人寿保险股份有限公司 构建预训练模型的方法、装置、终端设备和存储介质
CN116244059A (zh) * 2021-12-07 2023-06-09 上海寒武纪信息科技有限公司 算子调优方法、装置、电子设备及存储介质
CN114329207A (zh) * 2021-12-29 2022-04-12 完美世界(北京)软件科技发展有限公司 多业务信息排序系统、方法、存储介质及电子设备
CN116501325A (zh) * 2022-01-17 2023-07-28 华为技术有限公司 一种算子的处理方法及计算机设备
WO2023150912A1 (zh) * 2022-02-08 2023-08-17 华为技术有限公司 算子的调度运行时间比较方法、装置及存储介质
CN115293292A (zh) * 2022-08-31 2022-11-04 北京沃东天骏信息技术有限公司 自动驾驶决策模型的训练方法及装置
CN116450344A (zh) * 2023-03-13 2023-07-18 之江实验室 一种任务执行方法、装置、存储介质及电子设备
CN116167461A (zh) * 2023-04-21 2023-05-26 之江实验室 一种模型训练的方法、装置、存储介质及电子设备
CN116402165A (zh) * 2023-06-07 2023-07-07 之江实验室 一种算子检测的方法、装置、存储介质以及电子设备
CN116521380A (zh) * 2023-07-05 2023-08-01 之江实验室 一种资源自适应协同的模型训练加速方法、装置及设备
CN116663618A (zh) * 2023-07-28 2023-08-29 之江实验室 一种算子优化方法、装置、存储介质及电子设备
CN116842060A (zh) * 2023-08-30 2023-10-03 之江实验室 一种基于代理模型重排技术的推理查询优化方法及装置

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
LU BAI等: "DNNAbacus: Toward Accurate Computational Cost Prediction for Deep Neural Networks", ARXIV, 24 May 2022 (2022-05-24), pages 1 - 9 *
朱江洪等: "基于Fine-Kinney与TODIM的地铁列车车门系统风险评估", 中国安全科学学报, 31 October 2019 (2019-10-31), pages 167 - 173 *
柯晶;姜静;李歧强;: "改进进化策略及其在神经网络训练中的应用", 计算机工程与应用, no. 04, 1 February 2006 (2006-02-01) *
王丽;郭振华;曹芳;高开;赵雅倩;赵坤;: "面向模型并行训练的模型拆分策略自动生成方法", 计算机工程与科学, no. 09, 15 September 2020 (2020-09-15) *

Also Published As

Publication number Publication date
CN117171577B (zh) 2024-03-22

Similar Documents

Publication Publication Date Title
CN116663618B (zh) 一种算子优化方法、装置、存储介质及电子设备
CN114936085A (zh) 基于深度学习算法的etl调度方法及装置
CN116185532B (zh) 一种任务执行系统、方法、存储介质及电子设备
CN116304720B (zh) 一种代价模型训练的方法、装置、存储介质及电子设备
CN116521380A (zh) 一种资源自适应协同的模型训练加速方法、装置及设备
CN116225669B (zh) 一种任务执行方法、装置、存储介质及电子设备
CN116860259B (zh) 一种模型训练和编译器自动调优的方法、装置及设备
CN115981870A (zh) 一种数据处理的方法、装置、存储介质及电子设备
CN110245978B (zh) 策略组中的策略评估、策略选择方法及装置
CN117370536B (zh) 一种任务执行方法、装置、存储介质及电子设备
CN116932175B (zh) 一种基于序列生成的异构芯片任务调度方法以及装置
CN116776135B (zh) 一种基于神经网络模型的物理场数据预测方法及装置
CN116150563B (zh) 一种业务执行方法、装置、存储介质及电子设备
CN117171577B (zh) 一种高性能算子选择的动态决策方法及装置
CN116384505A (zh) 一种数据处理的方法、装置、存储介质及电子设备
CN116402113A (zh) 一种任务执行的方法、装置、存储介质及电子设备
CN116521350A (zh) 基于深度学习算法的etl调度方法及装置
CN114120273A (zh) 一种模型训练的方法及装置
CN113205377A (zh) 一种信息推荐的方法及装置
CN116415103B (zh) 一种数据处理的方法、装置、存储介质以及电子设备
CN113010564B (zh) 一种模型训练和信息推荐的方法及装置
CN116107636B (zh) 一种硬件加速方法、装置、存储介质及电子设备
CN116109008B (zh) 一种业务执行的方法、装置、存储介质及电子设备
CN112434486B (zh) 一种pcb设计中器件自动分页方法、装置、设备及介质
CN115618962B (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