昇騰CANN:為你開啟機器人開發的Buff 加成
摘要:昇騰AI提供了全棧技術和產品,構築人工智能的算力基座,賦能上層應用
本文分享自華為雲社區《昇騰CANN:為你開啟機器人開發的Buff 加成》,作者:華為雲社區精選 。
昇騰AI基礎軟硬件平台
人類在最近1萬多年的發展中,經歷了農耕時代、蒸汽機時代、電力時代、互聯網時代,21世紀,進入了人工智能時代。
每一次科技浪潮都通過某一項先進生產力要素的突破,進而引起大多數行業的變革:以信息技術為核心的第三次科技革命迄今已逾70年,整個將全球GDP提升約60倍,其中1950年-1990年,是半導體產業迅猛發展的時代,推動了大型計算機向個人PC的小型化;1990年至今是近30年的互聯網全球化時代,互聯網技術作為過去30年最先進的生產力要素,改變了全球的所有人、所有產業、社會經濟,甚至是政治、軍事、宗教。
那麼接下來到底什麼樣的革命性技術可以引領人類社會,推動全球經濟向上增長?
我們的答案是,我們早已處於人工智能時代之中。
就像直到2010年iphone4發佈,絕大多數人也並未意識到移動互聯網革命早已開始一樣,如今人工智能其實也已廣泛應用,比如到處遍佈的攝像頭和手機人臉識別,微信語音和文本轉換,抖音動態美顏特效、推薦算法,家庭掃地機器人和餐廳送餐機器人,背後都是人工智能核心技術在過去十年不斷取得的巨大突破。

機器人作為人工智能的實體化,也將擁有廣泛的產業應用
機器人普遍存在的意義是“為人類服務”的可運動智能設備,包括機器人對於人類勞動的替代、完成人類所無法完成任務的能力延伸以及情感陪伴等價值。
面對人類對於物質及精神永不停止的需求增長,相比於元宇宙,機器人將會是“現實宇宙”中的最佳供給方案。
今年,各科技巨頭都推出了機器人方案,比如馬斯克推出人形機器人,並表示可以把特斯拉堪稱世界上最大的機器人公司,百度也發佈了汽車機器人概念車,並計劃量產,其他各公司也在各自垂直領域推出自己的機器人產品。
AI加持,將會帶給機器人兩大質變。
(1)智能化大幅提升
可軟件升級:智能化機器人能夠通過軟件算法的迭代持續提升性能;這讓機器人的能力理論上是沒有上限的
規模效應:機器人應用規模越大,收集數據越多,算法迭代越完善,機器人越好用
可適用性大幅增加:機器人智慧程度線性增加,可適用的場景及價值將會指數增加
(2)智能化帶來的場景適用性提升
其中AI技術將會是機器人全面爆發的最大變量,機器人產業的爆發極有可能是新物種引領;例如近三年全面爆發的機器人項目,在10年前幾乎不存在(例如九號公司、石頭科技、普渡、擎朗、雲跡、高仙、梅卡曼德、極智嘉等)。

如何評判一個新技術是否能引領未來的發展方向?我們要看它能否從本質上解放生產力、發展生產力。
蒸汽機之所以推動了第一次科技革命,是因為其極大的提升了勞動生產力,並將大量勞動人口從第一產業農業的低級勞動中解放出來,進入第二產業工業。電力加速了這一過程,並推動了第三產業服務業的出現和發展。信息技術將更多的人口從第一、二產業中釋放,進入第三產業,於是形成了如今全球第三產業GDP佔比55%,中國第三產業勞動人口占比50%的格局。
機器人即是人工智能技術的硬件形態,在可見的未來,將第一二三產業的勞動人口從低級勞動中大比例釋放和替代,並在這個過程中推動全球GDP繼續百倍增長。
人工智能從模塊上可分為 感知、計算 和 控制 三大部分,由表及裏可分為 應用層、數據層、算法層、算力層 。對此,我們昇騰AI提供了全棧技術和產品。

