外包深度学习运算中的安全人工神经网络模型的制作方法
未命名
10-22
阅读:59
评论:0
1.本文公开的至少一些实施例一般涉及安全多方计算,更具体地但不限于,使用用于人工神经网络(ann)的加速器的计算,ann例如是通过机器学习和/或深度学习配置的ann。
背景技术:
2.人工神经网络(ann)使用神经元网络来处理对网络的输入,且生成来自网络的输出。
3.深度学习已应用于许多应用领域,例如计算机视觉、语音/音频辨识、自然语言处理、机器翻译、生物信息学、药物设计、医学图像处理、游戏等。
技术实现要素:
4.在一个方面,本技术提供一种方法,其包括:由计算装置生成多个第一模型组成部分以表示人工神经网络模型;由所述计算装置生成多个计算任务,所述计算任务中的每一者包含响应于输入执行模型组成部分的运算,所述计算任务包含执行所述第一模型组成部分的运算;由所述计算装置在将所述计算任务分发给外部实体时混洗所述计算任务;由所述计算装置且从所述外部实体接收执行所述计算任务的结果;以及由所述计算装置基于从所述外部实体接收到的所述结果获得所述人工神经网络模型的运算的结果。
附图说明
5.实施例是借助于实例而非限制在附图的图中来说明的,在附图中相似参考指示类似元件。
6.图1示出根据一个实施例的来自不同数据样本的经混洗、随机化数据组成部分分发用于外包计算。
7.图2示出根据一个实施例的基于来自经混洗、随机化数据组成部分的计算结果的数据样本的计算结果重建。
8.图3示出根据一个实施例的使用深度学习加速器将数据样本分解成组成部分进行经混洗安全多方计算的技术。
9.图4示出根据一个实施例的使用偏移密钥来修改组成部分以用于使用深度学习加速器进行经混洗安全多方计算。
10.图5示出根据一个实施例的经由使组成部分偏移来增强数据保护以用于使用深度学习加速器进行经混洗安全多方计算的技术。
11.图6示出根据一个实施例的在不透露人工神经网络模型的情况下可用于深度学习运算的外包任务的模型组成部分。
12.图7示出根据一个实施例的在不透露作为对人工神经网络的输入的人工神经网络模型和数据样本的情况下可用于深度学习运算的外包任务的模型组成部分和样本组成部
分。
13.图8示出根据一个实施例配置的具有深度学习加速器和随机存取存储器的集成电路装置。
14.图9示出根据一个实施例的被配置成执行矩阵-矩阵操作的处理单元。
15.图10示出根据一个实施例的被配置成执行矩阵-向量操作的处理单元。
16.图11示出根据一个实施例的被配置成执行向量-向量操作的处理单元。
17.图12示出根据一个实施例的被配置成自主地将输入应用于经过训练的人工神经网络的深度学习加速器和随机存取存储器。
18.图13示出根据一个实施例的经混洗安全多方深度学习运算的方法。
19.图14示出根据一个实施例的经混洗安全多方深度学习运算的另一方法。
20.图15示出根据一个实施例的在深度学习运算的外包任务中保护运算模型的方法。
21.图16示出本公开的实施例可在其中操作的实例计算机系统的框图。
具体实施方式
22.本文公开的至少一些实施例提供了将深度学习数据样本的数据组成部分混洗以在外包深度学习运算中进行数据隐私保护的技术。
23.传统的安全多方运算(smpc)技术是基于同态加密的。当应用同态加密时,可以在不影响结果的情况下改变/切换解密和运算/操作的顺序。例如,可以解密两个数字的密文的总和,以获得这两个数字在明文中的求和的相同结果。为了保护数据隐私,传统的smpc被配置成在外包运算(例如,求和)时向外部奇偶校验提供要在运算中操作的数据的密文。数据所有者对结果(例如密文的总和)进行解密,以获得应用于明文的运算结果(例如,加法)。
24.同态加密中使用的加密密钥通常比数字的明文更长。因此,需要高精度电路对密文进行操作,以便处理在其位长度上比相应明文长得多的密文。
25.然而,典型的深度学习加速器(dla)在执行例如向量和/或矩阵的乘法和累加之类的操作时没有被配置成具有如此高精度电路。缺乏高精度电路(例如,用于乘法和累加操作)可能防碍将安全多方运算(smpc)的传统技术与此类深度学习加速器(dla)一起使用。
26.本公开的至少一些方面通过对随机化数据组成部分进行混洗来保护外包深度学习运算中的数据隐私,从而解决了上述和其它不足。当通过混洗来保护数据隐私时,不需要使用长加密密钥来创建用于任务外包的密文。因此,不具有高精度电路(例如,用于加速乘法和累加操作)的典型深度学习加速器(dla)也可以参与执行外包的深度学习运算。
27.深度学习涉及根据多个样本集合评估模型。当来自不同样本集合的数据组成部分经混洗以分发给外部方来执行深度学习运算(例如,使用dla执行)时,外部方无法在没有获得所有数据组成部分和/或混洗密钥的情况下重新创建数据样本以理解数据。
28.可以通过拆分数据样本中的每个数据元素来从数据样本创建数据组成部分,使得数据组成部分的总和等于数据元素。分配给(外包给)一或多个外部方的计算任务可被配置成使得切换由外部方执行的求和以及深度学习运算的顺序不会改变结果。因此,通过在分发给外部方的样本之间混洗数据组成部分,外部方中的每一者仅获得部分随机化样本。在数据所有者从外部方接收回计算结果之后,数据所有者可以将结果重新混洗为正确的求和顺序,以获得将深度学习运算应用于样本的结果。因此,数据样本的隐私可以得到保护,而
深度学习运算的至少一部分可以外包给不具有高精度电路的外部深度学习加速器。如果要使用安全多方运算(smpc)的传统技术,则需要此类高精度电路对从同态加密生成的密文进行操作。
29.在一些情况下,经混洗数据组成部分可能由单个外部方收集,所述外部方可能试图重新汇编数据组成部分以恢复/发现数据样本。例如,外部方可能通过尝试数据组成部分的不同组合来寻找表示数据样本的数据组成部分的有意义组合,从而使用蛮力方法。通过增加要尝试的组成部分的计数且因此增加它们可能的组合,可以提高成功重建的难度。
30.为了增强数据隐私保护,可以使用可选的偏移密钥来掩蔽数据组成部分。当混洗技术与偏移密钥的使用相结合时,与蛮力攻击相关的难度显著增加。可以选择/配置偏移密钥,使得其不像传统加密密钥那么长。因此,仍然可以使用不具有高精度电路的外部dla。
31.可选地,加密密钥可以用于将同态加密应用于从数据样本生成的一或多个组成部分,以增强数据隐私保护。组成部分混洗操作可以允许使用减小的加密长度,使得仍然可以使用不具有高精度电路的外部dla。
32.可选地,一些外部实体可能具有高精度电路;并且使用具有高精度电路所满足的精度要求的长加密密钥加密的组成部分可以提供到此类外部实体以执行人工神经网络的运算。
33.在一些情况下,需要保护深度学习运算的模型。例如,可以以防止外部实体发现人工神经网络的方式配置人工神经网络外包运算。提供给外部实体以执行外包运算的数据可以经过变换、混淆和/或不充分,从而阻止外部实体获得人工神经网络。然而,由外部实体执行的外包运算的结果仍然可用于生成人工神经网络的运算结果。
34.外包运算任务可被配置成不仅保护作为对人工神经网络的输入的数据样本,而且还保护对数据样本进行评估以获得人工神经网络响应的人工神经网络。
35.人工神经网络模型可以包含表示网络中人工神经元的连接性的数据,以及在生成其输出时应用于其输入的人工神经元的权重。
36.当人工神经网络模型不变时,响应于作为输入的数据样本生成神经元的输出作为人工神经网络模型的运算可以是应用于数据样本的线性操作。因此,数据样本可以被拆分成样本组成部分,所述样本组成部分的总和等于数据样本;并且表示人工神经网络模型分别响应于样本组成部分而生成的神经输出的结果的总和等于表示人工神经网络模型响应于数据样本而生成的神经输出的结果。
37.另一方面,当作为输入的数据样本不变时,响应于作为输入的数据样本生成神经元的输出作为人工神经网络模型的运算可以是应用于人工神经网络的线性操作。因此,人工神经网络模型可以被拆分成模型组成部分,所述模型组成部分的总和等于人工神经网络模型;并且表示模型组成部分响应于数据样本而生成的神经输出的结果的总和等于表示人工神经网络模型响应于数据样本而生成的神经输出的结果。
38.因此,可以将人工神经网络模型拆分成多个模型组成部分,以混淆外包数据中的人工神经网络模型;并且可以将作为对人工神经网络模型的输入以及因此对每个模型组成部分的输入的数据样本拆分成多个样本组成部分以混淆数据样本。数据样本可以以不同的方式拆分,作为对不同模型组成部分的输入。类似地,人工神经网络模型可以以不同的方式拆分成多个模型组成部分,以作为输入处理不同的样本组成部分。
39.类似于拆分数据样本以随机化样本组成部分,也可以执行拆分人工神经网络模型以随机化模型组成部分。例如,一或多个模型组成部分中的数字可以是随机数;并且每个模型组成部分可被配置为人工神经网络模型减去剩余模型组成部分的总和。
40.可以对将样本组成部分作为输入应用于随机化模型组成部分的运算任务进行混洗以外包给一或多个外部实体。可选地,上文讨论的偏移技术也可以应用于至少一些随机模型组成部分和至少一些随机化样品组成部分,以增加效仿或发现人工神经网络模型和/或数据源的难度,即使当外部实体设法收集完整的模型组成部分集合或完整的样本组成部分集合时也是如此。
41.拆分数据样本以及人工神经网络模型会增加公式化可外包运算的复杂性。外包给具有深度学习加速器的外部实体的运算可被配置成使得从外部实体获得的计算结果可以被混洗回用于求和的顺序,从而获得作为对人工神经网络模型的输入应用的数据样本的结果。然而,在没有混洗密钥和/或偏移密钥的情况下,接收运算任务的实体很难基于外部实体接收到的数据来恢复数据样本和/或人工神经网络模型以执行其运算任务。
42.图1示出根据一个实施例的来自不同数据样本的经混洗、随机化数据组成部分分发用于外包计算。
43.在图1中,希望获得将计算103的相同操作应用于多个数据样本111、113、
…
、115的结果。然而,还希望保护与数据样本111、113、
…
、115相关联的数据隐私,使得数据样本111、113、
…
、115不被透露给被委托执行计算103的一或多个外部实体。
44.例如,计算103的操作可被配置成使用深度学习加速器来执行;并且数据样本111、113、
…
、115可以是传感器数据、医学图像或涉及计算103的操作的人工神经网络的其它输入。
45.在图1中,数据样本中的每一者被拆分成多个组成部分。例如,数据样本111被分成随机化组成部分121、123、
…
、125;数据样本113被分成随机化组成部分127、129、
…
、131;并且数据样本115被分成随机化组成部分133、135、
…
、137。例如,可以使用图3所示的技术来执行从数据样本生成随机化组成部分。
46.混洗映射101被配置成对用于分发任务的组成部分121、123、
…
、125、127、129、
…
、131、133、135、
…
、137进行混洗,以应用计算103的操作。
47.例如,混洗映射101可以用于生成随机化任务序列,以将计算103的操作应用于组成部分121、135、
…
、137、129、
…
、125。计算103的操作可以应用于组成部分121、135、
…
、137、129、
…
、125,以生成相应的结果141、143、
…
、145、147、
…
、149。
48.由于组成部分121、135、
…
、137、129、
…
、125是数据样本111、113、
…
、115的随机化组成部分,并且已经被混洗以混合来自不同数据样本的不同组成部分,因此执行计算103的操作的外部方不能在不具有完整的组成部分集合和混洗映射101的情况下从与计算103相关联的数据中重建数据样本111、113、
…
、115。
49.因此,计算103的操作可以被外包由外部实体执行,以生成结果141、143、
…
、145、147、
…
、149,而不向外部实体透露数据样本111、113、
…
、115。
50.在一个实施方案中,经混洗组成部分121、135、
…
、137、129、
…
、125的整个集合含有数据样本111、113、
…
、115中的所有组成部分。可选地,数据样本111、113、
…
、115中的组成部分中的一些不在传送到外部实体以用于改进隐私保护的经混洗组成部分121、135、
…
、
137、129、
…
、125中。可选地,应用于数据样本111、113、
…
、115的不在经混洗组成部分121、135、
…
、137、129、
…
、125中的组成部分的计算103的操作可以外包给其它外部实体,并使用安全多方运算(smpc)的传统技术来保护,其中在使用同态加密生成的密文中提供对应组成部分。替代地,对数据样本111、113、
…
、115中不在经混洗组成部分121、135、
…
、137、129、
…
、125中的组成部分中的一些的运算可以被安排为由可信装置、实体或系统执行。
51.在一个实施方案中,经混洗组成部分121、135、
…
、137、129、
…
、125的整个集合被分发给多个外部实体,使得每个实体不从数据样本接收组成部分的完整集合。可选地,经混洗组成部分121、135、
…
、137、129、
…
、125的整个集合可以被提供给同一外部实体以执行计算103。
52.与经混洗组成部分121、135、
…
、137、129、
…
、125相对应的结果141、143、
…
、145、147、
…
、149的序列可以用于建构使用混洗映射101将计算103应用于数据样本111、113、
…
、115的结果,如图2所示并在下文中讨论。
53.图2示出根据一个实施例的基于来自经混洗、随机化数据组成部分的计算结果的数据样本的计算结果重建。
54.在图2中,混洗映射101用于将结果141、143、
…
、145、147、
…
、149分别分类为数据样本111、113、
…
、115的结果组112、114、
…
、116。
55.例如,根据混洗映射101将针对数据样本111的相应组成部分121、
…
、125计算的结果141、
…
、149排序为结果组112。类似地,根据混洗映射101将针对数据样本115的相应组成部分(例如,135、
…
、137)计算的结果(例如,143、
…
、145)排序为结果组116;并且结果组114含有从数据样本113的相应组成部分(例如,129)计算的结果(例如,147)。
56.将计算103的操作分别应用于数据样本111、113、
…
、115的结果151、153、
…
、155可以根据相应结果组112、114、
…
、116来计算。
57.例如,当使用图3的技术来生成具有等于数据样本的总和的组成部分时,可以对将计算103的操作应用于这些组成部分的结果求和,以获得将计算103的操作应用于数据样本的结果。
58.图3示出根据一个实施例的使用深度学习加速器将数据样本分解成组成部分进行经混洗安全多方计算的技术。
59.例如,图3的技术可以用于生成图1中的数据样本的组成部分,并且用于从将计算103的操作应用于图2中数据样本的组成部分的结果生成将计算103的操作应用于数据样本的结果。
60.在图3中,数据样本119被拆分成组成部分161、163、
…
、165,使得组成部分161、163、..、165的总和117等于数据样本119。
61.例如,组成部分163、
…
、165可以是随机数;并且组成部分161可以通过从组成部分163、
…
、165中减去数据样本119计算得出。因此,组成部分161、163、
…
、165是随机化的。
62.在图3中,深度学习加速器运算105被配置成使得可以在不影响结果157的情况下切换总和117和运算105的顺序。因此,应用于数据样本119的深度学习加速器运算105生成与通过将深度学习加速器运算105分别应用于组成部分161、163、
…
、165而获得的结果171、173、
…
、175的总和117相同的结果157。
63.例如,数据样本119可以是表示对人工神经网络的输入的向量或矩阵/张量。例如,
张量/矩阵可以具有二维元素阵列,所述二维元素阵列具有沿着一个维度的多列元素和沿着另一维度多行元素。二维张量/矩阵可以简化为一维,具有单行或列元素。张量/矩阵可以有两个以上的维度。例如,三维张量/矩阵可以具有在第三维度中延伸的二维元素阵列的阵列;并且三维张量/矩阵可以简化为具有单个二维元素阵列的二维张量/矩阵。因此,张量/矩阵不限于二维元素阵列。当深度学习加速器运算105被配置成对数据样本119应用线性操作(例如,表示人工神经网络的处理的操作)时,结果157与分别应用于组成部分161、163、
…
、165的运算105的结果171、173、
…
、175的总和相同。例如,可以根据人工神经网络中的神经元连接性和应用于其输入的人工神经元的权重来生成矩阵或张量,以生成输出;深度学习加速器运算105可以是矩阵或张量与作为人工神经网络输入的数据样本119的输入向量或矩阵/张量的乘积,以获得人工神经网络的输出;并且此类运算105是应用于数据样本119的线性操作。虽然组成部分161、163、
…
、165看起来是随机的,但数据样本119和结果157可能含有需要保护的敏感信息。
64.在图1中,当使用混洗映射101来混合来自不同数据样本111、113、
…
、115的组成部分时,发现原始数据样本111、113、
…
、115的难度增加。
65.混洗组成部分的技术可以消除或减少对安全多方运算(smpc)的传统技术的使用,所述技术需要具有高精度计算单元的深度学习加速器来对使用长加密密钥生成的密文进行操作。
66.数据样本119中的数据项(例如,数字)通常以预定精度级别(例如,由预定数目的位表示)指定,以供深度学习加速器运算。当数据样本119被拆分成组成部分161、163、
…
、165时,这些组成部分可以具有相同的精度级别(例如,由预定数目的位表示)。因此,将数据样本119拆分成组成部分161、163、
…
、165的操作以及对不同数据样本(例如,111、113、
…
、115)的组成部分进行混洗的操作不会改变或增加运算中涉及的数据项的精度级别。
67.相反,当使用安全多方运算(smpc)的传统技术时,将数据项(例如,数字)与长加密密钥组合以生成密文。为了安全起见,使用长加密密钥。结果,密文具有增加的精度级别(例如,由增加的位数表示)。为了将深度学习加速器运算105应用于具有增加的精度级别的密文,深度学习加速器需要具有相应增加的精度级别的计算电路(例如,乘法累加(mac)单元)。通过在数据样本之间进行混洗来保护数据隐私的技术可以消除使用长加密密钥进行加密的要求。因此,没有使用长加密密钥所需的高精度计算电路的深度学习加速器也可以用于安全多方运算(smpc)。
68.例如,深度学习加速器可被配置成以第一精度级别(例如,16位、32位、64位等)执行乘法累加(mac)操作。此类精度对于人工神经网络(ann)的运算来说是足够的。然而,当使用同态加密将精度要求提高到第二级别(例如,128位、512位等)时,深度学习加速器不能用于对使用同态加密生成的密文执行运算。使用混洗映射101来保护数据隐私允许此类深度学习加速器执行外包运算(例如,105)。
69.例如,将计算103的操作应用于组成部分121的任务可以外包给具有集成电路装置的计算装置,所述集成电路装置包含深度学习加速器(dla)和随机存取存储器(例如,如图8所示)。随机存取存储器可被配置成存储表示人工神经网络(ann)的参数和具有表示深度学习加速器运算105的矩阵操作数的指令。存储在随机存取存储器中的指令可以由深度学习加速器(dla)执行,以根据人工神经网络(ann)实施矩阵运算,如下文进一步论述。
70.在典型配置中,人工神经网络(ann)中的每个神经元接收输入集合。对神经元的一些输入可以是网络中的某些神经元的输出;并且对神经元的一些输入可以是提供到神经网络的输入。网络中的神经元当中的输入/输出关系表示网络中的神经元连接性。每个神经元可具有偏置、激活函数,以及突触权重集,分别用于其输入。激活函数可以呈阶跃函数、线性函数、对数s型(log-sigmoid)函数等形式。网络中的不同神经元可以具有不同激活函数。每个神经元可生成其输入与其偏置的加权和,且接着产生作为加权和的函数的输出,所述输出是使用神经元的激活函数计算出的。ann的输入与输出之间的关系一般来说由ann模型限定,所述ann模型包含表示网络中的神经元的连接性的数据,以及每个神经元的偏置、激活函数和突触权重。基于给定ann模型,计算装置可被配置成从到网络的给定输入集合计算网络的输出。
71.由于人工神经网络(ann)的输出可以是对人工神经元的输入的线性操作,因此表示对人工神经网络(ann)的输入的数据样本(例如,119)可以被拆分成组成部分(例如,如图3所示的161、163、
…
、165)作为对人工神经网络(ann)的随机化输入,使得响应于随机化输入的输出的总和提供了响应于数据样本(例如,119)的人工神经网络(ann)的正确输出。
72.在一些情况下,整个人工神经网络(ann)的输入与输出之间的关系不是线性操作,其支持根据从组成部分161、163、
…
、165获得的结果171、173、
…
、175的总和117对数据样本119的结果157进行运算。然而,人工神经网络(ann)的运算的很大一部分可能是涉及线性操作的任务。此类部分可以通过使用深度学习加速器(例如,如图8所示)来加速。因此,组成部分的混洗允许将运算的此类部分外包给具有深度学习加速器的多个外部计算装置。
73.深度学习加速器可以具有本地存储器,例如寄存器、缓冲器和/或高速缓存,其被配置成存储向量/矩阵操作数和向量/矩阵操作的结果。寄存器中的中间结果可以在深度学习加速器中作为后续向量/矩阵操作的操作数进行流水线化/移位,以减少访问存储器/数据时的时间和能量消耗,且因此在实施典型的人工神经网络时加快向量/矩阵操作的典型模式。深度学习加速器中的寄存器、缓冲器和/或高速缓存的容量通常不足以容纳用于实施典型人工神经网络运算的整个数据集合。因此,耦合到深度学习加速器的随机存取存储器被配置成提供用于实施典型人工神经网络的改进的数据存储能力。例如,深度学习加速器从随机存取存储器加载数据和指令且将结果存储回到随机存取存储器中。
74.深度学习加速器与随机存取存储器之间的通信带宽被配置成优化或最大化深度学习加速器的运算能力的利用。例如,可在深度学习加速器与随机存取存储器之间提供高通信带宽,以使得可将向量/矩阵操作数从随机存取存储器加载到深度学习加速器中,且在大致等于深度学习加速器对向量/矩阵操作数执行运算所用的时间的时间段内将结果存储回到随机存取存储器中。深度学习加速器的粒度可被配置成增加由深度学习加速器执行的运算的量与向量/矩阵操作数的大小之间的比率,使得深度学习加速器与随机存取存储器之间的数据存取业务可减少,这可降低对深度学习加速器与随机存取存储器之间的通信带宽的要求。因此,可减少或消除在数据/存储器存取方面的瓶颈。
75.图4示出根据一个实施例的使用偏移密钥来修改组成部分以用于使用深度学习加速器进行经混洗安全多方计算。
76.在图4中,偏移密钥181被配置成控制在未经修改组成部分161上应用的偏移183的操作,以生成经修改组成部分187。
77.例如,偏移密钥181可以用于将组成部分161中的每个元素的位向左移位偏移密钥181指定的位数。逐位移位操作对应于将组成部分161乘以由偏移密钥181表示的因子。
78.当数据的前n位不为零时,将数据位向左移位n位可能导致信息丢失。为了防止信息丢失,经修改组成部分187中的数据元素可以用增加的位数来表示。
79.可选地,在数据位向左移位n位之后,可以用随机位来填充所得数字的最低有效n位,以避免检测到已经应用的逐位移位操作。
80.在另一实例中,偏移密钥181可以用于识别要添加到未经修改组成部分161中的每个数字的常数,以在经修改组成部分187中生成对应数字。
81.在另一实例中,偏移密钥181可以用于识别常数;并且将未经修改组成部分161中的每个数字乘以由偏移密钥181表示的常数,以在经修改组成部分187中生成对应数字。
82.通常,偏移密钥181可以用于表示与常数相乘、与常数相加和/或添加随机最低有效位。
83.由于深度学习加速器运算105被配置为对作为输入的组成部分应用的线性操作,因此可以通过根据偏移密钥181应用对应偏移反向操作185来去除偏移密钥181在结果189中的偏移183的操作中的影响。
84.例如,当偏移密钥181被配置成向左移位未经修改组成部分161中的数字以生成经修改组成部分187时,将深度学习加速器运算105应用于经修改组成部分187的结果189可以被向右移位,以获得与将深度学习加速器运算105应用于未经修改组成部分161相同的结果171。
85.例如,当偏移密钥181被配置成将常数添加到未经修改组成部分161中的数字以生成经修改组成部分187时,可以从将深度学习加速器运算105应用于经修改组成部分187的结果189中减去所述常数,以获得与将深度学习加速器运算105应用于未经修改组成部分161相同的结果171。
86.例如,当偏移密钥181被配置成将未经修改组成部分161中的数字乘以常数以生成经修改组成部分187时,可以将深度学习加速器运算105应用于经修改组成部分187的结果189乘以所述常数的倒数,以获得与将深度学习加速器运算105应用于未经修改组成部分161相同的结果171。
87.可选地,偏移密钥181可以被替换为加密密钥;偏移183可以被替换为根据加密密钥执行的同态加密;并且偏移185可以替换为根据加密密钥执行的解密。当使用加密密钥时,经修改组成部分187是从作为明文的未经修改组成部分161生成的密文。优选地,经修改组成部分187中的密文具有与组成部分161中的数字的位长度相同或基本相同的位长度,以减少在执行深度学习加速器运算105时对高精度电路的要求。
88.当通过用于外包的偏移183修改从数据样本(例如,根据图3的技术的119)生成的一或多个组成部分(例如,161)时,外部实体从外包组成部分(例如,187、163、
…
、165)恢复数据样本119的可能性进一步降低。
89.图5示出根据一个实施例的经由使组成部分偏移来增强数据保护以用于使用深度学习加速器进行经混洗安全多方计算的技术。
90.例如,图5的技术可以使用图4的偏移183和185的操作来增强图1至图3的技术的数据隐私保护。
91.在图5中,数据样本119被拆分成未经修改组成部分161、163、
…
、165,使得组成部分161、163..、165的总和117等于数据样本119。
92.例如,组成部分163、
…
、165可以是随机数;并且组成部分161是数据样本119减去组成部分163、
…
、165的总和。因此,组成部分161、163、
…
、165中的每一者等于数据样本119减去剩余组成部分的总和。
93.未经修改组成部分161经由偏移密钥181进一步保护,以生成经修改组成部分187。因此,经修改组成部分187和剩余组成部分163、
…
、165的总和不再等于数据样本119。
94.组成部分187、163、
…
、165可以被分发/外包给一或多个外部实体以应用深度学习加速器运算105。
95.在接收到将深度学习加速器运算105分别应用于组成部分187、163、
…
、165的结果189、173、
…
、175之后,数据样本119的数据所有者可以基于结果189、173..、175生成将深度学习加速器运算105应用于数据样本119的结果175。
96.由偏移密钥181指定的偏移185的反向操作可以应用于将深度学习加速器运算105应用于经修改组成部分187的结果189,以恢复将深度学习加速器运算105应用到未经修改组成部分161的结果171。将深度学习加速器运算105应用于未经修改组成部分161、163、
…
、165的结果171、173、
…
、175的总和117提供了将深度学习加速器运算105应用于数据样本119的结果157。
97.在一些实施方式中,偏移密钥可被配置成用于一或多个组成部分163、
…
、165,以类似于组成部分161的保护方式生成用于外包的经修改组成部分。
98.可选地,当组成部分163被配置成经由向左移位n位来偏移时,组成部分163中的随机数可被配置成在前导n位中具有零,使得向左移位不会增加执行深度学习加速器运算105的精度要求。
99.可选地,组成部分163可被配置成经由向右移位n位来受到保护。为了避免信息丢失,组成部分中的随机数可被配置成在尾数n位中具有零,使得向右移位不会改变/增加组成部分163的数据精度。
100.不同的未经修改组成部分161、163、
…
、165可以经由不同的偏移选项(例如,逐位移位、向左移位、向右移位、加上常数、乘以常数)来保护。可以使用不同的偏移密钥来改进保护。可选地,未经修改组成部分161、163、
…
、165中的一或多者可以经由同态加密来保护。
101.图6示出根据一个实施例的在不透露人工神经网络模型的情况下可用于深度学习运算的外包任务的模型组成部分。
102.在图6中,人工神经网络(ann)模型219被拆分成多个模型组成部分261、263、
…
、265,使得模型组成部分261、263、
……
、265的总和217等于ann模型219。
103.例如,模型组成部分261、263、
…
、265中的每一者表示单独的人工神经网络,其具有与连接性ann模型219类似的神经连接性,并且具有与人工神经网络(ann)模型219中的神经权重不同的神经权重。由于模型组成部分261、263、
…
、265的总和217等于ann模型219,因此表示响应于任何输入(例如,数据样本119)的ann模型219的神经输出的结果257等于从响应于相同输入(例如,数据样本119)的模型组成部分261、263、
…
、265获得的结果271、273、
…
、275的总和217。
104.例如,可以使用随机数生成器来生成模型组成部分263、
…
、265中的每一者中的数
字;并且模型组成部分261中的数字可以通过从ann模型219中减去模型组成部分263、
…
、265的总和来生成。结果,模型组成部分263、
…
、265中的每一者是ann模型219与剩余模型组成部分的总和之间的差。
105.当来自不同ann模型(例如,219)的模型组成部分(例如,261、263、
…
、265)被混合和混洗以分发给外部实体从而响应于数据样本执行模型组成部分的运算时,外部实体无法在没有模型组成部分的完整集合(例如,261、263、
…
、265)和/或用于从不同ann模型中混洗回模型组成部分的混洗映射(例如,101)的情况下重建ann模型(例如,219)。
106.此外,可以使用类似于图5所示的应用偏移183和185的操作的技术进一步混淆模型组成部分261、263、
…
、265中的至少一些。
107.例如,可以对未经修改模型组成部分261应用偏移183的操作以生成经修改模型组成部分。可以对响应于输入(例如,数据样本119)的经修改模型组成部分的运算结果应用反向偏移185,以获得响应于样本输入(例如,数据样本119)的未经修改模型组成部分261的运算结果271。
108.例如,为了生成经修改模型组成部分,偏移密钥181可被配置成逐位移位未经修改模型组成部分261中的数字,以将常数加到未经修改模型组成部分261的数字,将未经修改模型组成部分261中的数字乘以常数等。可以根据偏移密钥181的操作来限制由随机数生成器生成的随机数的范围,使得在应用偏移183的操作之后不会增加用于执行外包任务的深度学习加速器的精度要求。
109.可选地,可以使用加密密钥对未经修改模型组成部分261进行加密,以生成经修改模型组成部分,其中可以对经修改模型组成部分的计算结果进行解密,以获得未经修改模型组成部分的运算结果。例如,可以选择加密密钥,使得在应用同态加密之后不会增加对深度学习加速器的精度要求。
110.为进一步保护数据样本119以及ann模型219,还可以将数据样本119拆分成数据样本组成部分,以生成用于外包的计算任务,如图7所示。
111.图7示出根据一个实施例的在不透露作为对人工神经网络的输入的人工神经网络模型和数据样本的情况下可用于深度学习运算的外包任务的模型组成部分和样本组成部分。
112.例如,图6中的数据样本119可以经由如图7中那样拆分成样本组成部分161、
…
、165来保护,用于在外包计算任务中混洗。
113.例如,图6中的数据样本119可以替换为从图3中的数据样本119生成的未经修改组成部分161,或从图5中的数据样本119生成的经修改组成部分187。
114.在图7中,人工神经网络(ann)模型219被拆分成模型组成部分261、
…
、265(例如,如图6所示)。此外,数据样本119被拆分成样本组成部分161、
…
、165(例如,如图3所示)。
115.样本组成部分161、
…
、165中的每一者被分别提供作为对模型组成部分261、
…
、265的输入,以获得相应计算结果。例如,将样本组成部分161应用于模型组成部分261、
…
、265,以分别生成结果221、
…
、225;并且将样本组成部分165应用于模型组成部分261、
…
、265,以分别生成结果231、
…
、235。
116.可以对作为输入应用于模型组成部分261、
…
、265中的每一者的样本组成部分161、
…
、165的结果(例如221、
…
、225;或231、
…
、235)求和117,以获得作为输入应用于相应
模型组成部分(例如,261、
…
、或265)的数据样本119的结果(例如,271;或275),类似于来自图3中的数据组成部分161、163、
…
、165的结果171、173、
…
、175的求和。
117.可以对作为输入应用于模型组成部分261、
…
、265的数据样本119的结果271、
…
、275求和217,以获得作为输入应用于ann模型219的数据样本119的结果257,类似于图6中的模型组成部分261、263、
…
、265的结果271、273、...、275的求和。
118.由于可以无序地执行求和而不影响结果257,因此结果257等于从将样本组成部分161、
…
、165应用于模型组成部分261、
…
、265的任务生成的结果221、
…
、225、
…
、231、
…
、235的总和;并且不需要根据图7中所示的特定顺序对结果求和117和217。
119.将样本组成部分161、
…
、165作为输入应用于模型组成部分261、
…
、265以获得结果221、
…
、225、
…
、231、
…
、235的计算任务可以经混洗(例如,与从其它ann模型和/或数据样本导出的其它计算任务一起),以外包/分发给外部实体。
120.例如,模型组成部分261、
…
、265的不同子集可以提供/外包给不同的实体,使得每个实体具有模型组成部分261、
…
、265的不完整集合。
121.可选地,可以经由偏移183/185来保护模型组成部分261、
…
、265中的一或多者,使得从传送到外部实体的组成部分恢复ann模型219的难度增加。类似地,可以经由偏移183/185来保护样本组成部分161、
…
、165中的一或多者,使得从传送到外部实体的组成部分恢复数据样本119的难度增加。
122.图7示出将样本组成部分161、
…
、165的相同集合应用于不同模型组成部分265的实例。通常,数据样本119可以被拆分成不同的样本组成部分集合;并且每个样本组成部分集合(例如,161、
…
、165)可以应用于模型组成部分中的所选一者(例如,261或265)。增加拆分数据样本119以输入到模型组成部分261、
…
、265的方式会增加外部实体恢复数据样本119的难度。
123.图7示出使用模型组成部分的相同集合261、
…
、265来表示用于评估对作为输入的不同样本组成部分161、
…
、165的响应的ann模型219的实例。通常,ann模型219可以被拆分成模型组成部分的不同集合;并且每个模型组成部分集合(例如,261、
…
、265)可以用于计算将样本组成部分中的一者(例如,161或165)作为输入应用于ann模型219的结果。
124.图8示出根据一个实施例配置的具有深度学习加速器303和随机存取存储器305的集成电路装置301。
125.例如,具有集成电路装置301的计算装置可以用于执行图1中的外包计算103和图3的深度学习加速器运算105。
126.图8中的深度学习加速器303包含处理单元311、控制单元313和本地存储器315。当向量和矩阵操作数在本地存储器315中时,控制单元313可以使用处理单元311以根据指令执行向量和矩阵操作。此外,控制单元313可以通过存储器接口317和高速/带宽连接319从随机存取存储器305加载指令和操作数。
127.集成电路装置301被配置成封装在具有用于存储器控制器接口307的引脚或触点的集成电路封装内。
128.存储器控制器接口307被配置成支持标准存储器访问协议,使得集成电路装置301以与不具有深度学习加速器303的传统随机存取存储器装置相同的方式出现在典型的存储器控制器中。例如,集成电路装置301外部的存储器控制器可以通过存储器控制器接口307
使用标准存储器访问协议来访问集成电路装置301中的随机存取存储器305。
129.集成电路装置301被配置成具有随机存取存储器305与深度学习加速器303之间的高带宽连接319,所述随机存取存储器和深度学习加速器封装在集成电路装置301内。连接319的带宽高于随机存取存储器305与存储器控制器接口307之间的连接309的带宽。
130.在一个实施例中,存储器控制器接口307和存储器接口317两者被配置成经由同一组总线或导线访问随机存取存储器305。因此,访问随机存取存储器305的带宽在存储器接口317与存储器控制器接口307之间共享。替代地,存储器控制器接口307和存储器接口317被配置成经由单独组总线或导线访问随机存取存储器305。可选地,随机存取存储器305可以包含可以经由连接319同时存取的多个区段。例如,当存储器接口317正在访问随机存取存储器305的区段时,存储器控制器接口307可以同时访问随机存取存储器305的另一区段。例如,不同的区段可以被配置在不同的集成电路裸片和/或存储器单元的不同平面/组上;并且可以并行地访问不同的区段以增加访问随机存取存储器305的吞吐量。例如,存储器控制器接口307被配置成一次访问预定大小的一个数据单元;并且存储器接口317被配置成一次访问多个数据单元,每个数据单元具有相同的预定大小。
131.在一个实施例中,随机存取存储器305和集成电路装置301配置于不同集成电路裸片上,所述不同集成电路裸片配置于同一集成电路封装内。此外,随机存取存储器305可配置于允许同时并行存取多个数据元素的一或多个集成电路裸片上。
132.在一些实施方案中,可经由连接319并行存取的向量或矩阵的数据元素的数目对应于在向量或矩阵上操作的深度学习加速器的粒度。例如,当处理单元311可并行地在多个向量/矩阵元素上操作时,连接319被配置成经由连接319并行地加载或存储相同数目或数目的倍数的元素。
133.可选地,可以基于深度学习加速器303的处理速度来配置连接319的数据访问速度。例如,在一定量的数据和指令已经加载到本地存储器315中之后,控制单元313可以执行指令以使用处理单元311对数据进行操作以生成输出。在生成输出的处理时间段内,连接319的访问带宽允许相同量的数据和指令被加载到本地存储器315中用于下一操作,并且相同量的输出被存储回随机存取存储器305。例如,当控制单元313使用本地存储器315的一部分来处理数据并生成输出时,存储器接口317可以将先前操作的输出从本地存储器315的另一部分卸载到随机存取存储器305中,并将操作数数据和指令加载到所述本地存储器的另一部分。因此,深度学习加速器的利用率和性能不受连接319的带宽的限制或降低。
134.随机存取存储器305可以用于存储人工神经网络的模型数据并缓冲人工神经网络的输入数据。模型数据并不频繁地改变。模型数据可以包含由深度学习加速器的编译器为实现人工神经网络生成的输出。模型数据通常包含在人工神经网络的描述中使用的矩阵,以及为深度学习加速器303生成的指令,以基于深度学习加速器303的粒度的向量/矩阵操作来执行人工神经网络中的向量/矩阵操作。指令不仅对人工神经网络的向量/矩阵操作进行操作,而且还对人工神经网络的输入数据进行操作。
135.在一个实施例中,当输入数据被加载或更新在随机存取存储器305中时,深度学习加速器303的控制单元313可以自动执行用于人工神经网络以生成人工神经网络输出的指令。输出存储在随机存取存储器305中的预定区中。深度学习加速器303可以在没有来自中央处理单元(cpu)的帮助的情况下执行指令。因此,可以减少或消除用于深度学习加速器
303与集成电路装置301外部的处理器(例如,中央处理单元(cpu))之间的协调的通信。
136.可选地,深度学习加速器303的逻辑电路可以经由互补金属氧化物半导体(cmos)来实施。例如,随机存取存储器305的存储器单元的cmos阵列下(cua)技术可以用于实施深度学习加速器303的逻辑电路,包含处理单元311和控制单元313。替代地,可以使用随机存取存储器305的存储器单元阵列中的cmos技术来实施深度学习加速器303的逻辑电路。
137.在一些实施方案中,深度学习加速器303和随机存取存储器305可以在单独的集成电路裸片上实施,并且使用硅通孔(tsv)连接,以增加深度学习加速器303与随机存取存储器305之间的数据带宽。例如,深度学习加速器303可以形成在现场可编程门阵列(fpga)或专用集成电路(asic)的集成电路裸片上。
138.替代地,深度学习加速器303和随机存取存储器305可以被配置在单独的集成电路封装中,并通过印刷电路板(pcb)上的多个点对点连接进行连接,以用于并行通信,从而增加数据传送带宽。
139.随机存取存储器305可以是易失性存储器或非易失性存储器,或易失性存储器与非易失性存储器的组合。非易失性存储器的实例包含快闪存储器、基于与非(nand)逻辑门、或非(nor)逻辑门而形成的存储器单元、相变存储器(pcm)、磁性存储器(mram)、电阻式随机存取存储器、交叉点存储装置和存储器装置。交叉点存储器装置可以使用无晶体管存储器元件,所述无晶体管存储器元件中的每一者具有在一起堆叠成列的存储器单元和选择器。存储器元件列经由在垂直方向上延行的两个线路排布来连接,其中在层中的一个方向上延行的一个排布的线路位于存储器元件列上方,且另一排布的线路在另一方向上延行并位于存储器元件列下方。可个别地在两个层中的每一层上的一个线路的交叉点处选择每个存储器元件。交叉点存储器装置是快速且非易失性的,且可用作通用存储器池以用于处理和存储。非易失性存储器的另外的实例包含只读存储器(rom)、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)和电子可擦除可编程只读存储器(eeprom)存储器等。易失性存储器的实例包含动态随机存取存储器(dram)和静态随机存取存储器(sram)。
140.例如,非易失性存储器可以被配置成实施随机存取存储器305的至少一部分。随机存取存储器305中的非易失性存储器可以用于存储人工神经网络的模型数据。因此,在集成电路装置301断电并重新启动之后,不需要将人工神经网络的模型数据重新加载到集成电路装置301中。此外,非易失性存储器可以是可编程的/可重写的。因此,可以更新或替换集成电路装置301中的人工神经网络的模型数据,以实施更新的人工神经网络或另一人工神经网络。
141.深度学习加速器303的处理单元311可以包含向量-向量单元、矩阵-向量单元和/或矩阵-矩阵单元。下面结合图9至图11讨论被配置成执行向量-向量操作、矩阵-向量操作和矩阵-矩阵操作的单元的实例。
142.图9示出根据一个实施例的被配置成执行矩阵-矩阵操作的处理单元。例如,图9的矩阵-矩阵单元321可以用作图8的深度学习加速器303的处理单元311中的一者。
143.在图9中,矩阵-矩阵单元321包含多个内核缓冲器331至333和多个映射库351至353。映射库351至353中的每一者存储矩阵操作数的一个向量,所述矩阵操作数具有分别存储在映射库351至353中的多个向量;并且内核缓冲器331至333中的每一者存储另一矩阵操作数的一个向量,所述另一矩阵操作数具有分别存储在内核缓冲器331至333中的多个向
量。矩阵-矩阵单元321被配置成使用并行操作的多个矩阵-向量单元341至343对两个矩阵操作数的元素执行乘法和累加操作。
144.交叉开关323将映射库351至353连接到矩阵-向量单元341至343。存储在映射库351至353中的相同矩阵操作数经由交叉开关323提供给矩阵-向量单元341至343中的每一者;并且矩阵-向量单元341至343并行地从映射库351至353接收数据元素。内核缓冲器331至333中的每一者都连接到矩阵-向量单元341至343中的相应的一者,并且向相应矩阵-向量单元提供向量操作数。矩阵-向量单元341至343同时操作以计算存储在映射库351至353中的相同矩阵操作数乘以存储在内核缓冲器331至333中的对应向量的运算。例如,矩阵-向量单元341对存储在映射库351至353中的矩阵操作数和存储在内核缓冲器331中的向量操作数执行乘法运算,而矩阵-向量单元343同时对存储在映射库351至353中的矩阵操作数和存储在内核缓冲器333中的向量操作执行乘法运算。
145.图9中的矩阵-向量单元341至343中的每一者可以以如图10所示的方式来实施。
146.图10示出根据一个实施例的被配置成执行矩阵-向量操作的处理单元。例如,图10的矩阵-向量单元341可以用作图9的矩阵-矩阵单元321中的任何矩阵-向量单元。
147.在图10中,映射库351至353中的每一者以类似于图9的映射库351至353的方式存储矩阵操作数的一个向量,所述矩阵操作数具有分别存储在映射库351至353中的多个向量。图10中的交叉开关323将来自映射库351的向量分别提供给向量-向量单元361至363。将存储在内核缓冲器331中的相同向量提供给向量-向量单元361至363。
148.向量-向量单元361至363同时操作以计算分别存储在映射库351至353中的对应向量操作数乘以存储在内核缓冲器331中的相同向量操作数的运算。例如,向量-向量单元361对映射库351中存储的向量操作数和内核缓冲器331中存储的向量操作数执行乘法运算,而向量-向量单元363同时对映射库353中存储的向量操作数和内核缓冲器331中存储的向量操作数来执行乘法运算。
149.当在图9的矩阵-矩阵单元321中实施图10的矩阵-向量单元341时,矩阵-向量单元341可以使用矩阵-矩阵单元321的映射库351至353、交叉开关323和内核缓冲器331。
150.图10中的向量-向量单元361至363中的每一者可以以如图11所示的方式来实施。
151.图11示出根据一个实施例的被配置成执行向量-向量操作的处理单元。例如,图11的向量-向量单元361可以用作图10的矩阵-向量单元341中的任何向量-向量单元。
152.在图11中,向量-向量单元361具有多个乘法累加(mac)单元371至373。每个乘法累加(mac)单元(例如,373)可以接收两个数字作为操作数,执行这两个数字的乘法,并将乘法的结果与乘法累加单元中保持的总和相加。
153.向量缓冲器381和383中的每一者存储数字的列表。可以向乘法累积(mac)单元371至373中的每一者提供一对数字作为输入,每个数字来自向量缓冲器381和383中的一个。乘法累加(mac)单元371到373可以并行地从向量缓冲器381和383接收多对数字,并且并行地执行乘法累加(mac)操作。来自乘法累加(mac)单元371至373的输出被存储到移位寄存器375中;并且累加器377计算移位寄存器375中的结果的总和。
154.当在图10的矩阵-向量单元341中实现图11的向量-向量单元361时,向量-向量单元361可以使用映射库(例如,351或353)作为一个向量缓冲器381,并且矩阵-向量单元341的内核缓冲器331作为另一个向量缓冲器383。
155.向量缓冲器381和383可以具有相同的长度以存储相同数目/计数的数据元素。所述长度可以等于向量-向量单元361中的乘法累加(mac)单元371至373的计数,或者是其倍数。当向量缓冲器381和383的长度是乘法累加(mac)单元371至373的计数的倍数时,在每次迭代中,可以从向量缓冲器381到383提供与乘法累加(mac)单元371到373的数目相等的多对输入作为到乘法累加(mac)单元371至373的输入;并且向量缓冲器381和383通过多次迭代将它们的元素馈送到乘法累积(mac)单元371至373。
156.在一个实施例中,深度学习加速器303与随机存取存储器305之间的连接319的通信带宽足以使矩阵-矩阵单元321使用随机存取存储器305的部分作为映射库351至353和内核缓冲器331至333。
157.在另一实施例中,映射库351至353和内核缓冲器331至333在深度学习加速器303的本地存储器315的一部分中实施。深度学习加速器303与随机存取存储器305之间的连接319的通信带宽足,以将矩阵-矩阵单元321的下一操作周期的矩阵操作数加载到本地存储器315的另一部分中,而矩阵-矩阵单元321使用在深度学习加速器303的本地存储器315的不同部分中实施的映射库351至353和内核缓冲器331至333在当前操作周期中执行运算。
158.图12示出根据一个实施例的被配置成自主地将输入应用于经过训练的人工神经网络的深度学习加速器和随机存取存储器。
159.已经通过机器学习(例如,深度学习)训练的人工神经网络401可以以标准格式(例如,开放神经网络交换(onnx))来描述。经过训练的人工神经网络401的标准格式描述确定了人工神经元的特性及其连接性。
160.在图12中,深度学习加速器编译器403通过生成深度学习加速器303的指令405和对应于人工神经元的特性及其连接性的矩阵407来转换经过训练的人工神经网络401。dla编译器403从经过训练的人工神经网络401生成的指令405和矩阵407可以存储在用于深度学习加速器303的随机存取存储器305中。
161.例如,随机存取存储器305和深度学习加速器303可以经由高带宽连接319以如图8的集成电路装置301中的方式连接。基于指令405和矩阵407的图12的自主运算可以在图8的集成电路装置301中实施。替代地,随机存取存储器305和深度学习加速器303可以配置于印刷电路板上,所述印刷电路板具有并行运行的多个点对点串行总线以实施连接319。
162.在图12中,在dla编译器403的结果被存储在随机存取存储器305中之后,经过训练的人工神经网络401处理对经过训练的人工神经网络401的输入421,以生成经过训练的人工神经网络401的对应输出413的应用可以由随机存取存储器305中的输入421的存在来触发,或由在随机存取存储器305中提供的另一指示来触发。
163.作为响应,深度学习加速器303执行指令405以组合输入421和矩阵407。矩阵407可以包含要加载到内核缓冲器331至333中的内核矩阵,以及要加载到映射库351至353中的映射矩阵。指令405的执行可以包含生成用于深度学习加速器303的一或多个矩阵-矩阵单元(例如,321)的映射库351至353的映射矩阵。
164.在一些实施例中,人工神经网络401的输入是初始映射矩阵的形式。可以从随机存取存储器305中检索初始映射矩阵的部分作为存储在矩阵-矩阵单元321的映射库351至353中的矩阵操作数。替代地,dla指令405还包含用于深度学习加速器303从输入421生成初始映射矩阵的指令。
165.根据dla指令405,深度学习加速器303将矩阵操作数加载到内核缓冲器331至333中,并映射其矩阵-矩阵单元321的库351至353。矩阵-矩阵单元321对矩阵操作数执行矩阵运算。例如dla指令405根据深度学习加速器303的运算粒度(例如,在矩阵-矩阵单元321中作为矩阵操作数加载的矩阵的大小/维度)分解经过训练的人工神经网络401的矩阵运算,并将输入特征映射应用于人工神经元层的内核以生成输出作为对下一层人工神经元的输入。
166.在完成根据指令405执行的经过训练的人工神经网络401的运算后,深度学习加速器303将人工神经网络401的输出413存储在随机存取存储器305中的预定义位置处,或者存储在随机存取存储器305中提供的指示中指定的位置处,从而触发运算。
167.当在图8的集成电路装置301中实施图12的技术时,连接到存储器控制器接口307的外部装置可以将输入421写入随机存取存储器305,并触发由深度学习加速器303将输入421应用于经过训练的人工神经网络401的自主运算。在一段时间之后,输出413在随机存取存储器305中是可用的;并且外部装置可以经由集成电路装置301的存储器控制器接口307读取输出413。
168.例如,随机存取存储器305中的预定义位置可以被配置成存储触发深度学习加速器303自主执行指令405的指示。所述指示可以可选地包含输入421在随机存取存储器305内的位置。因此,在自主执行指令405以处理输入421期间,外部装置可以检索在指令405的前一次运行期间生成的输出,和/或存储用于指令405的下一次运行的另一组输入。
169.可选地,随机存取存储器305中的另一预定位置可以被配置成存储指令405的当前运行的进度状态的指示。此外,所述指示可以包含对指令405的当前运行的完成时间的预测(例如,基于指令405的先前运行来估计)。因此,外部装置可以在适当的时间窗口检查完成状态以检索输出413。
170.在一些实施例中,随机存取存储器305被配置成具有足够的容量来存储输入(例如,421)和输出(例如,413)的多个集合。每个集合可以被配置在随机存取存储器305中的预定时隙/区域中。
171.深度学习加速器(dla)303可以自主地执行指令405,以根据存储在随机存取存储器305中的矩阵407从输入421生成输出413,而无需位于集成电路装置301外部的处理器或装置的辅助。
172.图13示出根据一个实施例的经混洗安全多方深度学习运算的方法。
173.例如,图13的方法可以由经由计算装置中的软件和/或硬件实施的经混洗任务管理器来执行,以混洗数据样本的组成部分以用于将计算任务外包给其它计算装置,并且将应用于组成部分的计算的结果混洗回以便数据样本生成应用于数据样本的相同计算的结果,如图1至图3所示。计算装置可以将任务外包给具有深度学习加速器(dla)的其它计算装置(例如,具有处理单元311的303,例如图8至图11所示的矩阵-矩阵单元321、矩阵-向量单元341、向量-向量单元361和/或乘法累加(mac)单元371)。可选地,计算装置可以具有深度学习加速器(dla)(例如,303)和编译器403,以将人工神经网络(ann)401的描述转换为表示深度学习加速器运算105的任务的指令405和矩阵407。生成任务使得可以在运算105之前或之后执行求和117的操作,而不改变结果157。
174.在框431,具有经混洗任务管理器的计算装置从第一数据样本(例如,111;或119)
生成多个第一组成部分(例如,121、123、
…
、125;或161、163、
…
、165)。
175.例如,第一组成部分(例如,121、123、
…
125)中的每一者可以基于随机数;并且生成第一组成部分(例如,121、123、
…
、125),使得第一组成部分(例如,121、123..、125)的总和117等于第一数据样本(例如,111)。
176.例如,为了生成多个第一组成部分(例如,121、123、
…
、125),计算装置可以生成随机数集合作为多个第一组成部分(例如,121、123、
…
、125)当中的一个组成部分(例如,123)。类似地,可以生成另一组成部分(例如,125)以包含随机数。为了满足第一组成部分(例如,121、123、
…
、125)的总和117等于第一数据样本(例如,111)的关系,可以通过从数据样本(例如,111)中减去剩余组成部分(例如,123、
…
、125)的总和117来生成组成部分(例如,121)。
177.例如,可以以与第一数据样本(例如,111)相同的精度级别来生成和提供第一组成部分(例如,121、123、
…
、125)。
178.例如,第一数据样本(例如,111)中的每个相应数据项在第一组成部分(例如,121、123、
…
、125)中的每一者中具有对应的数据项;并且经由相同数目的位来指定相应的数据项和对应的数据项。
179.在框433,计算装置从第二数据样本(例如,113)生成多个第二组成部分(例如,127、129、
…
、131)。第二组成部分(例如127、129、
…
、131)可以以类似于第一组成部分(例如121、123、
…
、125)的生成的方式生成。
180.在框435,计算装置根据映射101将至少第一组成部分(例如,121、123、
…
、125)和第二组成部分(例如:127、129、
…
、131)混洗,以混合至少从第一数据样本(例如,111)和第二数据样本(例如,113)(以及可能的其它数据样本(例如,115))生成的组成部分(例如121、135、
…
、137、129、..、125)。
181.在框437,计算装置向第一实体传送第三组成部分(例如,137、129、
…
、125),以请求第一实体将计算103的相同操作应用于第三组成部分中的每一者(例如,121、135、
…
)。第三组成部分(例如137、129、
…
、125)根据映射101被识别为至少包含来自第一组成部分的第一子集(例如,125)和来自第二组成部分的第二子集(例如,129)。
182.为了提高数据隐私保护,计算装置中的经混洗任务管理器可以被配置成排除第一实体接收第一组成部分中的至少一者(例如,121)和/或第二组成部分中的至少一者(例如,127)。
183.例如,计算103的相同操作可以表示人工神经网络401中的运算(例如,105),所述人工神经网络被配置成由外部实体(例如,第一实体)的一或多个深度学习加速器(dla)(例如,303)执行。深度学习加速器(dla)(例如,303)可以具有矩阵-矩阵单元(例如,321)、矩阵-向量单元(例如,341)、向量-向量单元(例如,361)和/或乘法累加(mac)单元(例如,371),以加速人工神经网络401的运算(例如,105)。
184.例如,计算装置可以包含编译器403,所述编译器被配置成根据第一人工神经网络(例如,401)的描述,生成由指令405和矩阵407表示的第二人工神经网络的描述,所述第二人工神经网络将在深度学习加速器(dla)(例如,303)中执行以执行外包给外部实体(例如,第一实体)的深度学习加速器运算105。为了将执行计算103的操作的任务外包给第一实体,计算装置可以向第一实体提供由指令405和矩阵407表示(或代表所述指令和矩阵)的第二
人工神经网络的描述。计算装置可以将第一组成部分的子集(例如,125)作为输入(例如,421)提供给第二人工神经网络,并且通过运行指令405从第一实体接收由第一实体的深度学习加速器(dla)(例如,303)生成的对应输出(例如,413)。
185.在框439,计算装置从第一实体接收将计算103的相同操作分别应用于第三组成部分(例如,137、129、
…
、125)的第三结果(例如,145、147、
…
、149)。
186.在框441,计算装置至少部分地基于第三结果(例如,145、147、
…
、149)和映射101,生成将计算103的相同操作应用于第一数据样本(例如,111)的第一结果151和将计算103中的相同操作应用于第二数据样本(例如,113)的第二结果(例如,153)。
187.例如,计算装置根据映射101识别将计算103的相同操作分别应用于第一组成部分(例如,121、123、
…
、125)的第四结果(例如,141、
…
、149)。计算装置对第四结果(例如,141、
…
、149)求和(例如,117),以获得将计算103的操作应用于第一数据样本(例如,111)的第一结果(例如,151)。
188.例如,计算装置将第一组成部分中的至少一者(例如,121)(其未被传送到第一实体)传送到第二实体,并请求第二实体将计算103的相同操作应用到第一组成部分中的至少一者中的每一个(例如,121)。在从第二实体接收到将计算103的相同操作应用于第一组成部分中的至少一者(例如,121)的相应至少一个结果(例如,141)之后,计算装置可以基于映射101确定至少一个结果(例如,141)是针对第一组成部分中的至少一者(例如,121)的,并且因此将与将计算103的操作应用于从第一数据样本生成的其它组成部分的其它结果(例如,149)求和117,以计算将计算103的操作应用于第一数据样本(例如,111)的第一结果(例如,151)。
189.图14示出根据一个实施例的经混洗安全多方深度学习运算的另一方法。
190.例如,图14的方法可以由经由计算装置中的软件和/或硬件实施的经混洗任务管理器来执行,以混洗和偏移数据样本的组成部分以用于将计算任务外包给其它计算装置,并且将应用于组成部分的计算的结果混洗和反向偏移回以便数据样本生成应用于数据样本的相同计算的结果,如图1至图5所示。计算装置可以将任务外包给具有深度学习加速器(dla)的其它计算装置(例如,具有处理单元311的303,例如图8至图11所示的矩阵-矩阵单元321、矩阵-向量单元341、向量-向量单元361和/或乘法累加(mac)单元371)。可选地,计算装置可以具有深度学习加速器(dla)(例如,303)和编译器403,以将人工神经网络(ann)401的描述转换为表示深度学习加速器运算105的任务的指令405和矩阵407。
191.在框451,在计算装置中运行的经混洗任务管理器接收数据样本(例如,111;或119)作为对人工神经网络401的输入。
192.在框453,经混洗任务管理器从数据样本(例如,119)生成多个未经修改组成部分(例如,161、163、
…
、165),使得未经修改组成部分(例如,161、163、
…
、165)的总和(例如,117)等于数据样本(例如,119)。
193.在框455,经混洗任务管理器将偏移操作(例如,偏移183)应用于多个未经修改组成部分中的至少一者(例如,161),以生成多个第一组成部分(例如,187、163、
…
、165)来表示数据样本(例如,119),其中第一组成部分(例如,187、163
…
、165)的总和不等于数据样本(例如,119)。
194.在框457,经混洗任务管理器将从数据样本(例如,119)生成的第一组成部分(例如
187、163、
…
、165)与从其它数据样本或伪/随机数据样本生成的第二组成部分(例如,127、129、
…
、131;133、135、
…
、137)混洗,以混合组成部分(例如,121、135、..、137、129、..、125)作为对人工神经网络401的输入。
195.在框459,经混洗任务管理器将计算任务传送到一或多个外部实体,其中任务当中的每个相应任务被配置成将人工神经网络401的相同运算105应用于被配置为对人工神经网络401的输入中的一者的相应组成部分。
196.在框461,经混洗任务管理器从一或多个外部实体接收在外包给一或多个外部实体的相应任务中应用人工神经网络401的相同运算105的第一结果(例如,141、143、
…
、145、147、
…
、149,例如结果189、173、
…
、175)。
197.在框463,经混洗任务管理器基于从一或多个实体接收的第一结果(例如,141、143、
…
、145、147、
…
、149,例如结果189、173、
…
、175),生成将人工神经网络401的相同运算105应用于数据样本(例如,119)的第三结果(例如,157)。
198.例如,使用最初用于混洗用于外包的组成部分的混洗映射101,经混洗任务管理器可以在从一或多个外部实体接收的第一结果(例如,141、143、
…
、145、147、
…
、149)中识别第一结果(例如,141、143、
…
、145、147、
…
、149)的子集,其中,子集中的第二结果(例如,189、173、
…
、175)是通过将人工神经网络401的相同运算105应用于外包来表示数据样本(例如,119)的第一组成部分(例如187、163、
…
、165)而生成的。经混洗任务管理器可以根据偏移密钥(例如,181),对将人工神经网络401的相同运算105应用于经修改组成部分(例如,187)的第四结果(例如,189)执行偏移185的操作,以生成将人工神经网络401的相同运算105应用于对应未经修改组成部分(例如,161)的对应第五结果(例如,171)。对将人工神经网络401的相同运算105应用于多个未经修改组成部分(例如,161、165、
…
、165)的第六结果(例如,171、173、
…
、175)包含第五结果(例如,171)求和117,以获得将人工神经网络401的相同运算105应用于数据样本119的第三结果(例如,157)。
199.例如,经混洗任务管理器可以为数据样本119生成偏移密钥181,以在修改多个未经修改组成部分(例如,161、163、
…
、165)当中的未经修改组成部分(例如,161)时随机化偏移183的操作,从而在第一组成部分(例如,187、163、..、165)之间生成经修改组成部分(例如,187)。
200.例如,偏移183的操作可以被配置成执行逐位移位、加上常数、乘以常数或其任何组合,以将未经修改组成部分(例如,161)中的每个数字转换为经修改组成部分(187)中的对应数字。
201.图5示出将偏移183的操作应用于一个未经修改组成部分161的实例。通常,偏移183的不同(或相同)操作可以应用于一个以上未经修改组成部分(例如,161),以生成用于外包计算任务的对应的一个以上的经修改组成部分(例如,187)。
202.如图3所示,可以使用随机数来生成从数据样本119导出的未经修改组成部分(例如,161、163、
…
、165),使得未经修改组成部分(例如,161、163、
…
、165)的任何子集是随机的并且不足以恢复数据样本119。当外包组成部分187、163、
…
、165的整个组合变得可用于外部实体时,偏移183的操作增加了外部实体恢复数据样本119的难度。
203.经修改组成部分(例如,187)中的数字可以被配置成具有与未经修改组成部分(例如,161)中的对应数字相同的位数,使得偏移183的操作不会增加应用人工神经网络401的
运算105的精度要求。
204.例如,将人工神经网络401的相同运算105应用于经修改组成部分187的第一精度要求与将人工神经网络401的相同运算105应用于未经修改组成部分161的第二精度要求相同。此外,将人工神经网络401的相同运算105应用于数据样本119的第三精度要求与将人工神经网络401的相同运算105应用于未经修改组成部分161的第二精度要求相同。因此,将数据样本119转换为外包计算任务中的组成部分(例如,187、163、
…
、165)不会增加外部实体使用的深度学习加速器(dla)303中的计算电路的精度要求。因此,可用于将运算105应用于数据样本119的外部实体(例如,矩阵-矩阵单元321、矩阵-向量单元341、向量-向量单元361和/或乘法累加(mac)单元371)的加速电路可以足以将运算105应用于外包组成部分(例如,187、163、
…
、165)。
205.例如,未经修改组成部分(例如,161)中的随机数可以根据偏移密钥181生成,以具有多个前导位或尾数位,这些前导位或尾数位是零,使得在应用偏移183的操作之后,不需要额外的位来呈现经修改组成部分187中的数字,从而防止数据/精度损失。
206.图15示出根据一个实施例的在深度学习运算的外包任务中保护运算模型的方法。
207.例如,图15的方法可以由经由计算装置中的软件和/或硬件实施的经混洗任务管理器来执行,以生成和偏移人工神经网络模型的组成部分,生成和偏移数据样本的组成部分,生成将样本组成部分应用于模型组成部分以用于分发/外包给外部实体的计算任务,并使用从外部实体接收的结果来构建将数据样本作为输入应用于人工神经网络模型的结果,如图1至图7中所示。计算装置可以将任务外包给具有深度学习加速器(dla)的其它计算装置(例如,具有处理单元311的303,例如图8至图11所示的矩阵-矩阵单元321、矩阵-向量单元341、向量-向量单元361和/或乘法累加(mac)单元371)。可选地,计算装置可以具有深度学习加速器(dla)(例如,303)和编译器403,以将人工神经网络(ann)401的描述转换为表示深度学习加速器运算105的任务的指令405和矩阵407。
208.在框471,在计算装置中配置的经混洗任务管理器可以经由拆分人工神经网络模型219来生成多个第一模型组成部分261、
…
、265,以表示人工神经网络模型219。
209.在框473,计算装置中的经混洗任务管理器生成多个计算任务。计算任务中的每一者包含响应于输入(例如,样本组成部分161或163,或数据样本119)执行模型组成部分(例如,261)的运算。计算任务可以包含执行第一模型组成部分261、
…
、265的运算。计算任务可以包含执行其它模型组成部分(例如,伪模型组成部分或其它ann模型的模型组成部分)的运算。
210.在框475,计算装置中的经混洗任务管理器在计算任务分发给外部实体时混洗(例如,根据混洗映射101)计算任务。因此,模型组成部分(例如,261、
…
、265)与ann模型(例如,219)的关联被混淆。分发被配置成排除外部实体中的每一者接收第一模型组成部分261、
…
、265中的至少一者。如果没有第一模型组成部分261、
…
、265的完整集合,外部实体就无法重建ann模型219。此外,第一组成部分中的一些可以是经由偏移183和/或同态加密保护的经修改组成部分。
211.在框477,计算装置从外部实体接收执行计算任务的结果。
212.在框479,计算装置中的经混洗任务管理器可以识别(例如,使用混洗映射101)与第一模型组成部分261、
…
、265的运算相对应的结果的子集。
213.在框481,计算装置中的经混洗任务管理器可以基于对子集的操作来获得人工神经网络模型219的运算结果。
214.例如,第一模型组成部分261、
…
、265的总和217可被配置成等于人工神经网络模型219。因此,响应于相同输入(例如,样本组成部分161或163,或数据样本119)的第一模型组成部分261、
…
、265的结果的总和117等于响应于相同输出的ann模型219的结果。
215.例如,随机数生成器可以用于生成随机数作为第一模型组成部分261、
…
、265中的至少一者中的数字。可以通过从人工神经网络模型219减去第一模型组成部分261..、265的子集的总和来生成第一模型组成部分261、
…
、265中的一者。
216.在一些实施方案中,计算装置中的经混洗任务管理器生成多个第二模型组成部分261、
…
、265,使得第二模型组成部分261、
…
、265的总和等于人工神经网络模型219。然后,经混洗任务管理器将偏移183的操作应用于第二模型组成部分261、
…
、265的至少一个部分,以生成第一模型组成部分。在此类实施方案中,第一模型组成部分的总和不等于人工神经网络模型219。将此类第一模型组成部分分发给外部实体会增加外部实体彼此合作以发现ann模型219的难度。例如,偏移183的操作可以通过逐位移位、加上常数、或乘以常数、或其任何组合来应用。为根据第一模型组成部分的计算结果确定第二模型组成部分的计算结果,经混洗任务管理器可以应用反向偏移185的操作。
217.可选地或组合地,可以使用加密密钥对第二模型组成部分261、
…
、265的至少一个部分进行加密,以生成第一模型组成部分,使得传送到外部实体的第一模型组成部分的总和不等于人工神经网络模型219。为了根据通过同态加密生成的密文中提供的第一模型组成部分的计算结果来确定第二模型组成部分的计算结果,经混洗任务管理器可以应用解密操作。
218.为了保护作为对人工神经网络模型的输入的数据样本119,经混洗任务管理器可以通过拆分数据样本来生成多个第一样本组成部分161、
…
、165以表示数据样本119。为分发给外部实体而生成的计算任务可以包含响应于第一样本组成部分161、
…
、165中的每一者执行第一模型组成部分261、
…
、265的运算。计算任务的分发可以被配置成排除外部实体中的每一者接收第一模型组成部分261、
…
、265中的至少一者和第一样本组成部分161、
…
、165中的至少一者。
219.可选地,第一样本组成部分可以是从具有等于数据样本119的总和的第二样本组成部分生成的经修改组成部分。例如,经混洗任务管理器可以变换(例如,偏移183或加密)第二样本组成部分的至少一部分以生成第一样本组成部分,使得第一样本组成部分的总和不等于数据样本119。
220.图16示出计算机系统的实例机器,其中可以执行用于使机器执行本文所讨论的方法中的任何一或多个方法的指令集。
221.在一些实施例中,图16的计算机系统可以通过图13、图14和/或图15的操作来实施经混洗任务管理器。经混洗任务管理器可以可选地包含图12的编译器403和图8的集成电路装置301,所述集成电路装置具有图9至图11所示的矩阵处理单元。
222.图16的计算机系统可以用于通过执行被配置成执行与经混洗任务管理器503相对应的操作的指令来执行参照图1至图15描述的经混洗任务管理员503的操作。
223.在一些实施例中,机器可连接(例如,网络连接)到局域网(lan)、内联网、外联网
和/或互联网中的其它机器。机器可作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而以客户端-服务器网络环境中的服务器或客户端机器的容量进行操作。
224.例如,机器可被配置为个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝电话、网络设备、服务器、网络路由器、交换机或桥接器,或能够(依序或以其它方式)执行指定将由所述机器采取的动作的指令集的任何机器。另外,尽管说明单个机器,但还应认为术语“机器”包含机器的任何集合,所述集合单独地或共同地执行一(或多)个指令集以进行本文中所论述的方法中的任何一或多种。
225.图16所示的实例计算机系统包含处理装置502、主存储器504和数据存储系统518,其经由总线530彼此通信。例如,处理装置502可包含一或多个微处理器;主存储器可包含只读存储器(rom)、快闪存储器、动态随机存储器(dram),例如同步dram(sdram)或rambus dram(rdram)、静态随机存取存储器(sram)等。总线530可包含多个总线用多个总线替换。
226.图16中的处理装置502表示一或多个通用处理装置,例如微处理器、中央处理单元等。更特定来说,处理装置可以是复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置502还可以是一或多个专用处理装置,例如专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器等等。处理装置502被配置成执行用于执行结合dla编译器403所讨论的操作的指令526。可选地,处理装置502可以包含深度学习加速器303。
227.图16的计算机系统还可以包含用于通过计算机网络520进行通信的网络接口装置508。
228.可选地,总线530连接到集成电路装置301,所述集成电路装置具有图8所示的深度学习加速器303和随机存取存储器305。编译器403可以将其编译器输出(例如,指令405和矩阵407)写入集成电路装置301的随机存取存储器305中,以使集成电路装置301能够执行由ann描述指定的人工神经网络401的矩阵运算。可选地,编译器输出(例如,指令405和矩阵407)可以通过网络接口装置508和计算机网络520存储到一或多个其它集成电路装置301的随机存取存储器305中。
229.数据存储系统518可以包含机器可读媒体524(也称为计算机可读媒体),在所述机器可读媒体上存储一或多个指令526的集合或体现本文所描述的方法或功能中的任何一或多个的软件。在计算机系统执行期间,指令526还可以完全或至少部分地驻留在主存储器504内和/或处理装置502内,主存储器504和处理装置502也构成机器可读存储媒体。
230.在一个实施例中,指令526包含实施对应于经混洗任务管理器503的功能的指令,例如参考图1至图15所描述的任务管理器503。虽然机器可读存储媒体524在实例实施例中示为单个媒体,但术语“机器可读存储媒体”应被认为包含存储一或多个指令集的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的指令集合且致使机器执行本公开的方法中的任何一种或多种的任何媒体。因此,应认为术语“计算机可读存储媒体”包含但不限于固态存储器、光学媒体和磁性媒体。
231.本公开包含方法和执行上文所描述的方法的设备,包含执行这些方法的数据处理系统,以及含有在数据处理系统上执行时使所述系统执行这些方法的计算机可读媒体。
232.典型的数据处理系统可包含互连件(例如总线和系统核心逻辑),其互连微处理器和存储器。微处理器通常耦合到高速缓存存储器。
233.互连件将微处理器和存储器互连在一起并且还经由输入/输出(i/o)控制器将其互连到i/o装置。i/o装置可包含显示装置和/或外围装置,例如鼠标、键盘、调制解调器、网络接口、打印机、扫描仪、摄像机和此项技术中已知的其它装置。在一个实施例中,在数据处理系统是服务器系统时,i/o装置中的一些(例如,打印机、扫描仪、鼠标和/或键盘)是任选的。
234.互连件可包含通过各种桥、控制器和/或适配器彼此连接的一或多个总线。在一个实施例中,i/o控制器包含用于控制usb外围设备的usb(通用串行总线)适配器,和/或用于控制ieee-2394外围设备的ieee-2394总线适配器。
235.存储器可包含以下中的一或多个:rom(只读存储器)、易失性ram(随机存取存储器),和非易失性存储器,例如硬盘驱动器、快闪存储器等。
236.易失性ram通常实施为要求持续功率以便刷新或维持存储器中的数据的动态ram(dram)。非易失性存储器通常是磁性硬盘驱动器、磁性光盘驱动器、光盘驱动器(例如,dvd ram),或即使在从系统移除电力之后也维持数据的其它类型的存储器系统。非易失性存储器也可为随机存取存储器。
237.非易失性存储器可为与数据处理系统中的其余组件直接耦合的本地装置。还可使用远离系统的非易失性存储器,例如通过例如调制解调器或以太网接口的网络接口耦合到数据处理系统的网络存储装置。
238.在本公开中,一些功能和操作描述为由软件代码进行或由软件代码引起以简化描述。然而,这种表达也用于表示所述功能是由例如微处理器的处理器执行代码/指令产生。
239.替代地或组合地,如此处所描述的功能及操作可使用具有或不具有软件指令的专用电路实施,例如使用专用集成电路(asic)或现场可编程门阵列(fpga)。可使用没有软件指令的固线式电路系统或结合软件指令实施实施例。因此,技术既不限于硬件电路系统和软件的任何具体组合,也不限于由数据处理系统执行的指令的任何特定来源。
240.虽然一个实施例可实施于全功能计算机及计算机系统中,但各种实施例能够分布为多种形式的计算产品,且能够不论实际上用于实现分布的机器或计算机可读媒体的特定类型如何都适用。
241.所公开的至少一些方面可至少部分体现于软件中。也就是说,这些技术可响应于其处理器(例如微处理器)执行存储器(例如rom、易失性ram、非易失性存储器、高速缓冲存储器或远程存储装置)中所含的指令序列而在计算机系统或其它数据处理系统中执行。
242.经执行以实施实施例的例程可实施为操作系统或特定应用程序、组件、程序、物件、模块或称作“计算机程序”的指令序列的部分。计算机程序通常包含计算机中的各种存储器及存储装置中在各种时间处的一或多个指令集,且所述指令集在由计算机中的一或多个处理器读取及执行时导致计算机执行必需操作以执行涉及各种方面的元件。
243.机器可读媒体可用于存储当由数据处理系统执行时使系统执行各种方法的软件和数据。可执行软件和数据可存储于包含例如rom、易失性ram、非易失性存储器和/或高速缓冲存储器的各处。此软件和/或数据的部分可以存储在这些存储装置中的任何一个中。此外,数据和指令可从集中式服务器或对等网络获得。数据和指令的不同部分可在不同时间
且在不同通信会话中或同一通信会话中从不同集中式服务器和/或对等网络获得。可在执行应用程序之前获得全部数据和指令。或者,可动态地、及时地在需要执行时获得数据和指令的部分。因此,并不要求数据及指令在特定时刻全部处于机器可读媒体上。
244.计算机可读媒体的实例包含但不限于非暂时性的可记录和不可记录类型的媒体,例如易失性和非易失性存储器装置、只读存储器(rom)、随机存取存储器(ram)、快闪存储器装置、软性和其它可移除式磁盘、磁盘存储媒体、光学存储媒体(例如,光盘只读存储器(cd rom)、数字通用光盘(dvd)等),以及其它。计算机可读媒体可存储指令。
245.指令还可体现在数字和模拟通信链路中以用于电学、光学、声学或其它形式的传播信号,例如载波、红外信号、数字信号等。然而,例如载波、红外信号、数字信号等的传播信号并非有形机器可读媒体且不被配置成存储指令。
246.大体来说,机器可读媒体包含以可由机器(例如,计算机、网络装置、个人数字助理、制造工具、具有一组一或多个处理器的任何装置等)存取的形式提供(即,存储和/或发射)信息的任何机构。
247.在各种实施例中,硬接线电路系统可与软件指令组合使用以实施技术。因此,技术既不限于硬件电路和软件的任何特定组合,也不限于由数据处理系统执行的指令的任何特定来源。
248.以上描述和图式是说明性的并且不应被解释为限制性的。描述许多具体细节以提供透彻理解。然而,在某些情况下,不描述众所周知的或常规的细节以免混淆描述。本公开中对一个实施例或一实施例的参考未必参考同一实施例;并且此类参考意味着至少一个。
249.在前述说明书中,已参考本公开的具体示例性实施例描述了本公开。将显而易见的是,可在不脱离如所附权利要求书中阐述的更广精神和范围的情况下进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书及图式。
技术特征:
1.一种方法,其包括:由计算装置生成多个第一模型组成部分以表示人工神经网络模型;由所述计算装置生成多个计算任务,所述计算任务中的每一者包含响应于输入执行模型组成部分的运算,所述计算任务包含执行所述第一模型组成部分的运算;由所述计算装置在将所述计算任务分发给外部实体时混洗所述计算任务;由所述计算装置且从所述外部实体接收执行所述计算任务的结果;以及由所述计算装置基于从所述外部实体接收到的所述结果获得所述人工神经网络模型的运算的结果。2.根据权利要求1所述的方法,其进一步包括:由所述计算装置识别对应于所述第一模型组成部分的所述运算的所述结果的子集,其中所述人工神经网络模型的所述运算的所述结果是基于所述子集;其中所述第一模型组成部分的总和等于所述人工神经网络模型。3.根据权利要求2所述的方法,其进一步包括:由所述计算装置生成随机数,作为所述第一模型组成部分中的至少一者中的数字,其中所述第一模型组成部分中的一者是通过从所述人工神经网络模型中减去所述第一模型组成部分的子集的总和而生成的。4.根据权利要求3所述的方法,其中所述分发被配置成排除所述外部实体中的每一者接收所述第一模型组成部分中的至少一者。5.根据权利要求4所述的方法,其中所述人工神经网络模型的所述运算的所述结果等于所述子集的总和。6.根据权利要求1所述的方法,其进一步包括:由所述计算装置生成多个第二模型组成部分,所述第二模型组成部分的总和等于所述人工神经网络模型;以及由所述计算装置偏移所述第二模型组成部分的至少部分以生成所述第一模型组成部分,其中所述第一模型组成部分的总和不等于所述人工神经网络模型。7.根据权利要求6所述的方法,其中所述偏移包含逐位移位、加上常数、或乘以常数、或其任何组合。8.根据权利要求7所述的方法,其进一步包括:由所述计算装置对于所述第二模型组成部分的所述部分相对应的结果应用反向偏移,以获得所述人工神经网络模型的所述运算的所述结果。9.根据权利要求1所述的方法,其进一步包括:由所述计算装置生成多个第二模型组成部分,所述第二模型组成部分的总和等于所述人工神经网络模型;以及由所述计算装置使用加密密钥加密所述第二模型组成部分的至少一部分以生成所述第一模型组成部分,其中所述第一模型组成部分的总和不等于所述人工神经网络模型。10.根据权利要求9所述的方法,其进一步包括:由所述计算装置对与所述第二模型组成部分的所述部分相对应的结果进行解密,以获得所述人工神经网络模型的所述运算的结果。
技术总结
本申请涉及外包深度学习运算中的安全人工神经网络模型。经由混洗组成部分保护外包深度学习运算中对人工神经网络ANN模型的访问。例如,ANN模型可被配置为多个随机化模型组成部分的总和。可以对所述随机化组成部分中的一些应用偏移操作和/或加密以生成经修改组成部分用于外包。来自不同ANN模型的此类模型组成部分可经混洗并外包给一或多个外部实体以获得所述模型组成部分的对输入的响应。还可以将作为对所述ANN模型的输入的数据样本拆分成样本组成部分,作为对模型组成部分的输入,以保护所述数据样本。可以从模型组成部分的响应与作为输入应用的所述样本组成部分的总和获得作为输入应用于ANN模型的数据样本的结果。作为输入应用于ANN模型的数据样本的结果。作为输入应用于ANN模型的数据样本的结果。
技术研发人员:A
受保护的技术使用者:美光科技公司
技术研发日:2023.04.07
技术公布日:2023/10/19
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/