首页 / 专利库 / 软件 / 软件解决方案 / 软件组件 / 软件代码 / 神经网络的架构优化训练

神经网络的架构优化训练

阅读:923发布:2020-05-11

专利汇可以提供神经网络的架构优化训练专利检索,专利查询,专利分析的服务。并且优化具有多个层的神经网络的示例方法包括:获得(302)用于实现神经网络的推理平台的 电路 系统的架构约束;在训练平台上训练(304)神经网络以生成用于多个层的网络参数和特征映射;以及基于架构约束来约束(306)网络参数、特征映射或其两者。,下面是神经网络的架构优化训练专利的具体信息内容。

1.一种优化具有多个层的神经网络的方法,所述方法包括:
获得实现所述神经网络的推理平台的电路系统的架构约束;
在训练平台上训练所述神经网络,以生成所述多个层的网络参数和特征映射;以及基于所述架构约束来约束所述网络参数、所述特征映射或所述网络参数和所述特征映射两者。
2.根据权利要求1所述的方法,其中,所述架构约束包括多个约束,并且其中所述约束的步骤使用所述多个约束中的至少一个约束来被执行。
3.根据权利要求2所述的方法,其中,所述约束的步骤使用实现所述神经网络的期望精确度的最大数目的所述多个约束来被执行。
4.根据权利要求1所述的方法,其中,所述约束的步骤在训练所述神经网络的步骤期间被执行。
5.根据权利要求1所述的方法,其中,所述约束的步骤在训练所述神经网络的步骤之后被执行。
6.根据权利要求5所述的方法,还包括:
使用受约束的网络参数、受约束的特征映射或受约束的网络参数和受约束的特征映射两者在所述训练平台上重新训练所述神经网络,以生成新的网络参数。
7.根据权利要求1所述的方法,其中,所述架构约束包括基于所述推理平台的所述电路系统的计算功能的一个或多个约束。
8.根据权利要求7所述的方法,其中,所述计算功能包括所述推理平台的乘法累加电路系统的结构和数据宽度约束。
9.一种计算系统,包括:
硬件平台,用于训练神经网络,所述硬件平台包括至少一个处理器、存储器和训练平台;
软件平台,在所述硬件平台上执行,所述软件平台包括存储在所述存储器中的程序代码,所述程序代码是所述至少一个处理器可执行的,以执行以下功能:
获得实现所述神经网络的推理平台的电路系统的架构约束;
在所述训练平台上训练所述神经网络,以生成所述多个层的网络参数和特征映射;以及
基于所述架构约束来约束所述网络参数、所述特征映射或所述网络参数和所述特征映射两者。
10.根据权利要求9所述的计算系统,其中,所述架构约束包括多个约束,并且其中所述程序代码是可执行的,以使用所述多个约束中的至少一个约束来执行所述约束的功能。
11.根据权利要求9所述的计算系统,其中,所述程序代码是可执行的,以在所述神经网络的训练的功能期间执行所述约束的功能。
12.根据权利要求9所述的计算系统,其中,程序代码是可执行的,以在所述所述神经网络的训练的功能之后执行所述约束的功能。
13.根据权利要求12所述的计算系统,其中,所述程序代码是可执行的,以执行以下功能:
使用受约束的网络参数、受约束的特征映射或受约束的网络参数和受约束的特征映射两者在所述训练平台上重新训练所述神经网络,以生成新的网络参数。
14.根据权利要求9所述的计算系统,其中,所述架构约束包括基于所述推理平台的所述电路系统的计算功能的一个或多个约束。
15.根据权利要求14所述的计算系统,其中,所述计算功能包括所述推理平台的乘法累加电路系统的结构和数据宽度约束。

说明书全文

神经网络的架构优化训练

技术领域

[0001] 本公开的示例大体上涉及神经网络,并且特别地,涉及神经网络的架构优化训练。

背景技术

