1. 程式人生 > >谷歌基情錄:TensorFlow、Hadoop、MapReduce 都靠他們誕生!

谷歌基情錄:TensorFlow、Hadoop、MapReduce 都靠他們誕生!

640?wx_fmt=gif

【CSDN編者按】迄今為止,Google帝國已創立二十載。在這背後,離不開一眾“開國元勳”的豐功偉績,譬如聲名遠揚的MapReduce、TensorFlow、乃至於Hadoop——這些都和Jeff Dean、Sanjay Ghemawat兩個人有著千絲萬縷的聯絡。作為最早的一批程式設計師,Jeff Dean和Sanjay Ghemawat這對曾在同一臺計算機上程式設計的好兄弟,不僅是Google唯二登上11級的工程師,還極大地改變了Google和網際網路的發展方向。“相比之下,Jeff和Sanjay就好像一個大腦的左腦和右腦。”正是如此完美契合的兩個人,才書寫了一段載入史冊的偉大友情。

640?wx_fmt=jpeg


640?wx_fmt=png

2000年3月,陷入僵局的Google索引


2000年3月的一天,Google最優秀的六位工程師齊聚在一個臨時的作戰室,該公司正處於前所未有的緊急狀態。

10月份,公司的核心繫統(負責爬取Web構建“索引”的系統)停止了工作。雖然使用者仍然可以在google.com上輸入查詢,但他們只能拿到5個月前的搜尋結果——其中的利害關係比工程師們想象的更嚴重。

Google的聯合創始人拉里佩奇和謝爾蓋布林正在與雅虎就搜尋引擎進行談判,而且他倆承諾可以提供十倍大小的索引。他們現有的索引就能夠緊跟網際網路的發展,而且在過去的一年中該索引的規模翻了一番。如果他們失敗,那麼google.com將仍然是一個時間膠囊,與雅虎的交易會化為泡影,而公司也將面臨所有的努力都灰飛湮滅的危機。

工程師們在一段樓梯旁的會議室裡支起了幾個鋸木架,然後把門板搭在上面當電腦桌在上面辦公。27歲的Craig Silverstein坐在遠處的牆邊,他身材矮小,聲音很高,他是Google的第一位員工:當Google的辦公室還在布林的客廳時,他就加入了公司,並重寫了大部分的程式碼。雖然他與一位名叫Bogdan Cocosel的羅馬尼亞系統工程師奮戰了四天四夜,但是毫無頭緒。Silverstein回憶說,“我們所做的分析沒有任何意義。一切都不正常,但我們不知道為什麼。”

Silverstein沒有注意到他左手邊有一位安靜的麻省理工畢業的高材生Sanjay Ghemawat,33歲,長著濃密的眉毛和黑色的頭髮,兩鬢略顯灰色。Sanjay在幾個月前(具體說是12月)剛剛加入公司,他與另一位同事31歲的Jeff Dean是從Digital Equipment Corporation跳槽過來的。Jeff 是一個身材苗條精力充沛的人,在他跳槽十個月後,Sanjay也離開了那家公司。他們倆人關係非常親密,而且他倆喜歡一起寫程式碼。

在作戰室的時候,Jeff搬著椅子去找Sanjay,Sanjay敲鍵盤的時候,Jeff就趴在他身邊,就好像製作人在新聞主播耳邊一邊指導工作一邊甜言蜜語。

Jeff和Sanjay開始研究陷入僵局的索引。他們發現有些詞彙不見了,他們搜尋“郵箱”卻沒有返回任何結果,而且其他詞彙也不按順序顯示。幾天以來,他們全身心地投入到程式碼邏輯中,一直在尋找程式碼中的問題。一段又一段的程式碼,慢慢篩查,但是他們始終找不到這個bug。

程式設計師經常會將他們的軟體從概念上分成層次結構,從頂層的使用者介面,逐步到越來越基礎的層面。這個結構的最底層是軟硬體交匯的地方,探尋這裡就要拋棄柏拉圖式的程式碼秩序,轉而面向最基礎的電子和晶片的世界。

在作戰室奮戰的第5天,Jeff和Sanjay開始懷疑他們所尋找的問題不在邏輯層面,而在物理層面。他們將混亂的索引檔案轉換成最底層的形式:二進位制。他們想看看機器究竟看到了什麼。

