江西专业的网站建设制作,媒体:多地新增感染趋势回落,中国纪检监察报订阅,河南郑州做网站的公司Training Large Networks in Parallel
计算机集群上高效训练大型深度神经网络#xff08;DNN#xff09;的方法和技术。从神经网络的基本概念出发#xff0c;逐步深入到并行训练的具体实现策略#xff0c;包括数据并行、模型并行以及参数服务器的设计等。
研究背景与动机…Training Large Networks in Parallel
计算机集群上高效训练大型深度神经网络DNN的方法和技术。从神经网络的基本概念出发逐步深入到并行训练的具体实现策略包括数据并行、模型并行以及参数服务器的设计等。
研究背景与动机
大型神经网络的挑战现代深度神经网络DNN包含数百万甚至数十亿的参数训练这些网络需要大量的计算资源和时间。例如VGG-16网络的参数需要约500MB的内存而训练过程可能需要数天时间。并行训练的需求为了加速训练过程研究人员探索了在多个计算节点上并行训练DNN的方法。这不仅可以减少训练时间还可以扩展到更大的数据集和更复杂的模型。
神经网络基础
教授分类任务文章通过一个简单的例子引入了神经网络的基本概念即根据教授的外貌特征将其分类为“容易”、“刻薄”、“无聊”或“书呆子”。网络结构介绍了神经网络的基本结构包括卷积层、最大池化层和全连接层。文章中提到的模型包含多个卷积层和全连接层每层的神经元数量分别为253440、186624、64896、64896、43264、4096、4096和1000。训练目标训练的目标是最小化网络输出与真实标签之间的损失函数。文章中使用了softmax损失函数作为示例。
梯度下降与反向传播
梯度下降介绍了梯度下降的基本思想即通过调整网络参数以减少损失函数的值。文章通过一个简单的函数示例解释了如何使用梯度下降来优化参数。反向传播详细描述了反向传播算法这是计算神经网络中每个参数梯度的关键步骤。文章通过图示和公式解释了如何通过链式法则计算梯度并通过矩阵形式展示了反向传播的计算过程。
并行训练策略
数据并行将训练数据分割成多个小批次mini-batch并将这些小批次分配给不同的计算节点。每个节点独立计算其分配数据的梯度然后通过全局同步点如参数服务器汇总梯度并更新参数。模型并行当模型参数过多无法在单个节点上存储时可以将模型分割成多个部分分别存储在不同的节点上。文章提到通过使用小尺寸卷积如1x1卷积和减少全连接层的大小可以减少节点间的通信量。参数服务器介绍了参数服务器的设计它负责存储全局参数并接收来自各个工作节点的梯度更新。参数服务器可以被切分成多个部分以减少单个服务器的负载。
异步执行与优化
异步更新为了避免全局同步带来的延迟文章提出了异步更新策略。在这种策略下工作节点在计算梯度后立即将其发送给参数服务器而无需等待其他节点完成计算。这种策略可以提高系统的吞吐量但可能会对训练的收敛性产生影响。分片参数服务器为了进一步优化参数服务器的性能文章提出了将参数服务器分片的策略。每个分片负责存储和更新一部分参数从而减少了单个服务器的负载。
实验与结果
FireCaffe实验文章通过在Titan超级计算机上使用FireCaffe框架进行实验展示了并行训练的加速效果。实验结果表明在128个GPU上训练GoogLeNet时与单GPU训练相比可以实现47倍的加速同时保持相同的准确率。通信开销比较文章还比较了使用参数服务器和使用减少树reduction tree进行梯度汇总的通信开销。结果显示减少树在通信效率上具有优势。 DNN Accelerator Architectures 1
1. DNN加速器的核心问题
深度神经网络DNN的计算效率主要受限于内存访问瓶颈。由于DNN计算需要频繁读写数据如权重、激活值和中间结果内存访问尤其是DRAM访问成为主要的性能瓶颈。例如AlexNet需要724M次MAC操作但需要2896M次DRAM访问。
2. 内存访问瓶颈的解决方案
为了减少内存访问DNN加速器通常采用以下策略
本地内存层次结构通过引入多级本地内存如寄存器文件、全局缓冲区来重用数据减少对DRAM的访问。数据重用最大化数据的重用例如 卷积重用在卷积层中利用滑动窗口技术。Fmap重用在卷积层和全连接层中重用激活值。滤波器重用在批量处理中重用滤波器权重。
3. DNN加速器的架构设计
空间架构通过并行计算单元PE和片上网络NoC实现高效的数据流动。 PE单元负责执行基本的算术运算而NoC负责PE单元之间的高效通信两者协同工作以实现DNN加速器的整体性能提升。多级内存访问从DRAM到全局缓冲区再到PE内的寄存器文件每层访问成本差异显著。
4. 数据流分类
数据流的设计是DNN加速器的关键主要分为以下三类
输出 stationaryOS最小化部分和的读写能耗适合最大化本地累积。例如ShiDianNao和ENVISION。权重 stationaryWS最小化权重读取能耗适合最大化权重重用。例如NeuFlow和NVDLA。输入 stationaryIS最小化激活读取能耗适合最大化输入激活的重用。例如SCNN。
5. 数据流的应用示例
OS数据流ShiDianNao通过保持输出特征图的部分和减少对DRAM的访问。WS数据流NVDLA通过保持权重循环输入和输出特征图减少权重的重复读取。IS数据流SCNN利用稀疏CNN的特性减少激活值的读取。
6. 并行计算的应用
并行计算在DNN加速器中通过以下方式实现
任务并行将计算任务分配到多个PE中并行执行。数据并行将数据分割成多个部分分别在不同PE上处理。
7. 优化策略
内存优化通过分层内存结构和数据重用减少内存访问。算法优化选择适合硬件架构的算法例如稀疏CNN。硬件优化利用高性能处理器和高速存储设备提升性能。
补充图表 这个表格展示了不同数据流Output Stationary (OS)、Weight Stationary (WS)、Input Stationary (IS)在执行1-D卷积操作时的性能指标对比。表格中的变量E和R分别代表输出长度和滤波器长度。以下是逐行解释 MAC操作数 所有数据流类型OS、WS、IS的MAC操作数都是E*RE 和 R 是与1-D卷积操作相关的两个关键参数分别表示E (Output Length)输出特征图output feature map的长度。R (Filter Length)滤波器filter的长度。这是固定的计算量与数据流类型无关。 权重读取次数 OS需要读取E*R次权重因为每个权重在每个输出位置都需要读取一次。WS只需要读取R次权重因为权重在PE阵列中被广播并重用。IS需要读取E*R次权重因为权重在每个输入位置都需要读取一次。 输入读取次数 OS需要读取E*R次输入因为输入在每个输出位置都需要读取一次。WS需要读取E*R次输入因为输入在每个输出位置都需要读取一次。IS只需要读取E次输入因为输入在PE阵列中被广播并重用。 输出读取次数 OS不需要读取输出0次因为输出在本地累积。WS需要读取E*R次输出因为输出在PE阵列中需要多次读取。IS需要读取E*R次输出因为输出在PE阵列中需要多次读取。 输出写入次数 OS需要写入E次输出因为每个输出只写入一次。WS需要写入E*R次输出因为输出在PE阵列中需要多次写入。IS需要写入E*R次输出因为输出在PE阵列中需要多次写入。
总结
OS在权重读取和输出读取方面表现最佳因为它最小化了部分和的读写。WS在权重读取方面表现最佳因为它最小化了权重的读取。IS在输入读取方面表现最佳因为它最小化了输入的读取。Min列显示了每个指标的最小值表明哪种数据流类型在特定指标上表现最好。
补充伪代码
Output Stationary (OS) 代码
for (e 0; e E; e)for (r 0; r R; r)O[e] I[er] * W[r];外层循环遍历输出索引 e从0到E-1。内层循环遍历滤波器索引 r从0到R-1。操作对于每个输出索引 e 和滤波器索引 r将输入 I[er] 和权重 W[r] 的乘积累加到输出 O[e] 中。特点输出 O[e] 在每个周期中被多次更新权重和输入被读取。
Weight Stationary (WS) 代码
for (r 0; r R; r)for (e 0; e E; e)O[e] I[er] * W[r];外层循环遍历滤波器索引 r从0到R-1。内层循环遍历输出索引 e从0到E-1。操作对于每个滤波器索引 r 和输出索引 e将输入 I[er] 和权重 W[r] 的乘积累加到输出 O[e] 中。特点权重 W[r] 在每个周期中被多次重用减少了权重的读取次数。
Input Stationary (IS) 代码
for (h 0; h H; h)for (r 0; r R; r)O[h-r] I[h] * W[r];外层循环遍历输入索引 h从0到H-1。内层循环遍历滤波器索引 r从0到R-1。操作对于每个输入索引 h 和滤波器索引 r将输入 I[h] 和权重 W[r] 的乘积累加到输出 O[h-r] 中。特点输入 I[h] 在每个周期中被多次重用减少了输入的读取次数。
总结
Output Stationary (OS)输出部分和在本地累积减少对全局缓冲区的访问。Weight Stationary (WS)权重被多次重用减少权重的读取次数。Input Stationary (IS)输入激活被多次重用减少输入的读取次数。
这些代码展示了不同数据流OS、WS、IS在1-D卷积中的实现方式通过改变循环的顺序和数据的访问模式来优化性能和能效。 DNN Accelerator Architectures 2
1. 数据流分类与优化 数据流分类 数据流分为三种类型激活数据Activation、权重数据Weight和部分和Partial Sum, psum。根据数据复用的方式数据流可以分为输入驻留Input Stationary、权重驻留Weight Stationary和行驻留Row Stationary。 行驻留Row Stationary, RS数据流 优化目标最大化数据复用优化整体能效而非仅针对某一类型数据。实现方式 在寄存器文件RF中保留滤波器行和特征图滑动窗口减少数据频繁读取。最大化行卷积复用和部分和积累。
2. PE阵列中的卷积计算 1D行卷积 在PEProcessing Element中通过寄存器文件Reg File存储滤波器行和特征图滑动窗口计算部分和。示例滤波器行为 a b c特征图行为 a b c d e通过滑动窗口计算部分和。 2D卷积 在PE阵列中通过多行滤波器和特征图的组合完成二维卷积计算。示例PE阵列中每行PE处理不同的滤波器行和特征图行逐步积累部分和。
3. 多通道和多特征图的处理 滤波器复用 在PE中滤波器行可以在多个特征图中复用。示例滤波器行 Row 1 可以在特征图 Fmap 1 和 Fmap 2 中复用。 特征图复用 在PE中特征图行可以在多个滤波器中复用。示例特征图行 Row 1 可以在滤波器 Filter 1 和 Filter 2 中复用。 通道累积 在PE中不同通道的部分和可以通过交替通道的方式进行累积。示例通道1和通道2的部分和可以累积为最终结果。
4. 编译器与硬件协同设计 编译器的作用 根据DNN的形状和大小优化映射配置Mapping Config将计算任务分配到PE阵列中。示例将多个特征图、滤波器和通道映射到同一个PE中以利用不同的数据复用和局部累积。 硬件资源 包括ALU算术逻辑单元、全局缓冲区Global Buffer等。示例通过全局缓冲区存储输入特征图、输出特征图和权重数据。
5. 性能评估框架Eyexam 评估目标 快速理解DNN加速器在不同工作负载下的性能限制。示例通过分析MAC乘积累加操作每周期的性能和数据每周期的性能评估硬件的计算能力和带宽限制。 评估步骤 最大工作负载并行性。最大数据流并行性。在有限PE阵列尺寸下的激活PE数量。在固定PE阵列尺寸下的激活PE数量。在有限存储容量下的激活PE数量。由于平均带宽不足导致的激活PE利用率降低。由于瞬时带宽不足导致的激活PE利用率降低。 6. 片上网络NoC设计 传统网络的局限性 单播Unicast和广播Broadcast网络难以同时满足高复用和高带宽的需求。示例广播网络适合高复用场景但带宽较低全连接网络适合高带宽场景但扩展性差。 提出的解决方案 层次化网格网络Hierarchical Mesh Network 支持从高复用到高带宽的各种数据传输模式。通过分层设计降低复杂性并提高扩展性。示例 高带宽模式支持所有PE之间的全连接通信。高复用模式支持从单一源到多个目标的高效数据传输。组播和交织多播模式适应不同的数据复用和带宽需求。 Eyeriss加速器的改进 Eyeriss v2采用层次化网格网络相比v1在性能和能效方面有显著提升。示例AlexNet的加速比为6.9倍能效提升2.6倍MobileNet的加速比为5.6倍能效提升1.8倍。
7. 总结
关键点 数据复用是实现高能效的关键。通过灵活的片上网络设计可以提高PE利用率从而实现高性能。数据流与硬件的协同设计对于优化DNN加速器的性能、能效和灵活性至关重要。