[0002] 机器学习是使计算系统无需明确编程即可采取动作的科学。经典机器学习包括各种聚类和分类技术,包括K-means聚类、线性和逻辑回归、随机梯度下降、关联规则学习等。深度学习是机器学习中较新的前沿。深度学习是一类机器学习算法,它使用多层非线性处理单元进行特征提取和转换。深度学习算法可以是无监督的(例如模式分析)或有监督的(例如分类)。深度学习算法可以使用人工神经网络(ANN)(本文中被称为“神经网络”)的层来被实现。
[0003] 一般而言,神经网络是在图中被连接节点(即“神经元”)的集合。神经网络中的节点计算加权输入的总和,并向总和添加可选的偏差。节点的输出是最终总和的函数(被称为“激活函数”)。示例激活函数包括S形函数、双曲正切(tanh)函数、整流线性单元(ReLU)函数和恒等函数。神经网络模型常常被组织为节点的层,这些层定义了具体的拓扑以及相应的权重和偏差。权重和偏差被称为网络参数。
[0004] 一般而言,神经网络包括输入层输出层,并且可以在输入层和输出层之间可选地包括一个或多个隐藏层。深度学习应用中使用的神经网络通常包括许多隐藏层,这产生了术语“深度神经网络(DNN)”。神经网络层可以被紧密连接(例如,层中的每个节点都被完全连接到前层中的所有节点),或可以被稀疏连接(例如,层中的每个节点仅连接到前层中的一部分节点)。卷积神经网络(CNN)是一种DNN,包括一个或多个被称为卷积层的稀疏连接层。CNN非常适合处理图像或视频数据。其他类型的DNN包括递归神经网络(RNN),非常适合处理语音和文本数据。
[0005] 任何拓扑或类型的神经网络都需要正确的跨所有层的网络参数值,以使网络适应具体任务。有监督的训练过程可以被用于确定网络参数集,网络参数集针对具体任务产生期望的精确度。训练涉及通过网络的前向路径(前向传播)运行训练数据集,并且通过网络的反向路径(反向传播)更新权重以补偿预测误差。然后,将训练后的神经网络部署为对输入数据集执行具体的任务(被称为推理)。被用于训练神经网络的计算平台(训练平台)的性能常常比用于推理的计算平台(推理平台)的性能更高。但是,推理平台的能效常常比训练平台的能效更高。期望减少神经网络推理的计算强度,特别是在使用性能较低的推理平台时。发明内容
[0006] 描述了用于神经网络的架构优化训练的技术。在一个示例中,一种优化具有多层的神经网络的方法包括:获得用于实现神经网络的推理平台的电路系统的架构约束;在训练平台上训练神经网络,以生成用于多个层的网络参数和特征映射;以及基于架构约束来约束网络参数、特征映射或其两者。
[0007] 在一些实施例中,架构约束可以包括多个约束,并且约束的步骤可以使用多个约束中的至少一个约束来被执行。
[0008] 在一些实施例中,约束的步骤可以使用实现神经网络的期望的精确度的最大数目的多个约束来被执行。
[0009] 在一些实施例中,约束的步骤可以在训练神经网络的步骤期间被执行。
[0010] 在一些实施例中,约束的步骤可以在训练神经网络的步骤之后被执行。
[0011] 在一些实施例中,方法还可以包括使用受约束的网络参数、受约束的特征映射或受约束的网络参数和受约束的特征映射两者在训练平台上对神经网络进行再训练以生成新的网络参数。
[0012] 在一些实施例中,架构约束可以包括基于推理平台的电路系统的计算功能的一个或多个约束。
[0013] 在一些实施例中,计算功能可以包括推理平台的乘法-累加电路系统的结构和数据宽度约束。
[0014] 在另一示例中,一种计算系统包括:用于神经网络的训练平台,训练平台包括硬件部分和软件部分,硬件部分包括至少一个处理器和存储器,软件部分包括被存储在存储器中的程序代码,所述程序代码是至少一个处理器可执行的,以执行以下功能:获得用于实现神经网络的推理平台的电路系统的架构约束;以及在训练平台上训练神经网络,以生成用于多个层的网络参数和特征映射;以及基于架构约束来约束网络参数、特征映射或其两者。
[0015] 在一些实施例中,架构约束可以包括多个约束,并且程序代码可以是可执行的,以使用多个约束中的至少一个约束来执行约束功能。
[0016] 在一些实施例中,程序代码可以是可执行的,以使用实现神经网络期望精确度的最大数目的多个约束来执行约束的功能。
[0017] 在一些实施例中,程序代码可以是可执行的,以在训练神经网络的功能期间执行约束功能。
[0018] 在一些实施例中,程序代码可以是可执行的,以在训练神经网络的功能之后执行约束功能。
[0019] 在一些实施例中,程序代码可以是可执行的,以使用受约束的网络参数、受约束的特征映射或使用受约束的网络参数和受约束的特征映射两者,在训练平台上执行神经网络再训练功能,以生成新的网络参数。
[0020] 在一些实施例中,架构约束可以包括基于推理平台电路系统的计算功能的一个或多个约束。
[0021] 在一些实施例中,计算功能可以包括推理平台的乘法累加电路系统的结构和数据宽度约束。
[0022] 在另一示例中,一种非瞬态计算机可读介质具有存储在其上的指令,由处理器执行上述指令时使处理器执行优化具有多个层的神经网络的方法,方法包括:获得用于实现神经网络的推理平台的电路系统的架构约束;以及在训练平台上训练神经网络,以生成用于多个层的网络参数和特征映射;并且基于架构约束来约束网络参数、特征映射或其两者。
[0023] 在一些实施例中,架构约束可以包括多个约束,并且约束步骤可以使用多个约束中的至少一个约束来被执行。
[0024] 在一些实施例中,架构约束可以包括基于推理平台的电路系统的计算功能的一个或多个约束。
[0025] 在一些实施例中,计算功能可以包括推理平台的乘法累加电路系统的结构和数据宽度约束。
[0026] 参考以下详细描述可以理解这些和其他方面。附图说明
[0027] 可以通过参考示例实现来对以上简要概述进行更具体的描述,以便可以详细地理解上述特征,其中一些示例实现在附图中被图示。然而,应注意,附图仅图示了具体的示例实现,并且因此不应被视为对其范围的限制。
[0028] 图1是描绘根据一个示例的用于训练和实现神经网络的系统的框图
[0029] 图2是描绘根据一个示例的计算系统的框图。
[0030] 图3是描述优化具有多个层的神经网络的方法的流程图
[0031] 图4是描绘示例计算引擎的框图。
[0032] 图5是描绘根据一个示例的可编程集成电路(IC)的框图。
[0033] 图6是描述图5的可编程IC的片上系统(SoC)实现的框图。
[0034] 图7图示了图5的可编程IC的现场可编程阵列(FPGA)实现。
[0035] 为了便于理解,在可能的地方使用相同的附图标记来表示图中共用的相同元件。可以想到,一个示例的元件可以被有益地并入其他示例中。

