開發者們看過來,ONNX 牽手華為昇騰,現在可以直接在昇騰上跑原生 ONNX 模型啦!
還記得今年 9 月,ONNX Runtime 項目(ONNX 社區流水線核心組件)正式提供對華為昇騰硬件平台的支持,成為 ONNX Runtime 支持的首個面向端、邊、雲全場景的國産推理訓練 AI 硬件平台後端。
正式版 v1.13.0 預計年底發布。
這意味着在此前昇騰主動适配 ONNX 模型的同時,從 2023 年開始,ONNX 社區版本發布流程中,将開始逐步原生支持昇騰硬件平台,通過開源社區共建大幅降低用戶和廠商的成本,實現生态創新共赢。
ONNX 社區簡介
ONNX ( Open Neural Network Exchange ) ,是由 LF AI & Data Foundation [ 2 ] 發起并維護的一種 AI 模型格式,用于在各種深度學習訓練推理框架之間轉換的一個通用表示格式。
而 ONNX Runtime 是微軟發起的基于 ONNX 模型格式的推理運行時框架,目前已是 ONNX 社區流水線的核心組件,以及 ONNX 運行時的事實标準。
根據官方數據,目前有超過 25 款 AI 框架支持 ONNX 模型格式,并且 ONNX 和 ONNX Runtime 的落地使用組織或企業分别超過 50 和 25 家。
△最新 ONNX Runtime 的生态全景圖
ONNX Runtime 北向支持多種開發語言,包括 Python,C,C++,C#,Java,js 等;南向支持多種運行後端(Execution Provider,包括但不局限于 CPU、CUDA、CoreML),使用 ONNX Runtime,用戶可以基于多種語言快速無縫在多種後端上直接運行 ONNX 模型,且不再需要額外的開發适配工作。
昇騰 CANN 簡介
ONNX Runtime項目支持華為昇騰硬件平台的關鍵,是連接 AI 框架和昇騰硬件的橋梁—異構計算架構 CANN。
CANN是專門面向 AI 場景的異構計算架構,同時作為昇騰 AI 基礎軟硬件平台的核心組成部分之一,搭起了從上層深度學習框架到底層 AI 硬件的橋梁,全面支持昇思 MindSpore、飛槳(PaddlePaddle)、PyTorch、TensorFlow、Caffe、計圖(Jittor)等主流 AI 框架,提供 900 多種優選模型,能夠覆蓋衆多典型場景應用,兼容多種底層硬件設備,提供強大異構計算能力。
昇騰 CANN 與 ONNX 的長期合作
華為公司自 2018 年與微軟亞洲研究院共同發起了首屆 ONNX China Workshop 以來,積極參與 ONNX 社區建設,是曆年 ONNX Workshop 中國地區會議的積極倡導者和組織者,在社區也曾發起 Edge WG、提出 Model Zoo CI 建議、參加 Steering Committee 選舉等等。
昇騰 CANN 作為華為參與 ONNX 社區建設中重要的一環,也一直積極參與 ONNX 社區的模型适配工作。目前已支持140+個 onnx 模型推理,年底發布的 CANN6.0 版本将支持 200+ 個模型;支持 opset 8~13,主力支持 opset 11,算子支持率 85+%,CANN6.0 支持到 90+%。
讓昇騰使能 ONNX 社區版本開發
昇騰 CANN 團隊希望能夠将長期以來的主動适配工作,逐漸轉化為社區原生開發的一部分,能夠更高效的服務用戶,讓用戶第一時間就擁有昇騰 AI 軟硬件平台支持的 ONNX 版本。而實現社區原生的一大關鍵就在于社區流水線中實現對昇騰的支持,而 ONNX Runtime 的支持則是重中之重。
使用最新的 ONNX Runtime,用戶可以直接把原生 ONNX 模型跑在昇騰上。過程簡單,易于使用。這也是在基于昇騰 CANN atc 工具的模型編譯執行之外的又一條路徑。
△ONNX Runtime 支持後端
△CANN Execution Provider 架構
昇騰作為國産芯片在海外開源社區的推入,其過程存在一定挑戰。起初社區對于昇騰芯片以及 CANN 了解不足,昇騰開源團隊通過與社區積極溝通、主動參與 ONNX meetup、詳細講解昇騰芯片的特點等方式,讓社區詳細了解了昇騰芯片以及 CANN 的能力,增強了對昇騰持續投入的信心,從而順利合入代碼。
△ONNX Runtime CANN 後端已支持算子列表
目前,ONNX Runtime CANN 後端初步已支持 ONNX 算子 16 個,全量支持 ResNet 和 VGG 模型。用戶可以在支持昇騰的環境中使用 ONNXRuntime 主幹分支代碼,配合 ONNX model zoo [ 3 ] 中的 ResNet 和 VGG 模型進行體驗。如果用戶想嘗試其他的模型和算子,可以參考文檔 [ 4 ] 自行編寫代碼,或者等待新版本發布,屆時 CANN 後端會支持更多算子和模型。
未來,CANN 将在多個方面進行完善,包括:更多算子和模型的支持;算子融合、模型性能優化;支持算子自定義等。随着技術不斷發展,大數據和機器學習的關系也越來越密切,在未來,也會進一步探索大數據 +AI 融合的場景,例如 Spark+ONNX+Ascend 這樣的大數據 AI 全棧流程,探索生産可用、易用的大數據 AI 解決方案。
ONNX Runtime CANN 後端作為新功能難免有不足之處,歡迎大家在開源社區一起交流和完善。
相關鍊接:
[ 1 ] https://github.com/ microsoft/onnxruntime/pull/12416
[ 2 ] https://lfaidata.foundation
[ 3 ] https://github.com/onnx/models
[ 4 ] https://github.com/learningbackup/ai/blob/main/ascend/CANN%20Development%20Guideline.md