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