夏乙 李根 發自 凹非寺
量子位 出品 | 公眾號 QbitAI
22歲時,你在幹嘛?
這兩天,現任Google AI掌門,傳奇一般的Jeff Dean,再次收穫膜拜和引發熱議。全因他的本科畢業論文首次曝光。
這篇論文只有8頁。
卻成為1990年的最優等本科論文,被明尼蘇達大學圖書館儲存至今。
同時這篇論文表明,整整28年前,Jeff Dean已經在用C語言,為神經網路編寫平行計算的程式碼。
拜Jeff Dean教的眾人又沸騰了。
老論文,新熱議
有位大概很年輕的網友,看了論文之後在HackerNews上發出感慨:不可思議,Jeff Dean在1990年就開始對神經網路感興趣。
一句話,引來眾多科普和追憶。總結起來,就是當時神經網路正當紅。
有人感慨:“神經網路那時候是一件大事,在1980年代後期非常熱門,那真是一段美好的時光。”
1990年,正值第二次AI寒冬之前,當時,神經網路、Prolog、LISP語言、模糊邏輯都正在流行,ANN還沒有被SVM等超越,日本在AI領域還大有趕超美國之勢。
後來成為Jeff Dean同事(實習生 ^_^)的神經網路之父Geoffrey Hinton,當時也已經有很多重要研究發表,反向傳播也出現了。
Jeff Dean這篇論文提到的兩種並行訓練方法,就都是基於反向傳播的。
網友@silverlake說,“我幾乎與Dean同齡,我的本科專案是用遺傳演算法改進神經網路。當時人工智慧很流行,但不久之後冬天來了。”
1990年代早期,對神經網路和機器學習來說是一段非常有趣的日子。當時物體識別、手寫識別等都有出現,所有進展都在快速推進,但很快資金撤走了,專案全都陷入困頓。
“幸好後來GPU、深度反向傳播的出現,資料量開始爆炸之後,神經網路捲土重來。”網友@dekhn說。而對於那些在第二次AI寒冬中堅守至今的人來說,顯然已經得到了應有的回報。
回憶往事之外,不少人得出類似不忘初心,方得始終的結論。
比方Jeff Dean本科畢業論文中研究的問題,被指仍然是今天TensorFlow的重大問題之一。
“真正有趣和創新的早期工作,我認為這也解釋了為什麼TensorFlow不支援層內模型並行。令人驚訝的是,早期的經歷對我們的影響有多大。”網友@scottlegrand2評價。
確實如此。實際上本科畢業之後,Jeff Dean並沒有一直沿著AI的方向繼續研究下去。隨後他的興趣轉向編寫高階面嚮物件語言的編譯器,並且在這個領域取得博士學位。
“然而那一絲覺得神經網路很有意思的感覺,從來沒有真正消失過”,於是後來Jeff Dean又在Google內部主導神經網路、人工智慧的研究,並且和吳恩達、Greg Corrado共同發起成立了Google Brain專案並且擔任負責人。
有人評價說,Jeff Dean是一位具有編譯器優化專業知識的電腦科學家,而TensorFlow本質上是一種將神經網路加速,轉化為與編譯器優化相關問題的嘗試。
當然,還有很多人注意到,這篇優秀畢業論文只有8頁。
“一如既往,Jeff Dean從不讓人失望。在年輕的時候就解決了一個負責的問題,獲得很好的結果,而且清楚簡潔的描述瞭解決方案。”網友@halflings留言說,“我的論文得有60頁,但價值不及這篇的千分之一。”
一個學術機構竟然允許提交這麼簡明的畢業論文,值得表揚。有人回憶起自己讀研時的經歷:幾乎每個修改我論文的人都想加一堆廢話。如果你想用一句話簡單描述,就會被拒。導師能允許他、甚至鼓勵他這麼高效精簡地溝通,對他真是太好了。
於是,大家開始好奇他導師是誰……
當然有答案。Jeff Dean本科畢業論文的導師,是Vipin Kumar。
Kumar教授現在依然在明尼蘇達大學任教,研究資料探勘、高效能運算和這些技術在氣候、生態系統、醫療方面的應用。他還曾在1998年-2005年期間,擔任美國陸軍高效能運算研究中心(AHPCRC)主任。
Jeff Dean發推說,這篇論文他其實已經弄丟了,於是今年年初,他問當年在明尼蘇達大學的導師Vipin Kumar還有沒有這篇論文,當然,老師也沒有……
他們又去問了學校的榮譽畢業生專案(Honors Program),得到的答案是,紙質論文全都沒了。好在,圖書館掃描了一份PDF,才讓這篇論文重見天日。
這篇論文在講什麼?
這篇已經快30歲的論文,是怎樣並行訓練神經網路的?
Jeff Dean探討了兩種基於反向傳播來平行訓練神經網路的方法。
第一種是模式分割法(pattern-partitioned approach),將整個神經網路表示在每一個處理器上,把各種輸入模式劃分到可用的處理器上;
第二種稱為網路分割法(network-partitioned approach)流水線法(pipelined approach),將神經網路的神經元分佈到可用的處理器上,所有處理器構成一個相互通訊的環。然後,特徵通過這個pipeline傳遞的過程中,由每個處理器上的神經元來處理。
他還構建了不同大小的神經網路,用幾種不同的輸入資料,對這兩種方法進行了測試。
結果表明,對於模式分割法,網路大、輸入模式多的情況下加速效果比較好;
而下面這張圖,是兩種方法的對比結果:
那時候,Python公開版還沒發行,更沒有TensorFlow、PyTorch之類的框架。Jeff Dean並行訓練神經網路的測試程式碼,都是用C語言寫的。
這些神經網路本身、用來測試的配置,也有有濃厚的年代感。我們從論文裡能看到1990年的“大”神經網路什麼樣:3層、每層分別10、21、10個神經元的神經網路,就算很大了。而Jeff Dean測試用的處理器,最多達到了32個。
這時的Jeff Dean應該還想不到,12年後,他會和吳恩達、Quoc Le等人一起,用16000個CPU核心,從海量資料中找出貓。
論文傳送門:
https://drive.google.com/file/d/1I1fs4sczbCaACzA9XwxR3DiuXVtqmejL/view
Jeff Dean小傳
1969年生,49歲。
1996年博士畢業於華盛頓大學計算機系(UW)。
美國國家工程院院士,ACM Fellow,AAAS Fellow。
1999年加入初創期的Google,設計並部署了Google廣告、抓取、索引和查詢服務系統的大部分內容,以及位於Google大部分產品下方的各種分散式計算基礎架構,也是Google新聞、Google翻譯等產品的開發者。
發起創辦了Google大腦。
發起打造了目前全球份額第一的深度學習框架平臺TensorFlow。
雖然官方title是Google高階研究員,但Jeff Dean在Google的地位僅次於創始人拉里·佩奇和謝爾蓋·布林。
在2018年4月,Google內部架構調整,Jeff Dean接管Google整個AI業務和團隊,據稱工位也與Google現任CEO皮猜相鄰。
△ Jeff Dean的LinkedIn履歷
段子中的姐夫
當然,如果你對這位低調的大神瞭解有限,是時候又要祭出圈內口口相傳的Jeff Dean的段子集了。
我們也當面向“姐夫”轉述過這些段子,他當時笑著回答說:謝謝大家的喜愛。
一起來看看這些段子吧:
During his own Google interview, Jeff Dean was asked the implications if P=NP were true. He said, “P = 0 or N = 1.” Then, before the interviewer had even finished laughing, Jeff examined Google’s public certificate and wrote the private key on the whiteboard.
當他被Google面試時,Jeff Dean被問及如果P=NP意味著什麼。他說,“P=0 或者 N=1”。然後,在所有的面試官還沒笑完之前,Jeff瞄了一眼Google的公共證照然後在白板上寫上了對應的私鑰。
Compilers don’t warn Jeff Dean. Jeff Dean warns compilers.
編譯器從來不給Jeff編譯警告,而是Jeff警告編譯器。
The rate at which Jeff Dean produces code jumped by a factor of 40 in late 2000 when he upgraded his keyboard to USB 2.0.
在2000年後段,Jeff碼程式碼的速度突然激增了40倍,原因是他把自己的鍵盤升級到了USB 2.0。
Jeff Dean builds his code before committing it, but only to check for compiler and linker bugs.
Jeff還是會在提交程式碼前把它們編譯一遍,不過這麼做的目的只是為了檢查下編譯器和連結器有沒有bug。
gcc -O4 emails your code to Jeff Dean for a rewrite.
gcc的-O4優化選項是將你的程式碼郵件給Jeff重寫一下。
Jeff Dean was born on December 31, 1969 at 11:48 PM. It took him twelve minutes to implement his first time counter.
Jeff出生於1969年12月31日的下午11點48分,然後他花了整整12分鐘的時間實現了他的第一個計時器。(背景:計算機中的計時器數值通常被設計為從1970年1月1日0點0分0秒到當前為止的秒數)。
When Jeff Dean designs software, he first codes the binary and then writes the source as documentation.
當Jeff寫軟體時,他是直接碼機器碼的。寫原始碼只是為了作為文件使用。
Jeff Dean’s keyboard has two keys: 1 and 0.
Jeff的鍵盤多達兩個鍵:1和0。
When Jeff has trouble sleeping, he Mapreduces sheep.
當Jeff失眠時,他用Mapreduce屬羊。(Mapreduce是Jeff的作品之一,這個分散式處理的框架演算法是Google立足的根本之一)。
You name three pointers, Einstein, Euler, and Turing, when you de-reference them, all you get is Jeff Dean.
如果你命名三個指標分別為愛因斯坦、尤拉和圖靈,當你檢視它們的指向時,你看到的都會是Jeff。
更多Jeff Dean的段子集,還可移步Quora上的「谷歌大神Jeff Dean有多牛」合輯:
https://www.quora.com/What-are-all-the-Jeff-Dean-facts
— 完 —