CN112016666A - 深度学习模型的执行 - Google Patents

深度学习模型的执行 Download PDF

Info

Publication number
CN112016666A
CN112016666A CN201910475938.1A CN201910475938A CN112016666A CN 112016666 A CN112016666 A CN 112016666A CN 201910475938 A CN201910475938 A CN 201910475938A CN 112016666 A CN112016666 A CN 112016666A
Authority
CN
China
Prior art keywords
parameter values
subset
convolution operation
input
convolution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910475938.1A
Other languages
English (en)
Inventor
刘云新
张霖涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Priority to CN201910475938.1A priority Critical patent/CN112016666A/zh
Priority to PCT/US2020/030018 priority patent/WO2020242689A1/en
Priority to EP20727750.0A priority patent/EP3977358A1/en
Priority to US17/606,856 priority patent/US20220215251A1/en
Publication of CN112016666A publication Critical patent/CN112016666A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computational Linguistics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)
  • Storage Device Security (AREA)

Abstract

根据本公开的实现,提出了一种深度学习模型的执行的方案。在该方案中,响应于深度学习模型的卷积层的卷积操作被触发,在计算设备的受信任执行环境(TEE)中,基于卷积层的输入和参数值集合来顺序执行多个分区卷积操作。给定分区卷积操作的执行包括:将输入中要由给定分区卷积操作的参数值子集处理的输入部分存储在TEE的受保护存储区中,通过输入部分和针对给定分区卷积操作的参数值子集的单个矩阵相乘操作来确定给定分区卷积操作的结果,参数值子集被表示为矩阵,以及从受保护存储区移除输入部分。通过合并多个分区卷积操作的结果来确定卷积操作的结果。由此,可以在安全程度高但存储资源有限的TEE中加快模型执行速度、提高存储空间效率。

Description

