APP下载

在代码的世界里追寻创世之乐

2021-02-23个个尹

知识窗 2021年1期
关键词:编程语言奇缘太极

个个尹

什么是真正的学霸?2010年还在就读高一即获得清华大学保送资格,2013年正式进入清华大学姚班。本科期间,先后前往东京大学、斯坦福大学访学。2017年,进入麻省理工学院读博。入学13个月后,完成硕士论文“乾坤”,拿到麻省理工学院硕士学位。

什么是科研实力?本科期间在微软亚洲研究院实习,这是微软公司在美国本土以外最大的基础研究机构。从事深度学习和计算机图形学研究,本科便有多篇论文中选CVPR(美国电气和电子工程师协会国际计算机视觉和模式识别会议)、SIGGRAPH(计算机图形学会议)等国际顶会。

当以上光彩熠熠的履历全都集中在同一个人身上时,就成就了胡渊鸣——一个非凡的普通科研人。

事实上,上述短短几行履历远远不能概括出胡渊鸣。最近,让胡渊鸣为大家熟知的是他在知乎上写的一篇文章——《99行代码的“冰雪奇缘”》。外行看热闹,内行看门道。99行代码虽短,背后的技术故事却很长。故事的开头,要从物质点法说起,这是一种在影视特效领域广受青睐的模拟连续介质方法,迪士尼的《冰雪奇缘》就用到了这项技术。早期,物质点法的运行速度非常慢,比如《冰雪奇缘》里安娜过雪地的镜头,据说要在集群上跑整整一个星期。大四毕业的那个暑假,胡渊鸣投入了移动最小二乘物质点法的研究,为的就是提高物质点法的运行速度和性能。

胡渊鸣的灵感是,用移动最小二乘法统一仿射粒子细胞法中的仿射梯度场和物质点法中的变形梯度更新两种离散化。在宾夕法尼亚大学蒋陈凡夫教授的指导下,胡渊鸣等人完成了移动最小二乘物质点法方法的研究,不仅实现了新的应力散度离散化,使物质点法的运行速度快了两倍,还成功模拟了物质点法此前并不支持的各种新现象。这项成果最终发表在SIGGRAPHP。

值得一提的是,虽然很多报道把重点放在了99行代码上,但胡渊鸣真正令人崇拜的地方不仅于此。代码行数只是表象,胡渊鸣令人称赞的是创造了Taichi(太极)这个编程语言。相比TensorFlow(开放源代码软件库,用于进行高性能数值计算)和PyTorch(开源的Python机器学习库,基于Torch,用于自然语言处理等应用程序),太极的渲染速度分别比前者快了188倍和13.4倍,并且能够模拟雪等物理流体,创造出类似电影《冰雪奇缘》中的魔法场景。

毫无疑问,太极编程语言的工作量非常大。这是一个全新的系统,项目早期要做的设计决策非常多,需要花费大量的时间和精力。有一次,胡渊鸣去了一趟中国城买菜,然后连续在家写代码。最后,他实在受不了没人说话的生活,就去实验室找同学聊天,结果被同学调侃“身上‘长蘑菇了”。

太极的编写过程不容易。一开始,胡渊鸣低估了写编译器的工作量,没有完成一个月写出一个理想编译器的设想。其中,因为第一次写的缘故,他缺乏設计汇编者的经验,还把IR(中间表现形式)设计错了,最后只好砍掉重来……正是他不厌其烦的改进和坚持,才有了现在Hierarchical SSA(一种分层静态单赋值)的结构,使得很多优化成为可能,促成了太极的诞生。

用太极语言编写的模拟器大大简化了代码,可微分弹性对象模拟器只用了110行代码,而直接用CUDA(由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题)编写则需要490行。同时,太极的速度还很快,相比CUDA版本几乎没有什么损失。而且,神经网络控制器一般只需要几十次迭代,即可完成优化。

近年来,Python这门计算机语言因为入门方便,实用性高,热度极速上升,不少人纷纷通过Python开启编程的大门。考虑到Python的这一特性,胡渊鸣转变了原来要将太极做成一门单独的编程语言的方向,而是把太极改成了pypi(Python软件包索引)安装包,让太极能够基于Python运行,他还为此编写了完整的使用教程。这些做法既体现了胡渊鸣缜密的思维,又进一步地扩大了太极的使用范围,降低了使用难度。

网友看了胡渊鸣的事迹后,不由感叹道:“图形+系统+编译,真是创世的快乐。”而对胡渊鸣自身来说,这个评价十分贴合。在胡渊鸣的文章中,他也曾表达了自己在钻研编译器中获得的快乐。每天对于太极编程语言相关问题的思考,大大丰富了自己的精神世界,把人世间的种种噪声都隔绝了,这让他的生活质量有了很大的提高。

这个时代缺少学霸又或是缺少科研人员吗?或许并不是,比起学霸光环,更难能可贵的是,在自己擅长的领域,享受钻研的乐趣。饱含一腔热情并愿意静下心来做真正有意义的事情,这正是胡渊鸣最让人佩服的地方。

猜你喜欢

编程语言奇缘太极
基于JavaScript编程语言之 闭包技术在焦点轮播上的应用
计算机软件JAVA编程优势及其应用
大自然的色彩奇缘
猪迪克之蓝海奇缘
基于计算机应用软件开发的Java编程语言研究
练太极100%安全吗?
太极马扎(三)
太极达摩伏虎棍与太极达摩杖对练(一)
羽衣奇缘
太极Ⅱ