Sanjay的監視器上顯示出了一大堆1和0,每行代表一個被索引的關鍵字。Sanjay發現,某個本該是0的數字現在卻是1。當Jeff和Sanjay將所有出錯的單詞都放在一起後,他們發現了一種模式——每個單詞都有相同的問題。不知怎地他們機器的記憶體晶片已遭到了破壞。

Sanjay看著Jeff。幾個月以來,Google出現的硬體故障越來越多。問題在於,隨著Google的發展,其計算機基礎設施也在不斷膨脹。計算機硬體很少出現問題,但是一旦你擁有足夠多的計算機,那麼就總會出問題:電線磨損、硬碟損壞、主機板過熱。許多機器從一開始就有問題,有些計算機則會逐漸變得緩慢,奇怪的環境因素開始發揮作用。當超新星爆炸時,爆炸波會產生向各個方向散射的高能粒子;科學家認為,這個世界上存在一種被稱為宇宙射線的不定粒子可以擊中地球上的計算機晶片,將其上的0改寫成1。世界上最強大的計算機系統可能在美國宇航局、金融公司、以及其他使用了特殊硬體的公司,他們可以容忍單位元錯誤。但是當時Google的運營尚屬創業公司,他們購買的都是沒有這種功能的廉價計算機。而當時的Google正面臨著一個轉折點,它的計算叢集如此之大,似乎硬體故障再所難免。

於是,Jeff和Sanjay一起編寫了程式碼來彌補機器上的問題。

不久之後,新的索引完成了,臨時作戰室也解散了。Silverstein顯得有點不知所措:他才是最優秀的除錯人員,找到bug的關鍵是找到問題的根源。但是Jeff和Sanjay調查得更為深入。


640?wx_fmt=png

唯二登上 Google 11 級工程師的 Jeff 和 Sanjay


在3月份索引崩潰之前,Google系統的核心程式碼都是其創始人在斯坦福大學讀研究生時期寫的。佩奇和布林不是專業的軟體工程師,他們只是在進行學術上的搜尋技術實驗。當他們的網路爬蟲崩潰時,沒有提供任何有用的診斷訊息,只有一些“啊哦!”之類的感嘆。

早期的員工將“BigFiles”(佩奇和布林編寫的一個軟體)稱為“BugFiles”(Bug檔案)。他們最重要的索引程式碼需要花費數天才能執行完成,如果遇到問題則必須從頭開始重新啟動。

按照矽谷的說法,Google不具備“可擴充套件性”。

我們所謂的“搜尋網路”,實際上沒有搜尋真正的網路;我們的搜尋引擎只是遍歷了一個Web的索引,或者說一張地圖。

1996年,當Google還叫BackRub時,它的地圖非常小,佩奇宿舍的電腦就足夠了。2000年3月的時候,該對映大到沒有任何超級計算機能夠單獨處理。Google唯一的解決辦法就是購買多臺面向消費者的計算機,然後將它們連線成一個機組。由於Google認為這些計算機中一半的成本是垃圾(軟盤驅動器,金屬機箱),所以他們訂購了多個主機板和硬碟,然後將它們拼湊在一起。當時在加利福尼亞州聖克拉拉市的一幢建築物中,Google的1500多臺這樣的裝置堆疊成了一座座6英尺(1.8米)高的小塔;由於硬體故障,只有1200臺工作。看似很少發生的硬體故障卻在不斷破壞他們的系統,為了生存,Google不得不將它的計算機聯合起來,組成一個無縫且有彈性的整體。

Jeff和Sanjay共同負責了這項工作。

曾在蘋果就職的麥金塔電腦的先驅Wayne Rosing於2000年11月加入Google,並負責管理百人的工程團隊。他說,“他們無需領導。”他們每週工作90個小時,寫了幾周的程式碼實現了某個硬碟驅動器的問題不會波及整個系統。他們在爬行過程中添加了檢查點,確保可以在中途重新啟動。通過開發新的編碼和壓縮方案,他們有效地將系統的容量增加了一倍。他們堅持不懈地優化。當汽車轉彎時,外側的輪子經過的地面更多;同樣,硬碟在旋轉的時候外邊緣的轉速比內邊緣高。Google將最常用的資料都移動到了外側,因此讀取針頭下面的位元可以更快地流動,而保持內側有一半為空;Jeff和Sanjay利用這些空間儲存常用搜索查詢的預處理資料。在2001年的4天時間裡,他們證明了Google的索引存取可以儲存在記憶體中,而無需儲存在相對較慢的硬碟中;這一發現徹底改變了公司的經濟狀況。佩奇和布林明白使用者對能夠立即提供答案的服務趨之若鶩。關鍵在於,速度需要計算能力,計算能力需要花錢——而Jeff和Sanjay卻利用軟體攻克了這一難題。

