支付寶王益:40歲寫30年程式碼是一種什麼體驗?
對於螞蟻金服研究員王益而言,2019年是個頗有紀念意義的年份。今年他整40歲。從10歲開始,寫程式碼整30年。這30年來,他當過“不務正業”的學生,創紀錄地在大一就考下系統分析員,“單槍匹⻢”闖蕩過從國內到矽谷的多家知名網際網路科技公司,和AI領域許多傳奇人物都有所交集。不惑之年對於許多工程師來說,或許已是需要焦慮的年齡,但40歲的王益在螞蟻金服每天都過得很充實:起床,自由泳一千米,然後去做他最喜歡的事——寫程式碼和組織大家一起寫程式碼。
2019年9月11日,在上海舉辦的Google開發者大會上,螞蟻金服研究員王益分享了新開發的分散式深度學習系統ElasticDL。這是他來到螞蟻金服的一年之中所做的第二個開源專案,主要用於大幅提升叢集總體利用率以及深度學習團隊的工作效能。之前開源的 SQLFlow系統在短短的幾個月之間,已經在GitHub上獲得了三千多顆星星。
2019對於王益而言是個頗有紀念意義的年份, 今年他整40歲,寫程式碼整30年。
這聽上去是一件不可思議的事——30年前,上世紀的80年代末,他在⻓沙上小學,全城都很難找出一位能教程式設計的老師,個人電腦更是一個陌生名詞,一臺以蘋果2為原型、可以用BASIC語言程式設計的 “中華學習機”售價7000人⺠幣,在當時幾乎可以買下一套房子。
幸運的是,王益在10歲那年得到了這樣一件貴重的禮物,從這臺學習機和一本BASIC語言教材開始,他開啟了與程式碼結緣的人生。
“我那時不是個好學生,經常受‘別人家的孩子’打擊,老師和同學都覺得寫程式碼是不務正業。”回想起30年來的經歷,這位清華博士、足跡從國內到矽谷歷經多家知名網際網路科技公司的學霸笑談自己“活得比較任性”,“但我就是想做與眾不同的事。別人越說這樣不行,我就越想用這種方式證明自己。”
初中畢業那年的暑假,他用“中華學習機”和自己焊接的電路板,把自家的老式“威力牌”雙筒洗衣機改造成了自動洗衣機。同時,他用Apple BASIC語言和6502彙編混合程式設計,寫了人生中第一個遊戲。高中三年,其他同學努力備考,他卻加班加點自學了大學計算機系所有課程,隨後參加計算機水平考試,先後獲得了程式設計師、高階程式設計師、以及最高階別系統分析員資格。2018年,他獲得Google APAC Innovation Award。從不斷摸索程式碼世界的少年時代,到專注於AI基礎架構和系統開發的求學工作生涯,這份“任性”一直伴隨他走到今天。
“我經常從零開始。選擇去做什麼的一大標準是‘有意思’。”
相比於規劃一條穩妥的職業發展道路,王益更願意順應自己強烈的好奇心,去選擇最困難但最有意思的探索方向。他在中國和美國網際網路公司都工作過,也分別在美國公司的中國分部和中國公司的美國分部工作過。他的足跡遍及國內BAT三家。任性的是,每次跳槽, 他都從一個人coding一個創新專案開始,吸引同事們加入,從而組建團隊。雖然2011年就在騰訊作為廣告系統技術總監,但是他從不在跳槽時要求帶何等規模的團隊。
2014年,王益帶著妻子和兩個月大的女兒離開騰訊移居矽谷。“一切都歸零了。工資減半。”他笑笑說。不過憑著多位學界和業界領袖的推薦,他很快就安頓下來,不到一年就開始在矽谷創業,作為Head of Research Scienets 參與建立了AI創業公司 ScaledInference。這是一家人才濟濟的創業公司。人工智慧行業的領袖人物、加州大學伯克利分校的Michael Jordan教授是這家公司顧問。陸奇曾代表微軟到訪,討論技術合作。“可惜我們不夠關注業務落地,做的不夠好。技術研發一定要有落地的能力。”事後,王益不無遺憾的說。
在加入螞蟻之前,王益在百度矽谷研究院工作,負責開源深度學習系統PaddlePaddle。在歷經兩年的艱苦開發,新一代技術Fluid開始系統地落地百度各個業務之後,他發起了他在 PaddlePaddle的最後一個子專案——一條太陽能驅動的無人駕駛船。這是一條雙體船,由他和五歲女兒的兩條划艇構成。船上的膝上型電腦執行基於immitation learning的人工智慧系統,自動學習駕駛者的技巧。為了船體穩定,他在自家⻋庫裡焊接了連線兩條划艇的金屬框架。便於拆裝的結構,可以裝上他的皮卡,方便下水測試。
做出加入螞蟻金服的決定,也是出於同樣的理由——“有意思”。“這裡的業務很新穎,對AI 有著更加多樣化的需求。”如何用AI解決金融行業的問題,是和他以往所面對的完全不同的全新挑戰。
SQLFlow:分析師與AI模型間的翻譯
加入螞蟻金服不久,王益就意識到自己之前的朦朧猜想越來越清晰地被驗證:和主要依靠流量與廣告賺錢的傳統網際網路公司不同,螞蟻金服不是純網際網路公司,它有獨特的商業模式和對於工具的獨到需求。
此前的十多年中,他的大部分經歷是在傳統網際網路行業做搜尋推薦技術,這一類業務所需的模型總數比較有限,只需要算相關性的模型、排序的模型等,一個成熟的模型通常會有幾十上百人維護,每年修改調整去提升效能。但在螞蟻金服,這種模式被顛覆了。因為金融行業的資料遠比社交、電商和搜尋引擎的資料要稀疏,很難完全靠機器來挖掘出規律,必須依賴金融專業分析師的智慧。分析師大量使用SQL語言來驗證想法,或者進一步做探索,這些結論對金融業務非常關鍵。
每一位分析師平均每天要提交很多個AI任務,這些任務對AI模型的需求各不相同,差異性特別顯著。但是,模型是建模團隊用Python語言描述的,分析師們如果要呼叫模型,要麼需要學習Python語言,要麼需要專配一位工程師,效率難以顯著提高。
語言不通,所以需要翻譯,那麼能否在SQL和Python之間也設立一個翻譯?
基於這樣的想法,王益和團隊一起開發了SQLFlow,這個系統好比一個“翻譯機”,能將分析師們輸入的SQL命令翻譯成Python語言,這樣一來,分析師無需學習Python,使用SQL語言就能夠處理資料、訓練AI模型,並使用訓練好的模型來回答業務問題。
這套系統更重要的作用,是重新界定了分析師、建模團隊和工具開發團隊的責任,讓同一個機構裡的這三個工種有了清晰的分工,有效形成合力。
ElasticDL:一個“聰明”的智慧學習系統
透過SQLFlow被呼叫的模型,會基於基礎架構來進行分散式執行,這套分散式的智慧學習系統,就是剛剛開源的ElasticDL。ElasticDL基於TensorFlow2.0構建,是面向未來的下一代技術,其很重要的獨特之處,就在於它很“聰明”。
首先,它能和SQLFlow一起,補足簡短的SQL程式翻譯成複雜的Python程式的過程中所需的資訊。根據深度學習模型的數學特性,它能夠決定用什麼樣的方式來進行計算,還能在計算過程中智慧地決定一些引數。
其次,它的容錯和彈性排程機制,能讓叢集的利用效率更高。使用者提交需求之後,不再需要“排隊”等待資源釋放才開始計算,計算會“插空”進行,這樣閒置和等待時間更短,大幅度減少了浪費在等待上的系統資源和人力資源。
在資料收集能力極大提升的今天,擁有能算“大”資料的能力,比算得快更為重要。這是王益一直未變的觀點。ElasticDL的開發,著眼之處不僅是計算本身的提速,更是針對雲端計算時代中,資料量大且多人共用叢集的特點而進行的排程最佳化。“等待的時間有時會佔到60%-80%,如果不能有效減少這部分的浪費,只是提升計算速度的話,對整體效率的提升就是杯水⻋薪。”王益說,但是ElasticDL的彈性排程能在資源不足的情況下,有多少就先呼叫多少,讓計算儘快啟動。
⻓遠看來,ElasticDL還將支援各種學習模式,以順應金融行業對AI的多種需求。很多在傳統網際網路行業可有可無的訓練模式,在金融行業都很有廣闊的應用場景,比如保障資料安全的同時還能共享資料背後規律的共享智慧,或者建立可以進行各種大膽試驗的虛擬環境,這些面向未來的需求,在ElasticDL的設計之中也有所考慮。
對於一直在做AI基礎架構的王益來說,對AI有著各種不同需求的金融行業,是一片全新的馳騁疆場。無數新的問題等待他去嘗試,去尋找新的解法,讓他樂此不疲。
實踐出真知,無需等待理論完美證明
“數學模型和分散式架構是互相影響的,只瞭解其中任何一面,在這個領域都做不好。要為深度學習的架構去改數學模型,也要因為數學模型的數學特點去做架構調整。”
站在今天回顧過去做AI基礎架構的十多年,王益覺得這是自己所學到的最重要一課。
這一想法的首次驗證,是在他2009年離開Google進入騰訊之後寫出的Peacock系統。和在Google所做的語義理解專案不同,這次他將演算法和分散式架構一起考慮調整,讓語義理解的規模擴大了上千倍,後來集結成了論文發表在ACM Transactions on Intelligent Systems and Technology雜誌上,廣為業界知曉。
2015年,他進入百度矽谷參與語音識別專案Deep Speech 2,這一專案不僅被MIT科技評論評為 2016年全球十大科技突破之一,也成為他了解深度學習的一個契機。他一度堅持要有完美的理論論證才能進入實踐驗證,因為深度學習的理論未經嚴格推敲,他一直認為只有統計學習才是“正道”。
在百度,王益獲得深度學習科學家徐偉的推薦,去負責深度學習平臺PaddlePaddle。在不斷探索解決實際問題的過程之中,他的想法改變了。
“並不一定先要有完整論證的理論才去進行實踐,也可以先實踐,實踐出真知。實踐之後再總結提升為理論。”王益說,“這就像是在牛頓發現力學原理之前的幾千年前,人類就已經利用槓桿原理修起了金字塔。”
Code Review:從最初的震撼到⻓年的習慣
今年5月,SQLFlow宣佈開源,之後僅四個月,ElasticDL也宣佈開源,這在螞蟻金服的歷史上並不多⻅,卻是王益的堅持。他認為唯有開源才能保證資訊透明,唯有讓程式碼直接面對全社會,才能全方位的接受審視和檢驗,對寫程式碼的人自身來說,也是一種自我約束。
“開源和codereview不僅是個技術問題,更是管理學問題、社會學問題,關係到如何把大家組織起來變成更高效的團隊。”王益說。
Code Review對他自己而言,也是人生中一段難以磨滅的經歷。他用“最初的震撼”來描述12年前初出校⻔加入Google中國時的體驗。當時他已經寫了18年程式,手握系統分析師資格,還特別研究過了Google的Code style,所以初次遭遇Code Review時並沒有太當回事:“以為自己寫了這麼多年程式,怎麼都還行吧。”
但現實是⻣感的: 他在Google寫出的第一個程式,總共不過100行程式碼,卻被來自美國的同事和好友Jerad提出了120行意⻅。“當時深受打擊,簡直覺得屈辱。”
他壓制了情緒,仔細去看那些意⻅,這才發現每一條都真誠且很有幫助。“從那一刻起, Code Review 成為了我們的工作方式。”每天和這些同事們一起coding,互相review,讓中國工程師們很快知道了應當關注哪些地方,應當如何溝通合作。因此,不管是騰訊的 Peacock,百度的PaddlePaddle新版本Fluid,還是螞蟻的SQLFlow 和 ElasticDL 都是王益先開發出原型,再吸引感興趣的同事一起來完善。
這種工作方式的影響一直延續到了今天,他也希望能夠以這種方式去影響更多的工程師。 “搞技術必須實事求是。”王益說,程式碼是工程師最好的名片,藏著掖著、互不交流,就無法帶來信賴、合作與提升。幫助大家瞭解和實踐code review,需要花費大量的時間和精力。“白天弄管理,晚上寫程式”這是王益總結的在騰訊工作時的辦法。“後來在百度和螞蟻,我更刻意地專注做技術工作,確保精力更集中。”
這正是現在的網際網路科技公司的組織管理和人才選拔之中不可或缺的一課。在開源機制之中,每個人都會對自己的coding更加認真,主動的人會脫穎而出,被動的人會自動淘汰,團隊成員之間會自發地相互協同,互相認同,找到溝通和合作的方式。
“現在技術領域的成果已經很難靠單槍匹⻢的個人英雄主義去取得,團隊合作必不可少。希望用這種方式來找到開朗真誠的夥伴,一起去摘高處的果實。”王益說。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69904796/viewspace-2660459/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 40 歲了還在寫程式碼,是一種幸福,還是一種悲哀?
- 如果40歲了還在寫程式碼,是一種幸福,還是一種悲哀?
- 如果40歲了還在寫程式碼 是一種幸福 還是一種悲哀?
- 30歲轉行做初級程式設計師是一種什麼樣的體驗?程式設計師
- 在大公司寫程式碼是一種什麼樣的體驗?
- 在Excel VBA中寫SQL,是一種什麼體驗ExcelSQL
- 30 歲轉行做初級程式設計師是什麼樣的體驗程式設計師
- 搶先體驗! 在瀏覽器裡寫 Flutter 是一種什麼體驗?瀏覽器Flutter
- 30歲轉行做初級程式設計師是一種怎樣的體驗?程式設計師
- 程式設計師40歲後還在寫程式碼,是幸福還是悲哀?程式設計師
- 程式碼寫的好,出過暢銷書,還拿過賽車冠軍,這是一種什麼體驗?
- 用 C 語言寫面向的物件是一種什麼樣的體驗物件
- 用C語言寫面向的物件是一種什麼樣的體驗C語言物件
- 在小公司程式設計是一種什麼樣的體驗?程式設計
- 在3A遊戲公司工作是什麼體驗?30歲3D藝術家經驗分享遊戲3D
- 在 2016 年學 JavaScript 是一種什麼樣的體驗?JavaScript
- 被文獻坑是一種什麼樣的體驗?
- 在 MacBook 上使用 Win 10 是一種什麼體驗Mac
- 寫在臨近40歲的年齡
- 用Kotlin改寫PHP程式是什麼樣的體驗KotlinPHP
- 在 2016 年學 Android 是一種什麼樣的體驗?Android
- 在大疆做測試開發是一種什麼體驗?
- 什麼是HTTP 304狀態程式碼?HTTP
- 28歲裸辭轉行前端是怎樣的一種體驗前端
- 在MacBook上使用Win 10是一種什麼樣的體驗Mac
- 徒手一千行以上程式碼是怎樣一種體驗?
- 和小姐姐面試python,是種什麼體驗?面試Python
- 深度學習中資料集很小是一種什麼樣的體驗深度學習
- 在Android上使用JS引擎是一種什麼樣的體驗?AndroidJS
- 有個AI陪你一起寫程式碼,是種怎樣的體驗?| 附ICLR論文AIICLR
- 11歲少女叫板支付寶!會寫程式碼的孩子,到底多可怕?
- Chrome中開啟ssh一種什麼體驗Chrome
- 改和看別人的程式碼是一種什麼感受
- 最終一輪面試被 Google 刷掉,這是一種什麼樣的體驗?面試Go
- 維護一個開源專案25年是什麼體驗?
- 開發中不會使用Git是種什麼體驗Git
- React框架實現移動頁面翻譯是一種什麼體驗?React框架
- 自媒體+雲桌面是一種什麼模式?模式