在Google 從創(chuàng)業(yè)公司成長為一代巨頭的過程中,有數(shù)不清的工程師參與,其中 Jeff Dean 和Sanjay Ghemawat 是僅有的兩位達到 Google Senior Fellow 級別(Level 11)的超級工程師,而且他們二人還是相交甚厚的好朋友。由此,《紐約客》雜志通過一篇長文對二人的傳奇故事進行了描述,筆者這篇文章進行了不改變原意的編譯。
2000 年 3 月的一天,6 位 Google 最強工程師在公司的臨時“戰(zhàn)情室”集結(jié),當時的搜索巨頭遇到了史無前例的大麻煩。新千年來臨前的那個 10 月,Google 的核心系統(tǒng)(即抓取 Web 網(wǎng)頁構(gòu)建索引的系統(tǒng))突然癱瘓了。雖然用戶還是能在 Google 搜索,但他們看到的其實都是 5 個月前的過時數(shù)據(jù)。
臨時戰(zhàn)情室的雙子星
事實上,當時的情況比 Google 工程師們意識到的還要糟糕。Google 聯(lián)合創(chuàng)始人 Larry Page 和 Sergey Brin 都開始求爺爺告奶奶,要從雅虎借搜索引擎了。而且此前他們還向用戶夸過口,要讓 Google 的索引比此前大上 10 倍并與互聯(lián)網(wǎng)完全同步。如果當年他們失敗了,后果可想而知。
這個臨時“戰(zhàn)情室”相當簡陋,為了盡快開展工作,Google 工程師們直接將門架起來當作桌子辦公了。當時,27 歲的 Craig Silverstein 也搬到了“戰(zhàn)情室”,作為 Google 第一名員工,他在 Brin 創(chuàng)業(yè)初期就加入了,而且還著手改寫了大量代碼。
經(jīng)歷了四天四夜的奮戰(zhàn),他和一位名叫 Bogdan Cocosel 的羅馬尼亞工程師卻毫無收獲。“當時我們做的分析都毫無意義。”Silverstein 回憶道。“哪點都看著不對勁,但我們卻找不到原因。”
戰(zhàn)情室里可不止以上兩位,才加入 Google 沒幾個月的 Sanjay Ghemawat 也在埋頭奮戰(zhàn),當然這里還有引薦他進入搜索巨頭的老同事 Jeff Dean。這兩位程序員是超級鐵哥們,他們甚至愛上了一同寫代碼。在“戰(zhàn)情室”里,Jeff 直接把工位搬到了 Sanjay 身邊。后者敲著鍵盤,前者則在一旁糾正。
在對索引進行一番研究后,他們發(fā)現(xiàn)搜索時一些關(guān)鍵詞直接消失了。比如你去搜索“郵箱”,就什么結(jié)果都搜不出來。有時,搜索結(jié)果還是混亂無序的狀態(tài)。不過,即使經(jīng)過幾天的“排雷”,兩人還是沒能發(fā)現(xiàn)那個致命 Bug。
程序員有自己的工作邏輯,他們有時會將軟件概念化為不同層級組成的架構(gòu),而冒險進入架構(gòu)底層,就意味著要和電力與硅元素打交道了。轉(zhuǎn)眼間,在“戰(zhàn)情室”工作的第五天到了,Jeff 和 Sanjay 開始懷疑問題并非出在軟件邏輯上,而是源于物理層面。于是他們將混亂的索引文件轉(zhuǎn)換為最原始的形式:二進制代碼。他們想看看這些機器在搞什么鬼。
這一試還真是出現(xiàn)了奇跡,Sanjay 發(fā)現(xiàn),原來該用 0 表示的數(shù)字卻用了 1。Jeff 和 Sanjay 把所有串行的命令整合在一起后,它們發(fā)現(xiàn)每個命令都有問題,機器的內(nèi)存就是這樣被搞垮的。
幾個月以來,Google 的硬件錯誤越來越多,而這幾個月正值它們計算設(shè)施的高速擴張期。一般來說,計算機硬件崩潰的可能性很小,不過基數(shù)大了之后,事情就沒那么簡單了。主板過熱、連接線松脫或硬盤壞道都會讓硬件崩潰。同時,機房里有些設(shè)備可能從來就沒轉(zhuǎn)起來過,而另一些則毫無征兆的卡了起來。當然,我們還得考慮到多變的環(huán)境因素,一次超新星爆發(fā)釋放的宇宙射線可能就會損毀大量計算機芯片,讓 0 和 1 對調(diào)。
其實類似 NASA 和金融機構(gòu)等特殊單位的計算機系統(tǒng)都能扛住這些問題,但當時的 Google 還是新創(chuàng)公司,它們購買的便宜計算機可沒這些附加功能。此外,隨著計算集的不斷擴大,那些本不該誕生的硬件問題也成了不可避免的麻煩。
找到根由后,Jeff 和 Sanjay 趕緊開始著手修復。不久之后,新的索引就完成了,臨時“戰(zhàn)情室”也宣告解散。此役之后,Google 一號員工 Silverstein 變得異常困惑,他是個出色的 Bug 獵人,但這次卻沒有自己同事挖的深。
Jeff 和 Sanjay 再擔重任
2000 年 3 月份的那次索引崩潰發(fā)生前,Google 系統(tǒng)的源代碼一直都是聯(lián)合創(chuàng)始人在斯坦福寫出來那一套。事實上,Page 和 Brin 并非專業(yè)程序員,他們是學術(shù)界里搞搜索技術(shù)實驗的人。一旦他們的網(wǎng)絡(luò)爬蟲崩潰,屏幕上并不會顯示什么有用的診斷信息。一些早期的 Google 員工會參考 Page 和 Brin 寫的 BigFiles 軟件,不過他們花幾天時間搭建起來的索引代碼一旦出了問題,一切就得重頭再來。
用硅谷的話術(shù)來說就是,Google 搜索引擎根本無法規(guī)模化。
在用戶看來,自己是在“搜索網(wǎng)絡(luò)”,但事實上沒有,是搜索引擎在網(wǎng)絡(luò)索引中幫用戶抄了個近道而已,它才是真正的地圖。1996 年時的 Google 還沒改名(當時叫 BackRub),那是 Page 手中的秘密地圖還很小,能輕松裝進計算機里。不過 4 年后的 3 月份,世界上最牛的超級電腦都 Hold 不住這張地圖了。Google 唯一能做的就是不斷購買計算機,然后將它們組到計算機編隊中。
作為一家創(chuàng)業(yè)公司,計算機的外殼對 Google 來說完全是筆資產(chǎn)浪費,因此它們的機房堆得都是各種“內(nèi)臟”。由于硬件故障,Google 堆在圣克拉拉一座建筑里的 1500 臺設(shè)備中其實只有 1200 臺能轉(zhuǎn)起來,而各種隨即出現(xiàn)的錯誤讓系統(tǒng)效率不斷降低。為了生存下來,Google 必須無縫連接起這些經(jīng)常鬧脾氣的設(shè)備。
剛剛立了大功的 Jeff 和 Sanjay 扛下了這個重擔,而在蘋果主導了 Mac 電腦開發(fā)的 Wayne Rosing 則成了他們的副手。這位 2000 年 11 月才加入 Google 的工程師表示,Jeff 和 Sanjay 真是有領(lǐng)導才能,他們不但每周瘋狂工作 90 個小時,還專門寫了代碼防止單個硬盤崩潰對整個系統(tǒng)的拖累。同時,他們還在爬蟲過程中加了檢查點,即使出了問題工程師也不用完全推倒重來。通過新的編碼和壓縮方案,Jeff 和 Sanjay 更是成功讓系統(tǒng)容量翻番。
2011 年,他們更是證明,Google 的索引可以直接存儲在 RAM 上,而非傳統(tǒng)的機械硬盤。這一發(fā)現(xiàn)直接重塑了 Google 的未來,畢竟挑剔的用戶需要更快的搜索速度。不過,即搜即有的前提是強大的算力,而算力是要花錢的。在關(guān)鍵時刻,Jeff 和 Sanjay 又站出來成了中流砥柱,他們要用軟件“穿針引線”。
2005 年 Rosing 離開后,Alan Eustace 成了 Google 工程團隊負責人。“想要快速解決那些反常的問題,你就得掌握隱藏最深的細節(jié)。”Eustace 說道。攻克了無數(shù)難題的 Jeff 和 Sanjay 對于計算機的細節(jié)可謂熟悉到了字節(jié)。Jeff 就曾寫過一個清單,在他看來清單上的延遲數(shù)字是每個程序員都應該爛熟于心的。事實上,這些數(shù)字沒人懂,它們是深嵌于 Jeff 和 Sanjay 大腦的專屬產(chǎn)物,而兩人給出的 Google 核心軟件讓系統(tǒng)容量增長了多個數(shù)量級。與此同時,Google 數(shù)據(jù)中心的技師們也對 Jeff 和 Sanjay 言聽計從,他們開始按照軟件生成的說明來更換硬盤、電源和內(nèi)存條等。
熟悉 Google 的人都知道,搜索巨頭的工程師分為 10 個等級,能升到 10 級,你就是業(yè)內(nèi)最頂尖的專家,這個榮譽能跟隨你一輩子。不過,功勛卓著的 Jeff 和 Sanjay 當然要特事特辦,他們是 Google 唯二拿到 11 級的超級工程師。
“就像一對老夫婦”
Google的園區(qū)坐落在離山景城幾分鐘車程的地方,這里建筑低矮,沒什么設(shè)計特色,彩色玻璃倒是不少。去年夏天的一個周一,忙完了商務工作的 Jeff 和 Sanjay 一起去名叫 Big Table 的餐廳吃飯,而這個餐廳的名字就與他倆攜手開發(fā)的一套系統(tǒng)有關(guān)。
接受采訪時,他們就像一對夫婦,兩人的共同回憶撐起了整個故事線。
“我們可都是手寫代碼。”Sanjay 說道。“我們不停的進行修改、重寫,但始終覺得跟上個月沒什么區(qū)別。”
“或者說只是索引數(shù)據(jù)中的傳遞方式略有不同。”Jeff 補充道。
“而這些細小的差別,就是我們的突破口。”Sanjay 說道。
“這才是本質(zhì)。”Jeff 再次補充道。
“我也不知道兩人協(xié)作的模式是怎么建立的。”Sanjay 回憶道。
“好像加入 Google 之前就開始了吧。”Jeff 說道。
“但為什么要兩人共用一個電腦呢?”Sanjay 問道。
“因為咱倆的辦公室中間有一家冰淇淋店。”Jeff 回應道。
現(xiàn)在的 Jeff 已經(jīng)有了兩個女兒,但 Sanjay 卻依然未婚。每當 Jeff 家出外旅行,Sanjay 都會加入他們,每周五的聚餐更是雷打不動。
社會學家 Michael P. Farrell 2001 年就曾在書中指出:“建立新愿景基礎(chǔ)的大多數(shù)脆弱見解不是在整個團隊聚集在一起時出現(xiàn)的,也不是在成員單獨工作時,而是在他們兩兩合作并互相支持的情況下出現(xiàn)的。”就連 John Lennon(約翰·列儂,英國搖滾樂隊“披頭士”成員) 都表示,自己創(chuàng)作時不能沒有 Paul McCartney(前披頭士樂隊成員),畢竟一個人很容易走進死胡同,而太多人則會抉擇困難。
在大多數(shù)情況下,雙人合作一般是“一人導航,一人駕駛”,但 Jeff 和 Sanjay 卻有些不同,他們有時會像一顆心的兩半。
完全不同的成長背景
1968 年 7 月,Jeff 在夏威夷出生,由于父母是兩位醫(yī)學專家,因此 Jeff 年幼時經(jīng)常搬家。不過,他接觸電腦很早,高中就開始做流行病的數(shù)據(jù)采集項目了,而且這個數(shù)據(jù)庫最終賣了成千上萬份,挽救了大量生命。
攻讀博士時,Jeff 主攻編譯工具,它能將人寫的代碼轉(zhuǎn)成為電腦優(yōu)化的機器語言。說實話,這是份相當枯燥的工作。
在考上康奈爾大學前,Sanjay 根本沒摸過電腦。這位生長于印度北部工業(yè)城市的技術(shù)天才有個做植物學教授的老爸,同時他們家還是個書香世家,多位子女都考上了美國知名大學,Sanjay 甚至一直活在優(yōu)秀哥哥的陰影中無法自拔。
在麻省理工讀研究生時,Sanjay 認識了不少死黨,他是個安靜但驕傲的人,不過對約會好像不感興趣。
在 Google,Jeff 的知名度可高多了,不過懂行的人都知道,Sanjay 也是個一等一的天才。“Jeff 在想點子和搞原型產(chǎn)品上確實很牛,而 Sanjay 則是能堅持到最后的人。”兩人的老戰(zhàn)友 Wilson Hsieh 評價道。在生活中,兩者一個外向,一個內(nèi)向。不過,寫代碼時卻完全相反。Jeff 的代碼太過于先鋒,而 Sanjay 則更平易近人。
Silverstein 曾表示,有的程序員代碼寫的太松散,你很難看出他的意圖,有的又寫的太緊湊,看著很累。Sanjay 正好處在兩者中間,一切都恰到好處。“當你想在他的代碼中加些新功能時,就會發(fā)現(xiàn) Sanjay 已經(jīng)預留了位置。這天分真是無敵,但我始終想不通他是如何做到的。”Silverstein 解釋道。
MapReduce 降臨
2003 年,Jeff 和 Sanjay 在 4 個月內(nèi)就讓Google來了次脫胎換骨的大升級,而催化劑就是一款名為 MapReduce 的軟件。其實這個點子在兩人重寫 Google 爬蟲和索引器時出現(xiàn)過三次了,而每次他們都解決了重大難題,即協(xié)調(diào)不同地理分布的大量獨立電腦進行工作。這一解決方案橫空出世后,就意味著 Google 工程師無需一遍遍重新審視同一個問題了。同時,這項技術(shù)也成了一款工具,讓 Google 的任何工程師都能操控數(shù)據(jù)中心的機器。
對常人來說,MapReduce 絕對算令人費解的復雜玩意。在這款軟件誕生前,程序員必須找出分割和分發(fā)數(shù)據(jù)以及安排工作的方式,同時還得自行記錄硬件錯誤。有了 MapReduce,程序員就獲得了思考這些問題的結(jié)構(gòu)化方法,同時它還通過隱藏數(shù)據(jù)掌控了數(shù)據(jù)分發(fā)的細節(jié)。
第二年,Jeff 和 Sanjay 就用 MapReduce 重寫了 Google 的爬蟲和索引系統(tǒng)。當其他工程師發(fā)覺這款軟件的厲害之處時,這兩位大神已經(jīng)開始用它升級 Google Maps 了。
在這里,恐怕已經(jīng)有人能看出,Google 其實只是個假裝搞搜索的 AI 公司。2001 年時,曾與 Noam Shazeer 并肩奮戰(zhàn)的 Noam Shazeer 發(fā)現(xiàn),Google 居然從其他公司雇傭了大量拼寫檢察院,而這也是一盤大棋的一部分。Shazeer 借助文本統(tǒng)計特性寫了一個程序,用來確定搜索框中到底哪個詞拼錯了。在公司進行展示后,大部分程序員都不知其所以然,但 Jeff 和 Georges Harik 加入后,Shazeer 成功將類似技術(shù)融進了 Google 的廣告系統(tǒng),而廣告是 Google 的生命線。
自此,Google 的反饋回路開始有了雛形,而它是 Google 的智慧、財富與增長來源。同時,也是 Google 統(tǒng)治的權(quán)杖。
隨著 MapReduce 的普及,Google 便獲得了無窮的神力,它能轉(zhuǎn)錄用戶的語音郵件、回答他們的問題、自動補充用戶搜索并翻譯超過 100 種語言。雖然這套系統(tǒng)的基礎(chǔ)并非完善的機器學習算法,但當數(shù)據(jù)足夠海量時,工作也會變簡單。也就是說,數(shù)據(jù)成了Google的最高指令。
事實上,現(xiàn)在比較紅的幾個概念(如分布式計算、云計算和大數(shù)據(jù))Google誕生前就有。不過,沒有 Jeff 和 Sanjay 的軟件,Google 對它們的掌控根本達不到現(xiàn)在的級別。用戶恐怕也能感受到一些改變,那就是Google的云服務越來越智能了。
2004 年時,為了方便天文學家、基因?qū)W家和其他需要處理大量數(shù)據(jù)的科學家,Jeff 和 Sanjay 專門寫了一篇論文。這篇有關(guān) MapReduce 的論文簡直是天外救星,廉價硬件和移動服務的普及催生了大量數(shù)據(jù),但卻很少有公司能通過軟件處理這些信息。
后來,Mike Cafarella 與 Doug Cutting 干脆做了個 MapReduce 的免費復制版 Hadoop,現(xiàn)在幾乎成了各大公司的標配。同時,Hadoop 也成了“大數(shù)據(jù)”的代名詞。眼下,F(xiàn)acebook 存儲并處理用戶元數(shù)據(jù)用的就是“Hadoop MapReduce”。除此之外,這套工具還是領(lǐng)英和 Netflix 的得力助手。美國國家安全局(NSA)前技術(shù)主管 Randy Garrett 當年也被這項技術(shù)折服過,它在分析任務時居然比 NSA 的老系統(tǒng)快了 18 倍,同時還也催生了新的情報搜集方式。
閑不住的 Jeff 和與世無爭的 Sanjay
Jeff 是個閑不住的人,一旦他能找到問題的答案,就會對這個問題失去興趣。2011 年時,云計算的概念最為火爆,那時他就與吳恩達合作在 Google 搞了個秘密項目,著力研究神經(jīng)網(wǎng)絡(luò)。其實 Jeff 大學還沒畢業(yè)時就接觸過類似技術(shù),但當時的技術(shù)搞神經(jīng)網(wǎng)絡(luò)太不現(xiàn)實。現(xiàn)在可不一樣了,吳恩達告訴他斯坦福大學已經(jīng)有了不少進展。如果能借助 Google 巨大的體量,神經(jīng)網(wǎng)絡(luò)就能爆發(fā)出巨大的威力。
神經(jīng)網(wǎng)絡(luò)可不是傳統(tǒng)的計算機程序,它們表現(xiàn)如何并不取決于程序員,相反它們靠輸入和反饋數(shù)據(jù)來提升。大學畢業(yè)后 Jeff 就沒怎么接觸過神經(jīng)網(wǎng)絡(luò),好在他學習能力強。項目(Google Brain)開始后他每周都會分出一天時間全身心投入,不過當時許多 Google 員工對這項技術(shù)滿是懷疑,認為讓 Jeff 主管這個項目是浪費人才,就連 Sanjay 都無法理解 Jeff 的行為。
在后來的 7 年里,Google Brain 團隊的神經(jīng)網(wǎng)絡(luò)在語音、翻譯和圖像識別領(lǐng)域一騎絕塵,讓其他公司無法望其項背。最終,這項技術(shù)反哺給了 Google 搜索,再次穩(wěn)固了它們在業(yè)內(nèi)的地位。同時,Google Brain 也成了公司內(nèi)部增長最為迅速的團隊。
2001 年加入的工程師 Cui 就表示,Jeff 的加入是 Google AI 項目的轉(zhuǎn)折點。
作為業(yè)內(nèi)最頂尖的系統(tǒng)工程師,Jeff 還打造了 AI 界的 MapReduce——TensorFlow。2015 年 TensorFlow 首次亮相后,就成了 AI 的通用語。最近,Google CEO Sundar Pichai 明確了公司“AI 為先”的戰(zhàn)略,Jeff 也成了 AI 部門的絕對領(lǐng)導。
現(xiàn)在的 Jeff 每周 4 天時間在 Google Brain 上,他手下?lián)碛芯鴱妼?3000 多人。由于工作繁忙,現(xiàn)在他每周只能和 Sanjay 寫一次代碼了。
現(xiàn)在的 Jeff 和 Sanjay 走上了不同的道路,不善社交的 Sanjay 對語音助手完全不感冒,但 Jeff 卻對自己的工作得意洋洋。
現(xiàn)在的 Sanjay 是 Google 的“獨狼”,他獨自工作,也不參與管理。這樣的狀態(tài)讓他很高興,Sanjay 可不想做 Jeff 的工作。在 Google,他主要為工程師們開發(fā)新軟件,幫他們更輕松的整合并控制數(shù)十個程序。不過,每周他還是會參加領(lǐng)導小組的會議,做一些影響公司未來的決定。如果說 Google 是一座房子,那么 Jeff 負責裝飾,而 Sanjay 則主管房屋結(jié)構(gòu),同時他還要加固螺絲和地基。
兩位黃金搭檔最近也有了新的 AI 項目,他們準備訓練一個巨型的機器學習模型來做數(shù)百萬種工作。對于這個項目,Jeff 已經(jīng)謀劃多年,有了 Sanjay 助力,原型產(chǎn)品落地就能快上很多。
Jeff 妻子 Heidi 也表示,“他們都開始想念當年親密無間的時光了。”
-
Google
+關(guān)注
關(guān)注
5文章
1766瀏覽量
57574 -
互聯(lián)網(wǎng)
+關(guān)注
關(guān)注
54文章
11163瀏覽量
103382 -
代碼
+關(guān)注
關(guān)注
30文章
4791瀏覽量
68681
原文標題:揭秘 Google 兩大超級工程師:AI 領(lǐng)域絕無僅有的黃金搭檔
文章出處:【微信號:FPGAer_Club,微信公眾號:FPGAer俱樂部】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論