計世網

攻克端、邊、云協同難點,昇騰是如何助力全場景AI開發的?
來源:InfoQ
2019-12-23
伴隨 AI 技術的發展,智能時代的快速推進,端、邊、云全場景 AI 也將成為發展的新篇章。那面對全場景 AI 不同的計算需求與開發模式的差異,開發者如何快速進行開發并在端、邊、云上全場景適配呢?

 

伴隨 AI 技術的發展,智能時代的快速推進,端、邊、云全場景 AI 也將成為發展的新篇章。那面對全場景 AI 不同的計算需求與開發模式的差異,開發者如何快速進行開發并在端、邊、云上全場景適配呢?

12 月 20 日,DevRun·選擇不凡—— 華為技術沙龍·昇騰專場來到杭州,圍繞全場景 AI 開發面臨的技術挑戰,邀請華為多位 AI 領域技術專家,通過案例 + 實踐,為現場開發者解讀了全棧全場景 AI 計算框架與開發全流程。

1 如何基于 Atlas 進行推理業務開發?

面對端、邊、云不同的 AI 算力需求,華為提出全棧全場景 AI 解決方案。作為全棧全場景 AI 解決方案的基石,Atlas 人工智能計算平臺基于華為昇騰 AI 處理器和業界主流異構計算部件,通過模塊、板卡、小站、AI 服務器、集群等豐富的產品形態,滿足了全場景 AI 的算力需求。

以 Atlas 300 進行推理業務開發的流程為例,可以總結為以下幾個環節:

開發前準備:首先對 OS 類型及版本、AI 框架和模型、視頻 / 圖像編解碼能力進行需求評估,然后再安裝硬件與軟件,搭建開發環境;

業務遷移:基于 Matrix 業務軟件框架,調用各類接口來完成推理業務的軟件開發和算法遷移;

集成調優:對系統整體體性能進行優化,包括應用側和算法模型側。

測試驗收:最后進行功能測試、可靠性測試、可維護性與性能測試等驗收測試,保證產品可商用。

Matrix 的典型流程如上圖所示。主要分為 Host 和 Device 兩個部分,Host 屬于服務器 CPU 側,Device 屬于 Atlas 300 AI 加速卡側。Engine 作為流程的基本功能單元,允許用戶自定義,實現數據輸入、圖片視頻分類處理、結果輸出等。Graph 則作為管理若干個 Engine 的流程,每個 Graph 在昇騰310 側默認對應一個線程來處理。

通過 Graph 配置文件,配置 Engine 之間的串接和節點屬性,節點間數據的實際流向根據具體業務在節點中實現,通過 APP 向業務流的開始節點灌入數據啟動整個 Engine 的計算流程。

2 應用 Mind Studio,降低 AI 開發門檻

為了滿足開發者全場景 AI 開發的訴求,華為推出了 Mind Studio。Mind Studio 是一套基于華為昇騰 AI 處理器開發的 AI 全棧開發工具鏈,包括基于芯片的算子開發、模型開發與轉換,AI 應用層開發等能力,讓用戶的算子、模型和應用最大限度的發揮出處理器的計算能力,又通過場景化的工具體驗降低算子、模型、AI 應用的開發門檻。

Mind Studio 可提供面向 AI 算子開發、模型開發、應用開發的全棧全場景支持。算子開發上,支持 TBE 自定義算子、 支持 TBE 自定義算子插件開發、支持語法的智能糾錯和代碼自動補全;模型開發支持離線模型轉換、支持模型算子精度比對、支持模型整網性能 profiling 分析、支持網絡模型的可視化;應用開發支持 AI 應用開發與調試、支持代碼框架自動生成、支持推理結果圖形化展示、支持全系統調優。

Mind Studio 集成開發環境,可用于仿真形態下模型運行流程編排開發和 TBE 算子開發。開發者可以創建深度學習應用,例如基于 Fasterrcnn 的圖像檢測應用。如果有不支持的算子,可以通過 TBE 自定義算子,然后再把已經訓練好的模型轉換成昇騰 AI 處理器的模型。

模型開發支持當前業界主流框架 Tensorflow、Caffe 等,通過轉換工具將模型轉換成昇騰 AI 處理器的格式,來發揮出芯片的加速能力。算子比對功能可以通過與業界標準的模型對比,識別出模型算子的精度差異并優化。

在轉換過程中,開發者還可以配置模型中的輸入和輸出節點,量化配置參數,圖像預處理的參數,生成滿足開發者輸入要求的更高效的模型。