深度学习模型的执行
背景技术
深度学习作为机器学习的一个分支,近年来不断得到发展并且当前已经被广泛用于不同领域和实现中。深度学习模型可以被设计用于实现各种各样的任务,包括计算机视觉处理、语音识别、自然语言处理等。这样的任务有时可能是各种终端,诸如移动电话、物联网(IoT)应用中期望执行的任务。深度学习模型的执行,特别是复杂或者被更精密配置的大模型的执行将要求较高的计算和存储资源。
发明内容
根据本公开的实现,提出了一种用于深度学习模型的执行的方案。在该方案中,响应于深度学习模型的卷积层的卷积操作被触发,在计算设备的受信任执行环境(TEE)中,基于卷积层的输入和参数值集合来顺序执行多个分区卷积操作。给定分区卷积操作的执行包括:将输入中要由给定分区卷积操作的参数值子集处理的输入部分存储在TEE的受保护存储区中,通过输入部分和针对给定分区卷积操作的参数值子集的单个矩阵相乘操作来确定给定分区卷积操作的结果,参数值子集被表示为矩阵,以及从受保护存储区移除输入部分。通过合并多个分区卷积操作的结果来确定卷积操作的结果。由此,可以在安全程度高但存储资源有限的TEE中加快模型执行速度、提高存储空间效率。
提供发明内容部分是为了简化的形式来介绍对概念的选择,其在下文的具体实施方式中将被进一步描述。发明内容部分无意标识要求保护的主题的关键特征或主要特征,也无意限制要求保护的主题的范围。
附图说明
图1示出了能够实施本公开的多个实现的环境的框图;
图2示出了根据本公开的一个实现的计算设备中实现的计算环境的框图;
图3A示出了卷积层的直接卷积操作的示例;
图3B示出了基于卷积降低的快速卷积的示例;
图4示出了根据本公开的一个实现的基于分区卷积操作的快速卷积的示例;
图5示出了根据本公开的另一个实现的计算设备中实现的计算环境的框图;
图6示出了根据本公开的一个实现的参数加载、参数校验和模型执行的并行流水线线程的示例;以及
图7示出了根据本公开的一个实现的过程的流程图。
这些附图中,相同或相似参考符号用于表示相同或相似元素。
具体实施方式
现在将参照若干示例实现来论述本公开。应当理解,论述了这些实现仅是为了使得本领域普通技术人员能够更好地理解且因此实现本公开,而不是暗示对本公开的范围的任何限制。
如本文所使用的,术语“包括”及其变体要被解读为意味着“包括但不限于”的开放式术语。术语“基于”要被解读为“至少部分地基于”。术语“一个实现”和“一种实现”要被解读为“至少一个实现”。术语“另一个实现”要被解读为“至少一个其他实现”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
机器学习是一种人工智能技术。深度学习是一种机器学习算法,通过使用多层处理单元来处理输入和提供相应输出。深度学习算法可以由多层神经网络(NN)来实现。这样的多层神经网络也被称为“深度学习模型”或“深度学习模型”。在本文中,术语“深度学习模型”、“机器学习模型”、“学习网络”、“神经网络”、“模型”和“网络”可替换地使用。
一般而言,神经网络包括输入层和输出层以及在输入层与输出层之间的一个或多个隐藏层。在深度学习应用中使用的神经网络通常包括许多隐藏层,从而延长网络的深度。神经网络的各个层按顺序相连,从而前一层的输出被提供作为后一层的输入,其中输入层接收神经网络的输入,而输出层的输出作为神经网络的最终输出。神经网络的每个层包括一个或多个节点(也称为处理节点或神经元),每个节点处理来自上一层的输入。卷积神经网络(CNN)是一种类型的神经网络,包括一个或多个卷积层,用于对各自的输入执行卷积操作。CNN可以用于在各种场景中,特别适合于处理图像或视频数据。
如上文提及的,深度学习已经在许多任务中获得广泛应用,这样的任务例如可以包括计算机视觉处理、语音识别、自然语言处理等。当前一些移动应用或物联网(IoT)应用的任务已经可以由深度学习算法来实现。然而,无论是在深度学习模型的训练或是后续的使用阶段,深度学习模型的执行都非常耗费计算和存储资源。
可能的方案是将深度学习模型的执行从计算和/或存储资源有限的设备(例如移动设备、IoT设备)转移到具有更多资源的其他设备上实现,例如转移到云计算设备、边缘服务器、大型计算系统等。执行结果可以被发送回到相应设备以供使用。然而,这就要求将深度学习模型的输入,诸如图像、语音、文本信息等,发送到实现深度学习模型的执行的设备,这些数据可能是用户的敏感或隐私数据。将用户数据从本地设备转移到其他计算环境中使用涉及到用户隐私问题。诸如云计算环境之类的公共环境通常难以被信任,因为恶意的外部攻击和不受信任的内部管理时常发生。
一种可以保护用户隐私的方案是在用户的本地设备执行深度学习模型。为了能够利用本地设备的有限计算和/或存储资源来执行深度学习模型,通常需要将大型深度学习模型压缩成较小的深度学习模型并且设计新的轻量级(小型参数集)的模型。这种方案避免了用户数据离开本地设备,从而可以显著降低隐私泄露的可能性。然而,这种本地执行的方案存在一些问题。首先,由于模型大小与模型精确度之间本质上存在权衡,模型压缩和轻量级模型难以达到与大型深度学习模型相同的准确度。此外,即使在本地设备上运行重新设计后的模型是可行的,但受限于计算和/或存储资源,模型的执行可能存在大的延迟,影响用户体验。本地执行还会引起较高的能量消耗,从而影响以电池运行的设备的使用寿命。
由此可见,将深度学习模型的执行转移到具有较高计算能力的外部设备、诸如云计算设备上执行是一种更高效的方案,但应当解决或缓解这种方案中可能存在的用户数据安全问题。
图1示出了能够实施本公开的多个实现的计算系统100的框图。计算系统100涉及计算设备101和设备102。计算设备101被配置为响应于设备102的请求而为设备102执行相应任务。图1中详细示出了计算设备101的结构。如图所示,计算设备101包括通用计算设备形式的计算设备101。计算设备101的组件可以包括但不限于一个或多个处理单元或处理器110、存储器120、存储设备130、一个或多个通信单元140、一个或多个输入设备150以及一个或多个输出设备160。应当理解,图1所示出的计算设备101仅仅是示例性的,而不应当构成对本公开所描述的实现的功能和范围的任何限制。
在一些实现中,计算设备101可以被实现为具有计算能力的各种终端或设备。例如,计算设备101可以是云计算设备、边缘服务器、大型计算系统等。计算设备101也可以是具有计算能力的其他设备,甚至可以是诸如移动终端、固定终端或便携式终端等。
处理器110可以是实际或虚拟处理器并且能够根据存储器120中存储的程序来执行各种处理。在多处理器系统中,多个处理器并行执行计算机可执行指令,以提高计算设备101的并行处理能力。处理器110也可以被称为中央处理器(CPU)、微处理器、控制器、微控制器。
计算设备101通常包括多个计算机存储介质。这样的介质可以是计算设备101可访问的任何可以获得的介质,包括但不限于易失性和非易失性介质、可拆卸和不可拆卸介质。存储器120可以是易失性存储器(例如寄存器、高速存储、随机访问存储器(RAM))、非易失性存储器(例如,只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、闪存)或其某种组合。存储设备130可以是可拆卸或不可拆卸的介质,并且可以包括机器可读介质,诸如内存、闪存驱动、磁盘或者任何其他介质,其能够用于存储信息和/或数据并且可以在计算设备101内被访问。
计算设备101可以还包括另外的可拆卸/不可拆卸、易失性/非易失性存储介质。尽管未在图1中示出,可以提供用于从可拆卸、非易失性磁盘进行读取或写入的磁盘驱动和用于从可拆卸、非易失性光盘进行读取或写入的光盘驱动。在这些情况中,每个驱动可以由一个或多个数据介质接口被连接至总线(未示出)。
通信单元140实现通过通信介质与另外的设备进行通信。附加地,计算设备101的组件的功能可以以单个计算集群或多个计算机来实现,这些计算机能够通过通信连接进行通信。因此,计算设备101可以使用与一个或多个其他服务器、个人计算机(PC)或者另一个一般网络节点的逻辑连接来在联网环境中进行操作。
输入设备150可以是一个或多个各种输入设备,例如鼠标、键盘、追踪球、语音输入设备等。输出设备160可以是一个或多个输出设备,例如显示器、扬声器、打印机等。计算设备101还可以根据需要通过通信单元140与一个或多个外部设备(未示出)进行通信,外部设备诸如存储设备、显示设备等,与一个或多个使得用户与计算设备101交互的设备进行通信,或者与使得计算设备101与一个或多个其他计算设备通信的任何设备(例如,网卡、调制解调器等)进行通信。这样的通信可以经由输入/输出(I/O)接口(未示出)来执行。
在一些实现中,除了被集成在单个设备上之外,计算设备101的各个部件中的一些或所有部件还可以以云计算架构的形式被设置。在云计算架构中,这些部件可以被远程布置,并且可以一起工作以实现本公开所描述的功能。在一些实现中,云计算提供计算、软件、数据访问和存储服务,它们不需要终端用户知晓提供这些服务的系统或硬件的物理位置或配置。在各种实现中,云计算使用适当的协议通过广域网(诸如因特网)提供服务。例如,云计算提供商通过广域网提供应用,并且它们可以通过web浏览器或任何其他计算组件被访问。云计算架构的软件或组件以及相应的数据可以被存储在远程位置处的服务器上。云计算环境中的计算资源可以在远程数据中心位置处被合并或者它们可以被分散。云计算基础设施可以通过共享数据中心提供服务,即使它们表现为针对用户的单一访问点。因此,可以使用云计算架构从远程位置处的服务提供商提供本文所描述的组件和功能。备选地,它们可以从常规服务器被提供,或者它们可以直接或以其他方式被安装在客户端设备上。
计算设备101可以用于实施本公开的多个实现中的深度学习模型的执行。计算设备101中的模型执行可以响应于来自设备102的请求而启动。在执行深度学习模型时,计算设备101可以从另一设备102获得深度学习模型的输入172。例如,计算设备101可以经由通信单元140从设备102接收172。设备102例如可以是用户终端,用于响应于用户操作而将输入172提供给计算设备101。计算设备101中存储有要执行的深度学习模型,并且计算设备101被配置为促使深度学习模型处理输入172,以生成深度学习模型的输出174。输出174可以例如通过通信单元140被提供给设备102。
本公开的实现提出了一种用于深度学习模型的执行的方案。该方案提出在计算设备的受信任执行环境(TEE)中执行深度学习模型,特别是执行深度学习模型的卷积层的卷积操作。在具体描述本公开的实现之前,首先简单介绍TEE。
TEE是一种硬件保护的安全执行环境,也称为硬件保护的堡垒区域(enclave)或安全堡垒区域。TEE可以实现与计算设备的其他部分的隔离执行。TEE中的代码执行可以获得非常高级别的保护,确保在操作系统、管理程序和基本输入/输出系统(BIOS)等被感染病毒或受到恶意攻击时仍然能够保护TEE中的代码和数据的机密性和完整性。TEE还能够防御诸如存储器刺探等硬件攻击。因此,即使是计算设备的恶意管理员也无法访问TEE中的代码和数据。在一些实现中,TEE还提供第三方的远程鉴证,以验证被加载到TEE中的代码和数据。
TEE可以被实现在计算设备的处理器中,由处理器的硬件保护机制进行保护,其中的代码和数据可以通过处理器的特定受保护存储器区域执行和存储。TEE与TEE外部的组件或设备交换的数据、信息等均被加密,从而保护数据安全性。TEE例如可以由软件安全扩展(SGX)技术来实现。TEE的其他实现方式例如可以是安全虚拟机、聚合安全引擎(CSE)等。
由此可见,TEE可以被用于需要防止隐私泄露的应用中。然而,发明人通过研究发现,如果直接将深度学习模型放入TEE中执行,可能存在一些性能方面的缺陷。例如,在TEE中实现的深度学习模型的执行速度比在TEE外部的标准计算环境中的执行速度要降低数倍(例如,低6.4倍)。发明人发现造成这样的性能降低的原因主要有以下两个方面。
在一个方面,TEE内的存储器读和写比TEE外部的标准执行环境慢,然而深度学习模型的执行需要大量的存储器读和写操作。存储器操作速度降低是因为TEE使用特定的受保护存储区,也称为处理器预留存储器(PRM)。受保护存储区中的所有数据均通过专用芯片组加密,这使得在每次访问存储器时均要进行额外的数据加密和解密。
另一方面,受保护存储区通常是有限的,难以在运行时根据需要进行扩展。例如,在英特尔Skylake CPU中,这样的受保护存储区是128MB。因此,这样的存储空间大小通常小于许多深度学习模型的大小,例如一些大型深度学习模型可能需要超过1GB的存储空间,而一些深度较小的深度学习模型可能也需要200MB以上的存储空间。虽然TEE可以通过诸如调页技术来支持比受保护存储区更大的存储空间需要,但这会进一步降低执行速度,因为调页技术要求将数据频繁地从受保护存储区中交换到未受保护的存储区域或者从未受保护的存储区域交换进受保护存储区,从而引发额外的数据加密和解密操作。虽然从理论上来说,增加TEE的受保护存储区是可行的,但受保护存储区的大小通常是在BIOS中从工程上谨慎设置的值,难以被轻易修改。此外,增加TEE的受保护存储区的大小也会减小计算设备中可用于不要求存储保护的其他标准应用的存储空间。
考虑到在存储空间限制和存储访问方面的约束,发明人发现在将深度学习模型放入TEE中执行时,深度学习模型中的卷积操作需要进一步改进。因此,根据本公开的一些实现,提出了一种改进的深度学习模型的执行方案。具体地,根据该方案,卷积操作被划分为多个分区卷积操作,多个分区卷积操作在TEE中被顺序执行。针对每个分区卷积操作,确定卷积层的输入确定要由该分区卷积操作处理的矩阵形式的输入部分。输入部分被存储在TEE的受保护存储区中。通过输入部分和用于卷积操作的参数值集合中针对输入部分的参数值子集的单个矩阵相乘操作来确定该分区卷积操作的结果。通过合并多个分区卷积操作的结果,确定卷积操作的结果,以作为卷积层的输出。
通过在TEE中执行深度学习模型,可以提高对数据的保护,防止用户隐私被泄露。由此,可以在具有强大计算能力的外部计算设备上执行深度学习模型,在保护用户隐私的同时实现模型执行的高准确度和低延迟。此外,通过将卷积操作划分为顺序执行的多个分区卷积操作,可以进一步将模型执行适配到存储空间有限的TEE中,获得计算速度和存储空间消耗之间的权衡。
以下参考附图来说明本公开的基本原理和若干示例实现。
首先参考图2,其示出了根据本公开的一些实现的计算设备中实现的计算环境的示意框图。为便于说明,以在图1的计算设备101中实现的计算环境为例。根据本公开的实现,计算设备101在操作时建立执行环境200。执行环境200包括TEE 210。在本文中,执行环境200中除TEE 210之外的部分被称为未受信任执行环境。
如以上提及的,TEE 210是一种硬件协助的安全执行环境,可以提供尽可能小的攻击表面(比如,处理器边界)。TEE 210可以被实现在计算设备101的处理器110中,由处理器110的硬件保护机制提供代码和数据保护。TEE 210还被分配有受保护存储区212。受保护存储区212不会被非TEE的操作访问,包括外围设备的直接存储器访问(DMA)。在一些实现中,受保护存储区212具有预定大小,用于TEE中的高速存储、存储器加解密所需要的元数据存储等。在一些实现中,TEE 210还可以被实现为支持页面交换,从而可以在需要时将受保护存储区212中的数据(例如很少被使用的数据)交换到受保护存储区212以外的未受保护存储空间中,或者从未受保护存储空间中提取数据。由此,TEE 210在执行时可以使用比受保护存储区212更大的存储空间。在页面交换时,TEE 210使用对称密钥加密方法来保护数据的机密性和完整性。
根据本公开的实现,在TEE 210中执行深度学习模型220的一部分或全部。TEE 210包括模型执行器214,用于执行深度学习模型220中的相应操作。
为便于理解,下文简单介绍深度学习模型220。图2中将深度学习模型220被示出为一种神经网络。神经网络具有分层架构,每一网络层具有一个或多个处理节点(称为神经元或滤波器),用于处理。在神经网络中,前一层执行处理后的输出是下一层的输入,其中架构中的第一层接收模型输入172用于处理,而最后一层的输出被提供为模型输出174。如图2所示,深度学习模型220包括N个网络层222-1、222-2......222-N等,其中N是大于2的整数,网络层222-1接收模型输入172,网络层222-N提供模型输出174。为便于描述,深度学习模型220的网络层222-1、222-2、......、222-N有时也被统称为或单独称为网络层222。
应当理解,图2示出的深度学习模型的架构以及其中的网络层和处理节点的数目均是示意性的。在不同的应用中,根据需要,深度学习模型可以被设计为具有其他架构。
一般来说,在神经网络内的主要处理操作是交织的线性和非线性变换。这些处理被分布在各个处理节点。图2还示出了模型220中的一个节点221的放大视图。节点221接收多个输入值a1、a2、a3等等,并且基于相应参数值(诸如权重w1、w2、w3等)对输入值进行处理,以生成输出z。节点221可以被设计为利用一个激活函数来处理输入,这可以被表示为:
z=σ(wTa) (1)
其中
Figure BDA0002081185230000101
表示节点221的输入向量(其中包括元素a1、a2、a3等);
Figure BDA0002081185230000103
表示节点221所使用的参数值中的权重向量(其中包括元素w1、w2、w3等),每个权重用于加权相应的输入;N表示输入值的数目;σ()表示节点221所使用的激活函数,激活函数可以是线性函数、非线性函数。神经网络中常用的激活函数包括sigmoid函数、ReLu函数、tanh函数、maxout函数等等。节点221的输出也可以被称为激活值。取决于网络设计,每一网络层的输出(即激活值)可以被提供给下一层的一个、多个或全部节点作为输入。
某些类型的节点221的参数值还可以包括针对每个输入的偏置,此时公式(1)可以被改写为:
z=σ(wTa+b) (2)
其中
Figure BDA0002081185230000102
表示节点221所使用的参数值中的偏置向量(其中包括元素b1、b2、b3等),每个偏置用于偏置相应的输入和加权的结果。
在深度学习模型220中的每个网络层可以包括一个或多个节点221,当以网络层为单位来查看深度学习模型220中的处理时,每个网络层的处理也可以被类似表示为公式(1)或公式(2)的形式,此时a表示网络层的输入向量,而w和可能的b表示网络层的参数值,它们的尺寸相应增大。
在一些实现中,深度学习模型220的执行可以是在深度学习模型220已经被训练的情况下的模型执行。在已训练的深度学习模型220的参数的取值(或简称为参数值)是已确定的。在模型执行时,利用已训练参数值来处理模型的输入,以确定对应输出。这样的模型执行也可以被称为模型推理或模型使用。
在另外一些实现中,深度学习模型220的执行可以是在深度学习模型220的训练阶段的模型执行。在训练阶段,将用于训练的数据输入到深度学习模型220,通过确定深度学习模型220在当前参数值的基础上确定的输出与真实输出之间的差异来调整参数的当前值。在训练时,深度学习模型220的参数的取值需要不断执行,直到符合训练的收敛条件。因此,在模型训练阶段的每次模型执行使用参数的当前值。
在深度学习模型220中,特别是在具有分层架构的深度学习模型220中,以层为单位执行处理。模型执行器214被配置为逐层执行深度学习模型220。考虑到TEE 210的受保护存储区212的空间有限,在一些实现中,深度学习模型220将被解析,其中模型的各个层的结构、连接关系、节点的属性等配置信息被配置在TEE 210中,而深度学习模型220的参数值202被存储在TEE 210外部未受保护的存储区。由此,模型执行器214可以根据配置信息确定深度学习模型220的模型结构和各个层的处理方式。深度学习模型220的参数值需要占用较大的存储空间,而且与用户数据相比,参数值的安全和隐私性要求较低,因此在将其存储在未受保护存储区中可以节约TEE 210可用的存储空间。此外,这可以防止在将大量数据存储在受保护存储区212的情况下可能引发的频繁页面交换带来的延迟,因为整个模型的所有参数值在TEE 210中不会均被频繁使用,从而可能触发页面交换机制。未受保护存储区例如可以是计算设备110的一般存储器。
在参数值被存储在为受保护存储区的情况下,TEE 210还可以包括参数加载器216,用于按需从外部存储区中将所需参数值加载到受保护存储区212,以供模型执行器214使用。这可以提高TEE 210中存储空间的效率。深度学习模型220的参数值202的存储地址可以被提供给参数加载器216,使参数加载器216可以从外部存储区获取所需参数值。由于在深度学习模型220逐层执行,在一些实现中,参数加载器216可以从模型的第一层到最后一层逐层加载参数值。参数值的加载可以取决于模型执行器214中的当前执行阶段。
在一些实现中,模型执行器214中的模型执行可以由执行请求触发。例如,深度学习模型220的模型输入172可以来自计算设备101的外部设备,例如图1的设备102。设备102可以是终端设备,所提供的模型输入172可能是敏感或隐私的用户信息。模型输入172可以经由设备102与TEE 210之间的安全通道被提供到TEE 210中。在一个示例中,模型输入172可以被加密,由计算设备101的通信单元140接收,并且被提供到TEE 210中。模型输入172在TEE 210中被解密,以用于触发深度学习模型210的执行。
在本公开的实现中,要执行的深度学习模型220包括一个或多个卷积层222。卷积层是深度神经网络中经常采用的一种网络层,对于诸如图像、视频等数据可以实现非常好的处理效果。具有卷积层的深度学习模型220有时也被称为卷积神经网络。取决于深度学习模型220的配置,卷积层可以被部署在模型的第一层和/或中间层。如下文将讨论的,深度学习模型220中的卷积操作对计算资源和存储资源要求较高,因此改进卷积操作有助于显著提高在安全程度高但存储资源有限的TEE 210中的模型执行,加快模型执行速度,提高存储空间效率。
深度学习模型220中的卷积层222包括一个或多个卷积核,也称为滤波器。每个卷积核的参数值具有长、宽和深三个维度。卷积核的长和宽是深度学习模型220的超参数,可以由模型的设计人员指定。长×宽也被称为卷积核的尺寸,常用的尺寸例如可以是2×2、3×3、5×5等。卷积核的深度与卷积层的输入有关。通常,卷积层的输入被表示为一个或多个二维特征图(或者对于第一层而言,输入是原始图像)。输入的深度指的是输入图像的通道数(即,特征图数目)。每个卷积层的卷积核的数目也是深度学习模型220的超参数,可以由设计人员预先指定。卷积核的数目与期望卷积层输出的特征图数目相同,该数目也作为深度学习模型220的超参数被预先配置。每个卷积核的参数值与卷积层的输入的对应部分进行点乘,并且卷积核在输入上以预定步长滑动,从而获得多个点乘结果,形成该卷积核对应的输出,即一个特征图。如果卷积层具有多个卷积核,每个卷积核均可以被用于相应计算特征图,作为卷积层的输出。
图3A示出了一个示例的深度学习模型220的某个卷积层222的直接卷积操作。在图3A的示例中,卷积层的输入为3×3的特征图310-1和310-2,因此输入的维度是3×3×2,其中2表示输入的通道数。该卷积层使用一个卷积核,卷积核尺寸为2×2,深度为2,因此卷积操作利用两个2×2参数值窗口的320-1和320-2分别在特征图310-1和310-2上执行卷积操作,卷积操作的步长为1。例如,参数值窗口的320-1和320-2分别从特征图310-1和310-2的左上角开始,从左到右再向下移动。例如,参数值窗口320-1移动并且与特征图310-1的元素B1、C1、E1和F1重叠,从而各个参数值K1、K2、K3和K4的矩阵与元素B1、C1、E1和F1的矩阵执行矩阵相乘,获得第一中间结果。参数值窗口320-2也类似地在特征图310-2上移动,并在移动到特征图310-2的元素B2、C2、E2和F2时,与这些元素执行矩阵相乘,获得第二中间结果。通过将第一和第二中间结果相加,形成该卷积操作的结果330中的元素O2。卷积操作的结果330中的其他元素也被类似确定。
由此可见,直接卷积操作需要许多的小矩阵相乘操作,从而降低了处理速度,使得这种直接卷积操作不适合于要求高效率的模型执行。
当前已经提出一种对卷积操作的加速方案,被称为卷积降低。图3B示出了基于卷积降低的快速卷积操作的示例。根据这种卷积操作,卷积层输入的特征图310-1和310-2中的元素被重新排列,所使用的卷积核的参数也被展开,从而可以将卷积操作的多次矩阵相乘转换成单个矩阵相乘。
如图3B所示,根据卷积核的参数值窗口320-1和320-2与特征图310-1和310-2的多次小矩阵相乘,特征图310-1和310-2的元素被重新排列成输入矩阵340。输入矩阵340与矩阵操作的参数值集合的尺寸(例如,卷积核的长度、宽度和深度)以及与输入的尺寸(特征图的长度、宽度和深度)相关。参数值窗口320-1和320-2中的各个参数值被排列成8乘以1的参数值矩阵350。注意,如果存在多个卷积核,则多个卷积核的参数值也被重新排列得到单个参数值矩阵350。由此,通过输入矩阵340与参数值矩阵350的单个矩阵相乘操作,可以确定卷积操作的结果330。例如,在单个矩阵相乘操作中,输入矩阵340中的第二行与参数值矩阵350的第一列相乘后,得到结果330中的元素O2。注意,虽然结果330中各个元素在矩阵中的排列方式不同,但各个元素取值相同,可以根据需要调整元素排列方式。
相比于多次矩阵相乘操作,卷积降低后的单个矩阵相乘操作可以显著提高卷积计算速度。然而,重新排列后的输入矩阵的尺寸远大于卷积层的输入的原始尺寸。例如,如果使用M×M的卷积核,重新排列后的输入矩阵的尺寸是原始尺寸的M2倍。在卷积操作之后,输入矩阵需要被存储,这将带来显著的存储开销。因此,卷积降低实际上是牺牲了存储开销来实现速度提高。
还有另外一些实现快速卷积操作的方法,诸如基于快速傅里叶变换(FFT)的卷积、基于Winograd的卷积等。然而,这些方法均不能降低存储开销,无法达到计算速度与存储开销之间的权衡。因此,已有的快速卷积操作均不适用于在存储空间有限的TEE中使用。
根据本公开的实现,在确定深度学习模型220的卷积层的卷积操作被触发时,TEE210中的模型执行器214顺序执行多个分区卷积操作,这些分区卷积操作共同组成卷积层的卷积操作。具体地,不同于将整个卷积操作转换成单个矩阵相乘的卷积降低方案,在本公开的实现中,卷积操作被划分为多个分区卷积操作,每个分区卷积操作利用单个矩阵相乘来实现。
具体地,针对多个分区卷积操作中的给定分区卷积操作,模型执行器214从卷积层的输入确定要由给定分区卷积操作的参数值子集处理的输入部分,该输入部分以矩阵表示。在执行分区卷积操作时,当前卷积层的参数值集合也被划分成针对不同分区卷积操作的不同参数值子集。也就是说,每个分区卷积操作利用不同的参数值来执行相应的卷积。在一些实现中,卷积层中每个卷积核对应的参数值被排列为参数值集合对应的参数值矩阵中的一列或一行。参数值矩阵可以按行或按列划分成与分区卷积操作的数目相同的参数值子集。每个参数值子集也是矩阵形式。这样的划分可以是均匀划分,即每个参数值子集中的参数值数目相同,或者可以是不均匀划分,即不同参数值子集中的参数值数目不同。模型执行器214可以从卷积层的输入中确定要由某个分区卷积操作的参数值子集处理的输入部分。该输入部分包括在整体卷积操作中将与参数值子集中的各个参数值相乘的元素。
在一些实现中,为了实现输入部分与参数值子集的单个矩阵相乘,在确定针对给定分区卷积操作的输入部分时,将卷积层的输入转换成输入矩阵。这例如类似于在矩阵降低的方案中的输入重新排列。所排列的输入矩阵因此与矩阵操作的参数值集合的尺寸(例如,卷积核的长度、宽度和深度)以及与输入的尺寸(特征图的长度、宽度和深度)相关。由此,通过重新排列,输入矩阵的行或列中包括在卷积操作中要被用于与卷积操作的参数值集合中的相应参数值顺序相乘的元素(如果要执行直接卷积操作的话)。注意,行或列包括这样排列的元素与矩阵排列方式有关,矩阵的行与列可以任意转换。然后,基于多个分区卷积操作的数目和给定卷积操作在多个分区卷积操作中的排序顺序,从输入矩阵确定与给定分区卷积操作的参数值子集将要处理的输入部分。因此,单个输入矩阵被划分成与分区卷积操作相同的数目。
参考图4来更好地理解本公开的分区卷积操作。如图4所示,卷积层的输入特征图310-1和310-2与参数值窗口320-1和320-2组成的参数值集合之间的卷积操作被划分成两个分区卷积操作。参数值集合被划分成与两个分区卷积操作分别对应的参数值子集420-1和420-2。在这个示例中,参数值集合被均匀划分。在第一分区卷积操作中,从输入特征图310-1和310-2确定输入部分410-1,输入部分410-1将要由参数值子集420-1处理。输入部分410-1可以通过对从输入特征图310-1和310-2确定的单个输入矩阵(例如图3B中的单个矩阵340)进行划分确定。在这个示例中,由于单个矩阵340的行中的元素在卷积操作中要被用于与参数值集合中的相应参数值顺序相乘,因此将输入矩阵340按列划分成两个部分。
在确定针对给定分区卷积操作的输入部分后,模型执行器214将输入部分存储在TEE 210的受保护存储区212中。然后,模型执行器214将输入部分与针对对应分区卷积操作的参数值子集执行单个矩阵相乘操作,从而确定当前分区卷积操作的结果。在当前分区卷积操作的结果被确定后,针对当前分区卷积操作的输入部分从受保护存储区212中被移除,从而该输入部分可以被重新用于存储下一个分区卷积操作。这可以降低在卷积过程中所要求的存储空间。
例如,在图4中,模型执行器214首先存储输入部分410-1,然后执行输入部分410-1与参数值子集420-1的单个矩阵相乘操作,确定第一分区卷积操作的结果430-1。在单个矩阵相乘操作中,输入部分410-1的每一行与参数值子集420-1相乘,相乘的结果对应于第一分区卷积操作的结果430-1中的一个元素。例如,输入部分410-1的第二行中的元素B1、C1、E1和F1与参数值子集420-1相乘,得到结果430-1中的元素O2’。输入部分410-1此时可以从受保护存储区212中被移除。接下来,模型执行器214确定和存储下一分区卷积操作要处理的输入部分410-2,执行输入部分410-2与参数值子集420-2的单个矩阵相乘,以确定第二分区卷积操作的结果430-2。
模型执行器210可以顺序执行多个分区卷积操作。在确定多个分区卷积操作中每个分区卷积操作的结果后,模型执行器214通过合并多个分区卷积操作的结果来确定卷积操作的结果,以作为卷积层的输出。例如,在图4中,模型执行器214将第一分区卷积操作的结果430-1和第二分区卷积操作的结果430-2合并,确定卷积操作的最终结果330。在本公开的实现中,一个卷积层的卷积操作被表示为多个分区卷积操作之和,这可以被表示为如下:
Figure BDA0002081185230000171
其中O表示卷积操作的结果,即卷积层的输出;Ii表示第i个输入部分;Ki表示第i个参数值子集;并且n表示分区卷积操作的数目。
在本公开的分区卷积过程中,由于每次分区卷积操作仅需要存储当前分区卷积操作所要使用的输入部分,通过及时移除前一次分区卷积操作所使用的输入部分,在实现卷积的过程中所要求的存储空间减少。这样的存储空间减少使得深度学习模型更适合于在存储空间有限的TEE中执行。在一些实现中,每个分区卷积操作的结果也被存储在受保护存储区212中,直到卷积操作的最终结果被确定。
在一些实现中,针对特定卷积层,要执行的分区卷积操作的数目可以基于受保护存储区212的可用存储空间大小被确定。模型执行器214可以在每次执行某个卷积层的卷积操作时根据TEE中当前可用存储空间大小被确定要执行的分区卷积操作的数目。分区卷积操作的数目也可以特定于要执行的深度学习模型,例如基于深度学习模型中存储消耗最大的卷积层来确定。分区卷积操作的数目也可以是任何固定值。
在一些实现中,要执行的分区卷积操作的数目可以是2的n次方,在此n可以是大于等于1的整数。在一些实现中,要执行的分区卷积操作的数目可以被设置为小于在直接卷积操作中要执行的矩阵相乘操作的数目,以便使得整个卷积过程的速度相比于直接卷积操作的数目有所提升。例如,在图4的示例中,分区卷积操作的数目可以小于8。
在一些实现中,模型执行器214可以确定要执行的分区卷积操作的数目,以使得在顺序执行的每个分区卷积操作中所要求的存储空间小于预定存储空间阈值。预定存储空间阈值可以与TEE 210的受保护存储区212的总空间大小、深度学习模型220的执行所必须的其他存储空间的大小等来确定。在一个示例中,预定存储空间阈值可以被设置为32MB。
以上讨论了在TEE 210中如何执行深度学习模型220的卷积层的卷积操作。根据深度学习模型220的逐层执行顺序,如果深度学习模型220的卷积层的卷积操作被触发,模型执行器214将会执行当前卷积层的卷积操作。该卷积层的相应卷积操作的触发可以响应于该卷积层的输入被确定。卷积层的输入确定取决于卷积层在深度学习模型220中的位置。例如,如果该卷积层位于深度学习模型220的第一层,在接收到模型输入172时,卷积操作被触发。如果该卷积层位于深度学习模型220的中间层,在该卷积层之前的网络层(可以是卷积层或者是任何其他层,诸如池化层等)的输出被确定时,卷积层的卷积操作被触发,因此前一网络层的输出将被用作卷积层的输入。
在卷积操作期间,卷积层的原始输入(而不是被卷积降低后的各个输入部分)也被存储在受保护存储区212中。在确定卷积层的输出之后,如果卷积层的原始输入不会在深度学习模型的后续层中被使用,模型执行器214或者TEE 210中的其他组件可以从受保护存储区212中移除卷积层的输入,以便进一步节省存储空间的消耗。类似地,在卷积层的输出被确定后,如果当前卷积层是深度学习模型220的中间层,其输出将在下一层中被使用作为输入,因此模型执行器214可以将该输出存储在受保护存储区212中,从而便于后续层的使用。如果在后续确定该输出不再被使用,也可以将该输出移除受保护存储区212。除了深度学习模型210的卷积层之外,对于其他网络层,也可以类似地及时清理受保护存储区212中的中间网络层的输入/输出。应注意,某些类型的网络层的输入可能在后续多个网络层后被继续使用。对这样的输入,可以在通过模型操作逻辑分析确定该输入不再被使用后才将其移除。在若干网络层之后的重新使用通常发生在循环神经网络(RNN)中。
以上提及了,在TEE 210中,由于深度学习模型220的参数值被存储在TEE 210外部的存储区,取决于模型执行器214中的当前执行阶段,参数加载器216从外部将模型执行所需要的参数值加载到TEE 210中。在一些实现中,由于多个分区卷积操作是顺序执行的,参数加载器216可以按分区卷积操作来加载参数值。例如,参数加载器216在确定给定分区卷积操作要被执行时,从TEE 210外部的存储区将对应的参数值子集加载到受保护存储区212中。在一些实现中,为避免模型执行器214要等待参数加载,参数加载器216要确保在给定分区卷积操作被执行时对应的参数值子集已经加载完毕。
在一些实现中,参数加载与模型执行可以并行执行,以便提高效率。例如,在执行卷积操作时,当模型执行器214正在执行某个分区卷积操作时,参数加载器216可以并行地对当前正在被执行的分区卷积操作之后的分区卷积操作所要使用的参数值子集进行加载。这可以确保在模型执行器214执行后一分区卷积操作时,对应的参数值子集已经在受保护存储区212中准备就绪。在深度学习模型220的整个执行过程中,除了卷积层之外,参数加载器216也可以类似地以与模型执行并行的方式进行参数加载。例如,当模型执行器214正在执行一个网络层的操作时,参数加载器216可以同时继续后一网络层的参数值的加载。
除了按网络层或者按分区卷积操作来执行参数值加载外,参数加载器216也可以按任何其他单元进行参数值加载。例如,参数加载器216可以将网络层的参数值划分成多个块,并逐块加载参数值。模型执行器214可以根据已经加载的参数值进行顺序进行操作。又例如,参数加载器216也可以每次加载多个网络层的参数值或者多个分区卷积操作的参数值。
在一些实现中,在相应的操作完成后,所加载的参数值将不会被使用,从而可以从受保护存储区212中移除,以节省存储空间。例如,在确定一个分区卷积操作的结果之后,该分区卷积操作所使用的参数值子集将从受保护存储区212被移除。
由于深度学习模型210的参数值被存储至不受保护的外部存储区中,在一些实现中,在从外部存储区获得参数值之后,还可以在TEE 210中执行对参数值的完整性校验。图5示出了这样的实现的示例。如图5所示,TEE 210中还包括参数校验器510。
受保护存储区212中预先存储深度学习模型210的参数值的预期完整性校验值集合502。集合502中的预期完整性校验值可以是在TEE 210被创建的初始阶段所存储的。可以针对深度学习模型210的每个参数值子集计算的一个预期完整性校验值,或者也可以将参数值子集进一步划分成多个更小的子集,并且针对每个更小的子集计算一个预期完整性校验值。对于深度学习模型210中的其他网络层的参数值集合,也可以类似地计算单个预期完整性校验值,或者将参数值集合划分成多个子集,并为每个子集计算预期完整性校验值。完整性校验值例如可以通过对对应的参数值执行哈希运算来确定,这样的完整性校验值也称为哈希校验值。
在参数加载器216从外部获得由给定分区卷积操作使用的参数值子集之后,参数校验器510也以类似的方式计算所获得的参数值子集的完整性校验值,然后将所计算的完整性校验值与对应的预期完整性校验值进行比较。如果所计算的完整性校验值与预期完整性校验值匹配(即,相同),参数校验器510确认参数值子集的完整性。在这种情况下,参数值子集被正式存储到受保护存储区212中。在一些实现中,如果参数值子集的完整性校验没有通过,参数校验器510可以促使TEE 210中的模型执行过程停止。然后,TEE 210向设备102返回错误消息,指示深度学习模型210的参数值发生错误。对于错误的后续处理可以有许多选择,可以由设备102或其用户确定是否继续执行模型。
在一些实现中,由于参数值在通过检验后才可被模型执行器214所使用,为提高模型执行的效率,参数加载、参数校验和模型执行这三个阶段可以并行执行。在一些实现中,受保护缓冲区212中被配置一个环形缓冲区,用于存储参数值子集。在TEE 210中可以创建针对这三个处理阶段的并行流水线线程。图6示出了参数加载器216、参数校验器510和模型执行器214的流水线式处理。
一旦一个参数值子集被参数加载器216放入环形缓冲区,参数校验器510可以立即开始计算和校验参数值子集的完整性校验值。此时,参数加载器216开始加载下一个参数值子集。类似地,在参数校验器510完成校验后,模型执行器214可以立即使用已被校验的参数值子集开始模型执行,而参数校验器510可以开始校验下一个参数值子集。在参数值子集已经被用于模型执行之后,可以从环形缓冲区中被释放,以使环形缓冲区可以用于加载新的参数值。
从图6可以看出,在同一个时间,模型执行器214可以利用第一参数值子集(被表示为块1)来执行第一分区卷积操作时,参数校验器510可以正在执行第一分区卷积操作之后的第二分区卷积操作所要使用的第二参数值子集(被表示为块2)的完整性校验,而参数加载器216可以正在执行第二分区卷积操作之后的第三分区卷积操作所要使用的第三参数值子集(被表示为块3)的加载。这样的并行流水线式处理可以提高TEE中的模型执行速度。
图7示出了根据本公开一些实现的过程700的流程图。过程700可以由计算设备101来实现,例如可以被实现在计算设备101的处理器110中。
在框710,计算设备101确定深度学习模型的卷积层的卷积操作被触发。响应于深度学习模型的卷积层的卷积操作被触发,在框720,计算设备101确定多个分区卷积操作中还有要执行的分区卷积操作。多个分区卷积操作使用由参数值集合划分的不同参数值子集。如果存在要执行的分区卷积操作,在框730,计算设备101将卷积层的输入中要由给定分区卷积操作的参数值子集处理的输入部分存储在TEE的受保护存储区中。输入部分被表示为矩阵。在框740,计算设备101通过输入部分和针对给定分区卷积操作的参数值子集的单个矩阵相乘操作来确定给定分区卷积操作的结果。参数值子集被表示为矩阵。在框750,计算设备101从受保护存储区移除输入部分。
然后,过程700返回框720,计算设备101继续确定是否还有未被执行的分区卷积操作,并在存在要执行的分区卷积操作时,重复框730至框750,以确定分区卷积操作的结果,直到所有分区卷积操作均被执行。在没有要执行的分区卷积操作时,在框760,计算设备101通过合并多个分区卷积操作的结果来确定卷积操作的结果,以作为卷积层的输出。
在一些实现中,在深度学习模型的执行中,如果卷积层的卷积操作没有被触发,即执行其他类型的网络层中的操作,计算设备101也可以根据模型的配置,从TEE外部获得相应的参数值,并且基于所获得的参数值执行相应网络层的操作。
在一些实现中,多个分区卷积操作的数目基于受保护存储区的可用存储空间大小被确定。
在一些实现中,将输入部分存储在受保护存储区中包括:基于参数值集合的尺寸和输入的尺寸,将输入转换成输入矩阵,输入矩阵的行或列中的元素在卷积操作中要被用于与参数值集合中的相应参数值顺序相乘;基于多个分区卷积操作的数目和给定卷积操作在多个分区卷积操作中的排序顺序,从输入矩阵确定与参数值子集对应的输入部分;以及将所确定的输入部分存储在受保护存储区中。
在一些实现中,参数值集合被存储在TEE外部的存储区。过程700还包括:响应于确定给定分区卷积操作要被执行,从TEE外部的存储区将参数值子集加载到受保护存储区中。
在一些实现中,将参数值子集加载到受保护存储区中还包括:在TEE中执行对参数值子集的完整性校验,包括:计算参数值子集的完整性校验值,将所计算的完整性校验值与在受保护存储区中存储的预期完整性校验值进行比较,以及响应于所计算的完整性校验值与预期完整性校验值匹配,确认参数值子集的完整性;以及响应于确认参数值子集的完整性,将参数值子集存储到受保护存储区中。
在一些实现中,过程700还包括:在确定给定分区卷积操作的结果之后,从受保护存储区移除参数值子集。
在一些实现中,计算参数值子集的完整性校验值包括:通过对参数值子集执行哈希运算来确定完整性校验值。
在一些实现中,将参数值子集加载到受保护存储区中包括:与多个分区卷积操作中在给定分区卷积操作之前的分区卷积操作的执行并行地,将参数值子集加载到受保护存储区中。
在一些实现中,在TEE中执行对参数值子集的完整性校验包括与以下各项并行地在TEE中执行对参数值子集的完整性校验:多个分区卷积操作中在给定分区卷积操作之前的分区卷积操作的执行;以及另一参数值子集到受保护存储区的加载,另一参数值子集将在多个分区卷积操作中在给定分区卷积操作之后的分区卷积操作中被使用。
在一些实现中,参数值集合包括:深度学习模型的已训练的参数值集合,或者深度学习模型的正在训练的参数值集合。
在一些实现中,卷积层的输入被存储在受保护存储区中,过程700还包括:响应于在输出被确定之后输入不会在深度学习模型的后续层中被使用,从受保护存储区移除输入。
以下列出了本公开的一些示例实现方式。
在一方面,本公开提供了一种计算机实现的方法。该方法包括:响应于深度学习模型的卷积层的卷积操作被触发,在计算设备的受信任执行环境(TEE)中,基于卷积层的输入和参数值集合来顺序执行多个分区卷积操作,多个分区卷积操作使用由参数值集合划分的不同参数值子集,多个分区卷积操作中的给定分区卷积操作的执行包括:将输入中要由给定分区卷积操作的参数值子集处理的输入部分存储在TEE的受保护存储区中,输入部分被表示为矩阵,通过输入部分和针对给定分区卷积操作的参数值子集的单个矩阵相乘操作来确定给定分区卷积操作的结果,参数值子集被表示为矩阵,以及从受保护存储区移除输入部分;以及通过合并多个分区卷积操作的结果来确定卷积操作的结果,以作为卷积层的输出。
在一些实现中,多个分区卷积操作的数目基于受保护存储区的可用存储空间大小被确定。
在一些实现中,将输入部分存储在受保护存储区中包括:基于参数值集合的尺寸和输入的尺寸,将输入转换成输入矩阵,输入矩阵的行或列中的元素在卷积操作中要被用于与参数值集合中的相应参数值顺序相乘;基于多个分区卷积操作的数目和给定卷积操作在多个分区卷积操作中的排序顺序,从输入矩阵确定与参数值子集对应的输入部分;以及将所确定的输入部分存储在受保护存储区中。
在一些实现中,参数值集合被存储在TEE外部的存储区。方法还包括:响应于确定给定分区卷积操作要被执行,从TEE外部的存储区将参数值子集加载到受保护存储区中。
在一些实现中,将参数值子集加载到受保护存储区中还包括:在TEE中执行对参数值子集的完整性校验,包括:计算参数值子集的完整性校验值,将所计算的完整性校验值与在受保护存储区中存储的预期完整性校验值进行比较,以及响应于所计算的完整性校验值与预期完整性校验值匹配,确认参数值子集的完整性;以及响应于确认参数值子集的完整性,将参数值子集存储到受保护存储区中。
在一些实现中,方法还包括:在确定给定分区卷积操作的结果之后,从受保护存储区移除参数值子集。
在一些实现中,计算参数值子集的完整性校验值包括:通过对参数值子集执行哈希运算来确定完整性校验值。
在一些实现中,将参数值子集加载到受保护存储区中包括:与多个分区卷积操作中在给定分区卷积操作之前的分区卷积操作的执行并行地,将参数值子集加载到受保护存储区中。
在一些实现中,在TEE中执行对参数值子集的完整性校验包括与以下各项并行地在TEE中执行对参数值子集的完整性校验:多个分区卷积操作中在给定分区卷积操作之前的分区卷积操作的执行;以及另一参数值子集到受保护存储区的加载,另一参数值子集将在多个分区卷积操作中在给定分区卷积操作之后的分区卷积操作中被使用。
在一些实现中,参数值集合包括:深度学习模型的已训练的参数值集合,或者深度学习模型的正在训练的参数值集合。
在一些实现中,卷积层的输入被存储在受保护存储区中,方法还包括:响应于在输出被确定之后输入不会在深度学习模型的后续层中被使用,从受保护存储区移除输入。
在另一方面,本公开提供了一种电子设备。该电子设备包括:处理器;以及存储器,耦合至处理器并且包含存储于其上的指令,指令在由处理器执行时使设备执行以下动作:响应于深度学习模型的卷积层的卷积操作被触发,在计算设备的受信任执行环境(TEE)中,基于卷积层的输入和参数值集合来顺序执行多个分区卷积操作,多个分区卷积操作使用由参数值集合划分的不同参数值子集,多个分区卷积操作中的给定分区卷积操作的执行包括:将输入中要由给定分区卷积操作的参数值子集处理的输入部分存储在TEE的受保护存储区中,输入部分被表示为矩阵,通过输入部分和针对给定分区卷积操作的参数值子集的单个矩阵相乘操作来确定给定分区卷积操作的结果,参数值子集被表示为矩阵,以及从受保护存储区移除输入部分;以及通过合并多个分区卷积操作的结果来确定卷积操作的结果,以作为卷积层的输出。
在一些实现中,多个分区卷积操作的数目基于受保护存储区的可用存储空间大小被确定。
在一些实现中,将输入部分存储在受保护存储区中包括:基于参数值集合的尺寸和输入的尺寸,将输入转换成输入矩阵,输入矩阵的行或列中的元素在卷积操作中要被用于与参数值集合中的相应参数值顺序相乘;基于多个分区卷积操作的数目和给定卷积操作在多个分区卷积操作中的排序顺序,从输入矩阵确定与参数值子集对应的输入部分;以及将所确定的输入部分存储在受保护存储区中。
在一些实现中,参数值集合被存储在TEE外部的存储区。动作还包括:响应于确定给定分区卷积操作要被执行,从TEE外部的存储区将参数值子集加载到受保护存储区中。
在一些实现中,将参数值子集加载到受保护存储区中还包括:在TEE中执行对参数值子集的完整性校验,包括:计算参数值子集的完整性校验值,将所计算的完整性校验值与在受保护存储区中存储的预期完整性校验值进行比较,以及响应于所计算的完整性校验值与预期完整性校验值匹配,确认参数值子集的完整性;以及响应于确认参数值子集的完整性,将参数值子集存储到受保护存储区中。
在一些实现中,动作还包括:在确定给定分区卷积操作的结果之后,从受保护存储区移除参数值子集。
在一些实现中,计算参数值子集的完整性校验值包括:通过对参数值子集执行哈希运算来确定完整性校验值。
在一些实现中,将参数值子集加载到受保护存储区中包括:与多个分区卷积操作中在给定分区卷积操作之前的分区卷积操作的执行并行地,将参数值子集加载到受保护存储区中。
在一些实现中,在TEE中执行对参数值子集的完整性校验包括与以下各项并行地在TEE中执行对参数值子集的完整性校验:多个分区卷积操作中在给定分区卷积操作之前的分区卷积操作的执行;以及另一参数值子集到受保护存储区的加载,另一参数值子集将在多个分区卷积操作中在给定分区卷积操作之后的分区卷积操作中被使用。
在一些实现中,参数值集合包括:深度学习模型的已训练的参数值集合,或者深度学习模型的正在训练的参数值集合。
在一些实现中,卷积层的输入被存储在受保护存储区中,动作还包括:响应于在输出被确定之后输入不会在深度学习模型的后续层中被使用,从受保护存储区移除输入。
在又一方面,本公开提供了一种计算机程序产品,计算机程序产品被有形地存储在计算机存储介质中并且包括机器可执行指令,机器可执行指令在由设备执行时使设备:响应于深度学习模型的卷积层的卷积操作被触发,在计算设备的受信任执行环境(TEE)中,基于卷积层的输入和参数值集合来顺序执行多个分区卷积操作,多个分区卷积操作使用由参数值集合划分的不同参数值子集,多个分区卷积操作中的给定分区卷积操作的执行包括:将输入中要由给定分区卷积操作的参数值子集处理的输入部分存储在TEE的受保护存储区中,输入部分被表示为矩阵,通过输入部分和针对给定分区卷积操作的参数值子集的单个矩阵相乘操作来确定给定分区卷积操作的结果,参数值子集被表示为矩阵,以及从受保护存储区移除输入部分;以及通过合并多个分区卷积操作的结果来确定卷积操作的结果,以作为卷积层的输出。
在一些实现中,多个分区卷积操作的数目基于受保护存储区的可用存储空间大小被确定。
在一些实现中,将输入部分存储在受保护存储区中包括:基于参数值集合的尺寸和输入的尺寸,将输入转换成输入矩阵,输入矩阵的行或列中的元素在卷积操作中要被用于与参数值集合中的相应参数值顺序相乘;基于多个分区卷积操作的数目和给定卷积操作在多个分区卷积操作中的排序顺序,从输入矩阵确定与参数值子集对应的输入部分;以及将所确定的输入部分存储在受保护存储区中。
在一些实现中,参数值集合被存储在TEE外部的存储区。动作还包括:响应于确定给定分区卷积操作要被执行,从TEE外部的存储区将参数值子集加载到受保护存储区中。
在一些实现中,将参数值子集加载到受保护存储区中还包括:在TEE中执行对参数值子集的完整性校验,包括:计算参数值子集的完整性校验值,将所计算的完整性校验值与在受保护存储区中存储的预期完整性校验值进行比较,以及响应于所计算的完整性校验值与预期完整性校验值匹配,确认参数值子集的完整性;以及响应于确认参数值子集的完整性,将参数值子集存储到受保护存储区中。
在一些实现中,动作还包括:在确定给定分区卷积操作的结果之后,从受保护存储区移除参数值子集。
在一些实现中,计算参数值子集的完整性校验值包括:通过对参数值子集执行哈希运算来确定完整性校验值。
在一些实现中,将参数值子集加载到受保护存储区中包括:与多个分区卷积操作中在给定分区卷积操作之前的分区卷积操作的执行并行地,将参数值子集加载到受保护存储区中。
在一些实现中,在TEE中执行对参数值子集的完整性校验包括与以下各项并行地在TEE中执行对参数值子集的完整性校验:多个分区卷积操作中在给定分区卷积操作之前的分区卷积操作的执行;以及另一参数值子集到受保护存储区的加载,另一参数值子集将在多个分区卷积操作中在给定分区卷积操作之后的分区卷积操作中被使用。
在一些实现中,参数值集合包括:深度学习模型的已训练的参数值集合,或者深度学习模型的正在训练的参数值集合。
在一些实现中,卷积层的输入被存储在受保护存储区中,动作还包括:响应于在输出被确定之后输入不会在深度学习模型的后续层中被使用,从受保护存储区移除输入。
在又一方面,本公开提供了一种计算机可读介质,其上存储有机器可执行指令,机器可执行指令在由设备执行时使设备执行上述方面的方法。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)等等。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实现的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。

