從矽谷公司哪家強,到人人在議的泡沫問題,大數據和人工智慧如何結合?2015年的科技前瞻是怎樣一副圖景?來自矽谷的Coursera軟體工程師董飛將其近日在史丹福公開講座上的演講和各種場合的問答整理出來和大家分享。
1、目前矽谷最紅的高科技新創公司有哪些?
在矽谷大家非常熱情的談創業談機會,我也透過自己的一些觀察和積累,看到了不少最近幾年湧現的熱門新創公司。上表是華爾街網站的全世界創業公司融資規模評選。它本來的標題是billion startup club,我在去年的講座上也分享過。不到一年的時間,截至到2015年1月17日,現在的排名和規模已經發生了很大的變化。
首先估值在10 Billlon的達到了7家,而一年前一家都沒有。第二;第一名是中國家喻戶曉的小米;第三,前20名中,絕大多數(8成在美國,在加州,在矽谷,在舊金山!)比如Uber、Airbnb、Dropbox、Pinterest;第四,裡面也有不少相似模式成功的,比如Flipkart就是印度市場的淘寶,Uber與Airbnb都是共享經濟的範疇。所以大家還是可以在行動(Uber)、大數據(Palantir)、消費級網路、通訊(Snapchat)、支付(Square)、O2O App 裡尋找下大機會。這裡面很多公司我都親自面試和感受過他們的環境。
2、有如此多高估值公司,是否意味著存在很大的泡沫?
看了那麼多高估值公司,很多人都覺得非常瘋狂,這是不是很大泡沫了,泡沫是不是要破了,是很多人的疑問。我認為在矽谷這個充滿夢想的地方,投資人鼓勵創業者大膽去做,同樣也助長了泡沫,很多公司在幾個月的時間就會估值翻2、3 倍,如Uber,Snapchat 上我也驚訝於他們的巨額融資規模。這張圖就是講「新興技術炒作」週期,把各類技術按照技術成熟度和期望值分類。
「創新萌芽Innovation Trigger」、「期望最頂點Peak of Inflated Expectation」、「下調預期至低點Trough of Disillusion」、「回歸理想Slope of Enlightenment」、「生產率平台Plateau of Productivity」,越往左,技術約新潮,越處於概念階段;越往右,技術越成熟,越進入商業化應用,發揮出提高生產率的效果。
縱軸代表預期值,人們對於新技術通常會隨著認識的深入,預期不斷升溫,伴之以媒體炒作而到達頂峰;隨之因技術瓶頸或其他原因,預期逐漸冷卻至低點,但技術技術成熟後,期望又重新上升,重新積累用戶,然後就到了可持續增長的健康軌道上來。
Gartner每年發表技術趨勢炒作圖。今年和去年的圖對比顯示,物聯網、自動駕駛汽車、消費級3D列印、自然語言問答等概念正在處於炒作的頂峰。而大數據已從頂峰滑落,NFC和雲端運算接近谷底。
3、未來,高科技創業的趨勢是什麼?
我先提一個最近看的一部電影《模仿遊戲》(Imitation Game),講計算機邏輯的奠基者艾倫圖靈艱難的一生。他當年為破譯德軍密碼製作了圖靈機為二戰勝利作出卓越貢獻,挽回幾千萬人的生命,但是在那個時代因為同性戀被判化學閹割,自殺結束了短暫的42歲生命。他的一個偉大貢獻就是在人工智慧的開拓工作,他提出圖靈測試(Turing Test),測試某機器是否能表現出與人等價或無法區分的智慧。
今天人工智慧已經有了很大進步,從專家系統到基於統計的學習,從支持向量機到神經網路深度學習,每一步都帶領機器智慧走向下一個階梯。
Google資深科學家吳軍博士提出當前技術發展三個趨勢,第一,雲端運算和和行動網路,這是正在進行時;第二,機器智慧,現在開始發生,但對社會的影響很多人還沒有意識到;第三,大數據和機器智慧結合,這是未來時,一定會發生,有公司在做,但還沒有太形成規模。他認為未來機器會控制98%的人,而現在我們就要做個選擇,怎麼成為剩下的2%?
4、為什麼大數據和機器智慧結合的未來一定會到來?
其實在工業革命之前(1820年),世界人均GDP在1800年前的兩三千年裡基本沒有變化,而從1820年到2001年的180年裡,世界人均GDP從原來的667美元增長到6,049美元。由此足見,工業革命帶來的收入增長的確是翻天覆地的。這裡面發生了什麼,大家可以去思考一下。但人類的進步並沒有停止或者說穩步增長,在發明了電力、電腦、網路、行動網路,全球年GDP增長從萬分之5到2%,資訊也急劇增長,根據計算,最近兩年的資訊量是之前30 年的總和,最近10年是遠超人類所有之前累計資訊量之和。在計算機時代,有個著名的摩爾定律,就是說同樣成本每隔18個月晶體管數量會翻倍,反過來同樣數量晶體管成本會減半,這個規律已經很好的match了最近30年的發展,並且可以衍生到很多類似的領域:儲存、功耗、頻寬、像素。
馮諾伊曼是20世紀最重要的數學家之一,在現代計算機、博弈論和核武器等諸多領域內有傑出建樹的最偉大的科學全才之一。他提出(技術)將會逼近人類歷史上的某種本質的奇點,在那之後全部人類行為都不可能以我們熟悉的面貌繼續存在。這就是著名的奇點理論。目前會越來越快指數性增長,美國未來學家Ray Kurzweil稱人類能夠在2045年實現數位永生,他自己也創辦奇點大學,相信隨著資訊技術、無線網、生物、物理等領域的指數級增長,將在2029年實現人工智慧,人的壽命也將會在未來15年得到大幅延長。
5、國外值得關注的大數據公司有哪些?中國又有哪些?
這是2014年總結的Big Data公司列表,我們大致可以分成基礎架構和應用,而底層都是會用到一些通用技術,如Hadoop、Mahout、HBase、Cassandra,我在下面也會涵蓋。我可以舉幾個例子,在分析這一塊,cloudera、hortonworks、mapr作為Hadoop的三劍客,一些運維領域,mangodb、couchbase都是nosql的代表,作為服務領域AWS和Google BigQuery劍拔弩張,在傳統數據庫,Oracle收購了MySQL,DB2老牌銀行專用,Teradata做了多年數據倉庫。上面的Apps更多,比如社交消費領域Google、Amazon、Netflix、Twitter,商業智慧:SAP、GoodData,一些在廣告媒體領域:TURN、Rocketfuel,做智慧運維sumologic等等。去年的新星Databricks伴隨著Spark的浪潮震撼Hadoop的生態系統。
對於迅速成長的中國市場,大公司也意味著大數據,BAT三家都是對大數據的投入也是不惜餘力。
我5年前在百度時就提出框計算,最近兩年他們成立了矽谷研究院,挖來Andrew Ng作為首席科學家,研究項目就是百度大腦,在語音、圖片識別大幅提高精確度和召回率,最近還做了個無人自行車,非常有趣。騰訊作為最大的社交應用對大數據也是情有獨鍾,自己研發了C++平台的海量儲存系統。淘寶去年雙十一主戰場,2分鐘突破10億,交易額突破571億,背後是有很多故事,當年在百度做Pyramid(按Google三輛馬車打造的金字塔三層分佈式系統)的有誌之士,繼續在OceanBase創造神話。而阿里雲當年備受爭議,馬雲也懷疑是不是被王堅呼嚨,最後經歷了雙十一的洗禮證明了阿里雲很可靠。雷軍對大數據也是寄託厚望,一方面這麼多數據幾何級數增長,另一方面儲存頻寬都是巨大成本,沒價值就會破產。
6、Hadoop是現今最流行的大數據技術,在它出現的當時,是什麼造成Hadoop流行?當時Hadoop具有哪些設計上的優勢?
看Hadoop從哪裡開始的,不得不提Google的先進性,在10多年前,Google出了3篇paper論述分佈式系統的做法,分別是GFS、MapReduce、BigTable,非常NB的系統,但沒人見過,在工業界很多人就想按其思想去仿作,當時Apache Nutch Lucene的作者Doug Cutting也是其中之一,後來他們被Yahoo收購,專門成立Team投入,就是Hadoop的開始和大規模發展的地方,之後隨著Yahoo的強人去了Facebook、Google,也有人成立了Cloudera、Hortonworks等大數據公司,把Hadoop的實踐帶到各個矽谷公司。而Google還沒有停止,又出了新的三輛馬車Pregel、Caffeine、Dremel,後來又有很多步入後塵,開始新一輪開源大戰。
為啥Hadoop就比較適合做大數據呢?首先擴展很好,直接透過增加節點就可以把系統能力提高,它有個重要思想是移動計算而不是移動數據,因為數據的移動是很大的成本需要網路頻寬。其次它提出的目標就是利用廉價的普通電腦(硬碟),這樣雖然可能不穩定(硬碟壞的機率),但透過系統級別上的容錯和冗餘達到高可靠性。並且非常靈活,可以使用各種data,二進制,文檔型,記錄型。使用各種形式(結構化,半結構化,非結構化所謂的schemaless),在按需計算上也是個技巧。
7、圍繞在Hadoop周圍的有哪些公司和產品?
提到Hadoop一般不會說某一個東西,而是指生態系統,在這裡面太多交互的組件了,涉及到IO,處理,應用,配置,工作流。在真正的工作中,當幾個組件互相影響,讓你頭痛的維護才剛剛開始。我也簡單說幾個:Hadoop Core就三個HDFS,MapReduce,Common,在外圍有NoSQL:Cassandra、HBase,有Facebook開發的數據倉庫Hive,有Yahoo主力研發的Pig工作流語言,有機器學習算法庫Mahout,工作流管理軟體Oozie,在很多分佈式系統選擇Master中扮演重要角色的Zookeeper。
8、能否用一般人都能理解的方式解釋一下Hadoop的工作原理?
我們先說HDFS,所謂Hadoop的分佈式文件系統,它是能真正做到高強度容錯。並且根據locality原理,優化連續儲存。簡單說就是分配大的數據塊,每次連續讀整數個。如果讓你自己來設計分佈式文件系統,在某機器掛掉還能正常訪問該怎麼做?首先需要有個master 作為目錄查找(就是Namenode),那麼數據節點是作為分割好一塊塊的,同一塊數據為了做備份不能放到同一個機器上,否則這台機器掛了,你備份也同樣沒辦法找到。HDFS用一種機架位感知的辦法,先把一份拷貝放入同機架上的機器,然後在拷貝一份到其他服務器,也許是不同數據中心的,這樣如果某個數據點壞了,就從另一個機架上調用,而同一個機架它們內網連接是非常快的,如果那個機器也壞了,只能從遠程去獲取。這是一種辦法,現在還有基於erasure code本來是用在通信容錯領域的辦法,可以節約空間又達到容錯的目的,大家感興趣可以去查詢。
接著說MapReduce,首先是個編程範式,它的思想是對批量處理的任務,分成兩個階段,所謂的Map階段就是把數據生成key、value pair,再排序,中間有一步叫shuffle,把同樣的key運輸到同一個reducer上面去,而在reducer上,因為同樣key已經確保在同一個上,就直接可以做聚合,算出一些sum,最後把結果輸出到HDFS上。對應開發者來說,你需要做的就是編寫Map和reduce函數,像中間的排序和shuffle網路傳輸、容錯處理,框架已經幫你做好了。
9、MapReduce模型本身也有一些問題?
第一:需要寫很多底層的代碼不夠高效率,第二:所有的事情必須要轉化成兩個操作Map/Reduce,這本身就很奇怪,也不能解決所有的情況。
10、Spark從何而來?Spark相比於Hadoop MapReduce設計上有什麼樣的優勢?
其實Spark出現就是為了解決上面的問題。先說一些Spark的起源。發自2010年Berkeley AMPLab,發表在hotcloud是一個從學術界到工業界的成功典範,也吸引了頂級VC:Andreessen Horowitz的注資。在2013年,這些強人(Berkeley系主任、MIT最年輕的助理教授)從Berkeley AMPLab出去成立了Databricks。它是用函數式語言Scala編寫,Spark簡單說就是內存計算(包含迭代式計算、DAG計算、流式計算)框架,之前MapReduce因效率低下大家經常嘲笑,而Spark的出現讓大家很清新。Reynod作為Spark核心開發者,介紹Spark性能超Hadoop百倍,算法實現僅有其1/10或1/100。在去年的Sort benchmark上,Spark用了23分鐘跑完100TB的排序,刷新之前Hadoop保持的世界紀錄。
11、如果想從事大數據方面的工作,是否可以推荐一些有效的學習方法?有哪些推薦的書籍?
我也有一些建議,首先還是打好基礎,Hadoop雖然是火熱,但它的基礎原理都是書本上很多年的積累,像算法導論、Unix設計哲學、數據庫原理、深入理解計算機原理、Java設計模式,一些重量級的書可以參考。還有我曾經分享過,Hadoop最經典的the definitive guide。
其次是選擇目標,如果你像做數據科學家,我可以推薦coursera的data science課程,通俗易懂。學習Hive、Pig這些基本工具,如果做應用層,主要是熟悉Hadoop的一些工作流程,包括一些基本調優。如果是想做架構,除了能搭建集群,對各個基礎軟體服務很了解,還要理解計算機的瓶頸和負載管理,Linux的一些性能工具。最後還是要多加練習,大數據本身就是靠實踐的,你可以先按API寫書上的例子,能夠先調試成功,接下來就是多積累,當遇到相似的問題能找到對應的經典模式,再進一步就是實際問題,也許周邊誰也沒遇到,你需要些靈感和網上問問題的技巧,然後根據實際情況作出最佳選擇。
12、與大數據技術關係最緊密的就是雲端運算,您曾在Amazon雲端運算部門工作過,能否簡單介紹一下亞馬遜的Redshift框架嗎?
我在Amazon雲端運算部門工作過,所以還是比較了解AWS,總體上成熟度很高,有大量startup是基於其開發,比如有名的Netflix、Pinterest、Coursera。Amazon還是不斷創新,每年召開reInvent大會推廣新的雲端產品和分享成功案例,在這裡面我隨便說幾個:像S3 是簡單面向對象的儲存,DynamoDB是對關係型數據庫的補充,Glacier對冷數據做歸檔處理,Elastic MapReduce直接對MapReduce做打包提供計算服務,EC2就是基礎的虛擬主機,Data Pipeline會提供圖形化界面直接串聯工作任務。
Redshift,它是一種(massively parallel computer)架構,是非常方便的數據倉庫解決方案,就是SQL接口,跟各個雲端服務無縫連接,最大特點就是快,在TB到PB級別非常好的性能,我在工作中也是直接使用。它還支援不同的硬體平台,如果想速度更快,可以使用SSD的,當然容量就小一點。
13、Linkedin採用了哪些大數據開源技術?
在Linkedin,有很多數據產品,比如People you may like、job you may be interested,你的用戶訪問來源,甚至你的career path都可以挖掘出來。那麼在Linkedin也是大量用到開源技術,我這裡就說一個最成功的Kafka,它是一個分佈式的消息隊列,可以用在tracking,機器內部metrics,數據傳輸。
數據在前後端會經過不同的儲存或者平台,每個平台都有自己的格式,如果沒有一個unified log,會出現災難型的O(m*n)的數據對接複雜度,如果你設定的格式一旦發生變化,也是要修改所有相關的。所以這裡提出的中間橋樑就是Kafka,大家約定用一個格式作為傳輸標準,然後在接受端可以任意定制你想要的數據源(topics),最後實現的線性的O(m+n)的複雜度。對應的設計細節,還是要參考設計文件。這裡面主要作者Jay Kreps、Rao Jun出來成立了Kafka,做為獨立發展的公司。
在Linkedin,Hadoop作為批處理的主力,大量應用在各個產品線上,比如廣告組。我們一方面需要去做一些靈活的查詢分析廣告主的匹配,廣告預測和實際效果,另外在報表生成方面也是Hadoop作為支援。如果你想去面試Linkedin後端組,我建議大家去把Hive、Pig、Azkaban(數據流的管理軟體)、Avro數據定義格式、Kafka,Voldemort都去看一些設計理念,Linkedin有專門的開源社區,也是build自己的技術品牌。
14、談一談Coursera在大數據架構方面和其他矽谷新創公司相比有什麼特點?是什麼原因和技術取向造成了這些特點?
Coursera是一個有使命驅動的公司,大家不是為了追求技術的極致,而是為了服務好老師、同學,解決他們的痛點,分享他們的成功。這點是跟其他技術公司最大的區別。從一方面來說,現在還是早期積累階段,大規模計算還沒有來臨,我們只有積極學習,適應變化才能保持創業公司的高速成長。
Coursera作為新創公司,非常想保持敏捷和高效。從技術上來說,所有的都是在基於AWS開發,可以想像隨意啟動雲端服務,做一些實驗。我們大致分成產品組、架構組,和數據分析組。我把所有用到的開發技術都列在上面。因為公司比較新,所以沒有什麼歷史遺留遷移的問題。大家大膽的使用Scala作為主要程式語言,採用Python作為腳本控制,比如產品組就是提供的課程產品,裡面大量使用Play Framework,Javascript 的backbone作為控制中樞。而架構組主要是維護底層存儲,通用服務,性能和穩定性。
我在的數據組由10多人構成,一部分是對商業產品,核心增長指標做監控、挖掘和改進。一部分是搭建數據倉庫完善跟各個部門的無縫數據流動,也用到很多技術例如使用Scalding編寫Hadoop MapReduce程序,也有人做AB testing框架,推薦系統,盡可能用最少人力做影響力的事情。其實除了開源世界,我們也積極使用第三方的產品,比如sumologic做日誌錯誤分析,Redshift作為大數據分析平台,Slack做內部通訊。而所有的這些就是想解放生產力,把重心放到用戶體驗,產品開發和迭代上。
本文出自36氪/JasonZheng