算子比對可以對已經生成的模型和基準的模型(如 Caffe 模型)進行算子的比對,比對的方式可以選擇不同的算法,如 LowerBound 等。算子比對的結果可以發現出模型中各個算子計算結果的偏差,通過對偏差的大小設置,開發者可以快速定位出偏差較大的算子并進行優化。

3 解讀 MindSpore 三大技術創新點

針對目前計算框架仍存在的開發門檻高、運行成本高、部署難度大等亟需解決的問題,以及在技術戰和貿易戰的壓力下,華為在支持業界 AI 框架的基礎上,自主研發了支持端、邊、云獨立和協同、統一的訓練和推理框架——MindSpore。

同時,為了助力開發者與產業從容地應對人工智能時代帶來的系統級挑戰,華為還提出了新編程范式、執行模式與協作方式三點技術創新點:

新編程范式:實現 AI 算法即代碼,打破模型開發技能需求高的挑戰,降低了 AI 開發的門檻;

新執行模式:針對 AI 領域的計算復雜性和算力多樣性的運行態挑戰,通過 On-Device 的執行模式,來提升執行效率。

全場景按需協同:面對端、邊、云三類應用場景需求與目標不同,通過統一的框架來實現按需協同。

基于三個技術創新點,MindSpore 的核心架構分為以下幾層:部署態包括了按需協作分布式架構、調度、分布式部署、通信庫等;往上是執行高效層(包括數據模型下沉),另外是并行的 Pipeline 執行層和深度圖的優化,再上層有 MindSpore 原生的計算圖表達。支持了自動微分、自動并行、自動調優的特性點,形成 AI 算法即代碼、運行高效、部署態靈活的一體化。

新編程范式基于源碼轉換機制生成抽象語法樹的思想,在接口層支持原生的 Python 編程和控制流表達,增強可編程性。在中間編譯層復用編譯器優化的能力進行代碼優化,實現更高性能。在算子層利用算子自動生成,以及軟硬件協同優化,簡單代碼便可自動化生成高性能算子。同時靈活的可視化接口與動靜結合的框架, 整體達到易用、高效、易調試的效果。

在新執行模式上,MindSpore 有幾項關鍵技術。第一項是通過面向處理器的深度圖優化技術,最大化實現數據、計算與通信的并行度。第二項利用梯度數據驅動的自適應圖切分優化,實現去中心化的調度。第三項是自動整圖切分可按算子輸入輸出數據緯度切分整圖。最后一項是集群拓撲感知調度,感知集群拓撲自動調度子圖執行,實現最小通信開銷。

新協作方式實現了統一架構下的端云協同訓練和推理,避免硬件架構多樣性導致的全場景下部署差異和不確定性,以及訓練推理分離導致的模型孤立。

4 實現平穩遷移到鯤鵬的全流程

利用鯤鵬處理器與 Atlas 產品結合,可打造出高性能的 AI 解決方案。不過,由于鯤鵬平臺和 x86 平臺的架構存在差異,要想將 x86 平臺上的軟件在鯤鵬平臺上運行,還需要對軟件進行遷移,編譯成可供鯤鵬平臺識別的指令。

在整個軟件遷移過程中,策略選擇是非常重要的,能夠直接影響后面軟件遷移的工作量和遷移的可實行性。

對于 Java、Python 等解釋性語言,可以通過部署運行環境來實現跨平臺支持。而對于 C、C++、Go 等編譯型語言,需要獲取源碼編譯。開源的軟件可通過源碼重新編譯來實現遷移;商用閉源軟件,可選取其它可替代的軟件進行遷移,也可選擇與 x86 平臺混合部署。

整個遷移過程需要經過以下幾個步驟:

掃描:包括軟件依賴庫掃描、代碼掃描、編譯項掃描與兼容的軟件白名單;

移植:包括代碼移植和編譯項移植;

優化:包括系統、應用、進程性能優化分析。

針對遷移的痛點,鯤鵬提供了對應的工具鏈。利用分析掃描工具( Dependency Advisor ),分析移植軟件包依賴庫和軟件代碼文件,評估可移植性與移植工作量,以此提升軟件移植分析效率和準確率。代碼遷移工具 (Porting Advisor) 可分析待移植軟件的源碼文件,給出代碼移植指導報告,來準確定位代碼修改點及指導修改。

性能優化工具 (Tuning Kit) 在軟件運行狀態下,通過采集系統數據,分析出系統性能指標,定位到瓶頸點并給出調優建議。在前面調優的基礎上,還提供了 glibc 基礎庫與 HMPP 兩種加速庫,目前已優化 16 個最常用接口,整體上同比 benchmark 測試指標提升 4.16%,gzip 壓縮庫有 8% 的性能提升。

責任編輯:焦旭