跳转到主要内容

人工智能的演进需要高适应性的推理平台(WP023)

winniewei 提交于

<p><em>模型大小不断增长给现有架构带来了挑战</em></p>

<p><span>深度学习对计算能力的需求正以惊人的速度增长,其近年来的发展速度已从每年翻一番缩短到每三个月翻一番。</span><span>深度神经网络(DNN)模型</span><span>容量的</span><span>不断</span><span>提升,表明</span><span>从自然语言处理到图像处理的</span><span>各个</span><span>领域</span><span>都得到了</span><span>改进</span><span>——深度神经网络是</span><span>诸如自动驾驶和机器人</span><span>等实时应用</span><span>的关键技术。例如,Facebook的研究表明,准确</span><span>率</span><span>与模型</span><span>大小的比率</span><span>呈线性</span><span>增长</span><span>,通过</span><span>在</span><span>更大的数据集进行训练</span><span>,</span><span>准确</span><span>率</span><span>甚至可以</span><span>得到</span><span>进一步提高。</span></p>

<p><span>目前在许多前沿领域,模型大小的增长速度远快于摩尔定律,用于一些应用的万亿参数模型正在考虑之中。虽然</span><span>很少有生产系统会达到同样的极</span><span>端情况</span><span>,但在这些示例中,参数</span><span>数</span><span>量对性能的影响将</span><span>在</span><span>实际应用</span><span>中</span><span>产生连锁反应。模型</span><span>大小</span><span>的增</span><span>长给实施者带来</span><span>了挑战。</span><span>如果不能</span><span>完全依靠芯片扩展路线图,</span><span>就需要其他解决方案来满足对模型容量增加部分的需求,而且成本要与部署规模相适应。</span><span>这种</span><span>增长</span><span>要求采用定制</span><span>化的</span><span>架</span><span>构,以最大限度地发挥每个可用晶体管的性能。</span></p>

<p><img alt="图1:模型大小的增长速度(来源:Linley Group)" data-entity-type="file" data-entity-uuid="8574f6ff-b5ba-456a-8eb5-df54b3805d13" src="http://new.eetrend.com/files/2021-07/wen_zhang_/100114319-211724-1.jpg&…; /></p>

<p><span>图1:模型大小的增长速度(来源:Linley</span><span><span>&nbsp;</span>G</span><span>roup)</span></p>

<p><span>Parameters</span><span><span>&nbsp;</span>(log scale)</span><span>:参数(对数刻度)</span></p>

<p><span>Image</span><span>-</span><span>processing</span><span><span>&nbsp;</span></span><span>models:图像处理模型</span></p>

<p><span>Language</span><span>-</span><span>processing</span><span><span>&nbsp;</span></span><span>models:语言处理模型</span></p>

<p><span>随着参数数量快速增长,深度学习架构也在快速演进。当深度神经网络继续广泛使用传统卷积、全连接层和池化层的组合时,市场上也出现了其它结构,诸如自然语言处理(NLP)中的自注意力网络</span><span>。</span><span>它</span><span>们仍然需要高速矩阵和面向张量的算法,但是</span><span>存储</span><span>访问模式的变化</span><span>可能会给图形处理器(</span><span>GPU</span><span>)</span><span>和</span><span>当前现有的</span><span>加速器</span><span>带来麻烦</span><span>。</span></p>

<p><span>结构上的变化意味着诸如每秒万亿次操作(</span><span>TOps</span><span>)等常用指标的相关性在降低。通常情况下</span><span>,处理引擎无法达到其峰值TOps分数,因为</span><span>如果</span><span>不改</span><span>变</span><span>模型</span><span>的</span><span>处理方式,</span><span>存储</span><span>和数据</span><span>传输</span><span>基础</span><span>设施就</span><span>无法提供足够的吞吐量。例如,批</span><span>处理</span><span>输入样本是一种常见的方法,因为它通常可以</span><span>提高</span><span>许多</span><span>架构</span><span>上可用</span><span>的</span><span>并行性。但是,</span><span>批</span><span>处理增加了响应的</span><span>延迟</span><span>,这在实时推理应用中通常是不可接受的。</span></p>

<p><strong>数值灵活性是实现高吞吐量的一种</strong><strong>途径</strong></p>