2001年,在Rosing離開之後,Alan Eustace出任了工程團隊的負責人。他說,“頗為自相矛盾的是,為了解決大規模的問題,你必須瞭解最小的細節。”Jeff和Sanjay可以從位元單位瞭解計算機。Jeff曾經給大家看過一些“每個程式設計師都應該知道的延遲數字”。然而事實上,幾乎沒人知道那個列表上的數字:一級快取引用通常需要半納秒;從記憶體中順序讀取一兆位元組需要251微秒。這些數字已經深入了Jeff和Sanjay的大腦。在他們幾次帶頭重寫了Google的核心軟體後,該系統的能力得到了數量級的提升。與此同時,在該公司龐大的資料中心,技術人員需要千辛萬苦地找到相應的裝置,並根據軟體生成的指令更換硬碟驅動器、電源和記憶體條。即使零件出現磨損或損壞,系統也不會受到影響。

現如今,Google的工程師需要從一級開始慢慢攀爬職業等級。最底層是IT技術支援人員;2級是大學畢業生;3級通常擁有碩士學位;擁有博士學位或經過幾年的努力以後他們能夠到達4級;而大多數都會停留在5級。只有10%的人擁有能力登上6級工程師,他們都是對專案成功做出了豐功偉績的人。擁有很多業績的6級工程師可以榮升到7級。8級的首席工程師一般都會負責主要產品或基礎設施。位居9級的人都是受人尊敬的傑出工程師。登上10級,榮獲“Google院士”的稱號,這份榮譽會讓你驕傲一生。Google院士通常是各自領域的世界領先專家,Jeff和Sanjay是“Google高階院士”——該公司第一個也是唯一兩個登上11級的工程師。

640?wx_fmt=jpeg

Google最頂級的兩位程式設計師Jeff Dean(左)和Sanjay Ghemawat(右)


640?wx_fmt=png

“為什麼不結對程式設計呢?”


Google園區位於高速公路旁,距離山景城市中心只有幾分鐘車程,那是一群帶有色窗戶其貌不揚的矮建築。

去年夏天的一個週一,Jeff和Sanjay寫了一早上程式碼後,來到一家名為Big Table的園區餐廳吃午餐,該餐廳以2005年他們參與開發的系統命名,該系統可以將無數計算機當成一個數據庫處理。Sanjay又高又瘦,穿著古老的栗色亨利汗衫,灰色褲子,戴著小框眼鏡。 他看到了外面的一張桌子,然後輕快地走了過去,撐開一把傘,在陰涼處坐了下來。他把另一張椅子搬到了太陽下面留給了Jeff,不一會兒Jeff過來了,穿著寬肩短袖襯衫,時髦的運動鞋。

他倆就像情侶一樣,你一言我一語講起了故事,一起回憶著早期的專案。

“當時我們手工寫程式碼,“Sanjay說,他的眼鏡在陽光下變暗了。”我們重寫了那些程式碼,寫完之後發現,哎,這好像是我們上個月剛寫的。”

“或許我們的索引資料略有不同,”Jeff補充道。

“或許略有不同,”Sanjay說,“所以我們才發現——。”

“這才是重點,”Jeff說。

“——這才是正常的情況。”Jeff最後說。

Jeff咬了一口他的披薩。他的手像水手一樣,疙疙瘩瘩很粗糙;相比之下Sanjay的手就顯得細皮嫩肉了,真不明白他們兩個人是怎麼成為一對的。“我也不太清楚我們是如何發現並肩作戰更好的。”他說。

“我們在未加入Google之前就並肩作戰了。”Jeff說。

“但我不知道為什麼我們倆人一起在一臺電腦前工作,比在兩臺電腦上更好。”Sanjay說

“在之前的公司的時候,我會從我的實驗室走兩個街區到他的實驗室去。”Jeff說,“路上有一家義大利冰淇淋店。”

“所以,你是為了那家義大利冰淇淋店。”Sanjay笑著說。

Sanjay沒有結婚,他與Jeff的兩個女孩和妻子Heidi一起去度假。Jeff的女兒叫他Sanjay叔叔,他們5個人經常在週五共進晚餐。Sanjay和大女兒Victoria一起學習烘焙。Sanjay自豪地說,“我看到他的女兒們長大了。”

