最近看到一个有趣的统计,新的AI芯片中,Dataflow架构占了绝大多数,典型的如:Tesla Dojo、Tenstorren Grayskull等
其实这些芯片实现架构都不完全相同,不过总体看上去有些共同的特征:
- 数据流图执行调度,即芯片内部进行图级别的调度执行,而不像GPU那样的kernel by kernel的执行模式
- SIMD架构堆叠
- 高速互联/大带宽
当然,我不是芯片专家,这样的选择肯定有他们的原因,比如能效比、可扩展性等等。
我们也同时看到,Dataflow的芯片架构对软件带来了极大的挑战:
- 可编程性挑战大:SIMD加大编程的难度,Schedule、Tilling、Vectorization/Tensorization。
- 性能优化难:图层和算子层独立优化无法充分发挥芯片性能,需要图算融合优化,子图切分、子图内垂直融合优化和水平并行优化。
- 调试定位困难:整图下沉/子图下沉等执行模式导致开发者调试定位困难。
- 动态性支持难:无论是控制流还是动态shape对于Dataflow的芯片架构而言都是很大的挑战。
需要指出的是,Dataflow芯片架构可能默认就采用静态图的模式,我们要解决上面的问题,是在静态图架构上去强化动态shape、控制流等能力;如果采用动态图,我们可能连发挥这类芯片的性能的机会都没有。但是另一方面,从开发者的角度看,他们已经开始习惯动态图带来的便利。
我理解这本质上是AI领域,研究和产业不同诉求牵引的结果,静态图有利于发挥芯片的算力、大规模并行以及生产部署,动态图有利于提升开发者的开发效率,我们的问题是,鱼与熊掌如何兼得?
我想这个也是AI框架未来很大的一个挑战和机会,静态图——>动态图——>动静结合——>动静统一,但是动静统一中,是静态图为主还是动态图为主,未来还存在很大的不确定性,不管怎样,存在不确定性对新的框架来说总是好事。
原文:知乎
作者:金雪锋
推荐阅读
更多嵌入式AI技术相关内容请关注嵌入式AI专栏。