殊途同归

最近在上的 Computational Fabrication 课程请到了 MIT的 Tao Du 来介绍他们正在做的物理模拟相关的内容:基于数值方法的物理模拟,基于NN的物理模拟,还有将两者混合起来的策略等等。

DiffTaichi是其中提到的传统方法之一,正巧自从 Taichi 问世以来我一直有在关注这一系列工作,可惜我落后时代太久,没想到DiffTaichi已经成为了“传统方法”。DiffTaichi这类工作把物理模拟过程作为计算图的一部分,对于那些模拟步数很长的物理过程,这个计算图有可能太大(当然文中也提到了用checkpointing等方法来减缓显存爆炸问题),因此做算法的朋友们觉得不划算,物理模拟本质上是一个状态转移函数 \(Sim\) ,其对状态 \(\{s_i\}\) 进行变换:

\[ s_{i+1} = Sim(s_{i}, a_{i}; \theta) \]

既然这个问题能用数学准确定义出来,考虑到NN强大的拟合能力,我们有理由相信可以用神经网络来拟合这个 \(Sim\) 函数,其中训练数据可以用 Taichi 之类的物理模拟框架生成出来。顺理成章的,由于数值方法即插即用,而NN需要大量数据训练,“开始阶段使用数值方法为NN提供训练数据,其后使用NN”这样的混合策略也应运而生。

两年前我是NN的强烈反对者,并且对传统的图形学抱有美好的幻想,但是随着这几年NN在图形学领域大方异彩:DLSS切实有效地提高了游戏体验,NERF一经出现就技惊四座并迅速得到产业应用(体育赛事的场景多角度切换使用了NERF技术),我的想法有了一些改变:图形学本质上是一个“欺骗”人类视觉的学科,考虑到数值模拟方法大部分的计算都是冗余,问题定义得当的话(比如NERF中使用了Radience Field对场景建模,如果使用mesh的话恐怕就要走上弯路了),用神经网络来做有何不可。

我对基于NN方法的物理模拟的进展和缺陷缺乏了解(似乎有一些基于GNN的工作1 ),但可以预见它极有可能比传统方法的开销要更小,而且(可能)极大降低了相关方向从业人员的壁垒。从这个角度上说,这类工作与Taichi的目的完全重合:希望制作一个高效(开销小)的编程语言能够让用户更加轻松地写物理模拟(降低壁垒)。但是相对而言,开发一个新算法的工作量比开发Taichi这类语言要小得多。

考虑到NN现在已经有非常成熟的工具链和极为高效的推理框架,那么一旦这个方向成熟,基于物理的方法和基于NN的方法将陷入竞争,可能的情形是:如果对精度的要求不是很高/物理过程不是太复杂,大家都会去使用基于NN的模拟。

那么像Taichi这类框架有没有应对的策略呢,当然是有的,最简单的方法就是把NN模拟的这套东西也加进Taichi的生态里,做一个混合模拟(最快)的框架。但是这个是平台的搞法,跟一开始的Taichi: A Language for High-Performance Computation on Spatially Sparse Data Structures这篇论文已经不是一个东西了,前者是后者的超集。

听起来是不是有点熟悉,深度学习编译器最早也是这样一个故事:以很小的代价写算子,编译器自动调优,以小博大,解决长尾问题。可惜的是写算子的人从来都不是稀缺品,尤其在中国,大公司几个月可能就可以培养几百个写这些“长尾算子”的实习生(之所以叫长尾算子,一部分原因是性能要求也不高),用人海战术造出大而全的算子库;另一方面,TVM自动调优出来的代码可以直接被抄进这些算子库。因此如果把TVM定位为GPU上的高效部署方案,它与算子库则有着激烈的竞争关系。

TVM的解决策略是兼容并包,一方面发展自己更强的编译器后端(TensorIR/Relax),另一方面广泛支持算子库提供的外部函数(比如cutlass, cublas),并且提供一些粘合剂式的整合方案(Collage)。但是从PL和编译器研究的角度而言,前者的意义比较大,而后者更多的是为了平台(和相应背后的公司)的生存。

这让我想起了著名的GAN(生成对抗网络),因为其中的道理很多都是类似的:

                     生成对抗网络         殊途同归的技术路线  
生成器              
                    
生成一张图片        
                    
设计一个全新的技术方
案                  
判别器               判断图片真伪         市场检验方案的好坏  

一直坚持一条技术路径只适合科研人员(把一个问题做深做透),而对于大的平台和公司而言,把命运赌在特定技术上风险太高,在适当的时候需要以可以接受的成本支持多条路径:事实上迄今为止几乎没有一个CS领域的问题只有一个解决方案:RISC/CISC,Chord/Pastry,Spark/Dryad,GPU/TPU,甚至MLIR/TVM。正如我们看到的,RISC/CISC在后来的演变中逐渐都吸收到对方的一些优点,以至于现在很难说使用其中一种方案是由于技术还是其它的考量;GPU在TPU入场之后也迅速地加入了Tensor Core与之竞争;TVM目前的新IR设计也部分引入了MLIR的考量。AWS这类云服务商从来不把自己绑定在特定的操作系统/硬件/框架上,卖云服务赚了个盆满钵满,好的设计往往不是对一个问题提出性能最高的解决方案,而是一个好的抽象层:我们可以在上面实现各种可能,而且能够把整个体系的复杂性保持了可维护的量级。

基于某一篇论文的特定技术创业,或许一开始有可行性,但是随着无数竞争者的入局,市场考验的早就不是最初论文里的那个想法是否可靠,而是你是否能快速有效迭代适应市场,是否能吸引更多的人做大蛋糕。而最后能留下来的那些,或多或少身上都会有一些竞争对手的影子:如同生成对抗网络一样收敛。但是各有各的哲学(比如灵活简洁/巨无霸,自顶向下/自底向上),至于哪个更有道理,则可能是具体的市场分化决定的(前提是能在市场站稳脚跟)。

那么风投公司为什么还要给这些公司投钱:原因很简单,创业公司最有价值的东西永远不是他们的产品,而是那些人,既然他们能做出最初的TVM/Taichi,也就期待他们能在激烈的竞争下杀出一条路,可惜做产品和做研究是迥然不同的两种思维模式,能否坚持自己的独特的设计理念,同时摒弃掉对某些特定技术的执念,只能看个人的特质和造化了。

Footnotes:

Author: expye(Zihao Ye)

Email: git@localhost

Date: 2022-02-28 Mon 00:00

Last modified: 2022-09-23 Fri 00:04

Licensed under CC BY-NC 4.0