2004年,Google首次公開募股後,他們分別搬進了相隔4英里的房子。Sanjay住在舊山景城一間不起眼的三居室;Jeff自己設計的房子靠近帕洛阿爾託市中心,他在地下室安裝了一個蹦床。在蓋房子的時候,他發現雖然他喜歡空間設計,但他並沒有耐心設計架構中“讓Sanjay來乾的方面”:樑、螺栓和負重等支撐巨集偉設計的細節。

談到結對程式設計,Sanjay說,“我不知道為什麼別人不這麼做。”Jeff說,“你需要找到一個能在思維方式與你合得來的人,你們兩個人可以互補。”

他倆從桌邊起身,漫步走過Big Table與Google的員工群,開始回到軟體服務的工作中。兩個人之中Jeff更加急於發言,在回來的路上他分享了自己的軟體服務策略。他說,“我認為向上推進的方法可以增加穩定性。”Sanjay微笑著,專心地將巧克力和香草混合冰淇凌擠到了蛋卷筒裡。


640?wx_fmt=png

最佳程式設計師的效率是最差的十倍以上


社會學家Michael P. Farrell於2001年出版的《Collaborative Circles: Friendship Dynamics and Creative Work》一書中,對關係親密的創作群體(法國印象派,西格蒙德弗洛伊德及其同時代人)進行了研究。他寫道,“大多數奠定了新願景基礎的脆弱見解的出現時機並非整個團體一起工作時,也不是成員單獨工作的時候,而是當他們互相合作而且兩兩成對互相迴應時。”

1869年夏天莫奈和雷諾阿並肩工作,這才有了印象派的風格;畢加索和喬治·布拉克在投身立體主義的六年合作期間,他倆經常只在畫布的背面簽名,以掩蓋每幅畫是由他們中的哪一位完成的。畢加索後來回憶道,“只有得到我倆共同的首肯,一幅畫作才算完成。”在《Powers of Two: Finding the Essence of Innovation in Creative Pairs》一書中,作家Joshua Wolf Shenk引用了1971年的訪談,約翰·列儂曾說道他和保羅·麥卡特尼中會有一人“寫出一段好的音樂,這很簡單,就像我今天看到了新聞或其他東西。”然後其中一人就會卡殼,直到另一個人到來,列儂說,“然後我唱一半,他會受到啟發寫下一點,反過來也一樣。”每個人都會有靈感匱乏的時候,但是很少有兩個人同時才思枯竭的時候。

在新科學或藝術的“理論建設”階段,廣泛探索而不陷入死衚衕是非常重要的。弗朗索瓦·雅各布與雅克·莫諾一起開創了基因調控研究,他指出,在二十世紀中葉,分子生物學領域的大多數研究都是兩個人的結果。雅各布寫道:“兩個人共同設計理論和構建模型比一個人更勝一籌。因為兩個人共同處理同一個問題時,思緒更加輕易而且飛舞得跟快。它們可以在兩個夥伴之間來回跳躍,可以從彼此的思維之上衍生出新的想法來,就像一棵樹上的枝葉。在這個過程中,錯覺很快被扼殺在萌芽狀態。”在過去的35年裡,大約一半的諾貝爾生理學或醫學獎都頒給了科學合作伙伴們。

經過多年的共同工作和生活,有時二人之間會產生一種私人語言,就像雙胞胎一樣。他們模仿彼此的衣著和習慣。彼此之間的幽默感互相滲透。在他們之間區分功勞已經不可能了。但是這種緊密的合作在軟體開發中並非常見。

雖然有時開發人員會提及“結對程式設計”(兩個程式設計師在一臺計算機上程式設計,就好象一個“駕駛”而另一個“導航”),通常大家認為這種夥伴關係有點浪費資源,儘管這種結對其實就好象一架飛機上的兩個飛行員。相比之下,Jeff和Sanjay就好象一個大腦的左腦和右腦。他們的一些著名的論文有時多達十幾位合著者。Bill Coughran曾經擔任他們的經理,他回憶說:“他們結對工作非常多產,效率非常高,我們經常圍繞他們組建團隊。”

1966年,系統開發公司的研究人員發現,最佳程式設計師的效率是最差的十倍以上。從那以後,所謂的“10倍速程式設計師”的存在性一直存在爭議。這種說法是個人英雄主義,但軟體專案通常很龐大且是集體性的。在程式設計業界,很少有成就是孤立存在的。即便如此(也許諷刺的是)許多程式設計師都目睹了Jeff和Sanjay共同完成的工作,這正是10倍速程式設計師存在的證據。


