c语言sscanf函数的用法是什么
247
2022-11-27
人工智能的演进需要高适应性的推理平台(WP023)
模型大小不断增长给现有架构带来了挑战
图1:模型大小的增长速度(来源:Linley Group)
Image-processing models:图像处理模型
Language-processing models:语言处理模型
结构上的变化意味着诸如每秒万亿次操作(TOps)等常用指标的相关性在降低。通常情况下,处理引擎无法达到其峰值TOps分数,因为如果不改变模型的处理方式,存储和数据传输基础设施就无法提供足够的吞吐量。例如,批处理输入样本是一种常见的方法,因为它通常可以提高许多架构上可用的并行性。但是,批处理增加了响应的延迟,这在实时推理应用中通常是不可接受的。
数值灵活性是实现高吞吐量的一种途径
提高推理性能的一种途径是使计算的数值分辨率去适应各个独立层的需求,这也代表了与架构的快速演进相适应。一般来说,与训练所需的精度相比,许多深度学习模型在推理过程中可以接受明显的精度损失和增加的量化误差,而训练通常使用标准或双精度浮点算法进行。这些格式能够在非常宽的动态范围内支持高精度数值。这一特性在训练中很重要,因为训练中常见的反向传播算法需要在每次传递时对许多权重进行细微更改,以确保收敛。
许多推理部署都将模型转换为使用定点运算操作,这大大降低了精度。在这些情况下,对准确性的影响通常是最小的。事实上,有些层可以转换为使用极其有限的数值范围,甚至二进制或三进制数值也都是可行的选择。
图2:块浮点计算示例
block exponent:块指数
使用块浮点算法,无需将尾数左对齐。用于一系列计算的数据元素可以共享相同的指数,这一变化简化了执行通道的设计。对占据相似动态范围的数值进行四舍五入造成的精度损失可被降到最小。在设计时就要为每个计算块选择合适的范围。在计算块完成后,退出函数就可以对数值进行四舍五入和标准化处理,以便在需要时将它们用作常规的浮点值。
图3:机器学习处理器(MLP)的结构
Wireless:无线
Input Values:输入值
Input Layer:输入层
Hidden Layer 1:隐藏层1
Hidden Layer 2:隐藏层2
Output Layer:输出层
处理灵活性优化了算法支持
虽然机器学习处理器能够支持多种数据类型,这对于推理应用而言是至关重要的,但只有成为FPGA架构的一部分,它的强大功能才能释放出来。可轻松定义不同互连结构的能力使FPGA从大多数架构中脱颖而出。在FPGA中同时定义互连和算术逻辑的能力简化了构建一种平衡架构的过程。设计人员不仅能够为自定义数据类型构建直接支持,还可以去定义最合适的互连结构,来将数据传入和传出处理引擎。可重编程的特性进一步提供了应对人工智能快速演进的能力。通过修改FPGA的逻辑可以轻松支持自定义层中数据流的变化。
FPGA的一个主要优势是可以轻松地在优化的嵌入式计算引擎和由查找表单元实现的可编程逻辑之间切换功能。一些功能可以很好地映射到嵌入式计算引擎上,例如Speedster7t MLP。又如,较高精度的算法最好分配给机器学习处理器(MLP),因为增加的位宽会导致功能单元的大小呈指数增长,这些功能单元是用来实现诸如高速乘法之类的功能。
结果是,对于一个给定的位宽,实现整数乘法器所需的LUT数量可以减半。随着机器学习中的隐私和安全性等问题变得越来越重要,应对措施可能是在模型中部署同态加密形式。这些协议通常涉及非常适合于LUT实现的模式和位域操作,有助于巩固FPGA作为人工智能未来验证技术的地位。
数据传输是吞吐量的关键
为了在机器学习环境中充分利用数值自定义,周围的架构也同样重要。在越来越不规范的图形表示中,能随时在需要的地方和时间传输数据是可编程硬件的一个关键优势。但是,并非所有的FPGA架构都是一样的。
传统的处理器架构对卷积层的支持相对简单,而对其他的则更为复杂。例如,全连接层需要将一层中每个神经元的输出应用到下一层的所有神经元上。其结果是,算术逻辑单元之间的数据流比传统DSP应用中的要复杂得多,并且在吞吐量较高的情况下,会给互连带来更大的压力。
图4:滤波器和人工智能数据流
Memory Cascade Out:存储级联输出
Operand Cascade in:操作数级联
Fracturable:可分割
Memory Cascade in:存储级联
在Speedster7t架构中,有以下三项用于数据传输的创新:
·优化的存储层次结构
·高效的本地布线技术
·一个用于片内和片外数据传输的高速二维片上网络(2D NoC)
可以通过FPGA布线资源分别访问机器学习处理器(MLP)及其相关联的存储器。但是,如果一个存储器正在驱动关联的MLP,则它可以使用直接连接,从而卸载FPGA布线资源并提供高带宽连接。
在人工智能应用中,BRAM可以作为一个存储器,用于存储那些预计不会在每个周期中发生变化的值,诸如神经元权重和激活值。LRAM更适合存储只有短期数据局部性的临时值,诸如输入样本的短通道以及用于张量收缩和池化活动的累积值。
该架构考虑到需要能够将大型复杂的层划分为可并行操作的段,并为每个段提供临时数据值。BRAM和LRAM都具有级联连接功能,可轻松支持机器学习加速器中常用的脉动阵列的构建。
图5:具有存储和级联连接功能的MLP
MLP可以从逻辑阵列、共享数据的级联路径以及关联的BRAM72k和LRAM2k逐周期驱动。这种安排能够构建复杂的调度机制和数据处理通道,使MLP持续得到数据支持,同时支持神经元之间尽可能广泛的连接模式。为MLP持续提供数据是提高有效TOps算力的关键。
MLP的输出具有同样的灵活性,能够创建脉动阵列和更复杂的布线拓扑,从而为深度学习模型中可能需要的每种类型的层提供优化的架构。
Multiplier block exponent:乘数块指数
Multiplicand block exponent:被乘数块指数
Integer Multiply / Add Tree:整数乘法/加法树:
Convert to Floating Point:转换为浮点
Floating Point Accumulation:浮点累加
Round to desired precision:四舍五入到所需精度
通过将高密度数据包路由到分布在整个逻辑阵列上的数百个接入点,2D NoC使得大幅增加FPGA上的可用带宽成为可能。传统的FPGA必须使用数千个单独编程的布线路径来实现相同的吞吐量,而这样做会大量吃掉本地的互连资源。通过网络接入点将千兆数据传输到本地区域,2D NoC缓解了布线问题,同时支持轻松而快速地将数据传入和传出MLP和基于LUT的定制化处理器。
相关的资源节省是相当可观的——一个采用传统FPGA软逻辑实现的2D NoC具有64个NoC接入点(NAP),每个接入点提供一个运行频率为400MHz的128位接口,将消耗390kLUT。相比之下,Speedster 7t1500器件中的硬2D NoC具有80个NAP,不消耗任何FPGA软逻辑,并且提供了更高的带宽。
使用2D NoC还有其他的一些优势。由于相邻区域之间互连拥塞程度较低,因此逻辑设计更易于布局。因为无需从相邻区域分配资源来实现高带宽路径的控制逻辑,因此设计也更加有规律。另一个好处是极大地简化了局部性重新配置——NAP支持单个区域成为有效的独立单元,这些单元可以根据应用的需要进行交换导入和导出。这种可重配置的方法反过来又支持需要在特定时间使用的不同模型,或者支持片上微调或定期对模型进行再训练这样的架构。
结论
随着模型增大和结构上变得更加复杂,FPGA正成为一种越来越具吸引力的基础器件来构建高效、低延迟AI推理解决方案,而这要归功于其对多种数值数据类型和数据导向功能的支持。但是,仅仅将传统的FPGA应用于机器学习中是远远不够的。机器学习以数据为中心的特性需要一种平衡的架构,以确保性能不受人为限制。考虑到机器学习的特点,以及不仅是现在,而且在其未来的开发需求,Achronix Speedster7t FPGA为AI推理提供了理想的基础器件。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~