神经网络推理加速入门——计算和存储的分离

简介: 硬件优化对于计算的加速效果是显而易见的,理解了底层硬件的原理,可以帮助我们更好的完成计算优化。

大家好啊,我是董董灿。

今天开始,增加第一个专栏,作为神经网络推理加速的专栏,主要写一写在神经网络推理过程中的一些加速方法。

先从计算机底层原理说起。先说几个基础概念。

计算机存储和计算的分离

第一是计算机。这里说的计算机是广义上的计算机,也就是说具有计算能力的硬件设备(计算的机器)都算。小到某个芯片系统,大到智能手环、手机、电脑甚至服务器,都归到计算机的范畴。

第二是计算。这里要说的计算,指所有的计算,包括科学计算——比如用计算器算一些数,包括音频编解码——比如手机麦克风对我们说话音频的调制解调处理,包括视频流——比如看电影时一帧帧图像的解码等等。所有芯片需要处理的计算任务,都包含在计算这一概念中。

第三是存储。这里说的存储,泛指计算机中所有能存储数据硬件。包括我们熟知的硬盘、U盘、手机内存、手机运存、GPU显存(显卡容量),也包括处理器(CPU或其他芯片)内部的片上存储或L1/L2缓存等。

在说清楚这3个概念之后,那么,计算机的计算和存储,就好比——

我们在厨房做饭,厨房里的冰箱就是存储器,冰箱里的菜就是希望处理的数据,而洗菜、切菜、炒菜都属于计算任务,整个厨房就是计算机。

冯诺依曼架构

不论是笔记本,还是手机,还是智能手表智能手环,内部的程序运行机制都是一样的,都绕不开一个著名的计算体系,大家可能听过,叫做冯诺依曼体系。

冯诺依曼是二战时期著名的计算机科学家,他开创性的提出了计算机的冯诺依曼架构,其中最为人津津乐道的,是数据存储和计算的分离。

在任何一台计算机中,存储数据的硬件叫做存储器,负责逻辑计算的叫做运算器。除此之外还有控制器,输入输出(IO)等。

image.png

存储和计算分离就是,存储器只负责存储数据,计算单元只负责计算数据,然后将计算出来的结果再存回存储器。

有没有发现,我们在做计算(洗菜)之前,需要将数据(菜)从冰箱里拿出来,放在洗菜池里来洗(计算)。这个将菜从冰箱里拿出来的过程,叫做数据的搬运。

而在芯片的整个运算过程中,数据的搬运的时间开销是避免不了的,甚至有时会占据绝对的大头。

举个例子——

我们知道卷积运算是一种计算密集型的算法。也就是大量的时间开销都消耗在了卷积的乘法和加法上(乘累加,Multiply-accumulator,MAC单元)。但是,如果芯片的片上存储很小,而神经网络中的一张图片又很大,一张图片的数据是无法在一次计算中全部放在片上存储的。

image.png

那么这个时候,自然而然会想到将图片拆分成好几份进行计算。

然而,卷积要求的是将所有输入通道进行累加和。如果在通道上进行了数据拆分,那么每次计算的都是不完全的结果(部分和)。这个时候,这些中间结果都要找个地方放。

放哪里?

最常见的就是放在片外存储上(对于GPU来说,可能就把这些临时数据放在DDR上,也就是我们常说的显存上,因为显存一般都比较大,大概16GB,肯定能的下)。

如此一来,存放数据的冰箱可能就不是厨房里的冰箱了,而是客厅里的大冰柜,将数据从厨房搬到客厅的大冰柜临时存起来,这个过程的数据搬运开销是很大的。

也因此,GPU甚至很多ASIC芯片,在进行芯片设计时,都会想办法加大DDR的带宽,通过多路DDR访存甚至使用HBM来提升带宽,以降低数据搬运带来的额外开销。

image.png

总结一下

在现有经典的计算机计算架构中,比如冯诺依曼架构中,计算和存储是分离的。这也就导致了计算机在完成运算任务时,需要不断地从存储器中搬运数据到计算单元中,然后完成计算。

这种架构也导致了计算指令和IO指令(数据搬运)的独立,从而衍生出指令流水线。(这个后面会慢慢介绍)。除此之外,既然计算和存储是分离的,为了防止多余的搬运开销,那我们把计算和存储放在一起不就行了么?

我们直接在冰箱里洗菜做饭不就完了?