640?wx_fmt=png

1968 年的 Jeff 和 1966 年的 Sanjay


1968年7月,Jeff出生在夏威夷。他的父親Andy是一名熱帶病研究員,他的母親Virginia Lee是一位醫學人類學家,精通6種語言。Jeff和他的父親只為了好玩編寫了IMSAI 8080套件計算機。他們將升級程式接到機器上,仔細研究了每一部分。

Jeff經常和父母搬家。13歲的時候,他跳過了8年級最後3個月的課程,前往索馬利亞西部的一個難民營幫忙。後來,在上高中時,他開始為流行病學家編寫一個名為Epi Info的資料收集程式;後來該程式成了實地工作的標準工具,最終以十幾種語言釋出了數十萬份。(有一個由疾病控制和預防中心維護的網站,名叫“Epi資訊故事”,上面登載了Jeff高中畢業典禮上的照片。)Jeff在尼蘇達大學遇到了妻子Heidi,過了幾年她明白了該程式的意義。她說:“他沒有吹牛,我逐漸才得知的。”他們的第一次約會是在一場女子籃球比賽中。Jeff在啦啦隊裡穿著地鼠的服裝。

在讀博期間,Jeff專注鑽研編譯器(這種軟體將人類寫的程式碼轉換成經過優化的計算機指令)。Alan Eustace曾說:“編譯器非常無聊,一點也不性感。”但是,Jeff卻說:“它們可以讓你非常接近機器。”Sanjay用食指按摩著太陽穴說,“在寫程式碼的時候,他會進入一種模式:這段程式碼的效能如何?他會幾乎半自動地把所有極端的例子都考慮一邊。”

在17歲時上康奈爾大學之前,Sanjay沒有碰過電腦。1966年他出生於印第安納州西拉斐特,但在印度北部的工業城市哥打長大。他的父親Mahipal是一名植物學教授,母親Shanta負責照顧Sanjay和他的兩個哥哥姐姐。他們是一個書生氣很濃的家庭:他的叔叔Ashok Mehta曾買過一本弗雷德裡克·福賽斯的著作《豺狼的日子》(The Day of the Jackal),裝訂磨損很嚴重,Ghemawat家的孩子們互相傳看了這本破舊的書。

Sanjay的哥哥Pankaj成了哈佛商學院有史以來最年輕的教師。(如今他是紐約州州立大學斯特恩商業學校的教授。)Pankaj和Sanjay就讀於同一所學校,而且Pankaj以多才多藝而聞名。Sanjay說:“我有點像是活在哥哥的陰影下。”他的這番話未免太謙虛了,2016年他任職於美國藝術與科學學院,但他沒有告訴父母,最後兩位老人還是從鄰居那裡得知的這個訊息。

在麻省理工讀研究生期間,Sanjay結交了一群親密的朋友。儘管如此,他從來沒有約會,即便是現如今他的約會也是“非常非常罕見”。他說他不打算組建家庭——這只是他的生活方式。他的好朋友都知道不要催促他,而他的父母在很早以前就接受了他們的兒子將孤老終生的事實。

也許是因為他太注重隱私,在Google他是一個充滿了神祕色彩的男人。大家都知道他很安靜但很淵博,一個深刻且不同尋常的人。他的辦公桌上總是放著一疊Mead的筆記本,這些筆記本可以追溯到近二十年,裡面寫滿了整潔的清單和圖表。他喜歡用鋼筆寫草書。他很少翻看舊的筆記本,只是為了思考才寫下來。

在麻省理工期間,他的研究生指導員是Barbara Liskov——一位有影響力的電腦科學家,她的研究方向是複雜程式碼庫的管理。在她看來,最好的程式碼就像一篇好文章,需要精心實現的結構,每個字都不可少。以這種方式程式設計需要站在讀者的角度考慮。而且這也意味著程式碼不僅僅是為了達到目的的手段,而其本身就是作品。Craig Silverstein曾說:“我認為他最擅長的是設計系統,你可以看看Sanjay所寫的程式碼檔案,就像一件比例勻稱的雕塑那般美麗。”

