前沿计组知识入门(四)

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加速器的关键,主要分为以下三类:

  • 输出 stationary(OS):最小化部分和的读写能耗,适合最大化本地累积。例如,ShiDianNao和ENVISION。
  • 权重 stationary(WS):最小化权重读取能耗,适合最大化权重重用。例如,NeuFlow和NVDLA。
  • 输入 stationary(IS):最小化激活读取能耗,适合最大化输入激活的重用。例如,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分别代表输出长度和滤波器长度。以下是逐行解释:

  1. MAC操作数

    • 所有数据流类型(OS、WS、IS)的MAC操作数都是E*R(E 和 R 是与1-D卷积操作相关的两个关键参数,分别表示:E (Output Length):输出特征图(output feature map)的长度。R (Filter Length):滤波器(filter)的长度。),这是固定的计算量,与数据流类型无关。
  2. 权重读取次数

    • OS:需要读取E*R次权重,因为每个权重在每个输出位置都需要读取一次。
    • WS:只需要读取R次权重,因为权重在PE阵列中被广播并重用。
    • IS:需要读取E*R次权重,因为权重在每个输入位置都需要读取一次。
  3. 输入读取次数

    • OS:需要读取E*R次输入,因为输入在每个输出位置都需要读取一次。
    • WS:需要读取E*R次输入,因为输入在每个输出位置都需要读取一次。
    • IS:只需要读取E次输入,因为输入在PE阵列中被广播并重用。
  4. 输出读取次数

    • OS:不需要读取输出(0次),因为输出在本地累积。
    • WS:需要读取E*R次输出,因为输出在PE阵列中需要多次读取。
    • IS:需要读取E*R次输出,因为输出在PE阵列中需要多次读取。
  5. 输出写入次数

    • OS:需要写入E次输出,因为每个输出只写入一次。
    • WS:需要写入E*R次输出,因为输出在PE阵列中需要多次写入。
    • IS:需要写入E*R次输出,因为输出在PE阵列中需要多次写入。

总结

  • OS在权重读取和输出读取方面表现最佳,因为它最小化了部分和的读写。
  • WS在权重读取方面表现最佳,因为它最小化了权重的读取。
  • IS在输入读取方面表现最佳,因为它最小化了输入的读取。
  • Min列显示了每个指标的最小值,表明哪种数据流类型在特定指标上表现最好。

补充伪代码

  1. Output Stationary (OS) 代码
for (e = 0; e < E; e++)for (r = 0; r < R; r++)O[e] += I[e+r] * W[r];
  • 外层循环:遍历输出索引 e,从0到E-1。
  • 内层循环:遍历滤波器索引 r,从0到R-1。
  • 操作:对于每个输出索引 e 和滤波器索引 r,将输入 I[e+r] 和权重 W[r] 的乘积累加到输出 O[e] 中。
  • 特点:输出 O[e] 在每个周期中被多次更新,权重和输入被读取。
  1. Weight Stationary (WS) 代码
for (r = 0; r < R; r++)for (e = 0; e < E; e++)O[e] += I[e+r] * W[r];
  • 外层循环:遍历滤波器索引 r,从0到R-1。
  • 内层循环:遍历输出索引 e,从0到E-1。
  • 操作:对于每个滤波器索引 r 和输出索引 e,将输入 I[e+r] 和权重 W[r] 的乘积累加到输出 O[e] 中。
  • 特点:权重 W[r] 在每个周期中被多次重用,减少了权重的读取次数。
  1. 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行卷积

    • 在PE(Processing Element)中,通过寄存器文件(Reg File)存储滤波器行和特征图滑动窗口,计算部分和。
    • 示例:滤波器行为 a b c,特征图行为 a b c d e,通过滑动窗口计算部分和。
  • 2D卷积

    • 在PE阵列中,通过多行滤波器和特征图的组合,完成二维卷积计算。
    • 示例:PE阵列中,每行PE处理不同的滤波器行和特征图行,逐步积累部分和。

3. 多通道和多特征图的处理

  • 滤波器复用

    • 在PE中,滤波器行可以在多个特征图中复用。
    • 示例:滤波器行 Row 1 可以在特征图 Fmap 1Fmap 2 中复用。
  • 特征图复用

    • 在PE中,特征图行可以在多个滤波器中复用。
    • 示例:特征图行 Row 1 可以在滤波器 Filter 1Filter 2 中复用。
  • 通道累积

    • 在PE中,不同通道的部分和可以通过交替通道的方式进行累积。
    • 示例:通道1和通道2的部分和可以累积为最终结果。
      在这里插入图片描述