可以,现在比较前沿的近存芯片、或者存算一体芯片就是基于这个想法来设计实现的,后面也会逐步涉及一些存算一体技术进行AI推理加速的,敬请期待。

欢迎关注@董董灿是个攻城狮 和同名微信公众号
本文作者原创,转载请联系作者,请勿随意转载

相关文章
|
5月前
|
存储 运维 API
HPE OneView 10.0 - HPE 服务器、存储和网络设备集中管理软件
HPE OneView 10.0 - HPE 服务器、存储和网络设备集中管理软件
116 1
|
2月前
|
人工智能 监控 数据可视化
如何破解AI推理延迟难题:构建敏捷多云算力网络
本文探讨了AI企业在突破算力瓶颈后,如何构建高效、稳定的网络架构以支撑AI产品化落地。文章分析了典型AI IT架构的四个层次——流量接入层、调度决策层、推理服务层和训练算力层,并深入解析了AI架构对网络提出的三大核心挑战:跨云互联、逻辑隔离与业务识别、网络可视化与QoS控制。最终提出了一站式网络解决方案,助力AI企业实现多云调度、业务融合承载与精细化流量管理,推动AI服务高效、稳定交付。
|
4月前
|
机器学习/深度学习 数据采集 算法
贝叶斯状态空间神经网络:融合概率推理和状态空间实现高精度预测和可解释性
本文将BSSNN扩展至反向推理任务,即预测X∣y,这种设计使得模型不仅能够预测结果,还能够探索特定结果对应的输入特征组合。在二元分类任务中,这种反向推理能力有助于识别导致正负类结果的关键因素,从而显著提升模型的可解释性和决策支持能力。
385 42
贝叶斯状态空间神经网络:融合概率推理和状态空间实现高精度预测和可解释性
|
6月前
|
算法 JavaScript 数据安全/隐私保护
基于GA遗传优化的最优阈值计算认知异构网络(CHN)能量检测算法matlab仿真
本内容介绍了一种基于GA遗传优化的阈值计算方法在认知异构网络(CHN)中的应用。通过Matlab2022a实现算法,完整代码含中文注释与操作视频。能量检测算法用于感知主用户信号,其性能依赖检测阈值。传统固定阈值方法易受噪声影响,而GA算法通过模拟生物进化,在复杂环境中自动优化阈值,提高频谱感知准确性,增强CHN的通信效率与资源利用率。预览效果无水印,核心程序部分展示,适合研究频谱感知与优化算法的学者参考。
|
3月前
|
存储 监控 Linux
Dell OpenManage Enterprise 4.5 - Dell 服务器、存储和网络设备集中管理软件
Dell OpenManage Enterprise 4.5 - Dell 服务器、存储和网络设备集中管理软件
89 0
|
6月前
|
存储 安全 Linux
Dell OpenManage Enterprise 4.4 - Dell 服务器、存储和网络设备集中管理软件
Dell OpenManage Enterprise 4.4 - Dell 服务器、存储和网络设备集中管理软件
198 4
Dell OpenManage Enterprise 4.4 - Dell 服务器、存储和网络设备集中管理软件
|
7月前
|
人工智能 供应链 调度
|
6月前
|
存储 消息中间件 弹性计算
阿里云服务器ECS计算型c7和通用算力型u1在适用场景、计算性能、网络与存储性能等方面的对比
阿里云ECS服务器u1和c7实例在适用场景、性能、处理器特性等方面存在显著差异。u1为通用算力型,性价比高,适合中小企业及对性能要求不高的场景;c7为企业级计算型,采用最新Intel处理器,性能稳定且强大,适用于高性能计算需求。u1支持多种CPU内存配比,但性能一致性可能受底层平台影响;c7固定调度模式,确保高性能与稳定性。选择时可根据预算与性能需求决定。
343 23
|
6月前
计算网络号的直接方法
子网掩码用于区分IP地址中的网络部分和主机部分,连续的“1”表示网络位,“0”表示主机位。例如,255.255.255.0 的二进制为 11111111.11111111.11111111.00000000,前24位是网络部分。通过子网掩码可提取网络号,如 IP 192.168.1.10 与子网掩码 255.255.255.0 的网络号为 192.168.1.0。此外,文档还介绍了十进制与二进制间的转换方法,帮助理解IP地址的组成与计算。
404 11
|
9月前
|
机器学习/深度学习
YOLOv11改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计
YOLOv11改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计
733 8
YOLOv11改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计

热门文章

最新文章