在Google,大家更熟悉Jeff。有人模仿Jeff Dean,就像有人仿照查克·諾里斯。(查克·諾里斯數數時會一直數到無限大…而且會數兩次;Jeff Dean的簡歷上寫的是他沒有做過的事情——因為這樣的話簡歷會更短一些。)對於那些瞭解他們兩個的人來說,Sanjay也同樣是天才。“Jeff非常善於提出瘋狂的新想法和原型設計,”與他們長期共事的同事Wilson Hsieh說,“而Sanjay構建的東西能用很長時間。”在生活中,Jeff更外向,Sanjay更內向。而在程式碼中,情況正好相反。Jeff的程式碼令人眼花繚亂,他可以迅速勾勒出令人吃驚的想法;但是,因為他是本著發現的精神快速完成的,所以讀者往往跟不上。Sanjay的程式碼則比較合群。

Silverstein說:“有些人的程式碼太鬆散了,一屏的程式碼資訊量非常少,你需要來回滾動才能搞清楚。而有些人的程式碼過於密集,看著那些程式碼,你不禁會想:我不想看這些程式碼。Sanjay卻可以做到折中。看著他的程式碼,你會想:好的,我也可以搞懂這些程式碼。但是,你也可以從一頁程式碼中獲得很多資訊。每當我想往Sanjay的程式碼新增新功能時,就感覺是水到渠成的事兒。我感覺像薩列裡。我知道這很偉大,但是我不明白他是如何做到的。”


640?wx_fmt=png

“今天我和 Sanjay 又將 Google 搜尋速度提高了10%”


今年春天的一個週一早上,Jeff和Sanjay站在40號樓的小廚房裡,那裡是Google人工智慧部門的所在地。他們身後的白板畫滿了矩陣代數,桌子上放著一張無監督對抗網路的論文。Jeff身穿褪色的T恤和牛仔褲,看起來像是一個改良的沙灘流浪漢;Sanjay則穿著毛衣和灰色褲子。明亮的窗前是一片高大的松樹,還有一片田野。無論Jeff在Google的哪裡辦公,公司都會為他準備好咖啡機。小廚房的櫃檯上,一臺三英尺寬的拉瑪佐科咖啡機正在嗡嗡作響。Sanjay站在咖啡機邊上說,“我們遲到了”。時間顯示8點32分。

喝完卡布奇諾後,他們走到電腦前。Jeff從自己的桌子前將一個髒兮兮的椅子挪到Sanjay椅子邊上,而Sanjay椅子卻一塵不染。Jeff把一隻腳搭在檔案櫃上,靠在後面上,而Sanjay則打量著眼前的螢幕。他們開了4個視窗:左側是Web瀏覽器和終端,用於執行分析工具;右邊是文字編輯器Emacs中的兩個檔案,一個是待辦事項列表和筆記本,另一個是花花綠綠的程式碼。Sanjay的一個筆記本放在電腦旁邊。

“好了,我們幹到哪兒了?”Sanjay問。

“我記得上次我們正在研究TensorFlow Lite的程式碼大小。”Jeff說。

這是一個與機器學習相關的重要的新軟體專案,Jeff和Sanjay擔心它會膨脹;他倆就像書籍編輯一樣,尋找可以刪減的地方。為了這個任務,他倆構建了一個新工具,而這個工具本身又需要優化。

“上次我正在努力搞清楚它究竟有多慢。”Sanjay說。

“非常慢。”Jeff說著身體向前傾,但仍然很放鬆。

“所以上次是120K位元組,”Sanjay說,“大概花了8秒吧。”

“是12萬次堆疊呼叫,”Jeff說,“不是120K位元組。”

“是文字的千位元組,大概是這個數字。”Sanjay說。

“哦,對,不好意思。”Jeff說。

“我不是很確定我們應該為每個單元設定多大的閾值,”Sanjay說,“半兆?”

“可以啊,”Jeff說。Sanjay開始敲鍵盤,Jeff緊盯著螢幕。“你說這個大小隻要比我們的樣本大就……”他沒有把後面的話說出來,因為他看到了Sanjay寫入程式碼中的答案。

開車時,Sanjay會把手放在十點和兩點,然後專心地看著前方。敲鍵盤的時候也一樣。他的雙腳分開與肩同寬,看起來很像他工作時的樣子。他細長的手指輕輕劃過鍵盤,一串串新程式碼便源源不斷地流淌進了螢幕裡。

不久,他們完成了一小段工作,Sanjay鍵入了一個命令來測試他們的進展。 他看起來很疲憊,在執行測試的時候他檢查了一下郵件。測試結束了,但他卻沒有注意到。