<p><span>提高推理性能的一种途径是使计算的数值分辨率去适应各个独立层的需求,这也代表了与架构的快速演进相适应。一般来说</span><span>,</span><span>与训练所需的精度相比,许多深度学习模型在推理过程中可以接受明显的精度损失和增加的量化误差,而训练通常使用标准或双精度浮点算法进行。</span><span>这</span><span>些格式能够</span><span>在非常宽的动态范围内支持高精度</span><span>数值</span><span>。</span><span>这一特性</span><span>在训练中很重要,因为训练</span><span>中常见</span><span>的反向传播算法</span><span>需</span><span>要在每次</span><span>传递时</span><span>对许多权重进行细微更改,以确保收敛。</span></p>

<p><span>通常来说,浮点运算需要大量的硬件支持才能实现高分辨率数据类型的低延迟处理,它们最初被开发用来支持高性能计算机上的科学应用,完全支持它所需的开销并不是一个主要问题。</span></p>

<p><span>许多推理部署都将模型转换为使用定点运算操作,这大大降低了精度。在</span><span>这些情况下,对准确</span><span>性</span><span>的影响通常</span><span>是最小的</span><span>。</span><span>事实</span><span>上,</span><span>有</span><span>些层</span><span>可以</span><span>转换为使用极</span><span>其有限的数值范围,甚至二进制或三进制数值也都是可行的选择。</span></p>

<p><span>然而,整数运算并不总是一种有效的解决方案。</span><span>有些滤</span><span>波</span><span>器和</span><span>数据</span><span>层</span><span>就</span><span>需要高动态范围。为了满足</span><span>这一</span><span>要求,整数硬件可能需要</span><span>以</span><span>24位或32</span><span>位字长来处理数据,这将比</span><span>8</span><span>位或</span><span>16</span><span>位的整数数据类型消耗更多的资源,这些数据类型很容易在典型的单指令多数据(</span><span>SIMD</span><span>)加速器中得到支持。</span></p>

<p><span>一种折衷方案是使用窄浮点格式,例如适合</span><span>16</span><span>位字长的格式。这种选择可以实现更大的并行性,但它并没有克服大多数浮点数据类型固有的性能障碍。问题在于,在每次计算后,浮点格式的两部分都需要进行调整,因为尾数的最高有效位没有显式存储。因此,指数的大小需要通过一系列的逻辑移位操作来调整,以确保隐含的前导“</span><span>1</span><span>”始终存在。这种规范化操作的好处是任何单个数值都只有一种表示形式,这对于用户应用程序中的软件兼容性很重要。然而,</span><span>对于许多信号处理和人工智能推理常规运算</span><span>来说,这是不必要的。</span></p>

<p><span>这些操作的大部分硬件开销都可以通过在每次计算后无需标准化尾数和调整指数来避免。</span><span>这是块浮点</span><span>算法所</span><span>采用的方法,</span><span>这种数据格式已被用于</span><span>标准定点</span><span>数字信号处理(</span><span>DSP</span><span>)</span><span>,</span><span>以</span><span>提高其在移动设备</span><span>的音频处理算法、数字用户线路(</span><span>DSL</span><span>)</span><span>调制解调器和雷达系统</span><span>上</span><span>的性能。</span></p>

<p><img alt="图2:块浮点计算示例" data-entity-type="file" data-entity-uuid="bd1f109e-673f-4eaf-9956-575d0f0775c3" src="http://new.eetrend.com/files/2021-07/wen_zhang_/100114319-211725-2.jpg&…; /></p>

<p><span>图2:块浮点计算示例</span></p>

<p><span>mantissa:尾数</span></p>

<p><span>bloc</span><span>k exponent</span><span>:块指数</span></p>

<p><span>使用块浮点算法,无需将尾数左对齐。用于一系列计算的数据元素可以共享相同的指数,这一变化简化了执行通道的设计。对占据相似动态范围的数值进行四舍五入造成的精</span><span>度损失可被降到最小。在设计时就要为每个计算块选择合适的范围。在计算块完成后,退出函数就可以对数值进行四舍五入和标准化处理,以便在需要时将它们用作常规的浮点值。</span></p>

<p><span>支持块浮点格式是机器学习处理器(</span><span>MLP</span><span>)的功能之一。</span><span>Achronix</span><span>的</span><span>Speedster®7t<span>&nbsp;</span></span><span>FPGA器件和</span><span>Speedcore™ eFPGA</span><span>架构提供了这种高度灵活的算术逻辑单元。机器学习处理器针对人工智能应用所需的点积和类似矩阵运算进行了优化。相比传统浮点,这些机器学习处理器对块浮点的支持提供了实质性的改进。</span><span>16</span><span>位块浮点运算的吞吐量是传统的半精度浮点运算的</span><span>8</span><span>倍,使其与</span><span>8</span><span>位整数运算的速度一样快,与仅以整数形式的运算相比,有功功耗仅增加了</span><span>15</span><span>%。</span></p>

<p><span>另一种可能很重要的数据类型是</span><span>TensorFloat 32(TF32)格式,与标准精度格式相比,</span><span>该格式的</span><span>精度有所降低,但保持</span><span>了</span><span>较高的动态范围。TF32</span><span>也缺乏块指数处理的优化吞吐量,但对于一些应用是有用的,在这些应用中,使用</span><span>TensorFlow</span><span>和类似环境所创建的模型的易于移植性是很重要的。</span><span>Speedster7t FPGA中</span><span>机器学习处理器所具有</span><span>的高度灵活性使</span><span>得使用</span><span>24位浮点模式</span><span>来</span><span>处理TF32</span><span>算法</span><span>成为可能。</span><span>此外,机器学习处理器的高度可配置性意味着可以支持一个全新的、块浮点版本的</span><span>TF32</span><span>,其中四个样本共享同一个指数。机器学习处理器支持的块浮点</span><span>TF32</span><span>,其密度是传统</span><span>TF32</span><span>的两倍。</span></p>

<p><img alt="图3:机器学习处理器(MLP)的结构" data-entity-type="file" data-entity-uuid="4ef06dc8-81bc-4412-90f7-76cd26d3977c" src="http://new.eetrend.com/files/2021-07/wen_zhang_/100114319-211726-3.jpg&…; /></p>

<p><span>图</span><span>3</span><span>:机器学习处理器(M</span><span>LP</span><span>)的结构</span></p>

<p><span>Wireless:无线</span></p>

<p><span>AI</span><span>/ML</span><span>:人工智能/机器学习</span></p>

<p><span>Input</span><span><span>&nbsp;</span></span><span>Values:输入值</span></p>

<p><span>Input</span><span><span>&nbsp;</span></span><span>Layer:输入层</span></p>

<p><span>Hidden</span><span><span>&nbsp;</span></span><span>Layer</span><span><span>&nbsp;</span>1</span><span>:隐藏层</span><span>1</span></p>

<p><span>Hidden</span><span><span>&nbsp;</span></span><span>Layer</span><span><span>&nbsp;</span>2</span><span>:隐藏层</span><span>2</span></p>

<p><span>Output</span><span><span>&nbsp;</span></span><span>Layer:输出层</span></p>

<p><strong>处理灵活性优化了算法支持</strong></p>

<p><span>虽然机器学习处理器能够</span><span>支持多种数据类型</span><span>,这</span><span>对于推理应用</span><span>而言是</span><span>至关重要</span><span>的</span><span>,但只有成为FPGA</span><span>架构</span><span>的一部分,</span><span>它的</span><span>强大功能才能释放</span><span>出来。可轻松定义不同互连结构的能力使</span><span>FPGA</span><span>从大多数架构中脱颖而出。</span><span>在FPGA中同时定义互连和算术逻辑的能力简化了构建</span><span>一种</span><span>平衡架构的</span><span>过程</span><span>。设计人员不仅能够</span><span>为</span><span>自定义数据类型</span><span>构建</span><span>直接支持,还可以</span><span>去</span><span>定义最合适的互</span><span>连结构</span><span>,</span><span>来将数据传入和传出处理引擎。可重编程的特性进一步提供了应对人工智能快速演进的</span><span>能力。通过</span><span>修改</span><span>FPGA的逻辑可以轻松支持自定义层</span><span>中</span><span>数据流的</span><span>变化</span><span>。</span></p>

<p><span>FPGA</span><span>的一个主要优势是可以轻松地在优化的嵌入式计算引擎和由查找表单元实现的可编程逻辑之间切换功能。一些功能可以很好地映射到嵌入式计算引擎上,例如</span><span>Speedster7t MLP</span><span>。又如,较高精度的算法最好分配给机器学习处理器(</span><span>MLP</span><span>),因为增加的位宽会导致功能单元的大小呈指数增长,这些功能单元是用来实现诸如高速乘法之类的功能。</span></p>

<p><span>较低精度的整数运算通常可以有效地分配给</span><span>FPGA架构</span><span>中</span><span>常</span><span>见</span><span>的查找表(LUT)。设计人员可以选择使用简单的位串行乘法器电路来实现高延</span><span>迟、</span><span>高并行</span><span>性</span><span>的</span><span>逻辑</span><span>阵列。或者</span><span>,他</span><span>们可以通过构建进位保存</span><span>和超前</span><span>进位</span><span>的</span><span>加法器</span><span>等结构来为</span><span>每个功能分配更多的逻辑</span><span>,这些结构通常用来实现低延迟的乘法器</span><span>。</span><span>通过</span><span>Speedster7t<span>&nbsp;</span></span><span>FPGA器件</span><span>中独特的LUT配置增强了对高速</span><span>算法</span><span>的支持,其中LUT提供了一种实现Booth编码</span><span>的</span><span>高效机制,这是一种节省面积的</span><span>乘法</span><span>方法。</span></p>

<p><span>结果是,对于一个给定的位宽,实现整数乘法器所需的</span><span>LUT数量</span><span>可以</span><span>减半。随着机器学习中的隐私和安全性等问题变得越来越重要,</span><span>应对</span><span>措施可能是在模型中部署同态加密形式。这些协议通常涉及非常适合</span><span>于</span><span>LUT</span><span>实现</span><span>的模</span><span>式</span><span>和位域</span><span>操作</span><span>,</span><span>有助于巩固</span><span>FPGA</span><span>作为人工智能未来验证技术的地位。</span></p>

<p><strong>数据传输是吞吐量的关键</strong></p>

<p><span>为了在机器学习环境中充分利用数值自定义,周围的架构也同样重要。</span><span>在越来越不规</span><span>范</span><span>的</span><span>图形表示</span><span>中,</span><span>能随时</span><span>在</span><span>需要</span><span>的</span><span>地方</span><span>和时间传输数据是可编程硬件的</span><span>一个关键</span><span>优势。但是</span><span>,</span><span>并非所有</span><span>的</span><span>FPGA架构都是一样的。</span></p>

<p><span>传统</span><span>FPGA</span><span>架构</span><span>的一个问题是,它们是从早期应用演变而来的</span><span>;但在早期应用中,其</span><span>主要功能是实现接口和控制电路逻辑。随着时间的</span><span>推移</span><span>,由于这些</span><span>器件</span><span>为蜂窝</span><span>移动通信</span><span>基站制造商提供了</span><span>一种</span><span>从</span><span>愈发</span><span>昂贵的ASIC</span><span>中转移出来的方法,</span><span>FPGA</span><span>架构结合了</span><span>DSP</span><span>模块来处理滤波和信道估计功能。原则上,这些</span><span>DSP</span><span>模块都可以处理人工智能功能。但是,这些模块最初设计主要是用于处理一维有限冲激响应(</span><span>1D FIR</span><span>)滤波器,这些滤波器使用一个相对简单的通道通过处理单元传输数据,一系列固定系数在该通道中被应用于连续的样本流。</span></p>

<p><span>传统的处理器架构对卷积层的支持相对简单,而对其他的则更为复杂。</span><span>例如,</span><span>全连接层需要将一层中每个神经元的输出应用到下一层的所有神经元上。其结果是,算术逻辑单元之间的数据流比传统</span><span>DSP</span><span>应用中的要复杂得多,并且在吞吐量较高的情况下,会给互连带来更大的压力。</span></p>

<p><span>尽管诸如</span><span>DSP内核之类的处理引擎可以在每个周期</span><span>中</span><span>生成</span><span>一个</span><span>结果,但FPGA内</span><span>部</span><span>的</span><span>布线限制可能导致无法足够快速地将数据传递给它。通常,对于专为许多传统</span><span>FPGA</span><span>设计的、通信系统中常见的</span><span>1D FIR</span><span>滤波器来说,拥塞不是问题。每个滤波阶段所产生的结果都可以轻松地传递到下一个阶段。</span><span>但是,张量操作</span><span>所需的</span><span>更高的互连以及机器学习应用较低的数据局部性</span><span>,</span><span>使得互连对于任何实现而言都更加重要。</span></p>

<p><img alt="图4:滤波器和人工智能数据流" data-entity-type="file" data-entity-uuid="9b014259-ba74-4ebc-9dcf-1761dd1da6dd" src="http://new.eetrend.com/files/2021-07/wen_zhang_/100114319-211727-4.jpg&…; /></p>

<p><span>图</span><span>4</span><span>:滤波器和人工智能数据流</span></p>

<p><span>Memory</span><span><span>&nbsp;</span></span><span>Cascade</span><span><span>&nbsp;</span></span><span>Out:存储级联输出</span></p>

<p><span>Operand</span><span><span>&nbsp;</span></span><span>Cascade</span><span><span>&nbsp;</span></span><span>in:操作数级联</span></p>

<p><span>Register</span><span><span>&nbsp;</span></span><span>File:寄存器文件</span></p>

<p><span>Fracturable:可分割</span></p>

<p><span>A</span><span>dder</span><span>/Accumulator:加法器</span><span>/累加器</span></p>

<p><span>Memory</span><span><span>&nbsp;</span></span><span>Cascade</span><span><span>&nbsp;</span></span><span>in:存储级联</span></p>

<p><span>机器学习中的数据局部性问题需要注意多层级的互连设计。由于在</span><span>最有效</span><span>的</span><span>模型中参数</span><span>数量庞大</span><span>,片外数据存储</span><span>通常是必需的</span><span>。关键要求是可以在需要时</span><span>以低延迟传输数据的机制,并使用靠近处理引擎的高效便笺式存储器,</span><span>以最有效地利用预取以及其</span><span>他</span><span>使用可预测</span><span>访问</span><span>模式</span><span>的策略,</span><span>来确保数据在</span><span>合适的时间</span><span>可用。</span></p>

<p><span>在</span><span>Speedster7t架构中,</span><span>有以下</span><span>三</span><span>项</span><span>用于数据</span><span>传输的创新</span><span>:</span></p>

<ul>
<li><span>优化的存储层次结构</span></li>
<li><span>高效的本地布线技术</span></li>
<li><span>一个用于片内和片外数据传输的高速二维</span><span>片上网络(</span><span>2</span><span>D NoC)</span></li>
</ul>

<p><span>传统的</span><span>FPGA通常具有分布在整个</span><span>逻辑架构</span><span>上</span><span>的</span><span>片上RAM块</span><span>,这些</span><span>RAM</span><span>块被放置在距离处理引擎有一定距离的地方。</span><span>对于典型的FPGA设计来说,这种选择是一种有效的架构,但在</span><span>人工智能环境</span><span>中</span><span>,它带来</span><span>了</span><span>额外的和</span><span>不必要的</span><span>布线</span><span>开销。在Speedster7t架构中,每个</span><span>机器学习处理器(</span><span>MLP</span><span>)</span><span>都与一个72kb的双端口</span><span>块</span><span>RAM</span><span>(</span><span>BRAM72k)和一个较小的2kb的双端口逻辑RAM(LRAM2k)</span><span>相</span><span>关联,</span><span>其中L</span><span>RAM2</span><span>k</span><span>可以</span><span>作为一个</span><span>紧密耦合的寄存器文件。</span></p>

<p><span>可以通过</span><span>FPGA</span><span>布线</span><span>资源分别访问</span><span>机器学习处理器(</span><span>MLP</span><span>)</span><span>及其</span><span>相</span><span>关联的存储器。但是,如果</span><span>一个</span><span>存储器</span><span>正在驱动关联的</span><span>MLP</span><span>,</span><span>则它可以使用直接连接,从而</span><span>卸载</span><span>FPGA</span><span>布线</span><span>资源并提供高带宽连接。</span></p>

<p><span>在人工智能</span><span>应用中</span><span>,</span><span>BRAM可以</span><span>作为一个</span><span>存储</span><span>器,用于</span><span>存储</span><span>那些预计不会在每个周期中发生变化的值</span><span>,</span><span>诸如</span><span>神经元权重和激活值。LRAM更适合存储</span><span>只</span><span>有短期数据局部性的临时值,</span><span>诸如</span><span>输入样本</span><span>的短通道以</span><span>及用于张量收缩和</span><span>池化</span><span>活动的累积值。</span></p>

<p><span>该架构考虑到需要能够将大型复杂的层划分为可并行操作的段,并为每个段提供临时数据值。</span><span>BRAM和LRAM都具有级联连接</span><span>功能</span><span>,可轻松支持机器学习加速器中</span><span>常用</span><span>的脉动阵列的</span><span>构建。</span></p>

<p><img alt="图5:具有存储和级联连接功能的MLP" data-entity-type="file" data-entity-uuid="1f9ebbe2-9833-4e8c-b8f3-3f1fbd15724c" src="http://new.eetrend.com/files/2021-07/wen_zhang_/100114319-211728-5.jpg&…; /></p>

<p><span>图5:具有存储和级联连接功能的M</span><span>LP</span></p>

<p><span>MLP</span><span>可以从逻辑阵列、共享数据的级联路径以及关联的</span><span>BRAM72k和LRAM2k</span><span>逐周期</span><span>驱动。这种安排</span><span>能够</span><span>构</span><span>建</span><span>复杂的调度机制和数据处理</span><span>通</span><span>道,</span><span>使</span><span>MLP</span><span>持续得到数据支持</span><span>,</span><span>同时</span><span>支持神经元之间</span><span>尽可能</span><span>广泛的连接模式。</span><span>为</span><span>MLP</span><span>持续</span><span>提供数据是提高有效TOps</span><span>算力</span><span>的关键。</span></p>

<p><span>MLP的输出具有</span><span>同样</span><span>的灵活性,能够创建脉动阵列和更复杂的</span><span>布线</span><span>拓扑,从而为深度学习模型</span><span>中</span><span>可能需要的每种类型的层提供</span><span>优化</span><span>的</span><span>架构。</span></p>

<p><img alt="图6:具有端点和I/O块的NoC" data-entity-type="file" data-entity-uuid="40220d64-10f2-49aa-a851-afd74f45fa3b" src="http://new.eetrend.com/files/2021-07/wen_zhang_/100114319-211729-6.jpg&…; /></p>

<p><span>图</span><span>6</span><span>:具有端点和</span><span>I/O</span><span>块的</span><span>NoC</span></p>

<p><span>Multiplier</span><span><span>&nbsp;</span>/<span>&nbsp;</span></span><span>multiplicand</span><span><span>&nbsp;</span></span><span>fractions</span><span><span>&nbsp;</span></span><span>after</span><span><span>&nbsp;</span></span><span>converting</span><span><span>&nbsp;</span></span><span>inputs</span><span><span>&nbsp;</span></span><span>to</span><span><span>&nbsp;</span></span><span>have</span><span><span>&nbsp;</span></span><span>the</span><span><span>&nbsp;</span>same exponent</span><span>:将输入转换为具有相同指数后的乘数</span><span>/被乘数分数</span></p>

<p><span>Multiplier</span><span><span>&nbsp;</span></span><span>block</span><span><span>&nbsp;</span></span><span>exponent:乘数块指数</span></p>

<p><span>Multiplicand</span><span><span>&nbsp;</span></span><span>block</span><span><span>&nbsp;</span></span><span>exponent:被乘数块指数</span></p>

<p><span>Integer</span><span><span>&nbsp;</span></span><span>Multiply</span><span><span>&nbsp;</span>/<span>&nbsp;</span></span><span>Add</span><span><span>&nbsp;</span></span><span>Tree:整数乘法</span><span>/加法树:</span></p>

<p><span>Convert</span><span><span>&nbsp;</span></span><span>to</span><span><span>&nbsp;</span></span><span>Floating</span><span><span>&nbsp;</span></span><span>Point:转换为浮点</span></p>

<p><span>Floating</span><span><span>&nbsp;</span></span><span>Point</span><span><span>&nbsp;</span></span><span>Accumulation:浮点累加</span></p>

<p><span>Round</span><span><span>&nbsp;</span></span><span>to</span><span><span>&nbsp;</span>desired<span>&nbsp;</span></span><span>precision:四舍五入到所需精度</span></p>

<p><span>Speedste</span><span>r7t架构中的2D NoC提供</span><span>了从逻辑阵列的</span><span>可编程逻辑</span><span>到</span><span>位于I/O环中的高速接口子系统</span><span>的</span><span>高带宽连接</span><span>,用于连接到片外资源</span><span>。它们包括用于高速</span><span>存储</span><span>访问的GDDR6和</span><span>诸如</span><span>PCIe Gen5和400G以太网</span><span>等</span><span>片</span><span>内</span><span>互连协议。</span><span>这种结构支持构建高度并行化的架构,以及基于中央</span><span>FPGA的高度数据优化</span><span>的</span><span>加速器。</span></p>

<p><span>通过将高密度数据包路由到分布在整个逻辑阵列上的数百个接入点,</span><span>2D NoC</span><span>使得大幅增加</span><span>FPGA</span><span>上的可用带宽成为可能。</span><span>传统的FPGA必须</span><span>使用数千个单独编程的布线路径来实现相同的吞吐量,而这样做会大量吃掉本地的互连资源。</span><span>通过网络</span><span>接入</span><span>点将千兆数据传</span><span>输</span><span>到</span><span>本地区域</span><span>,</span><span>2</span><span>D NoC</span><span>缓解了布线</span><span>问题,同时</span><span>支持</span><span>轻松</span><span>而</span><span>快速地将数据</span><span>传入和传</span><span>出MLP和基于LUT的定制</span><span>化</span><span>处理器。</span></p>

<p><span>相关的资源节省是相当可观的——一个采用传统</span><span>FPGA</span><span>软逻辑实现的</span><span>2D NoC</span><span>具有</span><span>64</span><span>个</span><span>NoC</span><span>接入点(</span><span>NAP</span><span>),每个接入点提供一个运行频率为</span><span>400MHz</span><span>的</span><span>128</span><span>位接口,将消耗</span><span>390kLUT</span><span>。相比之下,</span><span>Speedster 7t1500</span><span>器件中的硬</span><span>2D NoC</span><span>具有</span><span>80</span><span>个</span><span>NAP</span><span>,不消耗任何</span><span>FPGA</span><span>软逻辑,并且提供了更高的带宽。</span></p>

<p><span>使用</span><span>2D NoC还有</span><span>其他的一些</span><span>优</span><span>势</span><span>。由于相邻区域之间互连拥塞</span><span>程度</span><span>较低,</span><span>因此</span><span>逻辑设计更易于布局。因为无需从相邻区域分配资源</span><span>来</span><span>实现高带宽路径的控制逻辑</span><span>,因此</span><span>设计也更加</span><span>有</span><span>规</span><span>律</span><span>。另一个</span><span>好处</span><span>是</span><span>极</span><span>大</span><span>地</span><span>简化了</span><span>局部性</span><span>重</span><span>新</span><span>配置</span><span>——</span><span>NAP</span><span>支持</span><span>单个区域成为</span><span>有效的</span><span>独立</span><span>单</span><span>元,</span><span>这些单元</span><span>可以根据应用的需要进行</span><span>交换导入</span><span>和</span><span>导出</span><span>。这种可重</span><span>配置</span><span>的方法</span><span>反过来又</span><span>支持需要在特定时间使用</span><span>的</span><span>不同模型</span><span>,</span><span>或</span><span>者支持</span><span>片上微调或</span><span>定期对模型进行再</span><span>训练</span><span>这样</span><span>的</span><span>架构</span><span>。</span></p>

<p><strong>结论</strong></p>

<p><span>随着模型增大和结构上变得更加复杂,</span><span>FPGA</span><span>正成为一种越来越具吸引力的基础器件来构建高效、低延迟A</span><span>I</span><span>推理解决方案,而这要归功于其对多种数值数据类型和数据导向功能的支持。但是</span><span>,仅</span><span>仅将</span><span>传统的FPGA应用于机器学习</span><span>中</span><span>是</span><span>远远</span><span>不够的。机器学习以数据为中心的</span><span>特性需要</span><span>一种平衡的</span><span>架构</span><span>,以确保</span><span>性能不受人为限制</span><span>。考虑</span><span>到</span><span>机器学习</span><span>的特点,以及不仅是现在,而且在其未来的开发需求,</span><span>Achronix Speedster7t FPGA</span><span>为</span><span>AI推理</span><span>提供了</span><span>理想</span><span>的</span><span>基础</span><span>器件</span><span>。</span></p>