CN110704850B - 人工智能ai模型的运行方法和装置 - Google Patents
人工智能ai模型的运行方法和装置 Download PDFInfo
- Publication number
- CN110704850B CN110704850B CN201910826760.0A CN201910826760A CN110704850B CN 110704850 B CN110704850 B CN 110704850B CN 201910826760 A CN201910826760 A CN 201910826760A CN 110704850 B CN110704850 B CN 110704850B
- Authority
- CN
- China
- Prior art keywords
- matrix
- model
- encryption
- model parameter
- tee
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Bioethics (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供了一种人工智能AI模型的运行方法和装置,可以应用于人工智能领域。该方法包括:在丰富执行环境REE中,获取AI模型的输入数据以及AI模型的第二模型参数,第二模型参数是在第一可信执行环境TEE中,通过对AI模型的第一模型参数进行加密得到的;在REE中,基于AI模型以及第二模型参数,对输入数据进行数据处理,得到输出数据;在第二TEE中,对输出数据进行解密,得到解密后的输出数据。有利于提高AI模型的运行速度。避免了传统的AI模型运行方式中,AI模型的全部运算均占用TEE中的计算资源,导致TEE中计算资源供不应求,从而降低了AI模型的运行速度。
Description
技术领域
本申请涉及信息技术领域,并且更具体地,涉及人工智能模型的运行方法和装置。
背景技术
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式作出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。智能机器可以应用于各个领域,例如,自然语言处理、计算机视觉、决策与推理、人机交互、推荐与搜索等。
通常,上述智能机器的设计原理与实现方法都依赖于AI模型。随着AI技术的发展,AI模型对于企业的价值越来越大,可以视为一种企业资产。越来越多的公司在AI模型的训练过程中投入大量的人力、物力资源,以期望获得性能较好的AI模型。例如,企业会从其他企业收集、购买用于训练AI模型的训练数据,以提升AI模型的训练规模,优化AI模型的训练参数。因此,对AI模型的保护成为了备受关注的问题之一。
目前,为了保证AI模型的安全性,会直接在可信执行环境(Trusted ExecutionEnvironment,TEE)中运行AI模型,如此,可以通过TEE为AI模型提供一个安全的运行环境。然而,AI模型在运行期间,往往需要占用大量的计算资源和存储资源来对输入数据进行数据处理,而TEE能为AI模型提供的计算资源和存储资源非常有限,在一定程度上会限制AI模型的对输入数据进行数据处理的速度。
发明内容
本申请提供了一种人工智能AI模型的运行方法和装置,以提高AI模型对输入数据进行数据处理的速度。
第一方面,提供了一种人工智能AI模型的运行方法,包括:在丰富执行环境REE中,获取所述AI模型的输入数据以及所述AI模型的第二模型参数,所述第二模型参数是在第一可信执行环境TEE中,通过对所述AI模型的第一模型参数进行加密得到的;在所述REE中,基于所述AI模型以及所述第二模型参数,对所述输入数据进行所述数据处理,得到输出数据;在第二TEE中,对所述输出数据进行解密,得到解密后的输出数据。
上述第一TEE与第二TEE可以是相同的可信执行环境,上述第一TEE与第二TEE还可以是不同的可信执行环境。
在本申请实施例中,通过在REE中基于AI模型和第二模型参数,对输入数据进行数据处理,以得到输出数据;并在第二TEE中对所述输出数据进行解密,得到解密后的输出数据,有利于提高AI模型的运行速度。避免了传统的AI模型运行方式中,AI模型的全部运算均占用TEE中的计算资源,导致TEE中计算资源供不应求,从而降低了AI模型的运行速度。
可选地,上述输入数据是在TEE中获取并基于对用户数据进行加密得到的,其中TEE可以是上文中的第一TEE,还可以是上文中的第二TEE,还可以是电子设备中的其他安全执行环境。
在本申请实施例中,通过TEE获取用户数据,并在TEE中对输入数据进行加密,有利于提高用户数据的安全性。
在一种可能的实现方式中,所述第一模型参数与所述第二模型参数为对所述输入数据进行线性运算使用的模型参数。
通常,AI模型中的线性运算需要占用大量的计算资源,而非线性运算占用的计算资源相对较少,因此,在本申请实施例中,仅对线性运算使用的第一模型参数进行加密,以便后续在REE中基于加密后的第一模型参数(即第二模型参数)进行线性运算,而对于非线性运算而言,依然在TEE中基于非线性运算的原始模型参数执行非线性运算。有利于减少对模型参数进行加密而引入的额外的计算量。
在一种可能的实现方式中,所述方法还包括:在所述第一TEE中,根据第一加密矩阵β',通过公式W′=W+β'对所述第一模型参数W进行加密,得到所述第二模型参数W′,其中,所述第一模型参数W为n×m的矩阵,所述第一加密矩阵β'为n×m的矩阵,n和m为正整数。
在本申请实施例中,基于第一加密矩阵β',使用矩阵加法对所述第一模型参数W进行加密,得到所述第二模型参数W′,借用矩阵加法运算占用时间较短的特性,以减少对第一模型参数进行加密所占用的时间。
可选地,所述第一加密矩阵β'=(γ',c1γ',…,cm-1γ'),c1,…,cm-1为标量,γ'为n×1的列向量。
在本申请实施例中,上述第一加密矩阵β'满足从第二列开始的每个列向量都分别等同于第一个列向量的标量乘积。这样,在多次调用第一模型参数时,可以通过调整c1,…,cm-1的值而改变第一加密矩阵,以在多次调用第一模型参数时配置不同的第一加密矩阵。避免了采用随机的方式构造多个第一加密矩阵β'时引入较大的计算量。
在一种可能的实现方式中,所述方法还包括:在所述第一TEE中,根据第二加密矩阵α和第三加密矩阵β,通过公式Q'=Wα+β对所述第一模型参数W进行加密,得到所述第二模型参数Q',其中,所述第一模型参数W为n×m的矩阵,所述第二加密矩阵α为m×m的可逆矩阵,所述第三加密矩阵β为n×m的矩阵,所述第二模型参数Q'为n×m的矩阵,n和m为正整数。
在本申请实施例中,基于第二加密矩阵α以及第三加密矩阵β,利用矩阵加法以及矩阵乘法结合的方式,对所述第一模型参数W进行加密,得到所述第二模型参数W′,有利于提高第一模型参数的安全性。
可选地,所述第三加密矩阵β=(γ,b1γ,…,bm-1γ),b1,…,bm-1为标量,γ为n×1的列向量。
在本申请实施例中,上述第三加密矩阵β'满足从第二列开始的每个列向量都分别等同于第一个列向量的标量乘积。这样,在多次调用第一模型参数时,可以通过调整b1,…,bm-1的值而改变第三加密矩阵,以在多次调用第一模型参数时配置不同的第三加密矩阵。避免了采用随机的方式构造多个第三加密矩阵β'时引入较大的计算量。
可选地,所述第二加密矩阵α为对角矩阵。在本申请实施例中,通过将第二加密矩阵α配置为对角阵,有利于减少矩阵乘法引入的计算量。
第二方面,提供一种人工智能AI模型的运行装置,包括:获取模块,用于在丰富执行环境REE中,获取所述AI模型的输入数据以及所述AI模型的第二模型参数,所述第二模型参数是在第一可信执行环境TEE中,通过对所述AI模型的第一模型参数进行加密得到的;处理模块,用于在所述REE中,基于所述AI模型以及所述第二模型参数,对所述输入数据进行所述数据处理,得到输出数据;所述处理模块,还用于在第二TEE中,对所述输出数据进行解密,得到解密后的输出数据。
上述第一TEE与第二TEE可以是相同的可信执行环境,上述第一TEE与第二TEE还可以是不同的可信执行环境。
在本申请实施例中,通过在REE中基于AI模型和第二模型参数,对输入数据进行数据处理,以得到输出数据;并在第二TEE中对所述输出数据进行解密,得到解密后的输出数据,有利于提高AI模型的运行速度。避免了传统的AI模型运行方式中,AI模型的全部运算均占用TEE中的计算资源,导致TEE中计算资源供不应求,从而降低了AI模型的运行速度。
可选地,上述输入数据是在TEE中获取并基于对用户数据进行加密得到的,其中TEE可以是上文中的第一TEE,还可以是上文中的第二TEE,还可以是电子设备中的其他安全执行环境。
在本申请实施例中,通过TEE获取用户数据,并在TEE中对输入数据进行加密,有利于提高用户数据的安全性。
在一种可能的实现方式中,所述第一模型参数与所述第二模型参数为对所述输入数据进行线性运算使用的模型参数。
通常,AI模型中的线性运算需要占用大量的计算资源,而非线性运算占用的计算资源相对较少,因此,在本申请实施例中,仅对线性运算使用的第一模型参数进行加密,以便后续在REE中基于加密后的第一模型参数(即第二模型参数)进行线性运算,而对于非线性运算而言,依然在TEE中基于非线性运算的原始模型参数执行非线性运算。有利于减少对模型参数进行加密而引入的额外的计算量。
在一种可能的实现方式中,所述处理模块,还用于:在所述第一TEE中,根据第一加密矩阵β',通过公式W′=W+β'对所述第一模型参数W进行加密,得到所述第二模型参数W′,其中,所述第一模型参数W为n×m的矩阵,所述第一加密矩阵β'为n×m的矩阵,n和m为正整数。
在本申请实施例中,基于第一加密矩阵β',使用矩阵加法对所述第一模型参数W进行加密,得到所述第二模型参数W′,借用矩阵加法运算占用时间较短的特性,以减少对第一模型参数进行加密所占用的时间。
可选地,所述第一加密矩阵β'=(γ',c1γ',…,cm-1γ'),c1,…,cm-1为标量,γ'为n×1的列向量。
在本申请实施例中,上述第一加密矩阵β'满足从第二列开始的每个列向量都分别等同于第一个列向量的标量乘积。这样,在多次调用第一模型参数时,可以通过调整c1,…,cm-1的值而改变第一加密矩阵,以在多次调用第一模型参数时配置不同的第一加密矩阵。避免了采用随机的方式构造多个第一加密矩阵β'时引入较大的计算量。
在一种可能的实现方式中,所述处理模块,还用于:在所述第一TEE中,根据第二加密矩阵α和第三加密矩阵β,通过公式Q'=Qα+β对所述第一模型参数Q进行加密,得到所述第二模型参数Q',其中,所述第一模型参数Q为n×m的矩阵,所述第二加密矩阵α为m×m的可逆矩阵,所述第三加密矩阵β为n×m的矩阵,所述第二模型参数Q'为m×m的矩阵,n和m为正整数。
在本申请实施例中,基于第二加密矩阵α以及第三加密矩阵β,利用矩阵加法以及矩阵乘法结合的方式,对所述第一模型参数W进行加密,得到所述第二模型参数W′,有利于提高第一模型参数的安全性。
可选地,所述第三加密矩阵β=(γ,b1γ,…,bm-1γ),b1,…,bm-1为标量,γ为n×1的列向量。
在本申请实施例中,上述第三加密矩阵β'满足从第二列开始的每个列向量都分别等同于第一个列向量的标量乘积。这样,在多次调用第一模型参数时,可以通过调整b1,…,bm-1的值而改变第三加密矩阵,以在多次调用第一模型参数时配置不同的第三加密矩阵。避免了采用随机的方式构造多个第三加密矩阵β'时引入较大的计算量。
可选地,所述第二加密矩阵α为对角矩阵。在本申请实施例中,通过将第二加密矩阵α配置为对角阵,有利于减少矩阵乘法引入的计算量。
第三方面,提供一种电子设备,包括输入输出接口、处理器和存储器。该处理器用于控制输入输出接口收发信息,该存储器用于存储计算机程序,该处理器用于从存储器中调用并运行该计算机程序,使得该电子设备执行上述第一方面中的方法。
可选地,上述电子设备可以是终端设备/服务器,也可以是终端设备/服务器内的芯片。
可选地,上述存储器可以位于处理器内部,例如,可以是处理器中的高速缓冲存储器(cache)。上述存储器还可以位于处理器外部,从而独立于处理器,例如,电子设备的内部存储器(memory)。
第四方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述各方面中的方法。
需要说明的是,上述计算机程序代码可以全部或者部分存储在第一存储介质上,其中第一存储介质可以与处理器封装在一起的,也可以与处理器单独封装,本申请实施例对此不作具体限定。
第五方面,提供了一种计算机可读介质,所述计算机可读介质存储有程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述各方面中的方法。
附图说明
图1示出了适用于本申请实施例的适用的终端设备的示意图。
图2示出了适用于本申请实施例的适用的电子设备的示意图。
图3是本申请实施例的AI模型的运行方法的示意性流程图。
图4是本申请实施例的AI模型的运行方法的示意性流程图。
图5是本申请实施例的一种AI模型的运行装置的示意图。
图6是本申请实施例的电子设备的示意性框图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
为了便于理解,先结合图1介绍本申请实施例中涉及的“AI模型”以及“AI模型参数”。
如前文所述,AI模型可以视为智能机器的核心,基于AI模型的类型不同,使得智能机器可以应用于各个领域,例如,自然语言处理,计算机视觉,决策与推理,人机交互,推荐与搜索等。目前,比较流行的AI模型包括卷积神经网络(convolutional neural network,CNN)、线性回归模型等。
模型参数,AI模型中对输入数据进行处理时使用的模型参数。例如,AI模型为卷积神经网络时,模型参数可以为一下参数中的至少一种,对输入数据进行卷积操作使用的权重,对输入数据进行量化操作使用的量化权重,对输入数据进行池化操作使用的池化系数等。
下文以卷积神经网络为例介绍AI模型和模型参数。需要说明的是,本申请实施例的方法还可以应用于其他AI模型。图1是卷积神经网络架构的示意图。图1所示的CNN 100包括输入层110,卷积层/池化层120,其中池化层为可选的,以及神经网络层130。
如图1所示卷积层/池化层120可以包括如示例121-126层,在一种实现中,121层为卷积层,122层为池化层,123层为卷积层,124层为池化层,125为卷积层,126为池化层;在另一种实现方式中,121、122为卷积层,123为池化层,124、125为卷积层,126为池化层。即卷积层的输出可以作为随后的池化层的输入,也可以作为另一个卷积层的输入以继续进行卷积操作。
卷积层/池化层120中的卷积层可以包括很多个卷积算子,卷积算子也称为核,其在图像处理中的作用相当于一个从输入图像矩阵中提取特定信息的过滤器,卷积算子本质上可以是一个权重矩阵,这个权重矩阵通常被预先定义,在对图像进行卷积操作的过程中,权重矩阵通常在输入图像上沿着水平方向一个像素接着一个像素(或两个像素接着两个像素……这取决于步长stride的取值)的进行处理,从而完成从图像中提取特定特征的工作。该权重矩阵的大小应该与图像的大小相关,需要注意的是,权重矩阵的纵深维度(depthdimension)和输入图像的纵深维度是相同的,在进行卷积运算的过程中,权重矩阵会延伸到输入图像的整个深度。因此,和一个单一的权重矩阵进行卷积会产生一个单一纵深维度的卷积化输出,但是大多数情况下不使用单一权重矩阵,而是应用维度相同的多个权重矩阵。每个权重矩阵的输出被堆叠起来形成卷积图像的纵深维度。不同的权重矩阵可以用来提取图像中不同的特征,例如一个权重矩阵用来提取图像边缘信息,另一个权重矩阵用来提取图像的特定颜色,又一个权重矩阵用来对图像中不需要的噪点进行模糊化……该多个权重矩阵维度相同,经过该多个维度相同的权重矩阵提取后的特征图维度也相同,再将提取到的多个维度相同的特征图合并形成卷积运算的输出。
这些权重矩阵中的权重值在实际应用中需要经过大量的训练得到,通过训练得到的权重值形成的各个权重矩阵可以从输入图像中提取信息,从而帮助卷积神经网络100进行正确的预测。
当卷积神经网络100有多个卷积层的时候,初始的卷积层往往提取较多的一般特征,该一般特征也可以称之为低级别的特征;随着卷积神经网络100深度的加深,越往后的卷积层(例如126)提取到的特征越来越复杂,比如高级别的语义之类的特征,语义越高的特征越适用于待解决的问题。例如,121和126所示的层为的卷积层时,上述初始卷积层可以是121,上述越往后的卷积层可以是126。
卷积层/池化层120中的池化层由于常常需要减少训练参数的数量,因此卷积层之后常常需要周期性的引入池化层,即如图1中120所示例的121-126各层,可以是一层卷积层后面跟一层池化层,也可以是在多层卷积层后接一层或多层池化层。在图像处理过程中,池化层的唯一目的就是减少图像的空间大小。池化层可以包括平均池化算子和/或最大池化算子,以用于对输入图像进行采样得到较小尺寸的图像。平均池化算子可以在特定范围内对图像中的像素值进行计算产生平均值。最大池化算子可以在特定范围内取该范围内值最大的像素作为最大池化的结果。另外,就像卷积层中用权重矩阵的大小应该与图像大小相关一样,池化层中的运算符也应该与图像的大小相关。通过池化层处理后输出的图像尺寸可以小于输入池化层的图像的尺寸,池化层输出的图像中每个像素点表示输入池化层的图像的对应子区域的平均值或最大值。
神经网络层130,在经过卷积层/池化层120的处理后,卷积神经网络100还不足以输出所需要的输出信息。因为如前所述,卷积层/池化层120只会提取特征,并减少输入数据的维度。然而,为了生成最终的输出数据(所需要的类信息或别的相关信息),卷积神经网络100需要利用神经网络层130来生成一个或者一组所需要的类的数量的输出。因此,在神经网络层130中可以包括多层隐含层(如图1所示的131、132至13n)以及输出层140,该多层隐含层中所包含的模型参数可以根据具体的任务类型的相关训练数据进行预先训练得到,例如该任务类型可以包括图像识别,图像分类,图像超分辨率重建等等。
在神经网络层130中的多层隐含层之后,也就是整个卷积神经网络100的最后层为输出层140,该输出层140具有类似分类交叉熵的损失函数,具体用于计算预测误差,一旦整个卷积神经网络100的前向传播(如图1由110至140的传播为前向传播)完成,反向传播(如图1由140至110的传播为反向传播)就会开始更新前面提到的各层的权重值以及偏差,以减少卷积神经网络100的损失及卷积神经网络100通过输出层输出的结果和理想结果之间的误差。
需要说明的是,如图1所示的卷积神经网络100仅作为一种卷积神经网络的示例,在具体的应用中,卷积神经网络还可以以其他网络模型的形式存在,例如,多个卷积层/池化层并行,将分别提取的特征均输入给全神经网络层130进行处理。本申请实施例的方法还可以应用于其他结构的CNN。
在图1所示的CNN中,模型参数可以包括上文提到的权重或模型参数,即包括在输入层、卷积层、池化层、神经网络层中的一层或多层中,对数据进行数据处理的过程中使用的权重或模型参数。可选地,在本申请实施例中模型参数可以以权重矩阵的方式体现。
可选地,在一些实现方式中,由于上述卷积层中的卷积操作,池化层中的池化操作以及神经网络层中的运算可以看做是线性计算,因此,为了提高CNN模型的描述能力,可以在上述CNN网络中引入激活函数(activation function),以在CNN中增加非线性运算,因此,基于激活函数的运算又可以称为“非线性运算”。例如,若在层121与层122中进行上述线性运算,则可以在层121与层122之间插入激活函数,即层121的输出作为激活函数的输入,该激活函数的输出作为层122的输入。应理解,上述激活函数还可以设置在隐含层1 131以及隐含层2 132之间,本申请实施例对激活函数的布置方式不做具体限定。
可选地,上述激活函数可以为sigmoid函数、双曲正切(tanh)函数、修正线性单元(Rectified Linear Unit,ReLU)函数及其改进型中的任意一种,或者未来与上述激活函数有相似左右的其他函数。其中,ReLU函数的改进型可以包括带泄露的修正线性单元(Leaky-ReLU)、参数化修正线性单元(Parametric-ReLU,P-ReLU)、随机修正线性单元(RandomizedReLU,R-ReLU)等。
需要说明的是,在下文涉及的“AI模型”仅仅指AI模型中的数据处理过程,并不包含数据处理过程中使用的模型参数。例如,AI模型仅仅指图1所示的CNN中各层需要执行的卷积运算、池化运算等,并不包括卷积运算、池化运算中涉及的权重。
下文结合图2介绍本申请实施例适用的电子设备。图2所示的电子设备200包括TEE210、丰富执行环境(Rich Execution Environment,REE)220、存储空间230以及处理器240。
TEE 210旨在保证加载到该环境内部的代码和数据的安全性、机密性以及完整性。TEE提供一个隔离的执行环境,提供的安全特征包含:隔离执行、可信应用的完整性、可信数据的机密性、安全存储等。
上述电子设备可以是终端设备,这样TEE可以是终端设备的主处理器上的一个安全区域。例如,可以是TrustZone。可选地,终端设备可以是手机(mobile phone)、平板电脑(pad)、电脑、虚拟现实(virtual reality,VR)终端设备、增强现实(augmented reality,AR)终端设备、工业控制(industrial control)中的终端设备、无人驾驶(self driving)中的终端设备(例如,无人驾驶汽车)、智能电网(smart grid)中的终端设备(例如机顶盒、智能电视等)、智慧城市(smart city)中的终端设备、智慧家庭(smart home)中的终端设备等等。
上述电子设备还可以是服务器,例如云计算架构中的服务器,这样,TEE可以是服务器的主处理器上的一个安全区域。例如,可以基于英特尔软件保护扩展(Intel SoftwareGuard Extensions,SGX)技术实现。
REE 220,旨在提供一种开放的系统运行环境。可以理解为包括电子设备中除上述TEE之外的其他系统运行环境,与TEE是并行的两种系统运行环境。由于REE是一种开放的系统运行环境,因此,REE的安全性能低于TEE的安全性能。但是,由于REE是一种开放的系统运行环境,通常需要运行大量的应用程序,因此REE中配置的计算资源以及存储资源会多于TEE中配置的计算资源以及存储资源。
存储空间230,用于存储数据。例如,TEE中需要使用的数据可以存储在存储空间230中,REE中需要使用的数据也可以存储在存储空间230中。又例如,当REE中运行的程序需要使用TEE中的数据时,TEE也可以将数据存储在存储空间中,这样REE可以直接从存储空间230中读取该数据,此时,存储空间230可以作为TEE和REE的共享存储空间。
处理器240,用于在TEE或REE中执行代码,以实现特定的功能。在一种可能的实现方式中,处理器240可以执行上文AI模型对应的代码,以实现数据处理的功能。在另一种可能的实现方式中,处理单元240还可以对存储空间230进行访问,以将数据处理后的输出数据存储至存储空间230中。
可选地,上述处理器240可以是电子设备中的具有处理功能的处理单元。例如,可以是电子设备中的中央处理器(Central Processing Unit,CPU),还可以是电子设备中的图形处理器(Graphics Processing Unit,GPU)。上述AI模型为神经网络时,上述处理器还可以是神经网络处理器(Neural-network Processing Unit,NPU)。
需要说明的是,在本申请实施例中,上述处理器240在执行AI模型对应的代码的过程中,可以在TEE和REE之间切换,具体的切换流程与传统的TEE和REE之间切换的方式相似。例如,处理器240可以通过执行专用指令来从TEE切换至REE,或者从REE切换至TEE。其中,上文中AI模型的代码中,每段代码对应的执行环境(TEE或者REE)可以是预先配置的。
还需要说明的是,上述TEE和REE可以理解为电子设备中的两类执行环境,本申请实施例对这两类执行环境中的环境数量不做限定,例如,上述TEE实际上可以包括两个独立的可信执行环境,即第一TEE和第二TEE。
另一方面,TEE和REE仅仅为了区别上述两类执行环境的名称,随着技术的发展,TEE和REE还可以替换为具有相同功能的其他名称。
随着人工智能和深度学习的发展,越来越多的企业在电子设备(例如图2所示的电子设备)上使用了AI技术,即通过AI模型(例如图1所示的CNN)实现特定的功能,例如,指纹解锁,图像识别,语义识别等。通常,企业为了提高AI模型的竞争力,会投入大量的物力、人力去收集、购买数据,以提升AI模型的训练规模,优化AI模型的训练参数等,以求增强、优化AI模型。由此,可以看出AI模型已经成为企业的一种资产,然而,目前对AI模型的保护并没有得到足够的重视。
例如,上述电子设备为终端设备时,越来越多的终端设备通过运行AI模型以实现拍照情景识别,智能终端助手,智能输入等的核心功能,使终端设备可以快速、准确识别用户意图,从而为用户提供最贴心的服务。为了使得终端设备在上述各种场景下可以快速响应用户的需求,需要在终端设备的REE中运行实现上述功能的AI模型。然而,对于终端设备而言,REE是一个安全性不高的非可信执行环境,经常会受到破坏终端设备安全性的攻击,导致REE中运行的AI模型无法得到保护。
又例如,上述电子设备为云架构中的服务器时,应用服务提供商通常会将AI模型部署在云架构的服务器中,以借用云平台为用于提供基于AI模型的应用功能。由于AI模型是直接部署到云架构的服务器的REE中,那么云服务提供商(如阿里云、亚马逊等)可以直接从REE中获取AI模型,导致AI模型可能被泄露。
目前,为了提高AI模型的安全性,可以将AI模型直接部署在TEE中,如此可以借用TEE本身的安全性对AI模型进行保护。然而,运行AI模型需要占用大量的计算资源以及存储资源,而TEE中配置的计算资源以及存储资源又较少,有可能影响AI模型的运行速度。
因此,为了避免上述问题,本申请实施例提供了一种人工智能AI模型的运行方法,旨在TEE中,将AI模型中的部分运算所需的模型参数进行加密,然后,在REE中,基于加密后的模型参数对输入数据进行数据处理,得到输出数据,最终在TEE中,对输出数据进行解密,得到解密后的输出数据,该解密后的输出数据,可以视为等于基于AI模型的原始模型参数对输入数据进行数据处理得到的输出数据。如此,一方面,本申请的方案通过在TEE中对AI模型的模型参数进行加密,以提高AI模型的安全性。另一方面,将AI模型中基于至少部分模型参数的数据处理过程搬到REE中执行,基于REE中充足的计算资源以及存储资源,有利于提高运行AI模型的运行速度。
下文结合图3介绍本申请实施例的AI模型的运行方法,图3是本申请实施例的AI模型的运行方法的示意性流程图。应理解,图3所示的方法可以由电子设备中的处理器执行,例如图2所示的处理器240。图3所示的方法包括步骤310至步骤330。
310,在丰富执行环境REE中,获取所述AI模型的输入数据以及所述AI模型的第二模型参数,所述第二模型参数是在第一TEE中,通过对所述AI模型的第一模型参数进行加密得到的。
上述输入数据为需要通过AI模型进行处理的数据,具体地,可以是整个AI模型的输入数据,例如可以是图1所示的输入数据。此时,输入数据可以是基于采集的用户数据得到的,或者是用户数据本身。上述输入数据还可以是AI模型中某一层的输入数据,此时,输入数据可以是AI模型中其它层的输出数据。例如,输入数据可以是隐含层2 132的输入数据,则该输入数据同时也是隐含层1 131的输出数据。
在输入数据是基于采集的用户数据得到的情况下,为了提高用户数据的安全性,可以在TEE(例如,上文中的第一TEE或下文中的第二TEE)中采集的用户数据,并在TEE中对用户数据进行加密得到上述输入数据,并将输入数据存储至共享存储空间中,以便执行上述步骤310时,可以从共享存储空间中获取上述输入数据。这种对用户数据加密的方案可以应用于对用户数据的安全性要求较高的场景,例如,指纹解锁的场景中,上述AI模型为用于识别指纹,此时,需要获取的用户数据为用户的指纹特征,则需要对用户数据的安全性。
可选地,上文中对用户数据进行加密得到输入数据的过程,可以通过基于预设的加密函数对用户数据进行加密来实现。假设用户数据为q×m输入矩阵,输入矩阵中的元素用xi表示,按照公式xi'=xi+Δxi,对输入矩阵中的元素xi进行加密,得到加密后的矩阵元素xi',其中,Δxi为随机数,q、m以及i为正整数,且i=1,……,q×m。当然,上述加密函数的实现有很多种,例如,加密函数还可以是公式xi'=xi×Δxi。本申请实施例对加密函数的具体形式此不做限定。
在输入数据为AI模型中某一层的输入数据的情况下,为了提高AI模型的安全性,防止攻击者基于AI模型中的某一层的输入数据和该层的输出数据,推算出该层数据处理过程使用的模型参数,可以在TEE中对该层的输入数据进行加密,然后在REE中基于加密后的输入数据进行数据处理,具体的加密方式可以与上文中对用户数据进行加密的过程相似。当然,在追求AI模型的运行速度的场景下,也可以不进行对输入数据进行加密的过程。
上述输入数据是用户数据本身的方案可以应用于对于安全性不高的场景,此时,用户数据通常是直接在REE中采集的。例如,用户数据为用户的照片,AI模型用于人脸识别时,由于照片是直接在REE中采集的,因此,可以直接将照片作为输入数据。
下文结合步骤311介绍生成第二模型参数的方法。需要说明的是,步骤311可以在上述获取输入数据之前执行,也可以在获取输入数据之后执行,又或者可以与获取输入数据同时执行。本申请实施例对此不做限定。
311,在第一TEE中,对AI模型的第一模型参数进行加密,得到第二模型参数。其中,第一模型参数为在AI模型中对输入数据进行数据处理所使用的原始的模型参数,或者说,第一模型参数为AI模型的真实的模型参数。其中,关于模型参数的定义可以参见上文图1中的介绍,为了简洁,在此不再赘述。
可选地,上述数据处理可以为线性运算。例如,数据处理可以是图1所示的AI模型中,在卷积层中对使用权重矩阵对输入数据进行的卷积操作。又例如,线性运算可以是图1所示的AI模型中,在池化层中对使用权重矩阵对输入数据进行的池化操作。
对第一模型参数进行加密的方式有很多种,例如,可以在第一模型参数的基础上除以一个随机数,得到第二模型参数。又例如,可以在第一模型参数的基础上乘以一个随机数,得到第二模型参数。本申请实施例对此不做具体限定。
下文主要介绍本申请实施例的两种加密方式:加密方式一以及加密方式二,其中,加密方式一中介绍的加密方式所需的计算量相对较少,可以适用需要快速完成加密过程的场景。加密方式二中介绍的加密方式的安全性能较高,可以适用于对模型参数的安全性要求较高的场景。
加密方式一,通过矩阵加法的方式为第一模型参数进行加密。即,步骤230包括:在TEE中,根据第一加密矩阵β',通过公式W′=W+β'对第一模型参数W进行加密,得到第二模型参数W′,其中,第一模型参数W为n×m的矩阵,第一加密矩阵β'为n×m的矩阵,第二模型参数W'为n×m的矩阵,n和m为正整数。
需要说明的是,在加密方式一中,输入数据x'为q×n的矩阵,q为正整数。
上述第一加密矩阵可以是预先配置的,还可以是在预先配置的多个加密矩阵中随机选择的,还可以是随机生成的加密矩阵,本申请实施例对此不做限定。其中,从多个加密矩阵中随机选择的方案以及随机生成的方案,为第一模型参数的加密过程引入了不确定性,有利于增加攻击者破解加密矩阵的难度,提高AI模型的安全性。
如上文所述,TEE中的计算资源和存储资源有限,为了减少构造第一加密矩阵β'时引入的计算量,可以将第一加密矩阵β'配置为β'=(γ',c1γ',…,cm-1γ'),c1,…,cm-1为标量,γ'为n×1的列向量。即,第一加密矩阵β'满足从第二列开始的每个列向量都分别等同于第一个列向量的标量乘积。这样,在多次调用第一模型参数时,可以通过调整c1,…,cm-1的值而改变第一加密矩阵,以在多次调用第一模型参数时配置不同的第一加密矩阵。避免了采用随机的方式构造第一加密矩阵β'时引入较大的计算量。
在本申请实施例中,通过矩阵加法的方式为第一模型参数进行加密,而矩阵加法所需的计算量较少,有利于减少为第一模型参数进行加密而引入的计算量。
加密方式二,通过矩阵加法以及矩阵乘法结合的方式为第一模型参数进行加密。即,步骤230包括:在TEE中,根据第二加密矩阵α和第三加密矩阵β,通过公式Q'=Wα+β对第一模型参数W进行加密,得到所述第二模型参数Q',其中,第一模型参数W为n×m的矩阵,第二加密矩阵α为m×m的可逆矩阵,第三加密矩阵β为n×m的矩阵,第二模型参数Q'为m×m的矩阵,n和m为正整数。
需要说明的是,在加密方式二中,上述输入数据x为q×n的矩阵,其中q为正整数。
上述第二加密矩阵、第三加密矩阵可以是预先配置的,还可以是在预先配置的多个加密矩阵中随机选择的,还可以是随机生成的加密矩阵,本申请实施例对此不做限定。其中,从多个加密矩阵中随机选择的方案以及随机生成的方案,为第一模型参数的加密过程引入了不确定性,有利于增加攻击者破解加密矩阵的难度,提高AI模型的安全性。
如上文所述,TEE中的计算资源和存储资源有限,为了减少构造第三加密矩阵β时引入的计算量,可以将第三加密矩阵β配置为β=(γ,b1γ,…,bm-1γ),b1,…,bm-1为标量,γ为n×1的列向量。即,第三加密矩阵β满足从第二列开始的每个列向量都分别等同于第一个列向量的标量乘积。这样,在多次调用第一模型参数时,可以通过调整b1,…,bm-1的值而改变第三加密矩阵,以在多次调用第一模型参数时配置不同的第三加密矩阵。避免了采用随机的方式构造第三加密矩阵β时引入较大的计算量。
在本申请实施例中,还可以从第二加密矩阵的构造入手,来减少为第一模型参数进行加密占用的时间。可选地,第二加密矩阵α为对角矩阵,这样,第二加密矩阵α中位于主对角线之外的元素全部为0,有利于简化矩阵乘法的复杂度,以减少上述加密过程中矩阵乘法占用的时间。
需要说明的是,单位矩阵作为一种特殊的对角矩阵,当第一加密矩阵α为单位矩阵时,加密方式二实际上与加密方式一相同。
在本申请实施例中,通过矩阵加法以及矩阵乘法结合的方式为第一模型参数进行加密,有利于减少为第一模型参数进行加密而引入的计算量。
320,在REE中,基于AI模型以及第二模型参数,对所述输入数据进行所述数据处理,得到输出数据。
上述基于AI模型以及第二模型参数,对所述输入数据进行所述数据处理,可以理解为,将AI模型的模型参数由第一模型参数替换为第二模型参数,再对输入数据进行数据处理。例如,上述AI模型包括线性运算时,基于第一模型参数W,对输入数据x进行数据处理,得到的真实的输出数据y可以通过公式y=x·W表示,则基于第二模型参数W′,对输入数据x进行数据处理,得到输出数据y'可以通过公式y'=x·W'表示。
需要说明的是,上述步骤310至步骤320仅示出了对AI模型中的某一次数据处理的过程。为了便于区分,下文使用术语“第一数据处理”表示某一次数据处理的过程。通常AI模型会包含多个数据处理的过程,上述第一数据处理过程可以是这多次数据处理过程中的任一次,例如,第一数据处理的过程可以是AI模型中的最后一次数据处理过程,此时,对上述输出数据进行解密得到的输出数据为AI模型的最终输出数据。当然,上述第一数据处理的过程还可以应用于多个数据处理的过程中的部分或全部数据处理过程,部分或全部数据处理过程中的每个数据处理过程与上述第一数据处理过程类似,具体实现方式可以参见下文的具体例子。
可选地,AI模型中如果有多个数据处理过程的模型参数需要加密时,可以将多个数据处理过程的模型参数一起加密,供REE中执行数据处理过程使用,即参数模型的加密过程是在运行AI模型过程中执行的。也可以对多个数据处理过程中的每个数据处理过程所使用的参数模型进行单独加密,即需要在REE中,执行某一次数据处理过程时,在执行该次数据过程之前,对该次数据过程使用的模型参数进行加密,即参数模型的加密过程是在AI模型的运行过程中执行的。具体过程可以参见下文中具体例子的介绍。
另一方面,在对AI模型包括的多个数据处理过程中的模型参数进行加密时,可以采用相同的加密矩阵;或者针对多个数据处理过程中的任意两次数据处理过程使用的模型参数,使用不同的加密矩阵;又或者针对多个数据处理过程中的每次数据处理过程使用的模型参数,使用不同的加密矩阵,本申请实施例对此不做限定。
可选地,图3所示的方法还可以包括:330,在第二TEE中,对输出数据进行解密,得到解密后的输出数据。其中,第二TEE可以与第一TEE是相同的TEE,上述第二TEE还可以与第一TEE是不同的TEE,本申请对此不做具体限定。
由于上述输出数据是基于第二模型参数进行数据处理得到的结果(例如,输出数据y'),而实际需要的是基于第一模型参数进行数据处理得到的结果(例如,输出数据y),因此,需要对步骤320中得到的输出数据进行解密,以得到基于第一模型参数进行数据处理得到的结果。
上述解密的方式与步骤310和步骤311中使用的加密方式是对应的。应理解,解密后的输出数据可以完全等于上述实际需要的输出数据。然而,由于解密算法的精度影响,解密后的输出数据有可能与上述实际需要的输出数据之间存在一定误差,此时,解密后的输出数据与上述实际需要的输出数据相似。
如上文所述解密的方式与上述加密的方式是对应的,加密的方式有很多种,那么对应的解密的方式也有很多种,例如,加密方式为在第一模型参数的基础上除以一个随机数,得到第二模型参数,相应地,解密方式为在步骤320的输出数据的基础上乘以该随机数后,再乘以输入数据。本申请实施例对具体的解密方式不做限定。
下文主要针对上文中的加密方式一以及加密方式二,介绍本申请实施例提供的解密方式一和解密方式二。其中,解密方式一与加密方式一对应,解密方式二与加密方式二对应。
解密方式一,上述步骤330包括:在第二TEE中,通过公式y=y'-x'·β',对输出数据y'进行解密,得到解密后的输出数据y,其中,第一解密矩阵β'与上述第一加密矩阵β'相同,输入数据x'即为步骤310中的输入数据。
需要说明的是,上述第一解密矩阵和第一加密矩阵可以是同一个矩阵。上述术语第一解密矩阵以及第一加密矩阵仅仅是为了体现该矩阵在不同的数据处理过程中的作用。如此,上述第一加密矩阵确定后,第一解密矩阵相应地也就确定了。
可选地,为了进一步减少解密过程占用的时间,当上述输入数据x'输入电子设备,且确定了第一加密矩阵β'后,可以在TEE中预先计算x'·β',如此,在TEE获取到REE中的输出数据y'后,可以直接进行矩阵减法。也就是说,上述预先计算x'·β'是在REE输出输出数据y'之前进行的。当然,也可以不预先计算x'·β',即在获取到REE中的输出数据y'后,再计算x'·β',本申请实施例对此不做限定。
在本申请实施例中,采取加密方式一与解密方式一结合的方式,对输入数据进行数据处理时,在TEE中进行矩阵乘法的时间复杂度较小,同时在一定程度上可以保证第一模型参数的安全性。
具体地,由于采用加密方式一与解密方式一结合的情况下,对输入数据进行数据处理的过程中,仅解密过程中的矩阵乘法是在TEE中执行的,因此,采用加密方式一与解密方式一结合的情况下涉及在TEE中执行的矩阵乘法的时间复杂度,可以近似为采用解密方式一涉及的在TEE中执行矩阵乘法的时间复杂度。其中,在解密过程中,需要计算第一解密矩阵β'与输入数据x'的矩阵乘法,且第一解密矩阵β'为n×m的矩阵,输入数据x'为q×n的矩阵,则解密过程中的矩阵乘法的时间复杂度为O(q×m),其中,O(·)表示矩阵乘法时间复杂度函数。
需要说明的是,由于矩阵加法占用的时间相对于矩阵乘法占用的时间通常较少,因此,上文采用矩阵乘法时间复杂度度量在TEE中对输入数据进行数据处理占用的时间,至于在TEE中对输入数据进行数据处理的过程中涉及的矩阵加法占用的时间可以忽略。
另一方面,在第一加密矩阵为随机确定时,且不考虑输入数据进行加密的情况下,第一加密矩阵β'中包含n×m个随机变量,那么求解出第一模型参数的值等价于根据n×m个等式,求解具有2(n×m)个未知数的方程组。也就是说,攻击者需要猜测第一加密矩阵β'中的(n+m)个随机变量的值,才能完全解出第一模型参数矩阵。由此可见,加密方式一有利于提高第一模型参数的安全性。
需要说明的是,上述2(n×m)个未知数包括第一模型参数W中(n×m)个未知数以及第一加密矩阵β'中包含的n×m个未知数。
解密方式二,上述步骤330包括:在第二TEE中,通过公式y=(y'-x·β)·α-1,对输出数据y'进行解密,得到解密后的输出数据y,其中,第二解密矩阵α-1为上述第二加密矩阵α的逆矩阵,第三解密矩阵β与上述第三加密矩阵β相同,输入数据x即为步骤310中的输入数据。
需要说明的是,上述第二解密矩阵和第二加密矩阵可以是同一个矩阵。上述术语第二解密矩阵以及第二加密矩阵仅仅是为了体现该矩阵在不同的数据处理过程中的作用。如此,上述第二加密矩阵确定后,第二解密矩阵相应地也就确定了。同理,第三解密矩阵和第三加密矩阵可以是同一个矩阵。上述术语第三解密矩阵以及第三加密矩阵仅仅是为了体现该矩阵在不同的数据处理过程中的作用。如此,上述第三加密矩阵确定后,第三解密矩阵相应地也就确定了。
可选地,公式y=(y'-x·β)·α-1可以变形为公式y=y'α-1-x·β·α-1。为了进一步减少解密过程占用的时间,当上述输入数据x输入电子设备,且确定了第二加密矩阵α以及第三加密矩阵β后,可以在TEE中预先计算x·β·α-1,如此,在TEE获取到REE中的输出数据y'后,可以直接进行矩阵减法。也就是说,上述预先计算x·β·α-1是在REE输出输出数据y'之前进行的。当然,也可以不预先计算x·β·α-1,即在获取到REE中的输出数据y'后,再计算x·β·α-1,本申请实施例对此不做限定。
在本申请实施例中,采取加密方式二与解密方式二结合的方式,对输入数据进行数据处理时,有利于提高第一模型参数的安全性,另一方面,可以使得在TEE中进行矩阵乘法的时间复杂度在可接受范围内。
具体地,在第二加密矩阵和第三加密矩阵为随机确定,且不考虑输入数据进行加密的情况下,第二加密矩阵α中包含(m×m)个随机变量,第三加密矩阵β中包含(n×m)个随机变量,那么求解出第一模型参数的值等价于根据n×m个等式,求解具有((m×m)+2(n×m))个未知数的二次非线性方程组。所以攻击者需要猜测((n×m)+(m×m))个随机变量的值才能完全解出第一模型参数矩阵。由此可见,加密方式二对于第一模型参数安全性的保护是非常有效的。
另一方面,由于采取加密方式二与解密方式二结合的方式,对输入数据进行数据处理的过程中,需要在TEE中计算第一模型参数W与第二加密矩阵α之间的矩阵乘法,其中,第一模型参数W为n×m的矩阵,第二加密矩阵α为m×p的矩阵,则在TEE中执行的矩阵乘法的时间复杂度为O(n×m),其中,O(·)表示矩阵乘法的时间复杂度函数。相应地,在解密过程中在TEE中需要执行的矩阵乘法为x·β·α-1,且输入数据x为q×n的矩阵,第三解密矩阵β为n×m的矩阵,第二解密矩阵α-1为m×m的矩阵,则这部分矩阵乘法的时间复杂度为O((q×m)·(m×m))。在解密过程中,还需要计算输出数据y'与第二解密矩阵α-1的矩阵乘法,其中,输出数据y'为q×m的矩阵,第二解密矩阵α-1为m×m的矩阵,则解密过程中过得矩阵乘法的时间复杂度为O(q×m),其中,O(·)表示矩阵乘法时间复杂度函数。综上,采取加密方式二与解密方式二结合的方式,在TEE中执行的矩阵乘法的时间复杂度为:O(n×m)+O((q×m)·(m×m))+O(q×m)。
需要说明的是,由于矩阵加法占用的时间通常较少,因此,上述对输入数据进行数据处理的过程中矩阵加法占用的时间可以忽略。
下文以AI模型为CNN为例介绍本申请实施例的方法。需要说明的是,下文的例子仅仅是为了便于读者理解,对本申请的范围不做限定。
图4是本申请实施例的AI模型的运行方法的示意性流程图。图4所示的方法包括步骤410至步骤480。需要说明的是,图4所示的方法以对CNN中相邻两层中的模型参数加密为例进行介绍。
假设第j层以及第j+1层为图1所示的CNN中任意相邻的两层,其中,第j层中的计算为线性计算,第j+1层的计算为基于激活函数的非线性计算。第j层的输入数据x为q×n的输入矩阵,第j层的第一模型参数W为n×n的矩阵,第二加密矩阵α为n×n的对角矩阵,第三加密矩阵β为n×p的矩阵,第二模型参数Q'为n×p的矩阵,n、q和p为正整数。
410,在TEE中,对第j层的输入数据x和第一模型参数W加密。
基于公式x'=x+Δx,对输入数据x加密,得到加密后的输入数据x',其中,Δx为q×m的随机矩阵。随机矩阵Δx中的元素为随机数。
可选地,对于不同的输入数据可以使用不同的随机矩阵进行加密,以提高输入数据的安全性。
基于公式Q'=Wα+β,对第一模型参数W进行加密,得到第二模型参数Q'。
420,在TEE中,将加密后的输入数据x'以及第二模型参数Q'存储至共享存储空间。
430,在REE中,从共享存储空间中读取加密后的输入数据x'以及第二模型参数Q'。
440,在REE中,基于加密后的输入数据x'以及第二模型参数Q',通过公式y'=x·Q',计算输出数据y',并将输出数据y'存储到共享存储空间中。
450,将输出数据y'读入TEE。
460,在TEE中,基于公式y=(y'-x·β)·α-1-Δx·W对输出数据y'进行解密,得到解密后的输出数据y,其中,解密后的输出数据y为希望得到的输出结果,即CNN模型中基于第一模型参数计算计算的矩阵乘法结果。
470,在TEE中,将解密后的输出数据y作为第j+1层中激活函数的输入,输入激活函数。
480,在TEE中,得到第j+1层激活函数的输出数据。
若第j+1为CNN中的最后一层,则上述激活函数的输出数据即为神经网络的最终输出数据。
若第j+2为CNN中位于j+1层之后的层,且j+2层中的数据处理过程需要在REE中执行,则可以将上述激活函数的输出数据作为j+2层的输入数据,并按照步骤410至480的顺序继续执行AI模型的运行过程。当然,步骤410至480中的参数需要替换为j+2层对应的模型参数,以及模型参数对应的加密矩阵,为了简介,在此不再赘述。
上文结合图1至图4介绍了本申请实施例的人工智能AI模型的运行方法,下文结合图5至图6介绍本申请实施例的装置。应理解,需要说明的是,图5至图6所示的装置可以实现上述方法中各个步骤,为了简洁,在此不再赘述。
图5是本申请实施例的一种人工智能AI模型的运行装置的示意图。图5所示的装置500包括:获取模块510和处理模块520。
获取模块510,用于在丰富执行环境REE中,获取AI模型的输入数据以及AI模型的第二模型参数,第二模型参数是在第一可信执行环境TEE中,通过对AI模型的第一模型参数进行加密得到的。
处理模块520,用于在REE中,基于AI模型以及获取模块510获取的第二模型参数,对输入数据进行数据处理,得到输出数据。
处理模块520,还用于在第二TEE中,对输出数据进行解密,得到解密后的输出数据。
可选地,在一种实施例中,所述第一模型参数与所述第二模型参数为对所述输入数据进行线性运算使用的模型参数。
可选地,在一种实施例中,所述处理模块,还用于:在所述第一TEE中,根据第一加密矩阵β',通过公式W′=W+β'对所述第一模型参数W进行加密,得到所述第二模型参数W′,其中,所述第一模型参数W为n×m的矩阵,所述第一加密矩阵β'为n×m的矩阵,n和m为正整数。
可选地,在一种实施例中,所述处理模块,还用于:在所述第一TEE中,根据第二加密矩阵α和第三加密矩阵β,通过公式Q'=Qα+β对所述第一模型参数Q进行加密,得到所述第二模型参数Q',其中,所述第一模型参数Q为n×m的矩阵,所述第二加密矩阵α为m×m的可逆矩阵,所述第三加密矩阵β为n×m的矩阵,所述第二模型参数Q'为m×m的矩阵,n和m为正整数。
可选地,在一种实施例中,所述第三加密矩阵β=(γ,b1γ,…,bm-1γ),b1,…,bm-1为标量,γ为n×1的列向量。
可选地,在一种实施例中,所述第二加密矩阵α为对角矩阵。
可选地,在一种实施例中,所述第一加密矩阵β'=(γ',c1γ',…,cm-1γ'),c1,…,cm-1为标量,γ'为n×1的列向量。
在可选的实施例中,所述获取模块510可以为输入输出接口630,所述处理单元520可以为处理器620,所述通信设备还可以包括存储器610,具体如图6所示。
图6是本申请实施例的电子设备的示意性框图。图6所示的电子设备600可以包括:存储器610、处理器620、以及输入输出接口630。其中,存储器610、处理器620,通信接口630通过内部连接通路相连,该存储器610用于存储指令,该处理器620用于执行该存储器620存储的指令,以控制输入/输出接口630接收/发送第二信道模型的至少部分参数。可选地,存储器610既可以和处理器620通过接口耦合,也可以和处理器620集成在一起。
需要说明的是,上述通信接口630使用例如但不限于收发器一类的收发装置,来实现通信设备600与其他设备或通信网络之间的通信。上述通信接口630还可以包括输入/输出接口(input/output interface)。
在实现过程中,上述方法的各步骤可以通过处理器620中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的方法可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器610,处理器620读取存储器610中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
应理解,本申请实施例中,该处理器可以为中央处理单元(central processingunit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
还应理解,本申请实施例中,该存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。处理器的一部分还可以包括非易失性随机存取存储器。例如,处理器还可以存储设备类型的信息。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (14)
1.一种人工智能AI模型的运行方法,其特征在于,包括:
在丰富执行环境REE中,获取所述AI模型的输入数据以及所述AI模型的第二模型参数,所述第二模型参数是在第一可信执行环境TEE中,通过对所述AI模型的第一模型参数采用矩阵加法或者矩阵加法结合乘法的方式进行加密得到的,所述第一模型参数与所述第二模型参数为对所述输入数据进行线性运算使用的模型参数;
在所述REE中,基于所述AI模型以及所述第二模型参数,对所述输入数据进行数据处理,得到输出数据;
在第二可信执行环境TEE中,对所述输出数据进行解密,得到解密后的输出数据。
2.如权利要求1所述的运行方法,其特征在于,所述运行方法还包括:
在所述第一可信执行环境TEE中,根据第一加密矩阵β',通过公式W′=W+β'对所述第一模型参数W进行加密,得到所述第二模型参数W′,其中,所述第一模型参数W为n×m的矩阵,所述第一加密矩阵β'为n×m的矩阵,n和m为正整数。
3.如权利要求1所述的运行方法,其特征在于,所述运行方法还包括:
在所述第一可信执行环境TEE中,根据第二加密矩阵α和第三加密矩阵β,通过公式Q'=Wα+β对所述第一模型参数W进行加密,得到所述第二模型参数Q',其中,所述第一模型参数W为n×m的矩阵,所述第二加密矩阵α为m×m的可逆矩阵,所述第三加密矩阵β为n×m的矩阵,所述第二模型参数Q'为n×m的矩阵,n和m为正整数。
4.如权利要求3所述的运行方法,其特征在于,所述第三加密矩阵β=(γ,b1γ,…,bm-1γ),b1,…,bm-1为标量,γ为n×1的列向量。
5.如权利要求3或4所述的运行方法,其特征在于,所述第二加密矩阵α为对角矩阵。
6.如权利要求2所述的运行方法,其特征在于,所述第一加密矩阵β'=(γ',c1γ',…,cm-1γ'),c1,…,cm-1为标量,γ'为n×1的列向量。
7.一种人工智能AI模型的运行装置,其特征在于,包括:
获取模块,用于在丰富执行环境REE中,获取所述AI模型的输入数据以及所述AI模型的第二模型参数,所述第二模型参数是在第一可信执行环境TEE中,通过对所述AI模型的第一模型参数采用矩阵加法或者矩阵加法结合乘法的方式进行加密得到的,所述第一模型参数与所述第二模型参数为对所述输入数据进行线性运算使用的模型参数;
处理模块,用于在所述REE中,基于所述AI模型以及所述第二模型参数,对所述输入数据进行数据处理,得到输出数据;
所述处理模块,用于在第二可信执行环境TEE中,对所述输出数据进行解密,得到解密后的输出数据。
8.如权利要求7所述的运行装置,其特征在于,所述处理模块,还用于:
在所述第一可信执行环境TEE中,根据第一加密矩阵β',通过公式W′=W+β'对所述第一模型参数W进行加密,得到所述第二模型参数W′,其中,所述第一模型参数W为n×m的矩阵,所述第一加密矩阵β'为n×m的矩阵,n和m为正整数。
9.如权利要求7所述的运行装置,其特征在于,所述处理模块,还用于:
在所述第一可信执行环境TEE中,根据第二加密矩阵α和第三加密矩阵β,通过公式Q'=Qα+β对所述第一模型参数Q进行加密,得到所述第二模型参数Q',其中,所述第一模型参数Q为n×m的矩阵,所述第二加密矩阵α为m×m的可逆矩阵,所述第三加密矩阵β为n×m的矩阵,所述第二模型参数Q'为m×m的矩阵,n和m为正整数。
10.如权利要求9所述的运行装置,其特征在于,所述第三加密矩阵β=(γ,b1γ,…,bm-1γ),b1,…,bm-1为标量,γ为n×1的列向量。
11.如权利要求9或10所述的运行装置,其特征在于,所述第二加密矩阵α为对角矩阵。
12.如权利要求8所述的运行装置,其特征在于,所述第一加密矩阵β'=(γ',c1γ',…,cm-1γ'),c1,…,cm-1为标量,γ'为n×1的列向量。
13.一种计算机可读介质,其特征在于,所述计算机可读介质存储有程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行如权利要求 1-6中任一项所述的运行方法。
14.一种电子设备,其特征在于,包括至少一个处理器和存储器,所述至少一个处理器与所述存储器耦合,用于读取并执行所述存储器中的指令,以执行如权利要求1-6中任一项所述的运行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910826760.0A CN110704850B (zh) | 2019-09-03 | 2019-09-03 | 人工智能ai模型的运行方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910826760.0A CN110704850B (zh) | 2019-09-03 | 2019-09-03 | 人工智能ai模型的运行方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110704850A CN110704850A (zh) | 2020-01-17 |
CN110704850B true CN110704850B (zh) | 2022-05-10 |
Family
ID=69193523
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910826760.0A Active CN110704850B (zh) | 2019-09-03 | 2019-09-03 | 人工智能ai模型的运行方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110704850B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111949986B (zh) * | 2020-02-19 | 2023-10-03 | 华控清交信息科技(北京)有限公司 | 业务处理方法、系统及存储介质 |
CN111949972B (zh) * | 2020-02-19 | 2023-10-03 | 华控清交信息科技(北京)有限公司 | 人工智能模型的验证方法、系统、设备及存储介质 |
CN113747462A (zh) * | 2020-05-30 | 2021-12-03 | 华为技术有限公司 | 一种信息处理方法及相关设备 |
CN113868662A (zh) * | 2020-06-30 | 2021-12-31 | 微软技术许可有限责任公司 | 机器学习网络的安全执行 |
US11588907B2 (en) | 2020-08-21 | 2023-02-21 | Huawei Technologies Co., Ltd. | System and methods for supporting artificial intelligence service in a network |
US11283609B2 (en) * | 2020-08-21 | 2022-03-22 | Huawei Technologies Co., Ltd. | Method and apparatus for supporting secure data routing |
CN114764501A (zh) * | 2021-01-15 | 2022-07-19 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置和系统 |
CN112766495A (zh) * | 2021-01-26 | 2021-05-07 | 支付宝(杭州)信息技术有限公司 | 一种基于混合环境的深度学习模型隐私保护方法及装置 |
US20230185919A1 (en) * | 2021-12-15 | 2023-06-15 | GM Global Technology Operations LLC | System and process using homomorphic encryption to secure neural network parameters for a motor vehicle |
CN114491657A (zh) * | 2021-12-24 | 2022-05-13 | 中国银联股份有限公司 | 一种模型保护方法、数据处理方法、装置、设备及介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102314580A (zh) * | 2011-09-20 | 2012-01-11 | 西安交通大学 | 一种基于向量和矩阵运算的支持计算的加密方法 |
CN105376057A (zh) * | 2015-11-13 | 2016-03-02 | 电子科技大学 | 一种云外包解大规模线性方程组的方法 |
CN106788980A (zh) * | 2017-01-16 | 2017-05-31 | 中国人民解放军国防科学技术大学 | 一种面向云计算的矩阵乘法外包过程中安全加密方法 |
CN108520181A (zh) * | 2018-03-26 | 2018-09-11 | 联想(北京)有限公司 | 数据模型训练方法和装置 |
CN109327421A (zh) * | 2017-08-01 | 2019-02-12 | 阿里巴巴集团控股有限公司 | 数据加密、机器学习模型训练方法、装置及电子设备 |
CN109460536A (zh) * | 2018-11-16 | 2019-03-12 | 青岛大学 | 大规模矩阵运算的安全外包算法 |
-
2019
- 2019-09-03 CN CN201910826760.0A patent/CN110704850B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102314580A (zh) * | 2011-09-20 | 2012-01-11 | 西安交通大学 | 一种基于向量和矩阵运算的支持计算的加密方法 |
CN105376057A (zh) * | 2015-11-13 | 2016-03-02 | 电子科技大学 | 一种云外包解大规模线性方程组的方法 |
CN106788980A (zh) * | 2017-01-16 | 2017-05-31 | 中国人民解放军国防科学技术大学 | 一种面向云计算的矩阵乘法外包过程中安全加密方法 |
CN109327421A (zh) * | 2017-08-01 | 2019-02-12 | 阿里巴巴集团控股有限公司 | 数据加密、机器学习模型训练方法、装置及电子设备 |
CN108520181A (zh) * | 2018-03-26 | 2018-09-11 | 联想(北京)有限公司 | 数据模型训练方法和装置 |
CN109460536A (zh) * | 2018-11-16 | 2019-03-12 | 青岛大学 | 大规模矩阵运算的安全外包算法 |
Non-Patent Citations (1)
Title |
---|
SLALOM: Fast,Verifiable and Private execution of neural networks in trusted hardware;Florian Tramèr etal;《ICLR 2019》;20190227;第1-19页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110704850A (zh) | 2020-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110704850B (zh) | 人工智能ai模型的运行方法和装置 | |
US20230334322A1 (en) | Protecting deep learned models | |
US11100427B2 (en) | Multi-party computation system for learning a classifier | |
CN110457912B (zh) | 数据处理方法、装置和电子设备 | |
EP3627759A1 (en) | Method and apparatus for encrypting data, method and apparatus for training machine learning model, and electronic device | |
Song et al. | Protection of image ROI using chaos-based encryption and DCNN-based object detection | |
EP3779800A1 (en) | Image recognition method, apparatus, electronic device and storage medium | |
CN110222573B (zh) | 人脸识别方法、装置、计算机设备及存储介质 | |
CN110569227B (zh) | 模型参数确定方法、装置和电子设备 | |
Rajput et al. | Privacy-preserving human action recognition as a remote cloud service using RGB-D sensors and deep CNN | |
Fang et al. | Secure function evaluation using an fpga overlay architecture | |
US11829468B2 (en) | Neural network confidentiality | |
JP7282474B2 (ja) | 暗号化マスク確定方法、暗号化マスク確定装置、電子機器、記憶媒体およびコンピュータプログラム | |
CN114611720A (zh) | 联邦学习模型训练方法、电子设备及存储介质 | |
Pentyala et al. | Privacy-preserving video classification with convolutional neural networks | |
Ibarrondo et al. | Banners: Binarized neural networks with replicated secret sharing | |
CN112115811A (zh) | 基于隐私保护的图像处理方法、装置和电子设备 | |
Karri | Secure robot face recognition in cloud environments | |
US20220116513A1 (en) | Privacy-preserving reconstruction for compressed sensing | |
CN113420665B (zh) | 对抗人脸图像生成、人脸识别模型训练方法、装置及设备 | |
CN117557877A (zh) | 人物异常行为图像训练样本生成方法、装置和计算机设备 | |
Ha et al. | Membership feature disentanglement network | |
US11574180B2 (en) | Methods for learning parameters of a convolutional neural network, and classifying an input datum | |
CN116049691A (zh) | 模型转换方法、装置、电子设备和存储介质 | |
Li et al. | A single-qubit-based HSL color model for efficient quantum image security applications |
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 |