“嘿,”Jeff打了一個響指,指著螢幕說。雖然在談話中大家會用笑話和雙關語拿他開玩笑,但當坐在Sanjay的電腦前時,他會變得固執己見、無理並表示不贊成。Sanjay很大方地接受了這些。當他覺得Jeff太快時,他會把手從鍵盤上拿下來,並張開五指,表示“停”。(一般來說,Jeff是加速器,Sanjay是剎車)。即使他們之間發生爭論時也是如此:在20年的相處時間裡,他們不曾有過一次高聲爭吵。

Sanjay滾動滑鼠,將新程式碼部分顯示出來。“看起來這些都可以放到個函式裡,對吧?”Jeff說。

“嗯。”Sanjay同意了。

Jeff一邊把手指關節掰得啪啪響,一邊說,“似乎可行。 我們應該這樣做嗎?”

Sanjay很謹慎說:“我覺得……”

“那我們就這麼無視一個問題?”Jeff有點憤怒地說。

相關推薦

TensorFlowHadoopMapReduce 他們誕生

【CSDN編者按】迄今為止,Google帝國已創立二十載。在這背後,離不開一眾“開國元勳”的豐功偉績,譬如聲名遠揚的MapReduce、TensorFlow、乃至於Hadoop——這些都和Jeff Dean、Sanjay Ghemawat兩個人有著千絲萬縷的聯絡。作為最早的一批

打造未來城市真是人類終極樂土嗎?

谷歌在大眾的認知中,終極樂土到底是什麽樣子?是能在其中紙醉金迷,夜夜笙歌,還是小橋流水、綠意盎然,抑或智能遍地,怡然自得?正如一千個人心中有一千個哈姆雷特,對終極樂土的暢想也有著不同的見解和認知。而回歸現實層面,已經有企業在發力它們心目中的人類終極樂土,並在將其變得觸手可及。這其中,谷歌似乎已經走在了前面。近

CEO皮猜我們想服務中國使用者,但是沒想好提供何種服務

郭一璞 發自 凹非寺 量子位 報道 | 公眾號 QbitAI 從今年年初開始,谷歌就陷入了內部的重重矛盾。 從軍事合同,“中國版”搜尋引擎,到包庇性騷擾事件,谷歌員工不斷通過上書、遊行、辭職等各種方式,抨擊自家的管理層。 員工不斷的“揭竿而起”,管理層忙不迭的

MIT與專家合著論文機器學習和神經科學的相互啟發與融合

摘 要 神經科學專注的點包括計算的細節實現,還有對神經編碼、力學以及迴路的研究。然而,在機器學習領域,人工神經網路則傾向於避免出現這些,而是往往使用簡單和相對統一的初始結構,以支援成本函式(cost funcion)的蠻力最優化。近期出現了兩項機器學習方面的進展,或許會將這兩種看似不同的

大牛說為什麼 Kotlin 比你們用的那些垃圾語言

【伯樂線上導讀】:5月18日,安卓團隊在谷歌 I/O 2017 大會上宣佈 Kotlin 成為官方頭等支援語言。這條爆炸性資訊在當天就是 Hacker News 首頁熱門討論,與此同時,谷歌技術大牛 Steve Yegge 也寫了一篇關於 Kotlin 的使用體會總

解決瀏覽器無法從該網站新增應用拓展程式和使用者指令碼(轉)

今天將谷歌瀏覽器升級到了最新的版本,在安裝拓展應用的時候,卻發現無法新增應用、拓展程式和使用者指令碼,讓我很是鬱悶,現整理解決方法如下:   1.在Google Chrome瀏覽器的桌面快捷方式上滑鼠右鍵,選擇屬性(R),進入如下介面    2.

23個深度學習庫大排名TensorFlow最活躍Keras最受歡迎,Theano 屌絲逆襲

開源最前線(ID:OpenSourceTop) 猿妹 編譯 來源:https://github.com/thedataincubator/data-science-blogs/blob/master/deep-learning-libraries.md The Data Incubator 最近

[Android編譯(二)] 從官網下載android 6.0原始碼編譯並刷入nexus 6p手機

1 前言 經過一週的奮戰,終於從谷歌官網上下載最新的android 6.0.1_r62原始碼,編譯成功,併成功的刷入nexus6p,接著root完畢,現寫下這篇部落格記錄一下實踐過程。 2 簡介 自己下載android系統原始碼,修改定製,然後編譯刷入

“不支援”CDMA實為ASOP ROM變動

