|
除了芯片本身,在芯片设计工具和方法论(EDA领域)方面,我们越来越多地看到谷歌的影子:将AI引入芯片后端设计[2][3];开发云端芯片验证,参与芯片联盟等开源项目;CIRCT(硬件的 MLIR)[4] 和 XLS(高级合成)[5]。
虽然部分工作只是初步尝试,但其探索的方向意义重大,而谷歌系统的技术优势和号召力也让这些探索更有可能成功。
系统芯片
让我们先从芯片开始。谷歌的TPU已经发展了好几代(最新的TPU4已经在MLPerf中展示过,《AI训练芯片巅峰对决,如何正确“看”?》),今年的Hot Chips还介绍了架构演进的“谷歌训练芯片”揭晓:TPUv2 和 TPUv3”(参考“Google TPUv2/v3 架构和设计演进”)。
同样在 Hot Chips 上,Dan Belov 的主题演讲《AI Research at Scale - Opportunities on the Road Ahead》从更广阔的角度分析了 AI 系统和芯片的未来趋势。
就在前一天,Raja M. Koduri 在 Hot Chips 上介绍了英特尔如何在 2025 年之前将计算能力提升 1000 倍。相信很多朋友都看过,就不多说了。
来源:Intel@Hot Chips 2020
回到 Dan Belov 的主题演讲,他还谈到了如何实现 1000 倍的计算能力提升,以支持大规模的 AI 研究。结合谷歌的背景,他自然强调系统的优化而不是单个芯片,也有一些值得考虑的地方。
来源:DeepMind@HotChips2020
首先是对大规模人工智能研究任务的整体优化目标的分析。根据他们的观察,最佳优化的项目最高可以达到 70% 的利用率,而平均情况只有峰值计算能力可用的 20%,而造成这种情况的原因有很多,包括硬件限制,比如内存和 I /O; 软件堆栈效率问题,例如编译器、python 运行时性能;和任务本身,比如Startup time、Contention、Amdahl's law等。因此,只看单个设备的峰值效率(perf/$)是没有意义的,解决办法是做自顶向下的系统优化从数据中心规模。
当然,我不同意“芯片性能”真的“无所谓”。应该说,除了芯片性能之外,还有很多其他方面需要优化,或者说有优化的机会。
来源:DeepMind@HotChips 2020
从硬件的角度来看,两个最重要的机会包括“将一切都转移到 Si”和“范式转换”。在第一个方向上,我们可以期待未来的芯片上数据中心、晶圆上数据中心或封装内数据中心吗?也许 Chiplet 和 Wafer-Scale-Engine 可以实现它。
再看所谓的“范式转移”,它会带来巨大的收益,但也意味着我们要付出巨大的代价,也就是要设计“显着不同的系统”。由于整个软硬件基础设施的复杂性和不灵活性,要进行“范式转换”肯定没有那么简单。
来源:DeepMind@HotChips 2020
同时,硬件的多样性也会带来大量的软件移植开销。
来源:DeepMind@HotChips 2020
当然,好消息是人工智能应用本身的特性在一定程度上简化了问题。至此谷歌泛目录,我们这几年针对AI应用优化系统和芯片其实是一个基本逻辑:应用的需求驱动着计算范式的转变,而应用的特性使这种转变成为可能。后来Dan Belov还给出了一些其他的机会,比如编译技术(MLIR)和使用AI进行编译优化等等,有兴趣的朋友可以去看看谷歌泛目录,我不再赘述。
TPU发起的EDA测试
近年来,我一直认为,AI芯片的热潮带来了很多副作用,极大地推动了相关技术和产业的发展。在做TPU的过程中,除了对芯片和软件栈(XLA/MLIR等)的探索外,谷歌还涉及到芯片设计工具和方法论。
首先是一个大家可能都听说过的消息:“谷歌用AI设计芯片”。当然,这种说法有很多夸张的成分。对这项工作更准确的说法是“Reinforcement Learning for Placement Optimization”,即使用强化学习的方法来优化布局(芯片设计过程中后端设计的一项任务)。Jeff Dean 在今年的 ISSCC 上独家展示了这项工作。
来源:JeffDean@ISSCC2020
关心更详细信息的朋友可以去[3],有本项目开发者的解释和相关讨论。
资料来源:Azalia Mirhoseini 和 Anna Goldie @DAWN event1
作者 Azalia Mirhoseini 曾尝试使用强化学习来优化计算系统中的任务分配(Hierarchical Planning for Device Placement),我在之前的文章(ML + System = ?)中也提到了这一点。这项工作本身只是为了解决芯片后端布局布线的一个问题,并没有宣传的那么夸张。
但这项工作是近年来“将AI用于EDA”的大愿景的一个相对成功的例子。再加上谷歌的背景,备受关注。我还记得在一群 EDA 学者中对这项工作进行了热烈的讨论。当然,不管大家怎么想,谷歌都应该继续探索。毕竟,Jeff Dean 曾说过“我们在任何地方使用启发式方法做出决定”是机器学习的用武之地。
第二个可能对芯片和EDA行业产生更深刻影响的,是谷歌的Cloud EDA尝试,我之前做过一个简单的分析,“Inspiration fromchips Born for Cloud and Born in the Cloud”。中间的核心做法之一是利用云端近乎“无限”的资源进行芯片验证,可以大大加快芯片开发的时间,这可能是TPU系列芯片迭代速度比较快的原因之一. Cloud EDA 最近也备受关注。下面这张幻灯片,介绍了它的优势,来自于 Chips Alliance 最近的一次工作坊。
资料来源:Dan Ganousis,Metrics@CHIP 联盟研讨会
最近,我的一位在EDA工作了十多年的前同事加入谷歌云做相关工作,这可能是谷歌系统性优势的体现。综上所述,在 Cloud EDA 的方向上,Google 的推进值得关注。
除了 Cloud 商业项目,Google 也非常积极地参与开源 EDA 的工作,是 CHIP 联盟的发起者。相信大家都在关注谷歌和Skywater的开源PDK项目,以及谷歌支持的免费选角。另外还有RISCV-DV等开源项目,感兴趣的读者可以看看近期的Chip Alliance Workshop。
来源:CHIPS 联盟研讨会 - 2020 年 9 月 17 日
编译器开发者跨界芯片设计工具
下面要介绍的开源项目CIRCT不长,也比较小,但是非常有趣,值得关注。
严格来说,这个项目不是谷歌主导的项目,但它与谷歌发起的MLIR项目密切相关,也是MLIR生态系统的一部分。众所周知,MLIR 是谷歌的 Chris Lattner 发起的一个编译器项目,我在之前的文章中也多次提到过。Chris Lattner 后来离开谷歌加入 SiFive,对硬件设计产生了浓厚的兴趣,于是他开始了 CIRCT 项目。CIRCT的基本思想是利用MLIR/LLVM中的编译器技术和基础设施来改进硬件设计语言和工具(尤其是开源工具)。
我们知道 EDA 工具的目标是生产可生产的芯片设计。一个芯片设计过程一般从DSL(Domain Specific Language)开始,比如System Verilog/VHDL等硬件描述语言;然后会经历几次抽象层次的变化(类似于软件编译的过程);每个级别都需要进行对应的验证,级别之间的转换需要进行等价验证。这个过程中的几个要素:编程语言、编译技术、验证技术并不是硬件设计所独有的,很多都是软件领域的共同点。CIRCT项目最有趣的部分是软件编译器的开发者已经开始关注硬件设计工具,他们从DSL/IR/Compiler的角度切入,
在进一步讨论 CIRCT 项目之前,我们先来看看另一个由 Google 发起的项目 XLS [5],它是一个高级合成(HLS:High Level Synthesis)项目。HLS是EDA领域比较学术研究的内容。其目标是通过提高设计输入的抽象层次,实现算法/应用直接到硬件的自动设计实现,从而提高芯片开发的效率。(ESL设计方法论能否在建筑的黄金时代“焕发活力”?)简要介绍了这个方向。
首先,该项目定义了自己的 DSL 来描述硬件。这里使用了类似 Rust 的 DSLX。此外,XLS项目设计了自己的IR和编译工具、验证工具(包括Logic Equivalence),最终将Verilog语言生成到传统芯片设计流程中。事实上,在 EDA 学术界有很多类似于 XLS 项目的 HLS 项目。
由于 HLS 的抽象级别高于 RTL 级别的硬件描述,因此不适合使用 Verilog/VHDL 作为 DSL。一般直接使用C/C++等描述算法的语言,但是直接使用这些语言有很多困难。展开。近年来,人们更喜欢参考(或基于)具有函数式编程特性的语言(Scala、Rust 或 Haskell)来设计 DSL,并且出现了各种语言([6],有《黄金时代》硬件描述“语言”)。
这也是向软件世界学习的一种方式,但是没有高阶 DSL 可以真正成为主流。顺便说一句,Chisel 语言(基于 Scala)可能是近年来硬件设计语言最成功的尝试,但 Chisel 仍然是 RTL 级别的语言,不是为 HLS 任务而设计的。
另一个可以参考的学术项目是斯坦福大学的敏捷硬件项目 [7]。其目标是自动化设计面向图像处理的CGRA(Coarse-Grained Reconfigurable Architecture),使用Halide作为DSL,定义自己的CoreIR作为中间表达,并在此基础上构建相应的工具链。
通过 XLS 和 AHA 的两个示例,我想强调设计一个好的 DSL/IR 系统对于特定领域的 EDA 任务至关重要。目前的芯片设计工具和方法主要围绕 Verilog/VHDL 构建,抽象程度相对较低。除了设计和验证效率低的问题外,对软硬件的联合优化也很不友好。这个问题并不新鲜,十几年前就有很多讨论,但到目前为止变化不大。
一些尝试,例如 SystemC、Bluespec,都不是很成功。造成这种现象的原因有很多,其中之一是设计 DSL/IR 和相应的编译器(包括验证工具)的门槛和成本很高。这与我们在本文第一部分中所说的有些相似。我们要为“新计算范式”做硬件,它的软件栈开发非常困难和昂贵。
这又回到了我想讨论的CIRCT项目的重点:是否可以利用MLIR的多层IR思想,提供编译器基础设施来降低构建DSL/IR系统和相应编译器的成本?这使我们能够在芯片设计工具和方法上进行更多的创新。现在CIRCT项目才刚刚起步,未来还能开展多远很难说,但至少让我们看到了更多的可能性。
参考
[1] Dan Belov,“大规模人工智能研究——前进道路上的机遇”,Hot Chips 2020
[2] Jeff Dean,“深度学习革命及其对计算机架构和芯片设计的影响”,ISSCC 2020
[3] Azalia Mirhoseini、Anna Goldie,“用于布局优化的强化学习”,设计自动化网络研讨会 (DAWN),
[4] “CIRCT”/电路 IR 编译器和工具”,
[5] “XLS:加速硬件合成”,
[6] Lenny Truong、Pat Hanrahan,“硬件描述语言的黄金时代:应用编程语言技术提高设计生产力”,SNAPL 2019
[7]“斯坦福啊哈!敏捷硬件中心”,
AI芯片列表
AIChip 论文列表
豪侠泛目录站群程序,专业泛目录,站群,二级目录,泛站群程序! |
|