●個個尹
胡淵鳴——一個非凡的普通科研人。
2010年高一即獲得清華大學保送資格,2013年正式進入清華大學姚班。本科期間,先后前往東京大學、斯坦福大學訪學。2017年,進入麻省理工學院讀博。入學13個月后,拿到麻省理工學院碩士學位。
本科期間在微軟亞洲研究院實習,這是微軟公司在美國本土以外最大的基礎研究機構。從事深度學習和計算機圖形學研究,本科便有多篇論文中選CVPR(美國電氣和電子工程師協(xié)會國際計算機視覺和模式識別會議)、SIGGRAPH(計算機圖形學會議)等國際頂會。
事實上,上述短短幾行履歷遠遠不能概括出胡淵鳴。最近,讓胡淵鳴為大家熟知的是他的一篇文章——《99行代碼的“冰雪奇緣”》。99行代碼雖短,背后的技術故事卻很長。故事要從物質點法說起,這是一種在影視特效領域廣受青睞的模擬連續(xù)介質方法,《冰雪奇緣》就用到了它。早期,它運行速度非常慢,比如《冰雪奇緣》里安娜過雪地的鏡頭,據(jù)說要在集群上跑整整一個星期。大四畢業(yè)的暑假,胡淵鳴投入了移動最小二乘物質點法的研究,為的就是提高物質點法的運行速度和性能。
胡淵鳴的靈感是,用移動最小二乘法統(tǒng)一仿射粒子細胞法中的仿射梯度場和物質點法中的變形梯度更新兩種離散化。在賓夕法尼亞大學蔣陳凡夫教授的指導下,胡淵鳴等人完成了移動最小二乘物質點法方法的研究,不僅實現(xiàn)了新的應力散度離散化,使物質點法的運行速度快了兩倍,還成功模擬了物質點法此前并不支持的各種新現(xiàn)象。這項成果最終發(fā)表在SIGGRAPHP。
值得一提的是,雖然很多報道把重點放在了99行代碼上,但胡淵鳴真正令人崇拜的地方不僅于此。代碼行數(shù)只是表象,胡淵鳴令人稱贊的是創(chuàng)造了Taichi(太極)這個編程語言。相比TensorFlow(開放源代碼軟件庫,用于進行高性能數(shù)值計算)和PyTorch(開源的Python機器學習庫,用于自然語言處理等應用程序),太極的渲染速度分別比前者快了188倍和13.4倍,并且能夠模擬雪等物理流體,創(chuàng)造出類似《冰雪奇緣》中的魔法場景的場景。
毫無疑問,太極編程語言的工作量非常大。這是一個全新的系統(tǒng),項目早期要做的設計決策非常多,需要花費大量的時間和精力。有一次,胡淵鳴連續(xù)在家寫代碼,最后,他實在受不了沒人說話的生活,就去實驗室找同學聊天,結果被同學調侃“身上‘長蘑菇’了”。
太極的編寫過程不容易。一開始,胡淵鳴低估了寫編譯器的工作量,沒有完成一個月寫出一個理想編譯器的設想。其中,因為第一次寫的緣故,他缺乏設計匯編者的經驗,還把IR(中間表現(xiàn)形式)設計錯了,最后只好砍掉重來……正是他不厭其煩的改進和堅持,才有了現(xiàn)在Hierarchical SSA(一種分層靜態(tài)單賦值)的結構,使得很多優(yōu)化成為可能,促成了太極編程的誕生。
用太極語言編寫的模擬器大大簡化了代碼,可微分彈性對象模擬器只用了110行代碼,而直接用CUDA(由NVIDIA推出的通用并行計算架構,該架構使GPU能夠解決復雜的計算問題)編寫則需要490行。同時,太極的速度還很快,相比CUDA版本幾乎沒有什么損失。而且,神經網絡控制器一般只需要幾十次迭代,即可完成優(yōu)化。
近年來,Python這門計算機語言因為入門方便,實用性高,熱度極速上升,不少人紛紛通過它開啟編程的大門??紤]到Python的這一特性,胡淵鳴轉變了原來要將太極做成一門單獨的編程語言的方向,而是把太極改成了pypi(Python軟件包索引)安裝包,讓太極能夠基于Python運行,他還為此編寫了完整的使用教程。這些做法既體現(xiàn)了胡淵鳴縝密的思維,又進一步地擴大了太極的使用范圍,降低了使用難度。
網友看了胡淵鳴的事跡后,不由感嘆道:“圖形+系統(tǒng)+編譯,真是創(chuàng)世的快樂?!边@個評價十分貼切,他也曾表達了自己在鉆研編譯器中獲得的快樂。每天對于太極編程語言相關問題的思考,大大豐富了他自己的精神世界,把人世間的種種噪聲都隔絕了,這讓他的生活質量有了很大的提高。
這個時代缺少學霸或科研人員嗎?或許并不是,比起學霸光環(huán),更難能可貴的是,在自己擅長的領域,享受鉆研的樂趣。飽含一腔熱情并愿意靜下心來做真正有意義的事情,這正是胡淵鳴最讓人佩服的地方。
(王世全摘自《知識窗》2021年第1期)