Kaldi 之父加盟后的小米開發(fā)者大會:亮眼 AI 開源項目逐一盤點
2019 年 11 月 19 日,小米開發(fā)者大會(MIDC,MI Developer Conference)在北京舉行,1 場主論壇+12 場分論壇,將呈現(xiàn) AIoT+5G 等主題為「智能新時代」的多個領域最新技術;同時,這也是一場開源盛會。
大會現(xiàn)場,小米集團副總裁、技術委員會主席崔寶秋不僅正式發(fā)布了支持更豐富的異構計算算子、降低跨設備運行性能損失的自研移動端深度學習框架 MACE 0.12.0 升級版;也發(fā)布了小米自用 NLP 技術 MiNLP 1.2;還宣布了 Pegasus 1.12 已在 GitHub 上線的消息。因此,雷鋒網 AI 開發(fā)者將開源內容整理編輯如下。
更豐富算子,更低性能損失
據(jù)了解,MACE 是專門為移動設備優(yōu)化的深度學習模型預測框架,MACE 提供工具和文檔,幫助用戶將深度學習模型部署到移動電話、平板電腦、個人電腦和物聯(lián)網設備上。
通過這一框架,小米可在移動端布局各類深度學習應用和算法,包括計算機視覺、語音識別等。據(jù)小米不完全統(tǒng)計,MACE 每天被調用 5000 萬次。
MACE 從設計之初,便針對移動設備的特點進行了專門的優(yōu)化,例如:
- 速度 在框架底層,針對 ARM CPU 進行了 NEON 指令級優(yōu)化,針對移動端 GPU,實現(xiàn)了高效的 OpenCL 內核代碼。針對高通 DSP,集成了 nnlib 計算庫進行 HVX 加速。同時在算法層面,采用 Winograd 算法對卷積進行加速,從而契合在移動端進行計算的模型整體所需的預測延遲高要求。
- 功耗 框架針對 ARM 處理器的 big.LITTLE 架構,提供了高性能,低功耗等多種組合配置。針對 Adreno GPU,提供了不同的功耗性能選項,使得開發(fā)者能夠對性能和功耗進行靈活的調整,從而解決移動端對功耗非常敏感這一問題。
- 系統(tǒng)響應 對于 GPU 計算模式,框架底層對 OpenCL 內核自適應的進行分拆調度,保證 GPU 渲染任務能夠更好的進行搶占調度,從而保證系統(tǒng)的流暢度。
- 內存占用 通過對模型的算子進行依賴分析,引入內存復用技術,大大減少內存的占用。
更多詳細可參考《小米開源自研移動端深度學習框架MACE》:
https://www.leiphone.com/news/201806/5PYJx9sVJDURvwpj.html
MACE 計算框架的整體結構
而現(xiàn)在,MACE 支持的應用場景大大增多,包括:AI 單攝、圖片風格化、場景識別、圖像超分辨率、翻譯以及語音等。它針對移動芯片特性進行了大量優(yōu)化,目前在小米手機上的人像模式、場景識別功能中已廣泛應用。
用 MACE Model Zoo 中的 fast style transfer 模型在手機端生成的風格化圖片
這次的升級,MACE 0.12.0 主要從以下四個方面入手,使其在實際應用中有了更大優(yōu)勢:
- 更豐富的異構計算算子
- 降低跨設備運行性能損失
- 新增 Kaldi 語音識別算子支持
- 新增 CMake 支持
其中,框架已支持的語音識別系統(tǒng) Kaldi 是由 Daniel Povey(日前剛出任小米集團語音首席科學家)主導開發(fā)的開源語音識別系統(tǒng),在眾多語音識別測試和應用中有廣泛的使用。
據(jù)介紹,MACE 已經支持大部分 Kaldi 系統(tǒng)內組件,以及 ONNX 形式的的 Kaldi 模型。此外,項目還提供了 Kaldi-onnx 轉換工具。
值得注意的是,小米也在大會上公布了 MACE 近期(未來一兩個月)的規(guī)劃:
- 一是即將開源 MACE-Kit(人臉檢測、人臉識別、語音識別、目標檢測端到端 SDK);
- 二是新增微控制器支持(全面支持手機與 IoT 設備超低功耗推理場景);
崔寶秋也表示,在未來小米將繼續(xù)加大在 Kaldi 上的投入,幫助打造一個國際化的開源社區(qū),進一步引領開源的語音識別技術。
Github 地址:
https://github.com/XiaoMi/mace
文檔地址:
https://mace.readthedocs.io/en/latest/
MACE Model Zoo 項目地址:
https://github.com/XiaoMi/mace-models

其它開源內容
MiNLP 1.2
今年年初,小米 MiNLP1.0 正式發(fā)布,該平臺是小米基于聲學自主深耕平臺,在小米開發(fā)者大會上,崔寶秋表示小米 MiNLP 平臺每天調用次數(shù)達到 60 億次,然后正式發(fā)布 MiNLP 1.2。
新版 MiNLP 1.2 平臺相較之前主要有兩個重大更新:
- 調用模式從本地調用到支持云端、本地、移動端三端調用;
- 分析功能從詞法分析拓展到句法和語義分析;
另外,新版平臺也可以吸收和集成當前的前沿進展,并進行技術創(chuàng)新;同時,新版平臺所支持的業(yè)務也進行了全面拓展,目前可支持公司的多項業(yè)務。
Pegasus 1.12
Pegasus 是一個分布式 Key-Value 存儲系統(tǒng),最初是用于彌補 HBase 在可用性和性能上的不足。
Pegasus 系統(tǒng)的 Server 端完全采用 C++ 語言開發(fā),從而避免了使用 Java 所帶來的 GC 影響和虛擬機開銷;同時,它也使用了 PacificA 協(xié)議支持強一致性,使用了 RocksDB 作為單機存儲引擎。由于不依賴外部文件系統(tǒng),Pegasus 的 IO 路徑更短,延遲通常更加穩(wěn)定可控。
模型設計上,Pegasus 則采用了哈希分片進行數(shù)據(jù)的拆分,分片(Partition)是系統(tǒng)內部數(shù)據(jù)遷移的最小單元,每一分片內的數(shù)據(jù)有序存儲,各個分片之間數(shù)據(jù)隔離,每個分片對應一個單獨的 RocksDB 實例。
它也可看做是 HBase 和 Redis 的結合體,保證了高的可用度,也具有好的伸縮性。如果業(yè)務對性能的要求不是太高(譬如 P99 要求在 1 毫秒以內),那么 Pegasus 將是個不錯的選擇。
對于升級后的 Pegasus 1.12,其性能變化主要有三點,包括:
- 提供 HTTP 接口,以獲取集群元信息;
- 提供更好的多租戶支持能力;
- 支持接入 Prometheus 監(jiān)控系統(tǒng);
目前,Pegasus 1.12 則在提供一系列豐富的功能支持,如:快照冷備份、表的軟刪除、表級寫限流等的基礎上,有了更完善的高可用、高性能、強一致、易伸縮等性能。
Pegasus 1.12 Github 地址:
https://github.com/XiaoMi/pegasus
更多關于 Pegasus
https://pegasus-kv.github.io/overview/
來源 | 雷鋒網
作者 | 楊鯉萍