張鐸
2012年,基于互聯(lián)網(wǎng)業(yè)務(wù)的快速發(fā)展,以及針對公司內(nèi)部大量數(shù)據(jù)的統(tǒng)計(jì)和分析需求,小米決定組建云平臺團(tuán)隊(duì)(現(xiàn)更名為人工智能與云平臺部)來負(fù)責(zé)大數(shù)據(jù)存儲和計(jì)算。其實(shí)在一開始,使用開源項(xiàng)目并不是唯一的選擇。
當(dāng)時(shí)的團(tuán)隊(duì)成員大多來自微軟、騰訊等公司,而之前這些公司類似的系統(tǒng)都屬于自研,并沒有使用開源項(xiàng)目的習(xí)慣。同時(shí)團(tuán)隊(duì)成員大部分都是C++背景,而當(dāng)時(shí)最流行的開源系統(tǒng)Hadoop是用Java實(shí)現(xiàn)的,所以從基礎(chǔ)看并沒有太多優(yōu)勢。
然而,時(shí)任小米首席架構(gòu)師的崔寶秋根據(jù)自身在開源領(lǐng)域多年的經(jīng)驗(yàn),認(rèn)定擁抱開源是小米的最佳選擇。在他的建議下,團(tuán)隊(duì)還是選擇了擁抱開源,使用Hadoop和HBase作為基礎(chǔ)來為公司內(nèi)其他業(yè)務(wù)提供存儲和計(jì)算服務(wù)。
使用開源系統(tǒng)的好處是可以快速地搭建出一套可以使用的服務(wù)系統(tǒng),這在初期是一個(gè)非常大的優(yōu)勢。一個(gè)完美的存在于設(shè)計(jì)文檔上的系統(tǒng),一定不如一個(gè)并不完美但馬上就可以用的系統(tǒng)。不過Hadoop系列的開源系統(tǒng)也有一些問題,比如:部署繁瑣,可配置項(xiàng)過多且文檔不齊全(一旦上量肯定會出問題),監(jiān)控不完善等等。因此團(tuán)隊(duì)一開始是集中精力開發(fā)了一套監(jiān)控部署系統(tǒng),在此基礎(chǔ)上又做了比較完善的測試,逐步總結(jié)出一套適合小米的軟硬件搭配模式和各種配置,最后開始逐步深入開源代碼本身進(jìn)行bug 修復(fù),甚至功能定制。后續(xù)隨著業(yè)務(wù)方各種各樣的需求,團(tuán)隊(duì)也在擴(kuò)展自己的項(xiàng)目范圍,引入更多的開源項(xiàng)目來更好地為業(yè)務(wù)方服務(wù)。
到今天為止,開源在小米的應(yīng)用幾乎無處不在,從作為存儲的HDFS和HBase,到計(jì)算相關(guān)的Yarn、Spark、Hive和Kylin,還有Docker和Kubernetes等,可以說小米整個(gè)人工智能與云平臺部門都建立在一套開源的技術(shù)棧上。目前,在小米的HDFS上存儲著超過40PB的數(shù)據(jù),HBase上存儲著超過6萬億行的記錄,MR&Spark;每天處理超過4.5萬5個(gè)任務(wù)。
開源對于小米的意義
從整個(gè)行業(yè)來看,開源減少了各個(gè)公司的重復(fù)勞動,也減少了從業(yè)人員的學(xué)習(xí)成本,無疑顯著地提高了整個(gè)行業(yè)的生產(chǎn)力。對于小米,就像之前提到的,選擇開源可以在初期團(tuán)隊(duì)人員很少的情況下迅速搭建出一套可用的系統(tǒng),既不拖累業(yè)務(wù),又可以騰出更多的精力來聚焦業(yè)務(wù)本身的發(fā)展。時(shí)至今日,小米已經(jīng)是一個(gè)接近兩萬人的大企業(yè),而人工智能與云平臺全職投入在云技術(shù)上的研發(fā)工程師不過100人左右,沒有開源的幫助這幾乎是不可想象的。
在互聯(lián)網(wǎng)行業(yè),大家一定都遇到過陳舊的基礎(chǔ)系統(tǒng)無人維護(hù)的問題。團(tuán)隊(duì)人員,特別是核心開發(fā)人員的變動,很容易導(dǎo)致一個(gè)項(xiàng)目進(jìn)入無人維護(hù),但又無法下線的狀態(tài),因?yàn)楹芏嗲闆r下開發(fā)人員并不愿意接手一個(gè)別人的系統(tǒng),而更愿意開發(fā)自己的系統(tǒng)。使用開源系統(tǒng)可以一定程度上避免這個(gè)問題。以小米人工智能與云平臺為例,在擴(kuò)展項(xiàng)目范圍時(shí),原有團(tuán)隊(duì)的不少人員都變動了工作內(nèi)容,但后備力量補(bǔ)充沒有遇到任何問題,任何一個(gè)開源項(xiàng)目都沒有遇到無人愿意接手的問題。比如HBase項(xiàng)目組,目前的研發(fā)人員全部是2014年之后入職的,最早的開發(fā)人員早已升職或者調(diào)動到了其他項(xiàng)目,但HBase項(xiàng)目的發(fā)展完全沒有受到影響。
參與開源對于小米人工智能與云平臺的技術(shù)人員來說還有另一個(gè)非常重要的意義。人工智能與云平臺的很多項(xiàng)目跟公司業(yè)務(wù)的距離比較遠(yuǎn),所做的工作并不能直接對公司的流量和收入等產(chǎn)生正面的影響,反而做不好的情況下會有負(fù)面影響。所謂好事不出門,壞事傳千里。這就導(dǎo)致在公司的評價(jià)體系內(nèi),不論是影響力還是認(rèn)可程度上,做這些項(xiàng)目的同事相比其他業(yè)務(wù)同事都要差一些,做出成果的成就感也偏低。而參與開源可以提升自己在整個(gè)業(yè)界的影響力,這樣再反過來增強(qiáng)自己在公司內(nèi)的影響力。做出的成果能夠得到更多的人認(rèn)可,也有助于提高技術(shù)人員的成就感。
小米在使用開源系統(tǒng)的同時(shí),也積極地回饋開源社區(qū)。在開源上參與最深的HBase項(xiàng)目,目前已經(jīng)向開源社區(qū)提交了超過700項(xiàng)改進(jìn),有bug修復(fù),也有新功能。其余的Hadoop、Spark等項(xiàng)目也有一定數(shù)量的改進(jìn)回饋到了開源社區(qū)。同時(shí),小米也在積極地開源自研項(xiàng)目。例如2017年10月開源的Pegasus系統(tǒng)是一個(gè)高性能低延遲的KeyValue系統(tǒng),可以彌補(bǔ)HBase在低延遲方面的一些不足。另外,小米的AI團(tuán)隊(duì)也會把自己的一些重要工作進(jìn)行開源,例如MACE(內(nèi)部暫定名稱)系統(tǒng),全稱MiAI Compute Engine,是專門為移動端優(yōu)化的神經(jīng)網(wǎng)絡(luò)推理引擎,支持CPU、GPU和Hexagon DSP,即將在2018年第二季度內(nèi)開源。
大公司為何要選擇開源自己的系統(tǒng)
盡管開源對于整個(gè)行業(yè)的意義非常大,但對于公司本身來說,提高技術(shù)影響力這一因素并非是讓幾乎所有的大公司都開始倒向開源的唯一原因。
大家可以看到,像微軟這種從軟件時(shí)代發(fā)展過來的巨頭企業(yè),也開始對自己的系統(tǒng)進(jìn)行開源,例如Visual Studio就已經(jīng)在2015年開源。
業(yè)界普遍認(rèn)為一流公司做標(biāo)準(zhǔn)。而開源,其實(shí)就是在定標(biāo)準(zhǔn),是對話語權(quán)的爭奪。一旦一個(gè)開源系統(tǒng)的生態(tài)建立起來,后來者想另起爐灶的難度會非常大。比如HBase項(xiàng)目,其實(shí)是基于Google在2006年發(fā)表的一篇關(guān)于Bigtable的論文開發(fā)出來的,但Google在推出自己的云Bigtable服務(wù)時(shí),反而不得不提供一個(gè)兼容HBase的API,因?yàn)榇罅靠蛻舻某绦蚨际腔贖Base,他只能選擇兼容,這就是生態(tài)的力量。
單純的使用開源系統(tǒng)其實(shí)也是有一定風(fēng)險(xiǎn)的,特別是在這個(gè)開源系統(tǒng)和公司的核心利益相關(guān)的情況下。比如Amazon在AWS上除了支持TensorFlow之外,還一定要強(qiáng)推MXnet來對抗TensorFlow。因?yàn)樵谠粕咸峁┥疃葘W(xué)習(xí)服務(wù)時(shí),TensorFlow可以針對Google自家的TPU 進(jìn)行優(yōu)化,這一點(diǎn)上Amazon是無法和Google競爭的,如果兩家都只使用TensorFlow,Amazon 一定不是Google的對手。
回到小米自身的情況,小米在回饋開源社區(qū)的同時(shí),也在逐步增強(qiáng)自己在開源社區(qū)的影響力和話語權(quán)。
在HBase項(xiàng)目上,小米先后培養(yǎng)出了2位PMC(Project Management Committee)成員,7位committer(包括前面兩位PMC成員),在社區(qū)已經(jīng)擁有了一定的話語權(quán)。
同時(shí)國內(nèi)的其他公司,比如阿里也培養(yǎng)出了多位HBase的PMC成員和committer,也有了國內(nèi)公司承辦的 HBaseCon Asia,可以說國內(nèi)公司在HBase這個(gè)項(xiàng)目上已經(jīng)有了相當(dāng)大的話語權(quán)。