经混洗安全多方运算中的张量非均匀拆分的制作方法
未命名
10-22
阅读:74
评论:0

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