【賽迪網訊】日前,谷歌在開發商支援頁面移除了兩款智慧終端裝置,這兩款產品是目前美國CDMA運營商Sprint和Verizon銷售的4G LTE裝置,包括 LTE Galaxy Nexus和XOOM LTE and Nexus S 4G。一石激起千層浪,在國內甚至流傳出安卓開源專案(Android Open

2017新品釋出會賦能AI 三大原則 軟硬結合

北京時間10月5日凌晨,當我們在國內賞月的時候,谷歌卻在舊金山召開了2017年新品釋出會,這場釋出會的主旋律還是“AI First”,並且這次更硬了。 在釋出會上,谷歌CEO劈柴總結了AI優先

TPU研究論文專注神經網路專用處理器

OFweek通訊網訊 過去十五年裡,我們一直在我們的產品中使用高計算需求的機器學習。機器學習的應用如此頻繁,以至於我們決定設計一款全新類別的定製化機器學習加速器,它就是 TPU。 TPU 究竟有多快?今天,聯合在矽谷計算機歷史博物館舉辦的國家工程科學院會議上發表的有關 TPU 的演講中,我們釋出了一項研究,

新一代WaveNet 深度學習怎麼生成語音? | 2分鐘論文

這裡是,雷鋒字幕組編譯的Two minutes paper專欄,每週帶大家用碎片時間閱覽前沿技術,瞭解AI領域的最新研究成果。原標題 NATURAL TTS SYNTHESIS BY CONDITIONING WAVENET ON MEL SPECTROGRAM PREDIC

釋出Flutter Alpha支援Windows

![](https://img2020.cnblogs.com/other/467322/202009/467322-20200925072943149-635306570.png) > **老孟導讀**:Windows來了,Mac、Linux、Web還遠嗎? > > 本文翻譯自[http

以太坊已經融入的血液CEO Sundar Pichai和創始人Sergey Brin的兒子是以太坊礦工

谷歌聯合創始人謝爾蓋•布林(Sergey Brin)和執行長(CEO)桑達爾•皮查伊(Sundar Pichai)的共同點遠不止他們的工作。這兩位技術億萬富翁都有精通加密貨幣的兒子,他們都是以太坊礦工。     據《商業內幕》(Business Insider)報道,

放棄智慧隱形眼鏡專案 用眼淚檢測血糖恐不

@央廣軍事11月10日訊息,2018中國航展上首次公開展出的“瞭望者Ⅱ”察打一體導彈無人艇,是剛剛成功進行首發導彈飛行試驗命中靶心的實艇,試驗成功後隨即吊裝到展位與公眾見面。據媒體此前報道,該艇是中國第一艘導彈無人艇,也是繼以色列拉斐爾海上騎士後全球第二個成功發射導彈的無人艇,填補了國內導彈無人艇這一技術空白

SSHHadoopYarn體系

SSH免密登陸 1、生成金鑰對 #rsa 是加密演算法 ssh-keygen -t rsa 然後一路回車 2、檢視生成的金鑰對id_rsa.pub是公鑰,id_rsa是私鑰 輸入 ls .ssh 輸出 id_rsa id_rsa.pub known_hosts

HiveHadoopHBase

1、Hive、Hadoop、Hbase  1)Hive是為了簡化使用者編寫MapReduce程式而生成的一種框架,使用MapReduce做過資料分析的人都知道,很多分析程式除業務邏輯不同外,程式流程基

springclouddubbohadoopzookeeper等概念的區別

hadoop是一個分散式的計算框架,主要用於分散式的儲存(HDFS)和計算(MapReduce,可以被Spark替代),其機器間的協議使用的RPC。其通俗的解釋是將一個計算同時分派到很多機器一起算,每個機器算一部分。 springcloud和dubbo都是分散式的服務框架,

Java那些關於集合的知識在這裡了

前言 在Java中,集合的使用可謂是重中之重 本文將獻上一份 全面 & 詳細的Java集合學習攻略,希望您們會喜歡。  目錄   1. 簡介    2. 與陣列的區別 Java集合 與

【stark_summer的專欄 】專注於開發分散式任務排程框架分散式同步RPC非同步MQ訊息佇列分散式日誌檢索框架、hadoop、sparkscala等技術 如果我的寫的文章能對您有幫助,請您能給點捐助,請看首頁置頂

專注於開發分散式任務排程框架、分散式同步RPC、非同步MQ訊息佇列、分散式日誌檢索框架、hadoop、spark、scala等技術 如果我的寫的文章能對您有幫助,請您能給點捐助,請看首頁置頂...