具体实施方式

[0036] 在下文中参考附图描述各种特征。应当注意,附图可以按比例绘制,也可以不按比例绘制,并且在所有附图中,相似结构或功能的元件由相同的附图标记来表示。应当注意,附图仅旨在便于特征的描述。它们并不旨在作为所要求保护的发明的详尽描述或作为对所要求保护的发明范围的限制。另外,说明的示例不必具有所示的所有方面或优点。结合特定示例描述的方面或优点不必限于该示例,并且可以在其他任何示例中被实践,即使是未被如此说明或未被如此明确描述的示例。
[0037] 描述了用于神经网络的架构优化训练的技术。在一个示例中,通过获得用于实现具有多个层的神经网络的推理平台的电路系统的架构约束,来优化该神经网络。推理平台可以是可编程集成电路(IC),诸如现场可编程门阵列(FPGA)。可编程IC(诸如FPGA)中的电路系统包括可编程逻辑(例如,可配置的逻辑)和专用块(诸如数字信号处理器(DSP)块)。架构约束指定推理平台电路系统的某个特征、元素、限制等。神经网络在训练平台上被训练以生成用于多个层的网络参数(例如,权重和偏差)和特征映射(例如,激活)。网络参数、特征映射或其两者基于架构约束被约束。本文描述的技术通过在训练阶段期间对神经网络中的网络参数和/或特征映射执行约束而利用了推理平台的特定架构方面,以确保推理平台在推理阶段期间的最佳(例如,最有效)使用。例如,在训练期间适当地约束神经网络的权重使得能够在FPGA的DSP块中使用预加器,从而在FPGA用作推理平台时充分地利用FPGA的计算能。下面参考附图描述基于推理平台的架构约束来优化网络参数和/或特征映射的这些和其他方面。
[0038] 图1是描绘根据一个示例的用于训练和实现神经网络的系统100的框图。系统100包括训练平台102和推理平台104。训练平台102包括硬件和软件,硬件和软件被配置为训练用于具体任务(例如,图像分类、对象检测等)的神经网络106。推理平台104包括硬件和/或软件,硬件和/或软件被配置为实现神经网络106以执行具体任务。下面描述训练平台102和推理平台104的示例。
[0039] 在操作中,用户指定具有特定拓扑108的神经网络106。拓扑108通常包括神经元的布置。例如,拓扑108可以包括神经元的多个层。这些层通常包括输入层、输出层以及零或更多隐藏层。每个神经元包括多个输入和输出。每个神经元的多个输入与多个权重相关联。每个神经元还包括与其输出相关联的偏差。神经网络106的权重和偏差被称为网络参数。对于给定的层,其神经元的输入称为输入特征映射,而其神经元的输出称为输出特征映射。输入特征映射和输出特征映射通常被称为“特征映射”。
[0040] 训练平台102接收训练数据集110和初始网络参数113。训练数据集110包括用于训练神经网络106以生成训练后的网络参数114的数据。例如,如果神经网络106被配置为对图像进行分类,则训练数据集110可以是预分类图像的集合。初始网络参数113包括神经网络106的网络参数的初始值。在一个示例中,训练平台102还包括用于接收推理架构约束112(统称为“架构约束”,其中包括一个或多个约束)的输入。推理架构约束112包括与推理平台
104的硬件(例如,电路系统)相关联的一个或多个约束。下面进一步描述示例推理架构约束。一般而言,推理架构约束112指定推理平台104的硬件的一些特征、元素、限制等。推理架构约束112被用于在训练过程期间约束网络参数和/或特征映射。在一个示例中,推理架构约束112可以被用于在训练过程期间约束网络参数和/或特征映射。在另一示例中,推理架构约束可以被用于在训练过程之后约束网络参数和/或特征映射。在任一示例中,训练后的网络参数114被推理架构约束112约束。类似地,拓扑108可以利用受约束的特征映射(例如,输入到拓扑108中的一层或多层的受约束的激活)来被实现。
[0041] 推理平台104接收训练后的网络参数114和输入数据集116。输入数据集116包括待由神经网络106处理的数据。例如,如果神经网络被配置为对图像进行分类,则输入数据集116可以包括待被分类的图像。推理平台104生成结果数据集118。例如,在图像分类方案中,结果数据集118包括针对输入数据集116中图像的分类。由于训练后的网络参数114已经基于推理平台104的架构约束被约束,神经网络106可以利用由推理平台约束112捕获的特征、元素和限制来被推理平台有效地实现。
[0042] 图2是描绘根据一个示例的计算系统(“计算机200”)的框图。计算机200包括在硬件平台202上执行的软件平台204。硬件平台202包括中央处理单元(CPU)206、系统存储器208、存储设备210、支持电路211、训练平台212和硬件加速器214。软件平台204包括操作系统(OS)230、驱动器232、库234和应用236。
[0043] CPU 206可以是任何类型的通用中央处理单元(CPU),诸如基于x86的处理器、基于的处理器等。CPU 206可以包括一个或多个核心和相关联的电路系统(例如,高速缓存存储器、存储器管理单元(MMU)、中断控制器等)。CPU 206被配置为执行程序代码,该程序代码执行本文中描述的一个或多个操作,并且可以被存储在系统存储器208和/或存储设备210中。支持电路211包括与CPU 206合作以管理CPU 206、系统存储器208、存储设备210、训练平台212、硬件加速器214或其他任何外围设备之间的数据流的各种设备。例如,支持电路211可以包括芯片组(例如北桥、南桥、平台主机控制器等)、电压调节器、固件(例如BIOS)等。在一些示例中,CPU 206可以是吸收了芯片组(例如北桥,南桥等)的全部或大部分功能的系统级封装(SiP)、片上系统(SoC)等。
[0044] 系统存储器208是允许存储和取回诸如可执行指令和数据的信息的设备。系统存储器208可以包括例如一个或多个随机存取存储器(RAM)模块,诸如双倍数据速率(DDR)动态RAM(DRAM)。系统存储器208可以存储数据226以及由CPU 206处理和执行以实现软件平台204的程序代码(“代码228”)。存储设备210包括本地存储设备(例如,一个或多个硬盘、闪存模块、固态盘和光盘)和/或使计算机200能够与一个或多个网络数据存储系统通信的存储接口。硬件平台202可以包括各种其他常规设备和计算系统的外围设备,诸如图形卡、通用串行总线(USB)接口等。
[0045] 训练平台212包括硬件216,硬件216可以包括(多个)处理器、存储器、输入/输出(IO)电路等。在一个示例中,硬件216包括图形处理单元(GPU)和相关联的支持电路系统。在另一示例中,硬件216可以包括专用集成电路(ASIC)、可编程IC等以及相关联的支持电路系统。在一个示例中,训练平台212比硬件加速器214的性能更高,但是比硬件加速器214消耗更多的能量。训练平台212可以被用于训练神经网络。
[0046] 硬件加速器122包括IC 220和存储器224。IC 220包括计算引擎222。在一个示例中,IC 220是可编程IC,例如现场可编程门阵列(FPGA)或其中具有FPGA的片上系统(SoC)。计算引擎222可以在IC 220中被编程。在另一示例中,IC 220是ASIC等,其中计算引擎222是在其中的专用电路系统。硬件加速器214可以被用于神经网络的推理平台中。
[0047] OS 230可以是本领域中已知的任何商业操作系统,诸如 MicrosoftMac 等。驱动器232和库234包括向训练平台212和硬件加速器214提供
应用编程接口(API)以对其进行命令和控制的软件。应用236包括在训练平台212上训练神经网络并且在硬件加速器214上实现神经网络的软件。应用236通过驱动程序232和库234与训练平台212和硬件加速器214通信。
[0048] 图3是描绘优化具有多个层的神经网络的方法300的流程图。方法300可以由在上述计算机200上执行的应用236执行。方法开始于步骤302,其中应用236获得用于实现神经网络的推理平台的电路系统的架构约束。例如,应用236可以获得在硬件加速器214中的IC 220中的计算引擎222的架构约束。
[0049] 在步骤304,应用236在训练平台上训练神经网络进行一次或多次迭代以生成网络参数。例如,应用236可以使用硬件216在训练平台212上训练神经网络。各种训练算法(诸如反向传播)可以结合学习算法(诸如随机梯度下降)被使用。在这种训练算法中,应用236输入训练数据集。针对每个训练数据(例如,输入图像),应用236通过神经网络前馈训练数据以生成输出结果。应用236根据所使用的学习算法(例如,梯度下降)来计算输出误差,反向传播该误差,并且更新网络参数。通常,对更新后的网络参数没有约束。然而,在本示例中,在步骤306,应用236基于推断平台的架构约束来约束网络参数和/或特征映射。
[0050] 在一个示例中,应用236在训练算法期间(例如,在反向传播的每次迭代之后)约束网络参数和/或特征映射。在另一示例中,应用236在训练算法完成之后(例如,作为训练算法中的最后步骤)约束网络参数和/或特征映射。在这种示例中,应用236使用受约束的网络参数和/或受约束的特征映射在训练平台上重新训练(例如,执行另一迭代)神经网络以生成新的网络参数。应用236可以重复该过程以进行多次迭代。
[0051] 在一个示例中,应用236使用实现神经网络期望精确度的最大数目的架构约束来约束网络参数和/或特征映射。例如,应用236可以使用一个或多个架构约束来执行第一训练回合,以约束网络参数和/或特征映射。应用236可以确定训练后网络的结果精确度。如果用户期望提高的精确度,则应用236可以使用先前的架构约束和一个或多个附加架构约束来执行第二训练回合。该过程可以被重复直到达到所期望的精确度。
[0052] 架构约束表示推理平台的架构特性,可以利用该特性来确保神经网络到推理平台上的最佳映射。这种架构特性包括具体的计算能力、网络参数和/或数据的优选比特宽度等。下面将讨论示例架构约束。
[0053] 图4是描绘示例计算引擎222的框图。计算引擎222包括输入电路系统402、乘法器输入电路系统404、预加器406、乘法器408、累加器410和输出电路系统412。输入电路系统402包括四个输入A、B、C和D。输入电路系统402包括用于缓冲输入A至D的寄存器和用于在乘法器输入电路系统404和预加法器406之间定向输入的多路复用器。乘法器输入电路404包括用于缓冲输入电路系统402的输出和预加法器406的输出的寄存器。累加器410累加乘法器408的输出。输出电路系统412缓冲累加器410的输出。在这个示例中,假定输入电路系统
402和乘法器输入电路系统404配置为使得计算引擎222可以执行(A+D)*B。
[0054] 在一个示例中,利用图4所示的计算引擎222的计算能力的架构约束可以在上述训练过程中被使用。即,在训练期间使用的架构约束可以包括基于推理平台电路系统的计算功能的一个或多个约束。在一个示例中,计算功能包括推理平台的乘法累加电路系统的结构(例如,算术逻辑单元(ALU)能力),以及由于寄存器比特宽度、总线/直接存储器访问(DMA)比特宽度、存储器比特宽度等导致的数据宽度约束。值得注意的是,神经网络不同类型层中的许多操作包含特征映射值的加权和:
[0055]
[0056] 其中fi,k是特征映射值,以及wk是权重值。如图4所示,计算引擎222可以包括预加器406,该预加器406可以在应用乘法(例如,与输入B相乘)之前将两个值(例如,输入A和D)相加。仅当被应用于两个特征映射值的权重彼此相同或相反时,才可以利用预加器406。换言之,针对fi,k和fi,l,则wk=wl或wk=-wl。
[0057] 在图4的示例计算引擎222中,将受约束的权重(CW)提供给输入B。将特征映射值fi,k提供给输入A。将特征映射值fi,l提供给输入D。因为预加器406可以执行加法或减法,因此wl和wk之间的数学关系是恒等或负。wk和wl之间的这种数学关系成为在训练期间可以被执行的架构约束。所得的权重集将具有可以成对预加一些权重以减少所需计算引擎222数目的特性。例如,wk×fi,k+wl×fi,l将需要2个乘法操作,但是如果wk=wl,则该操作变为wk×(fi,k+fi,l)(即,仅为一个预加和一个乘法操作)。
[0058] 在图4的示例中,输入A至D被描述为单个数字值。在另一示例中,类似的计算引擎用作矢量处理器,其中输入是矢量值,并且计算元件处理这些矢量。这种矢量计算元件在结构上可以类似于图4所示的计算引擎222。
[0059] 在另一示例中,利用计算精度的架构约束可以被使用。假定累加器410的输出比特宽度是48比特。进一步假定神经网络包括3×3×384的卷积核。因此,需要预留12比特用于累加,留下36比特用于乘法的结果。假定乘法的结果(即,乘法器408的输出)被约束为32比特。然后,在确保完整的3×3×384的卷积核可以在单个计算引擎222上被执行期间,对权重和特征映射值施加16比特的约束。注意,对特征映射值和权重的约束是相对于彼此的。因此,在权重上施加14比特的约束和在特征映射值上施加18比特的约束(反之亦然)可以实现相同的结果。在其他示例中,其他比特宽度值可以被用于约束相对于权重的特征映射值。
[0060] 图5是描绘根据一个示例的可编程IC 1的框图。可编程IC 1可以被用作图2中的IC 220。可编程IC 1包括可编程逻辑3、配置逻辑25和配置存储器26。可编程IC 1可以被耦合至外部电路(诸如非易失性存储器27、DRAM 28和其他电路29)。可编程逻辑3包括逻辑单元30、支持电路31和可编程互连32。逻辑单元30包括可以被配置为实现多个输入的通用逻辑功能的电路。支持电路31包括专用电路,诸如收发器、输入/输出块、数字信号处理器、存储器等。
逻辑单元和支持电路31可以使用可编程互连32被互连。用于对逻辑单元30进行编程、用于设置支持电路31的参数以及用于对可编程互连32进行编程的信息通过配置逻辑25被存储在配置存储器26中。配置逻辑25可以从非易失性存储器27或其他任何源(例如,从DRAM 28或从其他电路29)获得配置数据。在一些示例中,可编程IC 1包括处理系统2。处理系统2可以包括(多个)微处理器、存储器、支持电路、IO电路等。
[0061] 图6是描绘根据一个示例的可编程IC 1的片上系统(SoC)实现的框图。在该示例中,可编程IC 1包括处理系统2和可编程逻辑3。处理系统2包括各种处理单元,诸如实时处理单元(RPU)4、应用处理单元(APU)5、图形处理单元(GPU)6、配置和安全单元(CSU)12、平台管理单元(PMU)122等。处理系统2还包括各种支持电路,诸如片上存储器(OCM)14、收发器7、外围设备8、互连16、DMA电路9、存储器控制器10、外围设备15和多路复用IO(MIO)电路13。处理单元和支持电路通过互连16被相互连接。PL 3也被耦合到互连16。收发器7被耦合到外部引脚24。PL 3被耦合到外部引脚23。存储控制器10被耦合到外部引脚22。MIO 13被耦合到外部引脚20。PS 2通常被耦合到外部引脚21。APU 5可以包括CPU 17、存储器18和支持电路19。
[0062] 参考PS 2,每个处理单元包括一个或多个中央处理单元(CPU)和相关联的电路,诸如存储器、中断控制器、直接存储器访问(DMA)控制器、存储器管理单元(MMU)、浮点单元(FPU)等。互连16包括各种开关、总线、通信链路等,它们被配置为与处理单元互连,以及将PS 2中的其他组件与处理单元互连。
[0063] OCM 14包括一个或多个RAM模块,其可以分布在整个PS 2中。例如,OCM 14可以包括电池支持的RAM(BBRAM)、紧密耦合存储器(TCM)等。存储器控制器10可以包括用于访问外部DRAM的DRAM接口。外围设备8、15可以包括一个或多个向PS2提供接口的组件。例如,外围设备132可以包括图形处理单元(GPU)、显示接口(例如显示端口、高清多媒体接口(HDMI)端口等)、通用串行总线(USB)端口、以太网端口、通用异步收发器(UART)端口、串行外围设备接口(SPI)端口、通用IO(GPIO)端口、串行高级技术附件(SATA)端口、PCIe端口等。外围设备15可以被耦合到MIO13。外围设备8可以被耦合到收发器7。收发器7可以包括串行化器/去串行化器(SERDES)电路、MGT等。
[0064] 图7图示可编程IC 1的现场可编程门阵列(FPGA)实现,可编程IC 1包括大量不同的可编程瓦片,可编程瓦片包括收发器37、可配置逻辑块(“CLB”)33、随机存取存储器块(“BRAM”)34、输入/输出块(“IOB”)36、配置和时钟逻辑(“CONFIG/CLOCKS”)42、数字信号处理块(“DSP”)35、专用输入/输出块(“I/O”)41(例如,配置端口和时钟端口)以及其他可编程逻辑39(诸如数字时钟管理器、模数转换器、系统监视逻辑等)。FPGA还可以包括PCIe接口40、模数转换器(ADC)38等。
[0065] 在一些FPGA中,每个可编程瓦片可以包括至少一个可编程互连元件(“INT”)43,其连接到相同瓦片内的可编程逻辑元件的输入和输出端子48,如包括在图7顶部的示例所示。每个可编程互连元件43还可以包括在相同瓦片或其他瓦片中互连邻近的可编程互连元件的片段49的连接。每个可编程互连元件43还可以包括在逻辑块(未示出)之间互连通用路由资源的片段50的连接。通用路由资源可以包括逻辑块(未示出)和开关块(未示出)之间的路由通道,逻辑块包括互连片段(例如,互连片段50)的轨道,开关块用于连接互连片段。通用路由资源的互连片段(例如,互连片段50)可以跨越一个或多个逻辑块。可编程互连元件43与通用路由资源一起实现用于所示FPGA的可编程互连结构(“可编程互连”)。
[0066] 在示例实现中,CLB 33可以包括可配置逻辑元件(“CLE”)44,可配置逻辑元件可以被编程以实现用户逻辑和单个可编程互连元件(“INT”)43。BRAM 34可以包括BRAM逻辑元件(“BRL”)45,以及一个或多个可编程互连元件。通常,瓦片中包括的互连元件的数目取决于瓦片的高度。在图示的示例中,BRAM瓦片具有与五个CLB相同的高度,但是也可以使用其他数目(例如四个)。除了合适数目的可编程互连元件之外,DSP瓦片35还可以包括DSP逻辑元件(“DSPL”)46。除了可编程互连元件43的一个实例之外,IOB 36还可以包括例如输入/输出逻辑元件(“IOL”)47的两个实例。本领域技术人员将清楚,例如,实际被连接到I/O逻辑元件47的I/O焊盘通常不被局限于输入/输出逻辑元件47的区域。
[0067] 在图示的示例中,靠近裸片中心的平区域(如图7所示)被用于配置、时钟和其他控制逻辑。从这个水平区域或列延伸的垂直列51被用于在跨FPGA的宽度上分配时钟和配置信号。
[0068] 一些利用图7所示架构的FPGA包括附加的逻辑块,这些逻辑块中断了很大一部分构成FPGA的规则柱状结构。附加逻辑块可以是可编程块和/或专用逻辑
[0069] 注意,图7仅旨在图示示例性FPGA架构。例如,行中逻辑块的数量、行的相对宽度、行的数目和顺序、被包括在行中的逻辑块类型、逻辑块的相对大小以及被包括在图7顶部的互连/逻辑实现纯粹是示例性的。例如,在实际的FPGA中,无论CLB出现在何处,通常都包括一个以上邻近的CLB行,以便于用户逻辑的有效实现,但是邻近的CLB行的数目随FPGA的整体大小而变化。
[0070] 已经描述了用于神经网络的架构优化训练的技术。在一个示例中,优化具有多个层的神经网络的方法包括:获得用于实现神经网络的推理平台的电路系统的架构约束;在训练平台上训练神经网络,以生成用于多个层的网络参数和特征映射;基于架构约束来约束网络参数、特征映射或网络参数、特征映射两者。在一个示例中,架构约束包括多个约束,其中至少一个约束在训练期间被用作约束。在一个示例中,使用实现神经网络期望精确度的最大数目的多个架构约束来执行训练。在一个示例中,网络参数和/或特征映射在神经网络的训练期间被约束。在一个示例中,网络参数和/或特征映射在训练神经网络之后被约束。在这个示例中,神经网络可以使用受约束的网络参数和/或受约束的特征映射被重新训练。在一个示例中,架构约束基于推理平台电路的计算功能包括一个或多个约束。在一个示例中,计算功能包括推理平台的乘法累加电路系统的结构(例如,算术逻辑单元(ALU)能力),以及由于寄存器比特宽度、总线/直接存储器访问(DMA)比特宽度、存储器比特宽度等导致的数据宽度约束。
[0071] 本文所述的技术通过在训练阶段期间优化神经网络,来解决神经网络推理平台上的高计算/存储器需求。网络参数和/或特征映射基于推理平台架构被优化,以确保在推理阶段期间与推理平台的理想匹配。传统的神经网络训练技术在训练期间并未考虑推理平台的架构方面。通过采用本文所描述的技术,用于实现神经网络的推理平台的功能被改进。
[0072] 本文中描述的各种示例可以采用包含被存储在计算机系统中的数据的各种计算机实现的操作。例如,通常这些操作可能需要对物理量进行物理操纵(尽管不是必须的),这些量可以采取电信号或磁信号的形式,在其中它们或它们的表示能够被存储、传送、组合、比较或操纵。进一步地,这种操纵通常以诸如产生、标识、确定或比较的术语来指代。形成本文描述的一种或多种示例技术的一部分的本文描述的任何操作可以是有用的机器操作。另外,一个或多个示例技术还涉及用于执行这些操作的设备或装置。装置可以被特殊地构造为用于具体期望的目的,或者它可以是由被存储在计算机中的计算机程序选择性地激活或配置的通用计算机。特别地,各种通用机器可以与根据本文教导编写的计算机程序一起被使用,或者可以更方便地构造更专用的装置来执行期望的操作。本文描述的各种示例可以与其他计算系统配置一起被实践,其他计算系统配置包括手持设备、微处理器系统、基于微处理器的或可编程的消费者电子产品、小型计算机、大型计算机等。
[0073] 本文描述的一种或多种示例技术可以被实现为一种或多种计算机程序或被实现为在一种或多种计算机可读介质中被实施的一种或多种计算机程序模块。术语计算机可读介质指的是可以存储随后可以被输入到计算机系统的数据的任何数据存储设备。计算机可读介质可以基于任何现有的或随后被开发的技术,用于以使计算机程序能够被计算机读取的方式实施计算机程序。计算机可读介质的示例包括硬盘驱动器、网络附加存储(NAS)、只读存储器、随机存取存储器(例如闪存设备)、CD(紧凑型磁盘)、CD-ROM、CD-R、或CD-RW、DVD(数字多功能磁盘)、磁带以及其他光学和非光学数据存储设备。计算机可读介质还可以分布在耦合计算机系统的网络上,使得以分布式的方式存储和执行计算机可读代码。
[0074] 尽管前述内容针对具体示例,但是在不脱离其基本范围的情况下可以设计其他示例,并且其范围由所附权利要求确定。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