4. 编译器与硬件协同设计

  • 编译器的作用

    • 根据DNN的形状和大小,优化映射配置(Mapping Config),将计算任务分配到PE阵列中。
    • 示例:将多个特征图、滤波器和通道映射到同一个PE中,以利用不同的数据复用和局部累积。
  • 硬件资源

    • 包括ALU(算术逻辑单元)、全局缓冲区(Global Buffer)等。
    • 示例:通过全局缓冲区存储输入特征图、输出特征图和权重数据。

5. 性能评估框架(Eyexam)

  • 评估目标

    • 快速理解DNN加速器在不同工作负载下的性能限制。
    • 示例:通过分析MAC(乘积累加操作)每周期的性能和数据每周期的性能,评估硬件的计算能力和带宽限制。
  • 评估步骤

    1. 最大工作负载并行性。
    2. 最大数据流并行性。
    3. 在有限PE阵列尺寸下的激活PE数量。
    4. 在固定PE阵列尺寸下的激活PE数量。
    5. 在有限存储容量下的激活PE数量。
    6. 由于平均带宽不足导致的激活PE利用率降低。
    7. 由于瞬时带宽不足导致的激活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加速器的性能、能效和灵活性至关重要。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/900293.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Transformer+BO-SVM多变量时间序列预测(Matlab)

TransformerBO-SVM多变量时间序列预测&#xff08;Matlab&#xff09; 目录 TransformerBO-SVM多变量时间序列预测&#xff08;Matlab&#xff09;效果一览基本介绍程序设计参考资料 效果一览 基本介绍 本期推出一期高创新模型&#xff0c;基于Transformer提取时序特征后输入S…

SQL BETWEEN 语句详解

SQL BETWEEN 语句详解 概述 SQL BETWEEN 语句是一个用于在 SQL 查询中指定查询条件的重要工具。它允许用户指定一个范围&#xff0c;用于筛选符合特定条件的记录。本文将详细介绍 BETWEEN 语句的用法、示例以及注意事项。 BETWEEN 语句的基本用法 BETWEEN 语句的基本格式如…

AI Agent设计模式三:Routing

概念 &#xff1a;动态路径选择器 ✅ 优点&#xff1a;灵活处理不同类型输入❌ 缺点&#xff1a;路由逻辑复杂度高 from typing import TypedDict from langchain_core.messages import SystemMessage, HumanMessage from langchain_openai import ChatOpenAI from langgraph.…

制造装备物联及生产管理ERP系统设计与实现(代码+数据库+LW)

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装制造装备物联及生产管理ERP系统软件来发挥其高效地信息处理…

`use_tempaddr` 和 `temp_valid_lft ` 和 `temp_prefered_lft ` 笔记250405

use_tempaddr 和 temp_valid_lft 和 temp_prefered_lft 笔记250405 以下是 Linux 系统中与 IPv6 临时隐私地址相关的三个关键参数 use_tempaddr、temp_valid_lft 和 temp_prefered_lft 的详细说明及协作关系&#xff1a; &#x1f4dc; 参数定义与功能 参数作用默认值依赖关…

基于Spark的哔哩哔哩舆情数据分析系统

【Spark】基于Spark的哔哩哔哩舆情数据分析系统 &#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 本项目基于Python和Django框架进行开发&#xff0c;为了便于广大用户针对舆情进行个性化分析处…

南京大学与阿里云联合启动人工智能人才培养合作计划,已将通义灵码引入软件学院课程体系

近日&#xff0c;南京大学与阿里云宣布启动人工智能人才培养合作计划&#xff0c;共同培养适应未来技术变革、具备跨学科思维的AI创新人才。 基于阿里云在云计算和AI大模型领域的技术优势和南京大学在人工智能领域的学科优势&#xff0c;双方将共同设计兼具前瞻性和应用性的人…

用于解决个人使用的公网ip动态变化问题的解决方案

解决方案 静态ip&#xff08;放弃&#xff09; 申请一个静态ip价格较贵&#xff0c;只有公司可以申请 使用DDNS&#xff08;放弃&#xff09; 通过域名解析到公网ip通过域名访问设备官方光猫不支持DDNS 使用脚本&#xff08;采用&#xff09; 通过脚本获取公网ip通过脚本发送到…

