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