来自浙江大学、快手和美国犹他大学的研究人员联合提出了一种自动兼顾精度和内存消耗的量化仿真新方法。
在好莱坞大片特效等计算机图形学的典型应用场景中,高分辨率的物理仿真能提供很好的视觉效果。更高的仿真计算复杂度和分辨率可以带来更丰富的细节,但相应的计算需要占用更大的内存或者显存空间。例如,在电影《冰雪奇缘》中,300 米宽的溃坝场景使用了 9000 万个粒子对水体进行表达,全精度的仿真计算需要 4 块 NVIDIA Quadro P6000 显卡,一共占用约 96GB 显存。
为了节约计算时占用的数据存储空间,研究者将 “量化” 技术引入了物理仿真算法,也就是在仿真计算过程中,使用更少的比特位数来表达和存储物理变量。例如,在去年计算机图形学顶会 SIGGRAPH 2021 上,来自 MIT、浙大和快手的研究人员联合发表了一篇以 QuanTaichi 为题的论文,实现了一个由 “太极” 编译器支持的量化类型系统,允许用户用较少的位数来表示空间位置、速度等各种物理变量,从而在 GPU 显存消耗不变的情况下,以更高的分辨率进行物理仿真计算(参见参考文献[1])。然而,QuanTaichi 需要用户手工设计量化方案,指定仿真中使用到的每个变量的位数,并不断进行仿真计算试错,最终找到合适的方案。
在今年的 SIGGRAPH 2022 会议上,来自浙江大学、快手和美国犹他大学的研究人员联合发表了一篇题为《物理仿真的自动量化》的论文,提出了一种自动兼顾量化仿真精度和内存消耗的方法。与全精度的物理仿真相比,能够在视觉效果不受明显影响的前提下,节省 50% 以上的内存占用,从而大幅度提高了量化仿真的易用性和生产力。
论文地址:https://arxiv.org/abs/2207.04658
项目地址:https://github.com/Hanke98/AutoQuantizer
该方法的核心思想,是将物理仿真过程中由量化引起的精度损失建模为误差的传播过程,基于不确定性传播理论,将量化方案的自动求解问题描述为带约束的优化问题,将误差上限或者内存压缩率作为优化目标,并快速给出解析解作为可行的量化方案。
此外,该研究引入了抖动法(dithering)作为量化仿真的舍入方法来替代传统的四舍五入,降低了数据误差之间的相关性。在量化位数较少时,抖动法可以明显减少精度损失。以下是一组关于引入抖动法的效果对比。在上方未使用抖动法的仿真结果中,从同一水平位置开始自由落体运动的字母由于量化误差的影响,水平位置不再保持一致;在下方引入了抖动法的量化仿真结果中,所有字母在下落过程中能保持水平对齐,符合客观的物理规律。
下图展示了应用该方法实现的基于欧拉网格实现的量化的烟雾仿真。使用该方法自动求解量化方案实现了 1.93 倍的内存压缩,在单张 Nvidia RTX 3090 显卡上使用了超过 2.28 亿个的欧拉网格。
下图是基于物质点法实现的弹性体仿真。该方法实现了 2.01 倍的内存压缩,在单张 Nvidia RTX 3090 显卡上仿真了超过 2.95 亿个粒子。
下图是基于物质点法实现的流体仿真。该方法实现了 2.02 倍的内存压缩,在单张 Nvidia RTX 3090 显卡上仿真了 4 亿个粒子。
目前,相关的技术已成功落地,打开快手 APP,拍摄「别哭鸭」、「我要去潜水」和「火焰超能力」等魔法表情,即可体验到短视频行业内独家的移动端实时液体模拟特效技术。
【参考文献】
[1] Yuanming Hu, Jiafeng Liu, Xuanda Yang, Mingkuan Xu, Ye Kuang, Weiwei Xu, Qiang Dai, William T. Freeman, and Frédo Durand. 2021. QuanTaichi: A Compiler for Quantized Simulations. ACM Transactions on Graphics (Proceedings of SIGGRAPH 2021).