CN113807531A - 利用地址随机化的ai模型转移方法 - Google Patents

利用地址随机化的ai模型转移方法 Download PDF

Info

Publication number
CN113807531A
CN113807531A CN202011464041.8A CN202011464041A CN113807531A CN 113807531 A CN113807531 A CN 113807531A CN 202011464041 A CN202011464041 A CN 202011464041A CN 113807531 A CN113807531 A CN 113807531A
Authority
CN
China
Prior art keywords
layer
layers
model
artificial intelligence
accelerator
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
CN202011464041.8A
Other languages
English (en)
Other versions
CN113807531B (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.)
Kunlun Core Beijing Technology Co ltd
Baidu USA LLC
Original Assignee
Kunlun Core Beijing Technology Co ltd
Baidu USA LLC
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 Kunlun Core Beijing Technology Co ltd, Baidu USA LLC filed Critical Kunlun Core Beijing Technology Co ltd
Publication of CN113807531A publication Critical patent/CN113807531A/zh
Application granted granted Critical
Publication of CN113807531B publication Critical patent/CN113807531B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Artificial Intelligence (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

本公开公开了利用地址随机化的AI模型转移方法,涉及人工智能,尤其涉及信息流领域。具体实现方案为:一种转移人工智能(AI)模型的方法包括识别AI模型的多个层,其中,多个层中的每个层与存储器地址相关联。该方法还包括对与多个层中的每个层相关联的存储器地址进行随机化以及将具有随机化的存储器地址的多个层转移到数据处理加速器以执行AI模型。

Description

利用地址随机化的AI模型转移方法
技术领域
本公开大体上涉及用于执行人工智能(AI)模型的数据处理加速器。更具体地,本公开涉及在从主机到加速器的AI模型的转移中的数据保护。
背景技术
随着AI技术部署在诸如图像分类、医学诊断或自主驾驶的各种领域中,人工智能(AI)模型(也称为“机器学习模型”)最近已被广泛地使用。与软件应用的可执行映像或二进制映像类似,AI模型在被训练时可以基于一组属性执行推断以分类为特征。AI模型的训练可能需要在收集、整理和过滤数据上进行大量投资,以生成产生有用预测的AI模型。
从AI模型生成预测可以是计算密集型处理。为了为一个或多个用户提供足够的计算能力,可以提供数据处理加速器(DPA)集群(例如,在集群中)以执行AI模型所需的大量计算。因此,越来越多地在主机系统和数据处理(DP)加速器(诸如人工智能(AI)加速器或协处理器)之间执行敏感事务。这增加了保护DP加速器和主机系统环境之间的通信信道,以保护通信信道免受数据嗅探攻击的需要。
例如,用于AI训练数据、模型和推断输出的数据传输可能不受保护,并且可能通过通信信道泄漏到不可信方。此外,用于在通信信道上加密数据的基于密钥的解决方案可能较慢并且可能不实用。此外,大多数基于密钥的解决方案需要基于硬件的密码引擎。
发明内容
本申请的一个方面提供了一种转移人工智能模型的方法,该方法可包括:识别人工智能模型的多个层,其中,多个层中的每个层与存储器地址相关联;由处理设备对与多个层中的每个层相关联的存储器地址进行随机化;以及将具有随机化的存储器地址的多个层转移到数据处理加速器以执行人工智能模型,其中,人工智能模型的每个层的存储器地址引用数据处理加速器内的特定存储器位置,人工智能模型的相应层将被加载到特定存储器位置处。
本申请的另一方面提供了一种转移人工智能模型的系统,该系统可包括:存储器;以及处理设备,可操作地联接到存储器。处理设备执行以下操作:识别人工智能模型的多个层,其中,多个层中的每个层与存储器地址相关联;对与多个层中的每个层相关联的存储器地址进行随机化;以及将具有随机化的存储器地址的多个层转移到数据处理加速器以执行人工智能模型,其中,人工智能模型的每个层的存储器地址引用数据处理加速器内的特定存储器位置,人工智能模型的相应层将被加载到特定存储器位置处。
本申请的又一方面提供了一种存储指令的非暂时性机器可读存储介质,所述指令在由处理设备执行时可执行包括以下步骤的操作:识别人工智能模型的多个层,多个层中的每个层与存储器地址相关联;由处理设备对与多个层中的每个层相关联的存储器地址进行随机化;以及将具有随机化的存储器地址的多个层转移到数据处理加速器以执行人工智能模型,其中,人工智能模型的每个层的存储器地址引用数据处理加速器内的特定存储器位置,人工智能模型的相应层将被加载到特定存储器位置处。
本申请的又一方面提供了一种计算机程序产品,其上存储有计算机程序,其中,当上述计算机程序在被处理器执行时,使得处理器:识别人工智能模型的多个层,其中,多个层中的每个层与存储器地址相关联;对与多个层中的每个层相关联的存储器地址进行随机化;以及将具有随机化的存储器地址的多个层转移到数据处理加速器以执行人工智能模型,其中,人工智能模型的每个层的存储器地址引用数据处理加速器内的特定存储器位置,人工智能模型的相应层将被加载到特定存储器位置处。
附图说明
本公开的实施例在附图的各个图中以示例的方式而不是限制的方式示出,其中,在附图中相同的附图标记表示类似的元件。
图1是示出根据一个实施例的安全处理系统的框图。
图2是示出根据一个实施例的一个或多个主机与一个或多个数据处理加速器之间的安全计算环境的框图。
图3是示出根据实施例将AI模型转移到数据处理加速器群集的框图。
图4是示出根据实施例的使用层的随机化来保护AI模型从主机到数据处理加速器的转移的系统的框图。
图5是示出根据实施例的使用层的随机化来保护AI模型从主机到数据处理加速器的转移的方法的流程图。
图6是示出根据实施例的使用存储器地址的随机化来保护AI模型从主机到数据处理加速器的转移的系统的框图。
图7是示出根据实施例的使用存储器地址的随机化来保护AI模型从主机到数据处理加速器的转移的方法的流程图。
图8是示出根据实施例的使用层和存储器地址的混合随机化来保护AI模型从主机到数据处理加速器的转移的系统的框图。
图9是示出根据实施例的使用层和存储器地址的混合随机化来保护AI模型从主机到数据处理加速器的转移的方法的流程图。
具体实施方式
将参考以下讨论的细节来描述本公开的各种实施例和方面,并且附图将示出各种实施例。以下描述和附图是本公开的示例,而不应被解释为限制本公开。描述了许多具体细节以提供对本公开的各种实施例的透彻理解。然而,在某些情况下,为了提供对本公开的实施例的简洁讨论,没有描述公知的或常规的细节。
在说明书中提及“一个实施例”或“实施例”意味着结合该实施例描述的特定特征、结构或特性可以被包括在本公开的至少一个实施例中。在说明书的各个位置中出现的短语“在一个实施例中”不一定都指同一实施例。
以下实施例涉及使用数据处理(DP)加速器来增加可从主机设备分流(或下放)到DP加速器的特定类型的操作的处理吞吐量。DP加速器可以是通用处理单元(GPU)、人工智能(AI)加速器、数学协处理器、数字信号处理器(DSP)或其它类型的处理器。DP加速器可以是专有设计,诸如
Figure BDA0002833535970000041
加速器或另一GPU等。虽然用安全地联接到一个或多个DP加速器的主机设备来说明和描述实施例,但是这里描述的概念可以更一般地实现为分布式处理系统。
主机设备的驱动器可以包括随机化模块,用于在将AI模型转移到DP加速器以执行AI模型之前对AI模型进行随机化。随机化模块可以使用用于随机化的一个或多个方法来随机化AI模型。在一个实施例中,随机化模块可以在转移之前随机化AI模型的层。在一个实施例中,随机化模块可个别地随机化AI模型的每个层的存储器地址。在另一实施例中,随机化模块可使用层的随机化和存储器地址的随机化两者来随机化AI模型。
在一个实施例中,主机识别以第一有序列表组织的AI模型的层。主机通过将第一有序列表重新组织成第二有序列表来对层进行随机化。然后,主机按照由第二有序列表定义的顺序将AI模型的层转移到数据处理加速器。在一个实施例中,AI模型的每个层与AI模型的多个内核函数中的一个内核函数相关联。在一个实施例中,主机将内核函数与AI模型的层的关联更新到第二有序列表中每层的新位置。
在一个实施例中,第一有序列表对应于与AI模型的多个层相关联的内核函数的执行顺序。在一个实施例中,主机通过使用与第二有序列表中的每个层的新位置相关联的更新的内核指针,以第一有序列表的执行顺序执行层,从而利用AI模型生成推断。在一个实施例中,为了使层随机化,主机使用种子编号对第一有序列表执行混洗(shuffle)函数。在一个实施例中,为了更新内核指针,主机使用种子编号来识别第二有序列表中的每个层,并且更新用于与每个层相关联的每个内核函数的内核指针,以指向第二有序列表中的每个层的新位置。
在一个实施例中,主机识别AI模型的多个层,多个层中的每个层与存储器地址相关联。主机可以对与AI模型的每个层相关联的存储器地址进行随机化,并将具有随机化的存储器地址的层转移到数据处理加速器以执行AI模型。在一个实施例中,对存储器地址进行随机化包括确定数据处理加速器的地址空间以及将地址空间的地址随机地分配给AI模型的每个层。在一个实施例中,主机将随机化的存储器地址转发到数据处理加速器,以用于数据处理加速器重构AI模型。在一个实施例中,与每个层相关联的存储器地址是相应层的基地址。在一个实施例中,内核函数与多个层中的每个层相关联。在一个实施例中,每个内核函数使用基地址来从与内核函数相关联的对应层中检索权重。在一个实施例中,数据处理加速器包括AI加速器。
在一个实施例中,主机识别以第一有序列表组织的AI模型的层,并且其中每个层与存储器地址相关联。主机可以对层的第一子集进行随机化以生成层的第二有序列表。主机可以进一步对与层的第二子集中的每个层相关联的存储器地址进行随机化。然后,主机基于第二有序列表将AI模型的层连同层的第二子集的随机化的存储器地址一起转移到数据处理加速器。在一个实施例中,在将多个层转移到数据处理加速器之前,将多个层中的每个层随机化到第二有序列表中,或者对多个层中的每个层的对应的存储器地址进行随机化。
上述功能中的任一个可以作为可执行指令被编程到一个或多个非暂时性计算机可读介质上。当可执行指令由具有至少一个硬件处理器的处理系统执行时,该处理系统使得实现上述功能。上述功能中的任一个都可以通过具有至少一个硬件处理器的处理系统来实现,所述硬件处理器联接到用可执行指令编程的存储器,所述可执行指令在被执行时使所述处理系统实现上述功能。
图1是示出根据一些实施例的安全处理系统的框图。参照图1,系统配置100包括但不限于经由网络103通信地联接到DP服务器104(例如,主机)的一个或多个客户端设备101-102。客户端设备101-102可以是任何类型的客户端设备,诸如个人计算机(例如,台式计算机、膝上型计算机和平板计算机)、“瘦”客户端、个人数字助理(PDA)、启用Web的装置、智能手表或移动电话(例如,智能电话)等。替代地,客户端设备101-102可以是其它服务器。在一个方面,一个或多个客户端设备(例如,服务器)101-102托管作为数据处理服务器104的客户端的一个或多个虚拟机。网络103可以是任何类型的有线或无线网络,诸如局域网(LAN)、诸如因特网的广域网(WAN)、高速总线或它们的组合。
服务器(例如,主机)104可以是任何类型的服务器或服务器群集,诸如Web或云服务器、应用服务器、后端服务器或其组合。服务器104还包括接口(未示出),以允许诸如客户端设备101-102的客户端访问由服务器104提供的资源或服务(诸如由DP加速器经由服务器104提供的资源和服务)。例如,服务器104可以是向客户端提供各种云服务的云服务器或数据中心的服务器,例如,各种云服务诸如为云存储、云计算服务、人工智能训练服务、数据挖掘服务等。服务器104可以配置为云上的软件即服务(SaaS)或平台即服务(PaaS)系统的一部分,该云可以是私有云、公共云或混合云。接口可以包括Web接口、应用编程接口(API)和/或命令行接口(CLI)。
例如,客户端可以是客户端设备101的用户应用程序(例如,Web浏览器、应用程序)。客户端可以向服务器104发送或传输用于执行的指令(例如,AI训练、推断指令等),并且该指令经由网络103上的接口由服务器104接收。响应于该指令,服务器104与DP加速器105-107通信以完成指令的执行。在一些实施例中,指令是机器学习类型的指令,其中相比于由服务器104执行该指令,作为专用机器或处理器的DP加速器可以快许多倍地执行该指令。因此,服务器104可以以分布式方式控制/管理一个或多个DP加速器的执行工作。然后,服务器104将执行结果返回给客户端设备101-102。DP加速器或AI加速器可以包括一个或多个专用处理器,诸如可从
Figure BDA0002833535970000061
公司获得的
Figure BDA0002833535970000062
人工智能(AI)芯片组,或者替代地,DP加速器可以是来自另一AI芯片组提供商的AI芯片组。
根据一个实施例,访问由数据处理服务器104(也称为主机)托管的DP加速器105-107中的任一个的每个应用程序可以验证该应用程序是由可信源或供应商提供的。每个应用程序可以在由主机104的中央处理单元(CPU)专门配置和执行的可信执行环境(TEE)内启动和执行。当应用程序被配置成访问DP加速器105-107中的任一个时,可以在主机104和DP加速器105-107中相应的一个之间建立模糊连接,从而保护在主机104和DP加速器105-107之间交换的数据免受恶意软件/入侵体的攻击。例如,在将AI模型转移到DP加速器105-107之前,可以在主机104处对AI模型的层的顺序和/或地址进行随机化。
图2是示出根据一些实施例的一个或多个主机与一个或多个数据处理加速器(DPA)之间的安全计算环境200的框图。在一个方面中,系统200提供在对DP加速器105-107进行或不进行硬件修改的情况下在主机104与DP加速器105-107之间进行模糊通信的保护方案。主机或服务器104可以被描述为具有一个或多个要防止被入侵的层的系统,层诸如为用户应用程序205、运行时库206、驱动器209、操作系统211、管理程序212和硬件213(例如,安全模块(可信平台模块(TPM))/中央处理单元(CPU))。在应用程序205和运行时库206之下,可以安装一个或多个驱动器209以接口到硬件213和/或DP加速器105-107。
驱动器209可以包括AI模型随机化模块220,用于在将AI模型转移到DP加速器105之前随机化AI模型的一个或多个方面。例如,AI模型随机化模块220可以在将AI模型转移到DP加速器105-107之前随机化AI模型的层。对层进行随机化可以包括对层的有序列表进行混洗(shuffling)。通常,层根据它们的顺序被转移。随机化层的顺序使得层以随机顺序被转移。层的随机化转移可显著增加攻击者获得和重构模型的难度。
在另一示例中,AI模型随机化模块220可个别地随机化AI模型的每个层的存储器地址。存储器地址可以是当在执行AI模型期间检索层时DP加速器要访问的层的基地址。层的存储器地址引用或指向其中DP加速器内的、加载和执行相应的层的存储器位置。因此,在转移AI模型之前,将与每个层相关联的地址随机化,而不是将AI模型直接复制到DP加速器105-107的存储器。在另一示例中,AI模型随机化模块220可随机化AI模型的至少一些层的顺序且随机化其它层的存储器地址。
硬件213可以包括具有一个或多个处理器的处理系统207。硬件213还可以包括储存设备204。储存设备204可以包括一个或多个人工智能(AI)模型202和一个或多个内核203。内核203可以包括签名内核、启用水印的内核、加密和/或解密内核等。签名内核在被执行时可以根据内核的编程对任何输入进行数字签名。启用水印的内核可以从数据对象(例如,AI模型或其它数据对象)提取水印。启用水印的内核还可以将水印植入AI模型、推断输出或其它数据对象中。水印内核(例如,继承水印的内核)可以从另一个数据对象继承水印,并将该水印植入不同的对象,例如推断输出或AI模型。如这里所使用的,水印是与AI模型或由AI模型生成的推断相关联的识别符、并且可以被植入到AI模型或由AI模型生成的推断中。例如,可以在一个或多个权重变量或偏置变量中植入水印。替代地,可创建一个或多个节点(例如,人工智能模型未使用或不太可能使用的伪节点)来植入或存储水印。
主机104通常是CPU系统,其可以控制和管理主机104和/或DP加速器105-107上的作业的执行。为了保护或模糊DP加速器105-107和主机104之间的通信信道215,可能需要不同的组件来保护主机系统中易受到数据入侵或攻击的不同层。例如,可信执行环境(TEE)可以保护用户应用程序205层和运行时库206层免受数据入侵。
根据一些实施例,系统200包括主机系统104和DP加速器105-107。尽管只描述了三个,但是系统200可以包括任何数量的DP加速器。DP加速器可包括
Figure BDA0002833535970000081
芯片组或另一AI芯片组,诸如可执行人工智能(AI)密集型计算任务的图形处理单元(GPU)。在一个实施例中,主机系统104包括具有一个或多个CPU的硬件213,该CPU配备有主机104内的安全模块(诸如可信平台模块(TPM))。TPM是端点设备上的专用芯片,其存储专用于主机系统的用于硬件认证的密码密钥(例如,RSA密码密钥)。每个TPM芯片可以包含一个或多个RSA密钥对(例如,公钥对和私钥对),其被称为签注密钥(EK)或签注凭证(EC),即根密钥。密钥对被保持在TPM芯片内部,并且不能被软件访问。然后,在执行固件和软件的关键部分之前,可以由EK或EC对它们进行哈希计算,以保护系统免于被未授权的固件和软件修改。因此,主机104上的TPM芯片可以用作安全启动的信任根。
TPM芯片还可以在工作内核空间中保护驱动器209和操作系统(OS)211以与DP加速器105-107通信。这里,驱动器209由DP加速器供应商提供,并且可以用作用户应用程序205的驱动器209,以控制主机和DP加速器之间的通信信道215。因为TPM芯片和安全启动处理器在其内核空间中保护OS 211和驱动器209,所以TPM还有效地保护驱动器209和OS 211。
由于用于DP加速器105-107的通信信道215可以由OS 211和驱动器209专门使用,因此通信信道215可以通过TPM芯片来保护。在一个方面,通信信道215包括外围组件互连(PCI)或外围组件互连快速(PCIE)信道。在一个方面,通信信道215是模糊的通信信道。
在一个实施例中,用户应用程序205只能从运行时库206预定的内核集中调用内核。在另一个方面,用户应用程序205和运行时库206通过无侧信道算法而加固,以防止侧信道攻击,诸如基于高速缓存的侧信道攻击。侧信道攻击是基于从计算机系统的实现中获得的信息的任何攻击,而不是所实现的算法本身中的弱点(例如,密码分析和软件缺陷)。侧信道攻击的示例包括高速缓存攻击,其是基于攻击者监视虚拟化环境或云环境中的共享物理系统的高速缓存的能力的攻击。加固可以包括掩蔽高速缓存,其中由算法生成的输出将被放置在高速缓存上。接下来,当完成执行用户应用程序时,用户应用程序终止其执行并从TEE退出。
在一个实施例中,用户应用程序205和/或运行时库206被托管在主机104的操作系统环境(例如,执行环境201)中。在一个实施例中,内核203的集包括混淆内核算法。在一个实施例中,混淆内核算法可以是对称或非对称算法。对称混淆算法可以使用相同的算法来混淆和去混淆数据通信。非对称混淆算法需要一对算法,其中该对中的第一个算法被用于混淆,而该对中的第二个算法被用于去混淆,反之亦然。在另一个实施例中,非对称混淆算法包括用于混淆数据集的单个混淆算法,但是该数据集并不会被去混淆,例如,不存在对应的去混淆算法。
混淆是指通过使通信消息难以理解,通常使用混淆和不明确的语言来模糊通信的预期含义。模糊数据对于逆向工程来说更加困难和复杂。可以在传送数据之前应用混淆算法来模糊(加密/解密)数据通信,从而减少窃听的机会。在一个实施例中,混淆算法可以进一步包括加密方案,以进一步加密混淆数据,以附加地保护层。与可以用于计算密集的加密不同,混淆算法可以简化计算。
一些混淆技术可以包括但不限于字母混淆、名称混淆、数据混淆、控制流混淆等。字母混淆是用特定的替代字母替换数据中的一个或多个字母,从而使数据无意义的过程。字母混淆的例子包括字母旋转函数,其中每个字母沿着字母表的预定数量的位置变换或者旋转。另一个例子是基于特定图案重新排序或搅乱字母。名称混淆是用无意义字符串替换特定目标字符串的过程。控制流混淆可以用添加代码(插入死代码、插入不受控制的跳转、插入替代结构)来改变程序中的控制流的顺序,以隐藏算法/AI模型的真实控制流。
运行时库206可提供混淆内核算法以混淆主机104与DP加速器105-107之间的数据通信。在一个实施例中,混淆可以与密码方案配对。在另一个实施例中,混淆是唯一的保护方案,并且对于DP加速器而言,基于密码的硬件变得不必要。
图3示出了根据一个实施例的与DP加速器通信的主机的示例。系统300可以包括与DP加速器105通信的主机104的EE 201。主机104的EE 201可以包括用户应用程序205、运行时库206和永久或非永久储存设备(未示出)。一个或多个AI模型随机化模块220以及一个或多个AI模型321A可以存储在永久或非永久储存设备中。主机104的用户应用程序205可以与DP加速器105建立模糊的通信信道215。可以为主机104建立模糊通信信道215,以将经训练的AI模型传输到DP加速器105。
在一个实施例中,当用户应用程序205启动对要在DP加速器105上执行的AI模型(例如,AI模型321A)的训练或推断时,驱动器209的AI模型随机化模块220可以在将AI模型321A转移到DP加速器105之前对AI模型321A进行随机化。例如,AI模型321A可以被随机化以产生要被转移到DP加速器105的随机化的AI模型321B,其中随机化的AI模型321B将被存储在DP存储器305中。尽管AI模型321A可以被随机化,但是运行时库206的内核可以被更新以跟踪改变,使得仍然可以按预期执行AI模型。
图4示出了在将AI模型转移到DP加速器之前对其进行层随机化的系统400。如图4所示,主机104可以包括要被转移到DP加速器105并且在DP加速器105上运行的AI模型402A。为了保护AI模型在AI模型402A的转移期间免受攻击,层随机化模块405可以在将AI模型402A转移到DP加速器105之前对AI模型402A的层进行随机化。AI模型402A可以与如关于图3所描述的AI模型321A相同、类似或包括在AI模型321A中。层随机化模块405可与如关于图3所描述的随机化模块220相同、类似或包括在随机化模块220中。
在一个实施例中,AI模型402A的每个层可以与内核203的内核函数相关联。如图所示,内核203可以包括内核函数A、内核函数B和内核函数C。AI模型402A可以包括层容器1、层容器2和层容器3。在进行随机化之前,层容器1包括层1,层容器2包括层2,并且层容器3包括层3。层容器1至层容器3中的每一个与内核函数之一相关联。应当注意,内核203可以包括任意数量的内核函数,并且AI模型402A可以包括任意数量的层(例如,输入层、输出层以及其间的一个或多个中间层)。在一些实施例中,AI模型可包括数百或数千层。在由层随机化模块405进行随机化之前,可以按照在执行AI模型402A期间由内核203使用各层的顺序来组织AI模型402A的各层。
如图所示,内核函数A可以与层1相关联,内核函数B可以与层2相关联,且内核函数C可以与层3相关联。层随机化模块405可对AI模型402A的层进行随机化。内核函数可以保持与AI模型的相同层相关联,但是指向层列表中的不同层容器。可以更新每个内核函数的内核指针,以在层顺序被随机化后识别出同一层。因此,在随机化之后,内核函数A可以指向列表中的包括层1的层容器3,内核函数B可以指向列表中的包括层2的层容器1,且内核函数C可以指向列表中的包括层3的层容器2。然后,随机化的AI模型402B可以被转移到DP加速器105。
在一个实施例中,层随机化模块405可对AI模型402A的层执行混洗函数以随机化所述层。可以使用基于硬件的随机数生成器来生成种子编号。层随机化模块405可以使用种子编号来执行混洗函数。
图5是示出用于对AI模型的层进行随机化的示例性方法的流程图。过程500可由可包括软件、硬件或其组合的处理逻辑来执行。例如,过程500可以由如图4所示的主机系统的驱动器的层随机化模块405执行。参照图5,在框502处,处理逻辑识别以第一有序列表组织的AI模型的层。第一有序列表可以指示AI模型的层的原始和预期顺序。在一个实施例中,主机上的内核函数可以与每个层容器相关联。例如,一组内核函数中的每一个可以根据需要来调用关联的层容器中的AI模型的一个或多个层以适当执行AI模型。内核函数可以按照使用由第一有序列表定义的层的顺序执行。每个内核可以使用识别关联层的指针来识别该层。
在框504处,处理逻辑通过将第一有序列表重新组织成第二有序列表来使层随机化。在一个实施例中,可以对第一有序列表执行混洗函数以使列表随机化。混洗函数可以接收用于随机化的种子编号。在一个实施例中,种子编号可以是硬件或软件生成的随机数。种子编号和混洗函数可以由主机用来识别更新的列表和第二有序列表中的每个层的位置。然后,处理逻辑可以更新用于每个内核的指针,以指向第二有序列表中的正确位置,从而可以由内核函数执行层的正确执行顺序。
在框506处,处理逻辑按照由第二有序列表定义的顺序将AI模型的层转移到数据处理加速器。因此,可以以随机化的顺序将AI模型从主机转移到DP加速器。
图6示出在将AI模型转移到DP加速器之前对AI模型进行地址随机化的系统600。如图6所示,主机104可以包括要被转移到DP加速器105并且在DP加速器105上运行的AI模型602A。为了在转移AI模型602A期间(例如,在PCIe总线上)保护AI模型免受攻击,地址随机化模块605可在转移AI模型602A之前个别地随机化AI模型602A的存储器地址。注意,被随机化的地址是要存储在DP加速器上的每个层的存储器地址位置。AI模型602A可以与如关于图3所描述的AI模型321A相同、类似或包括在AI模型321A中。地址随机化模块605可与如关于图3所描述的随机化模块220相同、类似或包含在随机化模块220中。
在一个实施例中,AI模型602A可包括多个层,每个层与要存储在DP加速器上的存储器地址相关联。存储器地址可以是层的基地址。地址随机化模块605可随机化与AI模型的层相关联的地址。主机上的内核和/或内核函数可以用每个层的新存储器地址来更新。因此,内核仍然可以使用更新的地址来引用每个层,并根据AI模型602A将层进行排队。所得到的随机化的AI模型602B随后可以被转移到DP加速器105。
例如,如图6所示,AI模型602A可以包括存储器地址1处的层1、存储器地址2处的层2以及存储器地址3处的层3。然后,地址随机化模块605可以随机化每个层的地址。在地址随机化之后,层1则可以在存储器地址X处,层2可以在地址Y处,并且层3可以在地址Z处。除了随机化的地址之外,地址随机化模块605可以在一个或多个内核函数处更新层的地址,以便在执行AI模型602A期间可以对层进行排队。
图7是示出用于随机化AI模型的存储器地址的示例性方法的流程图。过程700可由可包括软件、硬件或其组合的处理逻辑来执行。例如,过程700可以由如图6所示的主机系统的驱动器的地址随机化模块605执行。参照图7,在框702处,处理逻辑识别AI模型的层,每个层与存储器地址相关联。例如,存储器地址可以是存储在DP加速器上的层的基地址(或要发送到DP加速器的二进制文件内的地址),当需要由DP加速器执行AI模型时,内核和/或内核函数使用该地址来访问所述层。主机的内核函数可以使用AI模型的层的基地址来对AI模型的层进行排队。在另一个实施例中,内核函数可以被发送到DP加速器,并且DP加速器处的内核函数可以基于映射表根据随机化的基地址访问AI模型的层。映射表可以是从主机发送到DP加速器的元数据。
在框704处,处理逻辑将与AI模型的每个层相关联的存储器地址随机化。对基地址进行随机化可包括识别DP加速器的存储器空间,以及随机地选择存储器空间内的存储器地址以与AI模型的每个层相关联。主机的内核函数可以用随机化的存储器地址来更新。在框706处,处理逻辑将具有随机化的存储器地址的AI模型的层转移到数据处理加速器以运行AI模型。
图8示出了将AI模型转移到DP加速器之前用于AI模型的层和地址随机化的系统800。如图8所示,主机104可以包括要转移到DP加速器105并在DP加速器105上运行的AI模型802A。为了保护AI模型在AI模型802A的转移期间免受攻击,混合随机化模块805可以在将AI模型802A转移到DP加速器105之前随机化AI模型802A的一部分层的顺序(如图4和图5中所描述的)并且随机化AI模型802A的另一部分层的地址(如图6和图7中所描述的)。在一个实施例中,可以在地址上对每个层进行随机化,可以在层顺序上对每个层进行随机化,或者可以在地址和层两者上对每个层进行随机化。AI模型802A可以与如关于图3所描述的AI模型321A相同、类似或包括在AI模型321A中。混合随机化模块805可与如关于图3所描述的随机化模块220相同、类似或包含在随机化模块220中。
在一个实施例中,AI模型802A可包括多个层,每个层与存储器地址相关联。存储器地址可以是层在DP加速器处的基地址或层在二进制文件内的基地址。另外,AI模型402A的每个层可以与内核203的内核函数相关联。混合随机化模块805可随机化与AI模型802A的层的子集相关联的顺序。子集可包括层的一部分或可包括所有层。混合随机化模块805还可随机化AI模型802A的层的第二子集的存储器地址。第二子集可包括层的一部分或可包括所有层。在层上进行随机化的子集可以与在存储器地址上进行随机化的第二子集重叠。例如,对于每个层,混合随机化模块805可以选择是随机化该层的层顺序,还是随机化该层的存储器地址,亦或随机化层顺序和存储器地址两者。一旦确定根据层顺序、根据存储器地址或者根据两者来随机化每个层,则可以执行随机化。主机上的内核和/或内核函数可以用每个层的新存储器地址和对应于层的新顺序的新指针来更新。因此,内核仍然可以使用更新的地址来引用每个层,并根据AI模型802A对层进行排队。然后,所得到的随机化的AI模型802B可以被转移到DP加速器105。
例如,如图8所示,在随机化之前,内核函数A可以与AI模型802A的层1相关联,并且层1可以位于地址1处。内核函数B可以与AI模型802A的层2相关联,并且层2可以位于地址2处。内核函数C可以与AI模型802A的层3相关联,并且层3可以位于地址3处。然后,混合随机化模块805可以对AI模型802A的层顺序和存储器地址进行随机化。所得到的随机化的AI模型802B可以包括更新的层顺序以及一个或多个更新的层地址。如图8所示,当前层顺序为:层1,然后是层3,然后是层2,并且层1的地址已被随机化为地址X,层3的地址已被随机化为地址Y,并且层2的地址已被随机化为地址Z。因此,在该示例中,层2和层3被选择进行层顺序随机化和地址随机化两者,而层1被选择进行地址随机化。如图所示,可以用内核函数与层的适当关联来更新内核203。然后,随机化的AI模型802B可以以任何随机方式被转移到DP加速器105,该随机方式指示哪个基地址与相应的层相关联。在另一实施例中,根据与每个层相关联的随机化的基地址将随机化的AI模型802B发送到DP加速器105。如果在AI模型的转移期间(例如,经由PCIe总线)通过通信信道攻击获得模型,则组合随机化可以增加重构模型的难度。
图9是示出用于AI模型的层和存储器地址的混合随机化的示例性方法的流程图。过程900可由可包括软件、硬件或其组合的处理逻辑来执行。例如,过程900可以由如图8所示的主机系统的驱动器的混合随机化模块805执行。参照图9,在框902处,处理逻辑识别AI模型的以第一有序列表组织的层,其中每个层与存储器地址相关联。在一个实施例中,每个层的存储器地址是AI模型的基地址,其由主机的内核函数用来访问所述层。
在框904处,处理逻辑对AI模型的层的第一子集的顺序进行随机化,以生成AI模型的层的第二有序列表。在一个实施例中,可以对第一有序列表执行混洗函数以使列表随机化。混洗函数可以是确定性的或基于熵的。例如,混洗函数还可以接收用于随机化的种子编号。如果提供相同的列表和种子编号,则所得到的随机化列表可以是相同的(即,确定性随机化)。种子编号和混洗函数可以由主机内核用来识别更新的列表和第二有序列表中的每个层的位置。然后,处理逻辑可以更新用于每个内核函数的指针,以指向第二有序列表中的正确位置,从而可以由内核函数执行层的正确执行顺序。
在框906处,处理逻辑对与AI模型的层的第二子集的每个层相关联的存储器地址进行随机化。对基地址进行随机化可包括识别DP加速器的存储器空间以及随机地选择存储器空间内的存储器地址以与AI模型的每个层相关联。主机的内核函数也可以用随机化的存储器地址来更新。
在框908处,处理逻辑基于第二有序列表和随机化的存储器地址将AI模型的层转移到数据处理加速器。在一个实施例中,第二有序列表定义AI模型的层被转移到DP加速器的顺序。在一个实施例中,随机化的AI模型的地址然后被用于DP加速器的存储器中的随机化的AI模型802B。
已经在对计算机存储器内的数据位的操作的算法和符号表示方面呈现了前面详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用来最有效地将他们工作的实质传达给本领域的其他技术人员的方式。算法在这里通常被认为是导致期望结果的自一致的操作序列。这些操作是那些需要物理量的物理操纵的操作。
然而,应该记住,所有这些和类似的术语应与适当的物理量相关联,并且仅仅是施加于这些量的方便标签。除非与上面的讨论显而易见地另有具体说明,否则应当理解,在整个说明书中,利用诸如所附权利要求中所阐述的术语的讨论是指计算机系统或类似的电子计算设备的动作和过程,所述计算机系统或类似的电子计算设备操纵表示为计算机系统的寄存器和存储器内的物理(电子)量的数据并将这种数据转换为类似地表示为计算机系统存储器或寄存器或其它这样的信息存储设备、传输或显示设备内的物理量的其它数据。
本公开的实施例还涉及用于执行本文中的操作的装置。这种计算机程序存储在非暂时性计算机可读介质中。机器可读介质包括用于以机器(例如,计算机)可读的形式存储信息的任何机制。例如,机器可读(例如,计算机可读)介质包括机器(例如,计算机)可读存储介质(例如,只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘储存介质、光储存介质、闪存设备)。
在前面的图中描述的过程或方法可以由包括硬件(例如,电路、专用逻辑等)、软件(例如,实现在非暂时性计算机可读介质上)或两者的组合的处理逻辑来执行。尽管以上根据一些顺序操作描述了过程或方法,但是应当理解,所描述的一些操作可以以不同的顺序执行。此外,一些操作可以并行而不是顺序地执行。
本公开的实施例并未参考任何特定编程语言来描述。应了解,可使用各种编程语言来实施如本文所描述的本公开的实施例的教导。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在前面的说明书中,已经参考本公开的具体示例性实施例描述了本公开的实施例。显而易见的,在不背离如所附权利要求书中所阐述的本公开的更宽泛的精神和范围的情况下,可以对其进行各种修改。因此,说明书和附图被认为是说明性的,而不是限制性的。

Claims (21)

1.一种转移人工智能模型的方法,包括:
识别人工智能模型的多个层,其中,所述多个层中的每个层与存储器地址相关联;
由处理设备对与所述多个层中的每个层相关联的所述存储器地址进行随机化;以及
将具有随机化的存储器地址的所述多个层转移到数据处理加速器以执行所述人工智能模型,其中,所述人工智能模型的每个层的存储器地址引用所述数据处理加速器内的特定存储器位置,所述人工智能模型的相应层将被加载到所述特定存储器位置处。
2.如权利要求1所述的方法,其中,对所述存储器地址进行随机化包括:
确定所述数据处理加速器的地址空间;以及
随机地将所述地址空间的地址分配给所述人工智能模型的每个层。
3.如权利要求1所述的方法,还包括:
将所述随机化的存储器地址转发到所述数据处理加速器,以用于所述数据处理加速器重构所述人工智能模型。
4.如权利要求1所述的方法,其中,与每个层相关联的所述存储器地址是相应层的基地址。
5.如权利要求4所述的方法,其中,内核函数与所述多个层中的每个层相关联。
6.如权利要求5所述的方法,其中,每个内核函数使用所述基地址来从与所述内核函数相关联的相应层检索权重。
7.如权利要求1所述的方法,其中,所述数据处理加速器包括人工智能加速器。
8.一种转移人工智能模型的系统,所述系统包括:
存储器;以及
处理设备,可操作地联接到所述存储器,所述处理设备执行以下操作:
识别人工智能模型的多个层,其中,所述多个层中的每个层与存储器地址相关联;
对与所述多个层中的每个层相关联的所述存储器地址进行随机化;以及
将具有随机化的存储器地址的所述多个层转移到数据处理加速器以执行所述人工智能模型,其中,所述人工智能模型的每个层的存储器地址引用所述数据处理加速器内的特定存储器位置,所述人工智能模型的相应层将被加载到所述特定存储器位置处。
9.如权利要求8所述的系统,其中,为了对所述存储器地址进行随机化,所述处理设备执行以下操作:
确定所述数据处理加速器的地址空间;以及
随机地将所述地址空间的地址分配给所述人工智能模型的每个层。
10.如权利要求9所述的系统,其中,所述处理设备还执行以下操作:
将所述随机化的存储器地址转发到所述数据处理加速器,以用于所述数据处理加速器重构所述人工智能模型。
11.如权利要求9所述的系统,其中,与每个层相关联的所述存储器地址是相应层的基地址。
12.如权利要求11所述的系统,其中,内核函数与所述多个层中的每个层相关联。
13.如权利要求12所述的系统,其中,每个内核函数使用所述基地址来从与所述内核函数相关联的相应层检索权重。
14.如权利要求8所述的系统,其中,所述数据处理加速器包括人工智能加速器。
15.一种存储指令的非暂时性机器可读存储介质,所述指令在由处理设备执行时执行包括以下步骤的操作:
识别人工智能模型的多个层,所述多个层中的每个层与存储器地址相关联;
由所述处理设备对与所述多个层中的每个层相关联的存储器地址进行随机化;以及
将具有随机化的存储器地址的所述多个层转移到数据处理加速器以执行所述人工智能模型,其中,所述人工智能模型的每个层的存储器地址引用所述数据处理加速器内的特定存储器位置,所述人工智能模型的相应层将被加载到所述特定存储器位置处。
16.如权利要求15所述的非暂时性机器可读存储介质,其中,对所述存储器地址进行随机化包括:
确定所述数据处理加速器的地址空间;以及
随机地将所述地址空间的地址分配给所述模型的每个层。
17.如权利要求16所述的非暂时性机器可读存储介质,所述操作还包括:
将所述随机化的存储器地址转发到所述数据处理加速器,以用于所述数据处理加速器重构所述人工智能模型。
18.如权利要求16所述的非暂时性机器可读存储介质,其中,与每个层相关联的所述存储器地址是用于相应层的基地址。
19.如权利要求18所述的非暂时性机器可读存储介质,其中,内核函数与所述多个层中的每个层相关联。
20.如权利要求19所述的非暂时性机器可读存储介质,其中,每个内核函数使用所述基地址来从与所述内核函数相关联的相应层检索权重。
21.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-7中任一项所述的方法。
CN202011464041.8A 2020-06-12 2020-12-14 利用地址随机化的ai模型转移方法 Active CN113807531B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/900,597 US11409653B2 (en) 2020-06-12 2020-06-12 Method for AI model transferring with address randomization
US16/900,597 2020-06-12

Publications (2)

Publication Number Publication Date
CN113807531A true CN113807531A (zh) 2021-12-17
CN113807531B CN113807531B (zh) 2023-08-22

Family

ID=78825469

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011464041.8A Active CN113807531B (zh) 2020-06-12 2020-12-14 利用地址随机化的ai模型转移方法

Country Status (2)

Country Link
US (1) US11409653B2 (zh)
CN (1) CN113807531B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113672529A (zh) * 2020-05-15 2021-11-19 恩智浦美国有限公司 用于直接存储器访问的系统和方法
US11657332B2 (en) 2020-06-12 2023-05-23 Baidu Usa Llc Method for AI model transferring with layer randomization
US11556859B2 (en) * 2020-06-12 2023-01-17 Baidu Usa Llc Method for al model transferring with layer and memory randomization
US11640326B2 (en) * 2021-06-11 2023-05-02 Intel Corporation Ensemble based cluster tuning and framework fallback for AI accelerators using telemetry, compute, and temperature metrics

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080256290A1 (en) * 2007-04-11 2008-10-16 Honeywell International Inc. Method and system of randomizing memory locations
CN108885604A (zh) * 2015-12-08 2018-11-23 乌尔特拉塔有限责任公司 存储器结构软件实现方案
US20190138908A1 (en) * 2018-12-28 2019-05-09 Francesc Guim Bernat Artificial intelligence inference architecture with hardware acceleration
US20190213330A1 (en) * 2019-03-15 2019-07-11 Intel Corporation Active side-channel attack prevention
CN110928694A (zh) * 2020-01-23 2020-03-27 飞诺门阵(北京)科技有限公司 一种计算机系统
US20200169383A1 (en) * 2019-06-29 2020-05-28 Intel Corporation Cryptographic computing engine for memory load and store units of a microarchitecture pipeline

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10515216B2 (en) * 2017-06-30 2019-12-24 Paypal, Inc. Memory layout based monitoring
US20210081353A1 (en) * 2019-09-17 2021-03-18 Micron Technology, Inc. Accelerator chip connecting a system on a chip and a memory chip
US11099899B2 (en) * 2019-11-14 2021-08-24 Sas Institute Inc. Atomic pool manager for a data pool using a memory slot for storing a data object
KR102421488B1 (ko) * 2020-04-08 2022-07-15 엘지전자 주식회사 복수개의 출력 레이어를 이용한 인공 지능 장치 및 방법

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080256290A1 (en) * 2007-04-11 2008-10-16 Honeywell International Inc. Method and system of randomizing memory locations
CN108885604A (zh) * 2015-12-08 2018-11-23 乌尔特拉塔有限责任公司 存储器结构软件实现方案
US20190138908A1 (en) * 2018-12-28 2019-05-09 Francesc Guim Bernat Artificial intelligence inference architecture with hardware acceleration
US20190213330A1 (en) * 2019-03-15 2019-07-11 Intel Corporation Active side-channel attack prevention
US20200169383A1 (en) * 2019-06-29 2020-05-28 Intel Corporation Cryptographic computing engine for memory load and store units of a microarchitecture pipeline
CN110928694A (zh) * 2020-01-23 2020-03-27 飞诺门阵(北京)科技有限公司 一种计算机系统

Also Published As

Publication number Publication date
CN113807531B (zh) 2023-08-22
US11409653B2 (en) 2022-08-09
US20210390047A1 (en) 2021-12-16

Similar Documents

Publication Publication Date Title
CN113807531B (zh) 利用地址随机化的ai模型转移方法
US20240126930A1 (en) Secure Collaboration Between Processors And Processing Accelerators In Enclaves
CN112650985A (zh) 使用隐式数据签名人工智能水印的方法和系统
CN113807532B (zh) 利用层随机化的ai模型转移方法
CN113806286B (zh) 在基于策略划分的数据处理集群中进行数据保护的方法
CN113627586A (zh) 用于数据处理加速器的模糊ai模型训练方法
CN112650982B (zh) 数据处理加速器及由数据处理加速器执行的计算机实现的方法
US11775347B2 (en) Method for implanting a watermark in a trained artificial intelligence model for a data processing accelerator
CN112838926A (zh) 加速器之间的密钥共享方法
CN112650988A (zh) 使用内核加密数据的方法和系统
CN113807533B (zh) 利用层和存储器随机化的ai模型转移方法
US11709712B2 (en) Method and system for artificial intelligence model training using a watermark-enabled kernel for a data processing accelerator
US20210109791A1 (en) Method and system for making an artifical intelligence inference using a watermark-enabled kernel for a data processing accelerator
CN112650986A (zh) 用于数据处理加速器的水印单元
CN112650987B (zh) 使用内核签名人工智能水印的方法和系统
CN112839021B (zh) 带交换机的加速器之间的密钥共享方法
CN113806758B (zh) 基于认证的数据处理集群中的数据保护方法
CN113806287B (zh) 基于动态划分的数据处理集群的数据保护方法
CN112650981B (zh) 数据处理加速器及由数据处理加速器执行的计算机实现的方法
CN112838924B (zh) 虚拟信道中加速器之间的密钥共享方法
CN112650990A (zh) 使用查询来签名人工智能水印的方法和系统
CN112650991A (zh) 使用内核签名输出的方法和系统
CN112650989A (zh) 使用命令加密数据的方法和系统
CN112650987A (zh) 使用内核签名人工智能水印的方法和系统
CN112838923A (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