我們昇騰AI提供了全棧技術和產品,構築人工智能的算力基座,賦能上層應用:
1、作為算力的基礎,昇騰AI提供了一系列的硬件產品,這些硬件覆蓋端、邊、雲場景。
2、在硬件之上,就是AI異構架構CANN,它是昇騰AI硬件的使能層,也是芯片澎湃算力得以釋放的關鍵。CANN對下適配不同形態的硬件,提供統一的編程接口,並將多樣化的計算模式分配到不同特性的處理器上(CPU/NPU),充分發揮硬件的計算性能;CANN對上適配不同的AI框架,以使能多樣的算法和應用需求,發揮着承上啟下的關鍵作用。
3、在AI框架這一層,華為提供了昇思MindSpore框架,更好的適配昇騰硬件架構;此外,還支持TensorFlow、PyTorch等第三方框架。
4、在AI框架之上,昇騰AI全棧中提供了供應用使用的各類SDK,以便應用到各行各業,例如面向智能製造、工業質檢等場景的Mind X SDK,優選的訓練和推理模型庫Model Zoo,和AI雲服務ModelArts,等。
5、最後,昇騰AI全棧軟件也提供了全流程的工具鏈MindStudio,全方位輔助開發者進行業務開發、模型開發、算子開發,以及相關的調試調優;在昇騰社區,可以獲取更多的文檔和資源。

在昇騰全棧中,提供了適配訓練、推理場景的昇騰AI處理器,基於不同的昇騰AI處理器,使能了一系列的昇騰產品,包括面向數據中心的集羣、訓練服務器、推理服務器等,面向邊緣場景的AI加速模塊、智能小站等。
通過這些昇騰系列產品,使能全場景AI,包括AI計算中心、智能巡檢等。
昇騰AI異構計算架構CANN
有了昇騰AI的硬件,還需要有相應的軟件使能層,才能將計算系統有效運轉起來。接下來介紹一下昇騰AI異構計算架構 CANN(Compute Architecture for Neural Networks)。

CANN作為最接近昇騰AI系列硬件產品的一層,通過軟硬件聯合設計,打造出適合昇騰AI處理器的軟件架構,充分使能和釋放昇騰的澎湃算力。
我們把CANN內部結構打開來看:
首先,整個異構計算架構對上要提供統一的面向應用的編程語言,充分暴露昇騰AI基礎軟硬件的能力,滿足上層的業務開發需求,如深度學習框架對接、推理應用開發等。為此,CANN提供了一套標準的AscendCL(昇騰計算語言)開發接口,覆蓋算子開發、圖開發、應用開發的需求。它可以屏蔽底層多種芯片的差異,提升整個編程的易用性,也使得代碼在不同型號的昇騰AI處理器上可以得到最大程度的複用,降低開發者的重複勞動。
接口層之下是昇騰計算服務層(Ascend Computing Service Layer)。這一層提供了高性能的算子庫AOL,以及昇騰調優引擎AOE,是昇騰AI處理器能夠支持多種多樣的人工智能算法、並優化執行性能的基礎。
再往下是昇騰計算編譯層(Ascend Computing Compilation Layer)。這一層完成計算圖和算子的編譯,將用户的模型和算子編譯成可以在昇騰AI處理器上執行的格式。
編譯的結果由昇騰計算執行層(Ascend Computing Execution Layer)運行,通過Runtime和圖執行器,實現各硬件單元的高效調用,完成計算任務。
最後是昇騰計算基礎層(Ascend Computing Base Layer),提供操作系統、SVM共享虛擬內存、主從通信等基礎服務。

在一個推理業務的典型開發流程中,往往會先進行模型壓縮處理,再進行模型編譯優化,然後是代碼開發,最後在硬件平台運行。CANN對整個開發過程提供了完備的支持。
• 對於模型壓縮需求,CANN提供壓縮工具AMCT,實現模型的瘦身。
• 在模型編譯階段,CANN提供編譯工具ATC和智能調優引擎AOE,完成模型的編譯和自動調優
• 在代碼開發階段,基於CANN的ACL統一開發接口,實現多樣算力的調用
• 最後到了運行環境,CANN通過ACE執行引擎,調度異構資源,高效執行業務

