不同于傳統的支持通用計算的CPU和GPU,也不同于專用于某種特定算法的專用芯片ASIC,達芬奇架構本質上是為了適應某個特定領域中的常見的應用和算法,通常稱之為“特定域架構(Domain Specific Architecture,DSA)”芯片。昇騰AI芯片的計算核心主要由AI Core構成,負責執行標量、向量和張量相關的計算密集型算子。
1. 昇騰AI全棧架構
1.1 昇騰AI全棧的四個大部分
應用使能層面,此層面通常包含用于部署模型的軟硬件,例如API、SDK、部署平臺,模型庫等等。
AI框架層面,此層面包含用于構建模型的訓練框架,例如華為的MindSpore、TensorFlow、Pytorch等。
異構計算架構,偏底層、偏通用的計算框架,用于針對上層AI框架的調用進行加速,力求向上支持多種AI框架,并在硬件上進行加速。
計算硬件,本層是AI計算的底座,有了強力的芯片及硬件設備,上層的加速才有實施的基礎。
2. 異構計算架構 CANN
2.1 CANN 抽象的五層架構
華為公司面向計算機視覺、自然語言處理、推薦系統、類機器人等領域量身打造了基于“達芬奇(DaVinci)架構”的昇騰(Ascend)AI處理器,開啟了智能之旅。為提升用戶開發效率和釋放昇騰AI處理器澎湃算力,同步推出針對AI場景的異構計算架構CANN(Compute Architecture for Neural Networks),CANN通過提供多層次的編程接口,以全場景、低門檻、高性能的優勢,支持用戶快速構建基于Ascend平臺的AI應用和業務。 昇騰AI異構計算架構(Compute Architecture for Neural Networks,CANN)被抽象成五層架構,如下圖所示。
1. 昇騰計算語言接口
昇騰計算語言(Ascend Computing Language,AscendCL)接口是昇騰計算開放編程框架,是對低層昇騰計算服務接口的封裝。它提供Device(設備)管理、Context(上下文)管理、Stream(流)管理、內存管理、模型加載與執行、算子加載與執行、媒體數據處理、Graph(圖)管理等API庫,供用戶開發人工智能應用調用。
2. 昇騰計算服務層
本層主要提供昇騰計算庫,例如神經網絡(Neural Network,NN)庫、線性代數計算庫(Basic Linear Algebra Subprograms,BLAS)等;昇騰計算調優引擎庫,例如算子調優、子圖調優、梯度調優、模型壓縮以及AI框架適配器。
3. 昇騰計算編譯引擎
本層主要提供圖編譯器(Graph Compiler)和TBE(Tensor Boost Engine)算子開發支持。前者將用戶輸入中間表達(Intermediate Representation,IR)的計算圖編譯成NPU運行的模型。后者提供用戶開發自定義算子所需的工具。
4. 昇騰計算執行引擎
本層負責模型和算子的執行,提供如運行時(Runtime)庫(執行內存分配、模型管理、數據收發等)、圖執行器(Graph Executor)、數字視覺預處理(Digital Vision Pre-Processing,DVPP)、人工智能預處理(Artificial Intelligence Pre-Processing,AIPP)、華為集合通信庫(Huawei Collective Communication Library,HCCL)等功能單元。
5. 昇騰計算基礎層
本層主要為其上各層提供基礎服務,如共享虛擬內存(Shared Virtual Memory,SVM)、設備虛擬化(Virtual Machine,VM)、主機-設備通信(Host Device Communication,HDC)等。
2.2 CANN 的三層邏輯架構
1. 應用層
包括基于 Ascend 平臺開發的各種應用,以及 Ascend 提供給用戶進行算法開發、調優的應用類工具。1. 推理應用
基于 AscendCL 提供的 API 構建推理應用
2. AI 框架
包括 TensorFlow、Caffe、MindSpore 以及第三方框架
3. 模型小型化工具
實現對模型進行量化,加速模型
4. AutoML 工具
基于 MindSpore 自動學習工具,根據昇騰芯片特點進行搜索生成親和性網絡,充分發揮昇騰性能
5. 加速庫
基于 AscendCL 構建的加速庫(當前支持 Blas 加速庫)
6. MindStudio
提供給開發者的集成開發環境和調試工具,可以通過MindStudio進行離線模型轉換、離線推理算法應用開發調試、算法調試、自定義算子開發和調試、日志查看、性能調優、系統故障查看等
2. 芯片使能層
實現解決方案對外能力開放,以及基于計算圖的業務流的控制和運行。1. AscendCL 昇騰計算語言庫
開放編程框架,提供 Device/Context/Stream/ 內存等的管理、模型及算子的加載與執行、媒體數據處理、Graph 管理等 API 庫,供用戶開發深度神經網絡應用。
2. 圖優化和編譯
統一的 IR 接口對接不同前端,支持 TensorFlow/Caffe/MindSpore 表達的計算圖的解析/優化/編譯,提供對后端計算引擎最優化部署能力
Graph Engine:圖編譯和運行的控制中心
Fusion Engine:管理算子融合規則
AICPU Engine:AICPU 算子信息管理
HCCL:HCCL 算子信息管理
3. 算子編譯和算子庫
TBE:編譯生成算子及算子開發工具
算子庫:神經網絡加速庫
4. 數字視覺預處理
實現視頻編解碼(VENC/VDEC)、JPEG 編解碼(JPEG/E)、PNG 解碼(PNGD)、VPC(預處理)
5. 執行引擎
Runtime:為神經網絡的任務分配提供資源管理通道
Task Scheduler:計算圖 Task 序列的管理和調度、執行
3. 計算資源層
主要實現系統對數據的處理和對數據的運算執行。1. 計算設備
AI Core:執行 NN 類算子
AI CPU:執行 CPU 算子
DVPP:視頻/圖像編解碼、預處理
2. 通信鏈路
PCIe:芯片間或芯片與 CPU 間高速互聯
HCCS:實現芯片間緩存一致性功能
RoCE:實現芯片內存 RDMA 功能
3. 昇騰計算語言接口 AscendCL
3.1 AscendCL 簡介
AscendCL(Ascend Computing Language,昇騰計算語言)是昇騰計算開放編程框架,是對底層昇騰計算服務接口的封裝,它提供運行時資源(例如設備、內存等)管理、模型加載與執行、算子加載與執行、圖片數據編解碼/裁剪/縮放處理等API庫,實現在昇騰CANN平臺上進行深度學習推理計算、圖形圖像預處理、單算子加速計算等能力。簡單來說,就是統一的API框架,實現對所有資源的調用。
3.2 AscendCL 的優勢
1. 高度抽象:算子編譯、加載、執行的API歸一,相比每個算子一個API,AscendCL大幅減少API數量,降低復雜度。 2. 向后兼容:AscendCL具備向后兼容,確保軟件升級后,基于舊版本編譯的程序依然可以在新版本上運行。 3. 零感知芯片:一套AscendCL接口可以實現應用代碼統一,多款昇騰處理器無差異。
3.3 AscendCL 的主要應用場景
1. 開發應用:用戶可以直接調用AscendCL提供的接口開發圖片分類應用、目標識別應用等。 2. 供第三方框架調用:用戶可以通過第三方框架調用AscendCL接口,以便使用昇騰AI處理器的計算能力。 3. 供第三方開發lib庫:用戶還可以使用AscendCL封裝實現第三方lib庫,以便提供昇騰AI處理器的運行管理、資源管理等能力。
3.4 AscendCL 的分層能力開放
AscendCL 提供的是分層開放能力的管控,通過不同的組件對不同的使能部件進行對接。包含 GE 能力開放、算
子能力開放、Runtime 能力開放、Driver 能力開放等。
模型加載能力開放:處理om模型加載,但接口的開放是通過AscendCL。
算子能力開放:算子能力實現在CANN中,但算子能力開放是通過AscendCL。
Runtime 能力開放:處理基于stream的設備能力、內存、event等資源能力開發訴求,對app屏蔽底層實現。
-
處理器
+關注
關注
68文章
18476瀏覽量
223103 -
asic
+關注
關注
34文章
1160瀏覽量
119390 -
框架
+關注
關注
0文章
340瀏覽量
17096 -
AI
+關注
關注
87文章
26804瀏覽量
264478 -
模型
+關注
關注
1文章
2758瀏覽量
47843
原文標題:昇騰AI框架全棧深度介紹
文章出處:【微信號:AI_Architect,微信公眾號:智能計算芯世界】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論