Spring / Spring Boot 的@MapperScan 和 @Repository

MapperScan 和 Repository 是两个与数据访问层相关的注解&#xff0c;它们在功能上有一定的联系&#xff0c;但也有明显的区别。 一、相同点 1. 都与数据访问层相关 MapperScan&#xff1a;用于扫描 MyBatis 的 Mapper 接口。MyBatis 是一个流行的持久层框架&#xff0c;Mapp…

全星 研发项目管理APQP 软件:驱动汽车及制造业研发升级的数字化引擎

全星 APQP 软件&#xff1a;驱动汽车及制造业研发升级的数字化引擎 在汽车及制造业竞争白热化的当下&#xff0c;如何高效推进研发项目&#xff0c;同时确保严格合规&#xff0c;成为企业亟待解决的难题。 全星研发项目管理 APQP 软件系统&#xff0c;凭借卓越的功能与显著优势…

cadence17.4和16.6同时安装无法使用的问题

最近在搞这个两个版本的软件安装,针对网上的一些说法: 方法一:先装17.4再装16.6,文件放在一个文件夹,打不开,两个版本都无法使用 方法二:分别安装,文件路径放在不同的文件 方案三:修改环境变量,直接使用17.4的 License Manager 这个也无法解决问题。 经过对报错的问…

(三)链式工作流构建——打造智能对话的强大引擎

上一篇&#xff1a;&#xff08;二&#xff09;输入输出处理——打造智能对话的灵魂 在前两个阶段&#xff0c;我们已经搭建了一个基础的智能对话&#xff0c;并深入探讨了输入输出处理的细节。今天&#xff0c;我们将进入智能对话的高级阶段——链式工作流构建。这一阶段的目…

【MATLAB定位例程】TDOA(到达时间差)的chan-tylor,三维环境,附完整代码

该代码实现了基于三维空间的动态目标TDOA定位,结合了Chan算法(解析解)与Taylor级数展开法(迭代优化)的双重优势。 文章目录 运行结果MATLAB代码代码讲解代码功能概述核心算法原理代码结构解析可视化与结果分析运行结果 定位示意图: 三轴状态曲线: 三轴误差曲线: MA…

Golang的文件同步与备份

Golang的文件同步与备份 一、Golang介绍 也称为Go语言&#xff0c;是谷歌开发的一种编程语言&#xff0c;具有高效的并发编程能力和出色的内存管理。由于其快速的编译速度和强大的标准库&#xff0c;Golang在网络应用、云平台和大数据等领域得到了广泛应用。 二、文件同步与备份…

ARXML文件解析-2

目录 1 摘要2 常见ARXML文件注意事项以及常见问题2.1 注意事项2.2 常见问题2.3 答疑 3 ARXML解读/编辑指南3.1 解读ARXML文件的步骤3.2 编辑ARXML文件的方法3.3 验证与调试 4 总结 1 摘要 本文主要对ARXML文件的注意事项、常见问题以及解读与编辑进行详细介绍。 上文回顾&…

3535 数组分割

3535 数组分割 ⭐️难度&#xff1a;困难 &#x1f31f;考点&#xff1a;2023、省赛、动态规划 &#x1f4d6; &#x1f4da; import java.util.*;public class Main {static int MOD 1000000007;static int N 1005;public static void main(String[] args) {Scanner sc …

Git操作指南

Git操作指南 1.安装并配置Git Git官网&#xff1a;https://git-scm.com/downloads 安装完成后&#xff0c;打开Git Bash&#xff0c;配置Git&#xff1a; git config --global user.email "emailexample.com" git config --global user.name "Your Name&quo…

Linux常用基础命令应用

目录 一、文件与目录操作&#xff08;12个核心命令&#xff09;​​ ​​1. pwd - 显示当前路径​​ ​​2. ls - 查看目录内容​​ ​​3. cd - 切换目录​​ ​​4. mkdir - 创建目录​​ ​​5. touch - 创建文件​​ ​​6. cp - 复制文件/目录​​ ​​7. mv - 移动…

zookeeper基本概念和核心作用

图片来源&#xff1a; 02-Zookeeper概念_哔哩哔哩_bilibili02-Zookeeper概念是黑马程序员Zookeeper视频教程&#xff0c;快速入门zookeeper技术的第2集视频&#xff0c;该合集共计24集&#xff0c;视频收藏或关注UP主&#xff0c;及时了解更多相关视频内容。https://www.bilib…