雷軍曾表示,小米創(chuàng)立的原因之一,在于安卓的開源。
現(xiàn)在,小米已經(jīng)有自己的開源團隊,成為開源的倡導者和支持者,開源貫穿了小米整個CBA路線。
在2018小米AIoT開發(fā)者大會上,小米舉辦了第一屆開源技術(shù)峰會,并對小米開源歷路及開源能力進行了詳細解析。
2012年,小米迎來一位小米技術(shù)團隊的支柱人物,也就是現(xiàn)在小米人工智能與云平臺副總裁崔寶秋。隨之而來的除了人盡皆知的AI,還有開源。
2012年7月,統(tǒng)一Hadoop集群,打通數(shù)據(jù)孤島;
2012年10月,選型HBase,組建團隊;
2013年12月,推出第一個HBase Committer;
2014年8月,正式成立小米開源委員會;
2015年5月,小米開源Open-Falcon;
2017年10月,小米開源Pegasus;
2018年6月,小米開源MACE。
為什么要擁抱開源?
崔寶秋表示,“我在打造小米人工智能與云平臺團隊時,一直以硅谷的創(chuàng)業(yè)公司、互聯(lián)網(wǎng)公司的風格來打造,團隊文化包括多個元素,其中一個非常重要的元素就是「開源」?!?/p>
為什么要擁抱開源?對公司來講,擁抱開源有很多優(yōu)勢,主要包括以下幾方面:
站在巨人的肩膀上?,F(xiàn)在諸多大數(shù)據(jù)、人工智能、云計算技術(shù)開源已經(jīng)成為標準,沒必要再單寫Hadoop;
提高工程師編程能力。一個工程師代碼水平編程能力很好的方法就是讀大量代碼,大量的開源代碼可以迅速提升工程師工程水平,也可以提升工程師文化,讓大家喜歡技術(shù)、喜歡開放;
代碼質(zhì)量/工程文化的提升。開源軟件可以提升工程師對編程的熱愛,對代碼質(zhì)量的苛求;
吸引人才,構(gòu)建人才庫。一個公司擁抱開源,崇尚開源文化,可以吸引很多工程師來加入你的公司。
小米的開源之路
了解到,整個開源體系中,現(xiàn)在存在三種力量:個人愛好者、無開源商業(yè)模式組織、有開源商業(yè)模式組織。崔寶秋表示,小米屬于第二類——無開源商業(yè)模式組織。
其中,區(qū)別于無開源商業(yè)模式組織,有開源商業(yè)模式組織的「開源」并不是「免費」的。諸如IBM、華為等公司在開源上的投入很多,但是有開源商業(yè)模式組織最終目的是從底層軟硬件、應用層到云服務向其客戶提供一整套解決方案。
小米屬于無開源商業(yè)模式組織,另外,還包括諸多高校、科研機構(gòu),以及其他公司。
從2012年開始,小米開始正式涉足開源。
2012年7月開始做這個事情,到后來很快內(nèi)部討論選HBbase,開始大力投入,2013年我們自己在Hadoop上推出了自己的Minos,之后逐漸推出自己的其他一些圍繞Hadoop的自研軟件系統(tǒng)。到2014年8月,為了整合公司開源方面的資源,正式成立了開源委員會;再之后,當HBase滿足不了我們需求時,我們開始自研Key-Value系統(tǒng)Pegasus。在AI時代,我們?nèi)ツ觊_始自研移動端深度學習框架 MACE,并在今年對外發(fā)布開源,也是我們開源的一個重大項目。
據(jù)了解,小米最初在做開源時,制定了五條開源戰(zhàn)略,即「快、不重造輪子、不用則已 要用則精、永抱開放和共享的心態(tài)、極力推出自己的committer」,這些戰(zhàn)略,至今仍然適用。
崔寶秋認為,「不用則已,要用則精」是國內(nèi)諸多公司經(jīng)常忽略的一點,即沒有用精。其實,很多公司對開源不信任的原因之一是沒有搞定,只拿來用,用的很不舒服,沒碰到真正困難的時候一切都好,一旦上線、集群大小不夠、一擴容發(fā)現(xiàn)出了問題,主要原因在于沒有深度掌握,沒有用精。
小米在開源的貢獻
小米從2012年正式跨入開源,至今已有6年之久,6年之內(nèi),小米在擁抱開源的同時,也為整個開源生態(tài)做了很多事情。以HBase為例,小米在過去幾年,一共推出了8個Committer,2個PMC Members。2018年,小米為HBase貢獻了306個patch,占整體patch貢獻值的23%,全球其他廠商一共貢獻了1010個patch。崔寶秋在論壇上表示,“自從我們參與了HBase項目,這個項目的負責人多次表示,小米現(xiàn)在已經(jīng)成為社區(qū)最活躍、力量最強的一支隊伍?!?/p>
五六年前,小米當時與Facebook的團隊交流時發(fā)現(xiàn),他們做了很多事情,也犯了一些錯誤,他們沒有想到的是,F(xiàn)acebook此前遇到的問題,小米也都遇到過,而且我們也解決了問題。所不同的是,小米將相關(guān)patch貢獻了出去,也得到了開源社區(qū)的認可,項目得以不斷發(fā)展;Facebook的團隊沒有貢獻出去,項目最終反而以失敗告終。
開源軟件雖好,但并不能解決企業(yè)所有需求,這一點,小米也深有體會。性能跟不上、功能跟不上是小米使用開源軟件遇到的問題,于是小米開始自研項目。在自研過程中,小米也經(jīng)歷了最初的蛻變。
我們自研項目時,自研一版不行,被我打回去,第二版還不夠好,又被打回去,直到最后這個項目能夠基本滿足我的需求,才開始應用。這一項目就是2015年5月我們對外開源的Open-Falcon。
Open-Falcon是一個企業(yè)級、高可用、可擴展的監(jiān)控系統(tǒng),該項目的社區(qū)運營數(shù)據(jù)顯示,目前,已有200+公司、5000+個人開發(fā)者參與到該項目中。
在此之后,小米又投入大量人力、資源到PEGASUS項目中,即強一直分布式Key-Value系統(tǒng),以及移動端深度學習框架MACE,并相繼對外開源。
MACE——移動端神經(jīng)網(wǎng)絡推理引擎
MACE是小米在2017年8月正式立項的移動端神經(jīng)網(wǎng)絡推理引擎,今年2月已經(jīng)落地手機AI相機,并于今年6月正式對外開源。
MACE支持包括TensorFlow、Caffe等多種訓練架構(gòu)。小米人工智能與云平臺AI平臺高級軟件工程師李寅在大會上表示,“為了適配更多訓練框架,小米開始致力于兼容開放標準協(xié)議模型,這個開放標準協(xié)議是對所有訓練框架平臺的整合,我們希望所有訓練框架都可以統(tǒng)一轉(zhuǎn)到這個開放模型協(xié)議上,從而極大地減輕開發(fā)者的工作。經(jīng)過這一層轉(zhuǎn)換,所有移動端的部署和預測直接利用這份統(tǒng)一開放的模型協(xié)議就可以統(tǒng)一適配,而不用再去適配不同的開源框架。我們現(xiàn)在已經(jīng)支持ONNX?!?/p>
MACE框架包括四層。最底層是設備芯片層,現(xiàn)在MACE支持三種異構(gòu)芯片,包括ARM的CPU、GPU,以及高通的Hexajon DSP;其次,小米在芯片之上打造了高效的Kernels,以及針對高通DSP的HexagonNN引擎;然后,又封裝了一層解釋層,這層解釋層可以翻譯整個模型本身,將模型翻譯成一個高效、可執(zhí)行的序列,每個執(zhí)行的算子下放到這些Kernels進行預測;小米希望通過MACE模型轉(zhuǎn)換,將這些模型設計地更輕巧、運算效率更高、適配更好的底層Kernels或者芯片。
據(jù)了解,MACE最重要的工作就是在不同的芯片和設備上進行Kernels的優(yōu)化,包括GPU性能優(yōu)化與自動調(diào)優(yōu)、NEON指令級優(yōu)化、內(nèi)存占用優(yōu)化、模型初始化時間優(yōu)化,以及模型保護、模型保密、基準測試等。
小米做開源的經(jīng)驗
談到小米做開源的經(jīng)驗,崔寶秋將其歸結(jié)為以下幾點:
長期規(guī)劃,厚積薄發(fā)。對于一個公司來講,一些決策必須由高層來做,需要長期規(guī)劃,長期投入的決心也是非常重要的;
社區(qū)的融合。某個開發(fā)者或某個公司很難對社區(qū)、對開源軟件有影響力,小米推出Committer的一個原因就是希望有一定影響力,即不僅要站在巨人的肩膀上,還要為巨人指路;
什么叫為巨人指方向?開源是一個巨人,每一個開源項目都是一個巨人,社區(qū)在推著往前走,誰擁有這個開源項目?沒有人,真正健康的一個開源項目是社區(qū)的融合,誰來決定它的走向?它的未來?是社區(qū)來決定的,即PMC。國內(nèi)公司經(jīng)常犯的一個錯誤是自己玩得很嗨,但是沒有放回去,與整個社區(qū)的融合很差,因而導致項目不被接受,最終不管好的、或是壞的,全部被社區(qū)拋棄。
平衡開源與業(yè)務上的投入。大量的開源投入對于一個公司而言是很難的,小米的策略是:業(yè)務第一,開源第二,以業(yè)務為驅(qū)動,保障開源上的投入;
積極有效回報開源社區(qū)。關(guān)于這一方面,小米總結(jié)了四點:積極交流、參與討論,清晰描述想法和算法,堅持自己的觀點,為自己提交的代碼負責;
健康的開源模式。自己本地分支要與社區(qū)分支結(jié)合來做,避免公司為了自己的需求及短期效益而封閉開發(fā),與整個社區(qū)漸行漸遠;
AI時代繼續(xù)擁抱開源。云計算、大數(shù)據(jù)時代離不開開源,從市場上也可見,目前,幾乎所有的AI巨頭都在做開源。
最后,談到開源,崔寶秋表示,“不僅是代碼開源、深度學習框架開源,我們還要提倡數(shù)據(jù)開源。今天大數(shù)據(jù)在人工智能中扮演著非常重要的角色,大數(shù)據(jù)包括知識圖譜、數(shù)據(jù)服務、數(shù)據(jù)模型,這些是我想倡導大家開源的,也是小米在做的事情。”