Claims (20)

1.一种计算机实现的方法,包括:
响应于深度学习模型的卷积层的卷积操作被触发,在计算设备的受信任执行环境(TEE)中,基于所述卷积层的输入和参数值集合来顺序执行多个分区卷积操作,所述多个分区卷积操作使用由所述参数值集合划分的不同参数值子集,所述多个分区卷积操作中的给定分区卷积操作的执行包括:
将所述输入中要由所述给定分区卷积操作的参数值子集处理的输入部分存储在所述TEE的受保护存储区中,所述输入部分被表示为矩阵,
通过所述输入部分和针对所述给定分区卷积操作的参数值子集的单个矩阵相乘操作来确定所述给定分区卷积操作的结果,所述参数值子集被表示为矩阵,以及
从所述受保护存储区移除所述输入部分;以及
通过合并所述多个分区卷积操作的结果来确定所述卷积操作的结果,以作为所述卷积层的输出。
2.根据权利要求1所述的方法,其中所述多个分区卷积操作的数目基于所述受保护存储区的可用存储空间大小被确定。
3.根据权利要求1所述的方法,其中将所述输入部分存储在所述受保护存储区中包括:
基于所述参数值集合的尺寸和所述输入的尺寸,将所述输入转换成输入矩阵,所述输入矩阵的行或列中的元素在所述卷积操作中要被用于与所述参数值集合中的相应参数值顺序相乘;
基于所述多个分区卷积操作的数目和所述给定卷积操作在所述多个分区卷积操作中的排序顺序,从所述输入矩阵确定与所述参数值子集对应的输入部分;以及
将所确定的所述输入部分存储在所述受保护存储区中。
4.根据权利要求1所述的方法,其中所述参数值集合被存储在所述TEE外部的存储区,所述方法还包括:
响应于确定所述给定分区卷积操作要被执行,从所述TEE外部的存储区将所述参数值子集加载到所述受保护存储区中。
5.根据权利要求4所述的方法,其中将所述参数值子集加载到所述受保护存储区中还包括:
在所述TEE中执行对所述参数值子集的完整性校验,包括:
计算所述参数值子集的完整性校验值,
将所计算的完整性校验值与在所述受保护存储区中存储的预期完整性校验值进行比较,以及
响应于所计算的完整性校验值与所述预期完整性校验值匹配,确认所述参数值子集的完整性;以及
响应于确认所述参数值子集的完整性,将所述参数值子集存储到所述受保护存储区中。
6.根据权利要求5所述的方法,还包括:
在确定所述给定分区卷积操作的结果之后,从所述受保护存储区移除所述参数值子集。
7.根据权利要求5所述的方法,其中计算所述参数值子集的完整性校验值包括:
通过对所述参数值子集执行哈希运算来确定所述完整性校验值。
8.根据权利要求4所述的方法,其中将所述参数值子集加载到所述受保护存储区中包括:
与所述多个分区卷积操作中在所述给定分区卷积操作之前的分区卷积操作的执行并行地,将所述参数值子集加载到所述受保护存储区中。
9.根据权利要求5所述的方法,其中在所述TEE中执行对所述参数值子集的完整性校验包括与以下各项并行地在所述TEE中执行对所述参数值子集的完整性校验:
所述多个分区卷积操作中在所述给定分区卷积操作之前的分区卷积操作的执行,以及
另一参数值子集到所述受保护存储区的加载,所述另一参数值子集将在所述多个分区卷积操作中在所述给定分区卷积操作之后的分区卷积操作中被使用。
10.根据权利要求1所述的方法,其中所述参数值集合包括:所述深度学习模型的已训练的参数值集合,或者所述深度学习模型的正在训练的参数值集合。
11.根据权利要求1所述的方法,其中所述卷积层的所述输入被存储在所述受保护存储区中,所述方法还包括:
响应于在所述输出被确定之后所述输入不会在所述深度学习模型的后续层中被使用,从所述受保护存储区移除所述输入。
12.一种电子设备,包括:
处理器;以及
存储器,耦合至所述处理器并且包含存储于其上的指令,所述指令在由所述处理器执行时使所述设备执行以下动作:
响应于深度学习模型的卷积层的卷积操作被触发,在计算设备的受信任执行环境(TEE)中,基于所述卷积层的输入和参数值集合来顺序执行多个分区卷积操作,所述多个分区卷积操作使用由所述参数值集合划分的不同参数值子集,所述多个分区卷积操作中的给定分区卷积操作的执行包括:
将所述输入中要由所述给定分区卷积操作的参数值子集处理的输入部分存储在所述TEE的受保护存储区中,所述输入部分被表示为矩阵,
通过所述输入部分和针对所述给定分区卷积操作的参数值子集的单个矩阵相乘操作来确定所述给定分区卷积操作的结果,所述参数值子集被表示为矩阵,以及
从所述受保护存储区移除所述输入部分;以及
通过合并所述多个分区卷积操作的结果来确定所述卷积操作的结果,以作为所述卷积层的输出。
13.根据权利要求12所述的设备,其中所述多个分区卷积操作的数目基于所述受保护存储区的可用存储空间大小被确定。
14.根据权利要求12所述的设备,其中将所述输入部分存储在所述受保护存储区中包括:
基于所述参数值集合的尺寸和所述输入的尺寸,将所述输入转换成输入矩阵,所述输入矩阵的行或列中的元素在所述卷积操作中要被用于与所述参数值集合中的相应参数值顺序相乘;
基于所述多个分区卷积操作的数目和所述给定卷积操作在所述多个分区卷积操作中的排序顺序,从所述输入矩阵确定与所述参数值子集对应的输入部分;以及
将所确定的所述输入部分存储在所述受保护存储区中。
15.根据权利要求12所述的设备,其中所述参数值集合被存储在所述TEE外部的存储区,所述动作还包括:
响应于确定所述给定分区卷积操作要被执行,从所述TEE外部的存储区将所述参数值子集加载到所述受保护存储区中。
16.根据权利要求15所述的设备,其中将所述参数值子集加载到所述受保护存储区中还包括:
在所述TEE中执行对所述参数值子集的完整性校验,包括:
计算所述参数值子集的完整性校验值,
将所计算的完整性校验值与在所述受保护存储区中存储的预期完整性校验值进行比较,以及
响应于所计算的完整性校验值与所述预期完整性校验值匹配,确认所述参数值子集的完整性;以及
响应于确认所述参数值子集的完整性,将所述参数值子集存储到所述受保护存储区中。
17.根据权利要求16所述的设备,其中所述动作还包括:
在确定所述给定分区卷积操作的结果之后,从所述受保护存储区移除所述参数值子集。
18.根据权利要求16所述的设备,其中计算所述参数值子集的完整性校验值包括:
通过对所述参数值子集执行哈希运算来确定所述完整性校验值。
19.根据权利要求16所述的设备,其中在所述TEE中执行对所述参数值子集的完整性校验包括与以下各项并行地在所述TEE中执行对所述参数值子集的完整性校验:
所述多个分区卷积操作中在所述给定分区卷积操作之前的分区卷积操作的执行,以及
另一参数值子集到所述受保护存储区的加载,所述另一参数值子集将在所述多个分区卷积操作中在所述给定分区卷积操作之后的分区卷积操作中被使用。
20.一种计算机程序产品,所述计算机程序产品被有形地存储在计算机存储介质中并且包括机器可执行指令,机器可执行指令在由设备执行时使设备执行权利要求1至11所述的方法。
CN201910475938.1A 2019-05-31 2019-05-31 深度学习模型的执行 Pending CN112016666A (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201910475938.1A CN112016666A (zh) 2019-05-31 2019-05-31 深度学习模型的执行
PCT/US2020/030018 WO2020242689A1 (en) 2019-05-31 2020-04-27 Execution of deep-learning model
EP20727750.0A EP3977358A1 (en) 2019-05-31 2020-04-27 Execution of deep-learning model
US17/606,856 US20220215251A1 (en) 2019-05-31 2020-04-27 Execution of deep-learning model

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910475938.1A CN112016666A (zh) 2019-05-31 2019-05-31 深度学习模型的执行

Publications (1)

Publication Number Publication Date
CN112016666A true CN112016666A (zh) 2020-12-01

Family

ID=70802919

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910475938.1A Pending CN112016666A (zh) 2019-05-31 2019-05-31 深度学习模型的执行

Country Status (4)

Country Link
US (1) US20220215251A1 (zh)
EP (1) EP3977358A1 (zh)
CN (1) CN112016666A (zh)
WO (1) WO2020242689A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113420880A (zh) * 2021-08-24 2021-09-21 苏州浪潮智能科技有限公司 网络模型训练方法、装置、电子设备及可读存储介质
CN113569265A (zh) * 2021-09-16 2021-10-29 支付宝(杭州)信息技术有限公司 一种数据处理方法、系统及装置
CN115061679A (zh) * 2022-08-08 2022-09-16 杭州实在智能科技有限公司 离线rpa元素拾取方法及系统
WO2023115996A1 (zh) * 2021-12-24 2023-06-29 中国银联股份有限公司 一种模型保护方法、数据处理方法、装置、设备及介质

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11551147B2 (en) * 2019-06-05 2023-01-10 Koninklijke Philips N.V. Evaluating resources used by machine learning model for implementation on resource-constrained device
US11606416B2 (en) 2021-03-31 2023-03-14 Telefonaktiebolaget Lm Ericsson (Publ) Network controlled machine learning in user equipment

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113420880A (zh) * 2021-08-24 2021-09-21 苏州浪潮智能科技有限公司 网络模型训练方法、装置、电子设备及可读存储介质
CN113569265A (zh) * 2021-09-16 2021-10-29 支付宝(杭州)信息技术有限公司 一种数据处理方法、系统及装置
CN113569265B (zh) * 2021-09-16 2021-12-24 支付宝(杭州)信息技术有限公司 一种数据处理方法、系统及装置
WO2023115996A1 (zh) * 2021-12-24 2023-06-29 中国银联股份有限公司 一种模型保护方法、数据处理方法、装置、设备及介质
CN115061679A (zh) * 2022-08-08 2022-09-16 杭州实在智能科技有限公司 离线rpa元素拾取方法及系统
CN115061679B (zh) * 2022-08-08 2022-11-11 杭州实在智能科技有限公司 离线rpa元素拾取方法及系统

Also Published As

Publication number Publication date
US20220215251A1 (en) 2022-07-07
WO2020242689A1 (en) 2020-12-03
EP3977358A1 (en) 2022-04-06

Similar Documents

Publication Publication Date Title
CN112016666A (zh) 深度学习模型的执行
Lee et al. Occlumency: Privacy-preserving remote deep-learning inference using SGX
Yan et al. Cache telepathy: Leveraging shared resource attacks to learn {DNN} architectures
CN110520856B (zh) 处理不邻近存储器作为邻近存储器以提高神经网络的性能
Huynh et al. Deepsense: A gpu-based deep convolutional neural network framework on commodity mobile devices
US11216594B2 (en) Countermeasures against hardware side-channel attacks on cryptographic operations
US10956584B1 (en) Secure data processing
US20200279133A1 (en) Structured Sparsity Guided Training In An Artificial Neural Network
CN109002883B (zh) 卷积神经网络模型计算装置及计算方法
WO2022001550A1 (zh) 一种地址生成的方法、相关装置以及存储介质
CN113839781A (zh) 用于对受保护的签名操作和密钥交换操作的侧信道攻击的对策
Lee et al. TNPU: Supporting trusted execution with tree-less integrity protection for neural processing unit
Liang et al. PAIGE: Towards a hybrid-edge design for privacy-preserving intelligent personal assistants
Liu et al. Trusted-dnn: A trustzone-based adaptive isolation strategy for deep neural networks
WO2021042895A1 (zh) 基于神经网络的验证码识别方法、系统及计算机设备
CN114008589A (zh) 用于在顺序处理器上进行多次执行的动态代码加载
US20210344510A1 (en) Computer-implemented system and method including public key combination verification
Hua et al. MGX: Near-zero overhead memory protection for data-intensive accelerators
WO2021098385A1 (zh) 在可信执行环境中训练gbdt模型的方法、装置及设备
Gundu et al. A case for near data security
Islam et al. Confidential execution of deep learning inference at the untrusted edge with arm trustzone
US11467973B1 (en) Fine-grained access memory controller
US20220255757A1 (en) Digital signature verification engine for reconfigurable circuit devices
Bringer et al. Practical identification with encrypted biometric data using oblivious ram
Shrivastava et al. Securator: A fast and secure neural processing unit

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination