中文 英语

Amdahl限制人工智能

的应用技术新老问题只能带你走那么远。删除限制在人工智能处理器,需要新思维。

受欢迎程度

软件和硬件都限制在一个应用程序可以运行多快,但发现和消除限制在这个时代越来越重要的多核异构处理。

这个问题肯定不是新的。Gene Amdahl(1922 - 2015)认识到问题,在1967年发表了一篇论文。它提供了理论加速定义可预期的任务时添加了额外的硬件资源,和被称为Amdahl法则。它可以归结为理论加速总是有限的任务的一部分,不能受益于改善。

当应用于这个概念变得尤为相关机器学习,尤其是推论。专用芯片大数组乘/积累(MAC)推理的最耗时的函数功能。但如果这是理论上的时间减少到零,现在消耗所有的时间吗?

这个问题,没有明确的正确答案,缺乏定义是推动当今正在开发大量的硅。公司必须评估终端用户他们想要优化这些任务和目标任务。同时,因为该领域的发展如此迅速,他们必须保持一定的灵活性能够处理其他任务,或变异的最初目标的任务。

MAC数组得到了很多的关注。“人们一直在关注苹果的数量作为衡量性能,可以实现“Pierre-Xavier Thomas说集团Tensilica IP技术和战略营销主管节奏。“在某种程度上,这是并行处理。有多少业务需要实现做了什么神经网络吗?但有很多其他层神经网络负载。你必须确保你不是优化只是它的一部分。这就是为什么你需要看所有的层,以确保你的表现是正确的,你得到正确的帧每秒或者每秒检测数。”

但是,仅仅移动问题。“如果你不能并行化部分,串行部分决定了最大速度,”迈克尔·弗兰克说的和系统架构师Arteris IP。“如果你认为你可以并行化无限,并行部分成为限制系统中可用的带宽。所以我有一个最大可以并行化,因为我耗尽带宽。”

它成为了收益递减规律。“很明显,Amdahl法则已经耗尽的果汁,“说曼纽尔嗯,硅营销主管赛灵思公司。“你不能继续扩展处理器无限,无限。只是再也不会这样了。你变得越来越复杂越来越多的平行,当你把不同的体系结构,不同的账户。这是一个不断增长的挑战。”

但是仍然序列化的其他功能吗?“寻找候选人迁移到硬件不是一件难事,但是你需要考虑并行性,”拉塞尔·克莱恩说,主任HLS平台西门子EDA。“例如,创建一个加速器执行乘法函数在相同的硬件上运行的速度和CPU内部的乘数。是什么让硬件速度是它可以并行地做事情。你可以做1000同时增加硬件。移动一个串行算法的CPU硬件不会帮助。事实上,它可能会让事情变得更糟。任何进入硬件必须能够利用并行性。”

此外,它是一个移动的目标。“你需要一些灵活性和可编程性,因为有很多神经网络开发,“节奏的托马斯说。“这是一个非常活跃的研究领域。你必须问,“如何使算法更有效呢?如何限制重量的数量?如何限制带宽呢?”

性能分析
硬件架构的分析变得越来越重要。“我们越来越多地听到人们说当你的模拟器是伟大的,它让我得到我的软件启动和运行,它不告诉我一切,”Simon Davidmann说首席执行官治之软件。“他们可以模拟64核,他们可以选择他们是如何相互联系的。他们可以模型network-on-chip (NoC)并设置共享内存。然后他们问,“是要跑多快?极限在哪里?有什么问题吗?”

人工智能,变得越来越困难。它不是一个简单的映射过程,编译器之间可以在整体性能产生巨大影响。

“我们看最紧张的网络,这些提供给编译器,看看它是如何做的,”尼克倪说,人工智能产品营销主管、软件和Xilinx的生态系统。“有一种措施,我们用来确定有效的编译器——操作效率。供应商说他们可以达到一定数量的TeraOps当你一切都忙。如果你的编译器生成执行效率只有20%的东西,很有可能提升空间的。或者是你的硬件架构过时了。可能是因为这是一个你从未见过的新模型结构。旧技术的应用可能会导致糟糕的内存访问模式。你看到这个MLPerf和MLCommon,在相同的CPU或GPU改善随着时间的推移。的供应商正在改善的工具和编译器更好的优化和映射到特定的架构。”

这通常需要一个更全面的方法。“关于系统的性能,而不是处理器,“治之”Davidmann说。“从处理器为中心的观点,你可能会说我需要有更多的缓存,或者我需要改变我的管道,我需要做无序执行,所有这些东西都是伟大的。但实际上,系统的整体性能并非完全由个人控制的处理器,它是由许多其他的事情。内存和架构。会有限制的吞吐量,任何给定的硬件可以实现。”

这些限制必须完全理解。“考虑你有许多小使用网状网络连接的处理器核心,“Xilinx的嗯说。“当你编程在这种体系结构中,不仅仅是写100内核并行操作。您需要定义数据流,你必须考虑如何映射到内存结构因为你只有这么多紧密耦合的记忆。你可以访问邻近的记忆,但你的邻接能够及时。所有,必须理解的设计。”

带宽有限
在许多情况下,处理器利用率低的原因是内存限制。“记忆是一个限制参与整个方程,主要是因为带宽是有限的,“说Arteris弗兰克。“我们的处理能力已经显著增长速度相比,在过去的记忆。内存带宽已经增长了一倍,同时计算能力上升了10个或更多的因素。”

化合物的问题。“并行您添加越多,数据越多能够搬到这些元素,”托马斯说。“你需要把每个处理器相同数量的数据,如果数据驻留在外部世界,这意味着你需要带来更多的数据到SoC。所以可能更多的传感器,更大的记忆,更大的缓冲区,这样你有更多的数据接近处理元素。”

过去的技术为未来可能不够。“这就是为什么我们有想法像缓存,缓存可以用作带宽乘数,”弗兰克说。“即使你有一个片上缓存,您有多个引擎试图喂了缓存,最终,你遇到的问题缓存没有足够的端口,或没有足够的时钟周期来养活多个引擎。在这一点上,您可以考虑在多个缓存复制数据。你要看新技术因为你外部限制带宽,和所定义的物理和力量。”

对于某些应用程序,权力是限制器。“有越来越多的担忧被放置在每瓦特性能,”托马斯说。“什么是能量和功率损耗与解决方案吗?特别是人工智能的优势。智能传感器和其他事情需要我们仔细地研究力量和能量耗散。大硅区域可能意味着更多的泄漏的能力,所以您可能希望将技术关闭电源。但有一个延迟成本与技术有关,所以必须有一个平衡性能和力量。”

同步
同步、调度和任务分配一直是并行处理的限制器。“有一系列需要处理层,但即使时间趋于零,还有同步,”托马斯说。”可能会有一些不同的任务之间的依赖关系,事情发生之前,你可以开始下一个。有同步,确保数据是在正确的地方和准备好了。这些东西你想减少为零。事实是,不是所有的任务,并不是所有的依赖关系在同一时间完成。”

人们一直试图解决这个问题很久了。“一个公司建立了这种织物的小处理器,“Davidmann说。“他们把软件,这些处理器都是同步连接的数据从处理器,处理器控制同步。他们的表现是固定的设计,而不是猜测和分析。他们建造了这个系统,这样某些工作有效运行。”

但这并不提供灵活性的程度,大多数人工智能硬件的欲望。“静态调度需要,在特定的时间,特定的单位准备执行,”弗兰克说。“如果你假定你有大型系统的加速器,你无法预测,加速器将准备的时间应该是准备好了。总有抖动和松弛。静态调度工作的一个非常有限的算法。”

将最有可能需要一个动态的元素来调度。“人工智能芯片包含cpu的灵活性和实现层不是标准化的,”弗兰克补充道。”,这正是这个问题——你有CPU坐在那里和非线性函数。你怎么,最小的开销,这两个数据流同步。你有数据优势,提供你想要的特定数据处理,和你有CPU,不想花时间试图找出数据。我们已经证明你可以RISC-V处理器,并通过添加几条指令发布任务,生成任务,宣布它们的依赖项,然后准备下一个任务来执行,你可以达到13 x加速OpenMP小任务。”

期待
这个行业继续学习。“你将传统上看问题,说夹点就在那里,”Davidmann说。“无论它必须是顺序是一个问题。我们要做的是学习如何构建新型的算法,不依赖于单线程串行化的概念。总是需要有一些事情聚在一起,但人们越来越善于找出如何将这些问题映射到架构不受喜欢阿姆的限制。在建筑方面,Amdahl仍然是很重要的,因为建筑必须是正确的。如果你错了,你会发现序列化点。”

我们还需要定义新的指标比原始性能优化,看看其他的东西。”看着Amdahl法则意味着你正在关注如何提高性能,”托马斯说。“但今天的关键方面是改善性能/瓦特。你没有无限的硬件。你需要记住如何规模和需要多少能量的任务你需要处理。”

结论
虽然并行处理并不新鲜,但行业已经迅速从一个小数量的SMP(对称多处理)核心大规模并行异构处理器。过去的技术使得许多最初的障碍需要克服,但他们不会提供答案。移除瓶颈是建筑的组合问题硬件、算法开发需要注意的问题,如数据局部性和智能的编译器,了解通过这些架构的数据流。



留下一个回复


(注意:这个名字会显示公开)

Baidu