發應用、構建模型、開發算子。
1、在應用開發場景下,通過AscendCL的應用開發接口,可調用深度學習推理計算、圖像圖像預處理、單算子計算加速能力,實現業務邏輯。
典型的場景是,用户可以基於訓練好的模型,調用AscendCL提供的接口,開發各類推理應用,簡單的如目標檢測、圖像分類,複雜的如自動駕駛、視頻智能解析。
除此之外,基於AscendCL的應用開發接口,還能通過單算子調用的方式,實現Pytorch等第三方框架的對接;用户也可以基於AscendCL的接口,開發第三方lib庫和插件,調用昇騰AI處理器的能力加速業界流行的計算庫。
需要指出的是,AscendCL編程接口屏蔽了不同型號的昇騰AI處理器的差異,使得一套應用代碼可以運行在多款昇騰AI硬件上,最大限度的保護用户開發的資產。當然,針對昇騰AI處理器硬件的演進,AscendCL接口也會有相應的演進,包括在不同硬件上有規格的差異,在不同款型的硬件上遷移時可能需要進行一些調優工作,以取得最佳的性能表現。
2、在模型構建場景下,AscendCL提供了統一的中間表達和網絡構圖接口,可以表達多種框架的計算圖,支持用户在昇騰芯片上快速部署神經網絡業務。
例如,用户可基於這套構圖接口和算子原型進行構圖,並編譯為離線模型,用於在昇騰AI處理器上進行離線推理。
另外,也可以通過框架解析功能將主流的模型格式轉換成CANN模型格式,從而隔離上層框架的差異,當前主要支持對Caffe/Tensorflow/ONNX原始框架模型的解析。
3、在算子開發場景下,AscendCL提供了多種算子開發方式,包括DSL( Domain-Specific Language ,基於特性域語言)、TIK( Tensor Iterator Kernel, 張量嵌套內核)、AI CPU等,基於不同的開發語言,滿足不同開發者的需求。這一部分將在後續的關鍵特性介紹章節詳細説明。

對典型應用,可以抽象出主要的接口和調用流程,如圖所示。其中模型推理、單算子調用走不同的接口調用流程。
- 首先是調用初始化接口,完成系統初始化;然後申請內存等必備的運行資源;
- 對於模型的推理,需要調用接口加載事先轉換好的離線模型om文件;
- 如果模型對輸入圖片的寬高要求與用户提供的源圖不一致,則需要媒體數據處理,將源圖裁剪成符合模型的要求;
- 對於模型推理的輸出,需要從推理結果中查找最大置信度的類別標識對圖片分類,這裏可以用單算子調用接口進行加速;
- 工作結束後,需要卸載模型、釋放運行資源,最後是調用接口實現系統的去初始化

通過前面的介紹,相信大家對於CANN提供的推理開發工具、開發流程 已經有了瞭解。而對於人工智能的訓練任務,CANN也提供了完備的工具和支持。
包括開源模型下載,自動化模型遷移,高度工具化調測,智能性能調優,最終在昇騰上運行。
經過長期積累,CANN 5.0已經全面支持了業界的主流AI模型,並在昇騰社區的Model Zoo提供500多個經過性能優化的模型下載。
對於用户私有的網絡,CANN也提供了模型遷移工具,可以自動完成腳本的遷移轉換,而不需要手工修改代碼。
此外,CANN還提供了多種自動化的調測工具,支持數據異常檢測、融合異常檢測、整網數據比對,幫助開發者定位問題。
再結合前面提到的AOE工具,可以對算子和模型進行自動化的搜索優化,幫助用户取得極致性能。
昇騰CANN機器人開發項目
接下來我們分享一些基於昇騰軟硬件開發的機器人項目。

(輪式巡檢機器人 入住公司展廳、參展WAIC、MWC、HC、HDC)

(沙漠植樹機器人 CCTV、上海電視台報道、外交部發言人趙立堅微博視頻發佈)

(華為研究所室外機器狗送咖啡場景)

(層規劃控制算法 跨越不連續地形)
基於昇騰AI,我們做了一些機器人項目。

(四足機器人+ 機械臂複合機器人 危險場景巡檢處置 江蘇電視台報道 )
昇騰創想日的機器狗+機械臂的複合機器人現場直播展示,這裏面我們是模擬了一個發行險情的封閉室內環境,機器狗進入室內,查看險情,並用機械臂切斷電源的一個演示。

(石子路地形)

(上斜坡 下階梯)

