大力出奇跡,揭秘昇騰CANN的AI超能力
1、引言

從2016年,戰勝世界頂級棋手,強勢將了人類一軍的AlphaGo,
到2020年,會寫小說、編劇本、敲代碼,科科滿分樣樣全能的GPT-3,
再到2021年,最接近人類中文理解能力,泛化力超群的盤古大模型…
近幾年的人工智能領域,像開了掛一樣,不斷刷新人類認知,顛覆人類想象…
和人類掌握某項技能一樣,訓練一個足夠聰明的AI算法模型往往需要成千上萬的數據量。以GPT-3為例,其參數量已經達到1750億、樣本大小有45TB之多,單次訓練時間以月為單位,算力訴求已是擋在AI賽道上的絆腳石!
同時,隨著人工智能應用日益成熟,文本、圖片、音頻、視頻等非結構化數據的處理需求呈指數級增長,數據處理過程從通用計算逐步向異構計算過度。
華為推出的昇騰AI基礎軟硬件平臺。其中,昇騰AI處理器+ 異構計算架構CANN,帶著與生俱來的超強算力和異構計算能力,軟硬件強強聯合,正逐漸成為促成AI產業快速落地的催化劑。
CANN(Compute Architecture for Neural Networks)異構計算架構,是以提升用戶開發效率和釋放昇騰AI處理器極致算力為目標,專門面向AI場景的異構計算架構。對上支持主流前端框架,向下對用戶屏蔽系列化芯片的硬件差異,以全場景、低門檻、高性能的優勢,滿足用戶全方位的人工智能訴求。
2、主流前端框架兼容,快速搞定算法移植
目前人工智能領域內,AI算法模型搭建方面的技藝已經是爐火純青,市面上用于AI模型搭建的深度學習框架,除了華為開源的MindSpore,還有Google的TensorFlow、Facebook的PyTorch、Caffe等。
CANN通過Plugin適配層,能輕松承接基于不同框架開發的AI模型,將不同框架定義的模型轉換成標準化的Ascend IR(Intermediate Representation)表達的圖格式,屏蔽框架差異。
這樣,開發者只需要非常少的改動,即可快速搞定算法移植,體驗昇騰AI處理器的澎湃算力,大大減少了切換平臺的代價,就說它香不香?
3、簡單易用的開發接口,讓小白也能玩轉AI
依靠人工智能實現智能化轉型,幾乎成為了各行各業的必修課,CANN秉承極簡開發的理念,提供了一套簡單易用的AscendCL(Ascend Computing Language)編程接口,為開發者屏蔽底層處理器的差異,你只需要掌握一套API,就可以全面應用于昇騰全系列AI處理器。
同時,能夠滿足開發者能夠在未來CANN版本升級的情況下,依然可以做到后向全面兼容,且運行效率不打折扣!
簡單的AI應用開發接口
人工智能寄托著人類對未來美好生活的憧憬,當我們每天面對“這是什么垃圾,要扔在哪個桶里”的靈魂拷問的時候,一個AI垃圾分類桶應用,就能把你從水深火熱中解救出來。
AscendCL提供了一套用于開發深度神經網絡推理應用的C語言API庫,兼具運行時資源管理、模型加載與執行、圖像預處理等能力,能夠讓開發者輕松解鎖圖片分類、目標識別等各類AI應用。并且可以做到即支持通過主流開源框架調用AscendCL庫,也支持直接調用CANN開放的AscendCL編程接口。
下面教你5步搞定AI垃圾分類應用:
運行管理資源申請:用于初始化系統內部資源。
加載模型文件并構建輸出內存:將開源模型轉換成CANN支持的om模型,并加載到內存;獲取模型基本信息,構建模型輸出內存,為后續模型推理做準備。
數據預處理:對讀入的圖像數據進行預處理,然后構建模型的輸入數據。
模型推理:根據構建好的模型輸入數據進行模型推理。
解析推理結果:根據模型輸出,解析模型的推理結果。
靈活的算子開發接口
當你的AI模型中有CANN尚未支持的算子,或者想要修改已有算子以提升計算性能時,可以利用CANN開放的自定義算子開發接口,隨心所欲地開發你想要的算子。
面向不同水平的AI開發者,CANN提供高效(TBE-DSL)和專業(TBE-TIK)兩種算子開發模式,可靈活滿足不同層次水平的開發者。
其中,TBE-DSL的入門難度較低,它可以自動實現數據的切分和調度,開發者只需關注算子本身的計算邏輯,無需了解硬件細節,即可開發出高性能算子。
TBE-TIK相對難一些,不像TBE-DSL只是在高層抽象編程,而是提供指令級編程和調優能力,開發者需要手工完成類指令級調用,這樣能充分挖掘硬件能力,實現更加高效和復雜的算子。
便捷的IR構圖接口
另外,開發者還可以通過標準化的Ascend IR(Intermediate Representation)接口,拋開深度學習框架本身,直接調用CANN中的算子庫,構建出可以在昇騰AI處理器上執行的高性能模型。
4、1200+高性能算子庫,筑起澎湃算力源泉
基于深度學習框架構建的模型,其實是由一個個計算單元組成,我們稱這些計算單元為算子(Operator,簡稱Op),它對應著特定的計算邏輯。
算子在硬件上的加速計算構成了加速神經網絡的基礎和核心。目前CANN提供了1200+種深度優化的、硬件親和的算子,正是如此豐富的高性能算子,筑起了澎湃的算力源泉,讓你的神經網絡「瞬時」加速。
NN(Neural Network)算子庫:CANN覆蓋了包括TensorFlow、Pytorch、MindSpore、ONNX框架在內的,常用深度學習算法的計算類型,在CANN所有的算子中占有最大比重,用戶只需要關注算法細節的實現,大部分情況下不需要自己開發和調試算子。
BLAS(Basic Linear Algebra Subprograms)算子庫:BLAS為基礎線性代數程序集,是進行向量和矩陣等基本線性代數操作的數值庫,CANN支持通用的矩陣乘和基礎的Max、Min、Sum、乘加等運算。
DVPP(Digital Video Pre-Processor)算子庫:提供高性能的視頻編解碼、圖片編解碼、圖像裁剪縮放等預處理能力。
AIPP(AI Pre-Processing)算子庫:主要實現改變圖像尺寸、色域轉換(轉換圖像格式)、減均值/乘系數(圖像歸一化),并與模型推理過程融合,以滿足推理輸入要求。
HCCL(Huawei Collective Communication Library)算子庫:主要提供單機多卡以及多機多卡間的Broadcast,allreduce,reducescatter,allgather等集合通信功能,在分布式訓練中提供高效的數據傳輸能力。
5、高性能圖編譯器,賦予神經網絡超能力
人間最苦是等待,等紅綠燈,等寒暑假,等外賣,等那個對的人…
人工智能領域也是一樣,隨著神經網絡結構的快速演進,單純利用手工優化來解決AI模型性能問題越來越容易出現瓶頸,CANN的圖編譯器像是一個魔法師,將具有較高抽象度的計算圖,根據昇騰AI處理器的硬件結構特點,進行編譯優化,從而能夠高效執行。
魔法師到底有哪些「神操作」呢?
自動算子融合:基于算子、子圖、SCOPE等多維度進行自動融合,有效減少計算節點,大幅減少計算時間。
Buffer融合:針對神經網絡計算大數據吞吐,memory bound問題,通過減少數據搬運次數、提升昇騰AI處理器內緩存利用率,提升計算效率。
我們對Buffer融合前后做一比對:
融合前,算子1在昇騰AI處理器上計算完后,將數據從昇騰AI處理器內的緩存buffer搬運到外部存儲,算子2從外部存儲獲取數據作為輸入,搬入緩存buffer進行計算。融合后,算子1計算完成后,數據保留在緩存buffer,算子2從緩存buffer直接獲取數據進行算子2的計算,有效減少數據搬運次數,提升了計算性能。
全圖下沉:昇騰AI處理器,集成了豐富的計算設備資源,比如AICore/AICPU/DVPP/AIPP等,正是得益于昇騰AI處理器上豐富的土壤,使得CANN不僅可以將計算部分下沉到昇騰AI處理器加速,還可以將控制流、DVPP、通信部分一并下沉執行。尤其在訓練場景,這種把邏輯復雜計算圖的全部閉環在AI處理器內執行的能力,能有效減少和Host CPU的交互時間,提升計算性能。
異構調度能力:當計算圖中含有多類型的計算任務時,CANN充分利用昇騰AI處理器豐富的異構計算資源,在滿足圖中依賴關系的前提下,將計算任務分配給不同的計算資源,實現并行計算,提升各計算單元的資源利用率,最終提升計算任務的整體效率。
6、自動混合精度,有效達到收益平衡
顧名思義,自動混合精度是一種自動將半精度和單精度混合使用,從而加速模型執行的技術,在大規模模型訓練場景下有著不可或缺的地位。
單精度(Float Precision32,FP32)是計算機常用的一種數據類型,半精度(Float Precision16,FP16)則是一種相對較新的浮點類型,在計算機中使用 2 字節(16 位)存儲,適用于精度要求不高的場景。
顯而易見,使用FP16類型肯定會帶來計算精度上的損失,但對于深度學習訓練而言,并不是所有計算都要求很高的精度。因此,可以將計算圖中對精度不敏感的算子使用FP16類型加速計算,可有效減少內存使用,達到性能和精度平衡。
7、E級集群,開啟AI超算時代
隨著主流深度學習模型所能夠解決的問題日趨復雜,模型本身的復雜度也開始增大,人工智能領域需要更強大的算力,來滿足未來網絡的訓練需求。
基于昇騰AI基礎軟硬件的“鵬城云腦II”,打破了當今業內百P級FLOPS(每秒十億億次計算)的算力天花板,讓E級FLOPS(每秒百億億次計算)算力場景邁上了歷史舞臺。
它集成了數千顆昇騰AI處理器,總算力達到 256-1024 PFLOPS,也就是每秒25.6-102.4億億次浮點運算。
如何高效調度上千顆昇騰AI處理器,是大規模集群網絡面臨的難題。
CANN集成了HCCL(Huawei Collective Communication Library,華為集合通信庫),為昇騰AI處理器多機多卡訓練提供了數據并行/模型并行的高性能集合通信方案:
server內高速HCCS Mesh互聯和server間無阻塞RDMA組網的兩級拓撲組網,配合拓撲自適應通信算法,能充分利用鏈路帶寬,并將server間的數據傳輸量并行均分至各個獨立的網絡平面,大大提升超大規模集群下模型訓練線性度。
集成高速通信引擎和專用硬件調度引擎,大幅降低通信調度開銷,實現通信任務和計算任務統一和諧調度,精準控制系統抖動。
如果把“鵬城云腦II”比作一個大型交響樂團,那么CANN就是一名優秀的指揮家,攜手昇騰AI處理器,開啟了AI超算時代新篇章。
8、寫在最后
CANN在2018年發布伊始便不斷嘗試突破,帶給開發者極簡體驗,釋放AI硬件的極致性能,成為了支撐CANN在人工智能領域行走的雙腿。
相信它會矢志不渝地在AI這條賽道上,攜手想要改變世界的人,一起改變世界,共筑未來!
2021年年底,CANN也要迎來嶄新的、更加強大的5.0版本,它到底會帶來哪些驚喜呢?讓我們拭目以待吧!
AI 昇騰 深度學習
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。