(草地 石板路 停車場)
目前我們正在推進的是強化學習機器狗控制這塊,這個項目的來源也是來自廖博,在我們做傳統控制方法,並給廖博做了相關的彙報。
還有一個是我們在南京,昇騰創想日的機器狗+機械臂的複合機器人的現場展示,可能線上有一些朋友是在現場看過,這裏面我們是模擬了一個發行險情的封閉室內環境,機器狗進入室內,查看險情,並用機械臂切斷電源的一個演示。

(四足機器人硬件)
好的,看完這幾個視頻的演示,我們就進入今天的正式的內容,説到機器人,肯定離不了和硬件打交道,首先從機器人的硬件開始介紹,大家可以有一個基礎的瞭解。其中傳感器、執行器、通信模塊、計算單元。

(計算控制單元)

(基於昇騰CANN的智能複合機器人方案)
機器人控制算法
接下來我以四足機器人的控制為主,分享相關算法。

(基於模型機器狗運動控制系統算法框圖)

(上層定位、導航數據流圖)

(傳統運動控制流程)

(基於事件的步態調度器)

(擺動腿規劃與控制)

(四足機器人動力學模型)
其中,一個是平移動力學模型,一個是角動量模型。表示機器人位置:fi表示機器人受到反作用力,cg表示機器人重力,m是機器人的身體質量,nc是接觸的數量,I是轉動慣量張量,w是軀幹的角速度,ri是第i個接觸點相對於到機器人的CoM,相當於接觸力的臂。

(站立腿控制器)

(位姿調整)
根據接觸模式切換,預測支撐域,並調整質心位置。多邊形質心偏離接近其結束的stance腿,和朝向即將觸地的腿。

(Whole Body Control)
WBC 的英文全稱為 Whole Body Control。為了降低運動控制算法的複雜性,控制任務通常會被分解為一組較為簡單的任務,如保持平衡的軀幹姿態控制,擺動相的足底軌跡跟隨,或者用於防止滑動的接觸力約束。每一個任務往往都需要多個驅動關節配合完成,同時每一個驅動關節又同時服務於多個任務,適應這種任務分解的理論框架是全身控制(WBC)。一般來説,為實現一組任務,所有驅動關節都能得到控制信號的控制系統都可以稱作全身控。

(端到端強化學習機器狗運動控制系統算法框圖)
同時 我們也在嘗試端到端的強化學習機器狗控制方法。

(強化學習+模仿學習)
用RL訓練一個在隨機生成地形上受隨機擾動仍能以隨機目標速度行走的教師策略。
訓練一個能在不用特權信息下復現教師策略動作的學生策略。學生策略使用循環編碼器構造一個信念狀態來捕獲未觀察到的信息,並基於該信念狀態輸出一個動作。將學習到的學生策略轉移到物理機器人上,並在現實世界中使用機載傳感器。


(Policies Modulating Trajectory Generators)

(域隨機化)

(課程學習機制)

(傳統 vs RL機器人底層控制對比)
同時 我們也在嘗試端到端的強化學習機器狗控制方法。



CANN訓練營目前正在火熱進行中,大咖講堂、超能大賽、互動好禮等各種精彩等你來。
- GaussDB(DWS)運維:導致SQL執行不下推的改寫方案
- 詳解目標檢測模型的評價指標及代碼實現
- CosineWarmup理論與代碼實戰
- 淺談DWS函數出參方式
- 代碼實戰帶你瞭解深度學習中的混合精度訓練
- python進階:帶你學習實時目標跟蹤
- Ascend CL兩種數據預處理的方式:AIPP和DVPP
- 詳解ResNet 網絡,如何讓網絡變得更“深”了
- 帶你掌握如何查看並讀懂昇騰平台的應用日誌
- InstructPix2Pix: 動動嘴皮子,超越PS
- 何為神經網絡卷積層?
- 在昇騰平台上對TensorFlow網絡進行性能調優
- 介紹3種ssh遠程連接的方式
- 分佈式數據庫架構路線大揭祕
- DBA必備的Mysql知識點:數據類型和運算符
- 5個高併發導致數倉資源類報錯分析
- 實踐Pytorch中的模型剪枝方法
- 對比分析數倉中行列存的特性
- Python圖像處理丨詳解圖像去霧處理方法
- 知識蒸餾、輕量化模型架構、剪枝…幾種深度學習模型壓縮方法