ESWIN實習(xí)第一次培訓(xùn)筆記(寧宇leader主講)

      網(wǎng)友投稿 953 2022-05-30

      培訓(xùn)主題:要做什么?能做什么?需要做什么?

      成熟的AI軟件團(tuán)隊

      開發(fā)了從底層驅(qū)動,AI算子庫,并行計算框架,AI框架的完整工具鏈

      對接了Tensorflow等通用框架,用戶程序可以零修改運(yùn)行到自主AI芯片上

      開發(fā)了自主輕量級推理框架,實現(xiàn)模型轉(zhuǎn)換,圖優(yōu)化,高效運(yùn)行推理模型

      開發(fā)了AI性能分析,量化等工具

      開發(fā)了基于LLVM/GCC 的并行計算編譯器,OpenCL 編譯器

      ESWIN 是一個芯片公司,成都site主要是軟件團(tuán)隊!

      一個芯片能不能賣,賣的如何,決定性因素除了硬件還有軟件!

      軟件做到什么程度,用戶用的順手與否?

      它的工具是否豐富?

      對生態(tài)支持完不完善?

      以上因素綜合決定了它在后期市場上的表現(xiàn)!

      軟件團(tuán)隊主要是配合硬件在市場上與客戶對接!

      涉及面廣,深度比較深,從下往上:指令集、架構(gòu)都是自己開發(fā)的。

      從編譯、驅(qū)動、框架、模型算法、應(yīng)用(對接通用的訓(xùn)練框架、AI框架)

      底層的話用的是 RISC-V 的指令集,一個趨勢。指令集演變趨勢:x86 -> ARM -> RISC-V

      RSIC-V除了通用的指令集,針對AI加速(PINT平臺)制定了自己的指令。

      自組指令的支持,編程上性能優(yōu)化。涉及東西比較多。

      底層基于Linux平臺開發(fā),涉及到內(nèi)核態(tài)、用戶態(tài)的驅(qū)動。

      驅(qū)動作用,讓硬件怎么樣可以用軟件的方式去驅(qū)動!

      并行計算:

      NVIDIA 通過 CUDA 對接 GPU

      ESWIN 通過 OpenCL 對接 PINT

      EAS0020軟件棧

      通過第一代產(chǎn)品迭代,已形成較為完整AI軟件棧

      可以與已有通用框架無縫對接

      無縫對接Tensorflow

      用戶程序零改動運(yùn)行

      對 Tensorflow 的后端進(jìn)行支持,Tensorflow 默認(rèn)是基于CUDA,PINT 即把基于CUDA的后端直接port到基于PINT的后端。

      利用其存儲生態(tài),訓(xùn)練推理框架可以直接對接到我們的產(chǎn)品上!

      NVIDIA 是利用CUDA這樣一個庫,來后面對接實現(xiàn)自己的算子,在他們廠的硬件上進(jìn)行運(yùn)算和加速!

      PINT 是利用OpenCL這樣一個庫,針對各個算子,針對自己的硬件平臺進(jìn)行功能實現(xiàn)和性能優(yōu)化!

      曾穎超主要做算子的優(yōu)化這方面的!

      優(yōu)化的跟平臺和硬件設(shè)計特別相關(guān),

      從客戶來講,基于成熟的硬件訓(xùn)練平臺,如TensorFlow等,結(jié)合自己的業(yè)務(wù)會生成自己的算法或模型。不會愿意花費(fèi)太多的精力在另一個平臺上學(xué)東西。因此PINT 框架支持了模型轉(zhuǎn)換、性能調(diào)優(yōu)。

      用戶可以拿他們的模型在PINT上方便的部署,并且對性能進(jìn)行一定的調(diào)優(yōu)。

      驅(qū)動框架是下面的驅(qū)動和通用平臺之間的適配層。目前主要是OpenCL,但是也提供了類似CUDA的Driver API的PINT API。

      進(jìn)來的同學(xué):應(yīng)用、算子、RTL(仿真)【不太偏底層】

      RTL說白了,可能就是利用API或OpenCL加速一些相應(yīng)的計算,應(yīng)用領(lǐng)域不一樣,實現(xiàn)方式略有不同!

      為了支持這種生態(tài),進(jìn)行了接口上的適配和功能上的實現(xiàn)。

      軟件棧

      編程模型

      APU成都軟件團(tuán)隊介紹

      mcore + ncore = APU

      指令架構(gòu)

      RISC-V、Spc/Customer、GCC/LLVM

      系統(tǒng)集成

      Driver PCIe/Decoder/UAP、Framework OpenCL/PintUP

      運(yùn)行框架

      Training TensorFlow、Inference PintMini

      算子算法

      Multiple Scenario、Detect/Identify/Track/…

      應(yīng)用工具

      Debug/Performance/Demo

      自動化測試

      CI/CD Jenkins

      協(xié)同驗證

      Simulation/FPGA/ASIC

      項目管理

      Confluence(會議、文檔)/Jira(任務(wù))/Bitbucket(代碼)

      OA(事務(wù)的處理:請假出差、財務(wù)上的流程)

      成都軟件團(tuán)隊

      系統(tǒng)驅(qū)動【編譯、內(nèi)核態(tài)用戶態(tài)實現(xiàn)】

      系統(tǒng)應(yīng)用【API、Demo、用戶對接比較多】

      框架【對主流AI框架移植,自有的高效推理框架實現(xiàn)小組】

      算子【針對硬件平臺進(jìn)行功能實現(xiàn)、性能加速的小組】

      算法【針對項目的模型的調(diào)試,現(xiàn)有及以后算法趨勢的研究,對產(chǎn)品的架構(gòu)和設(shè)計提供參考】

      測試

      硬件介紹

      并行加速的芯片,可以同時運(yùn)算的計算單元。主要概念就是core,基于RSIC-V指令,是標(biāo)量計算。

      AI里面運(yùn)算量比較大的,如矩陣運(yùn)算等,PINT也有一些硬件加速,如Systolic Array。

      PINT core 類比 NVIDIA 的 CUDA Core

      Systolic Array 類比 NVIDIA 的 Tensor Core

      core也是分區(qū)域的,8個core是一組PE,PE 類比 NVIDIA 的 SM

      Systolic Array對卷積和矩陣運(yùn)算效率比較高!在CV領(lǐng)域,對特定計算進(jìn)行加速,對性能提示!

      各個core連接到Interconnection Network進(jìn)行處理,進(jìn)行并行計算的時候,各個core都可以對自己需要的一些數(shù)據(jù)進(jìn)行處理,處理完之后,在框架上得到想要的結(jié)果。

      對外的接口,產(chǎn)品有兩種形態(tài),一種加速卡,一個叫邊緣盒子,對外接口的話通過PCIE對host端進(jìn)行交互!

      芯片架構(gòu)介紹

      做算子對具體的硬件設(shè)計要求比較高,特別在計算里面對性能提升多的,比如存儲的訪問,對計算加速的特殊指令使用。

      core的計算,它的性能,數(shù)據(jù)流怎么走?

      【ESWIN實習(xí)】第一次培訓(xùn)筆記(寧宇leader主講)

      core對資源的訪問,分了幾級的存儲,比如說對它自己來講有Dcache,其他 core 不能訪問它的Dcache。故Dcache對該core來講是訪問最快的!

      對于所有core 來講,有shared-cache,全局的。

      在shared-cache以下有一個DDR。

      很多算子要提升性能,就是在這里考慮很多事情,比如訪問的存儲資源的空間的分配,怎么比較優(yōu)!

      優(yōu)即該資源在對應(yīng)的Dcache里就能拿到,沒必要去其他地方去取。有點(diǎn)類似Local Memory。

      性能分析和調(diào)優(yōu),即訪

      異構(gòu)并行加速器的框架

      ncore:實現(xiàn)并行的能力

      mcore:相當(dāng)于對并行core的匯總的一個關(guān)系

      不退出設(shè)備的前提實現(xiàn)多個并行處理!NVIDIA的CUDA不能這樣!

      Pint OpenCL簡介

      OpenCL針對并行計算的通用框架,接口的規(guī)范工作。

      異構(gòu)并行計算機(jī)能加速計算任務(wù)的完成,異構(gòu)框架下的加速器衍生出了多種類型,如GPU、FPGA、APU、TPU等,每種類型的加速器也會有不同廠家產(chǎn)品,如AMD、NVIDIA、Intel等,各廠商通常僅僅提供對于自己設(shè)備編程的實現(xiàn),這樣對上層應(yīng)用的規(guī)范和遷移帶來困難。

      OpenCL(Open Computing Language),旨在滿足上述需求, 它是一個通用的由很多公司和組織共同發(fā)起的多CPU\GPU\其他芯片異構(gòu)計算(heterogeneous)的標(biāo)準(zhǔn),它是跨平臺的。

      OpenCL( 官網(wǎng)鏈接)的標(biāo)準(zhǔn)定義和學(xué)習(xí)資料在官網(wǎng)和互聯(lián)網(wǎng)上都非常容易獲取,不多做贅述。

      OpenCL編程模型的系統(tǒng)框圖如下邊:

      相當(dāng)于針對并行計算的通用框架,進(jìn)行接口的規(guī)范。

      利用OpenCL框架做,也是考慮到生態(tài),我們的東西與其他第三方的進(jìn)行對接,采用相應(yīng)的標(biāo)準(zhǔn),對后續(xù)的拓展和兼容是比較好的,可以省下后續(xù)的成本。

      框架和應(yīng)用也是通過OpenCL的方式把它封裝起來!

      算子在設(shè)備端運(yùn)行,主要用的RSIC-V編譯器,將我們的算子通過OpenCL的語法,將其編譯成我們設(shè)備端能運(yùn)行的形式。

      基本上軟件實現(xiàn)的從上到下的一個框架

      設(shè)備代碼編譯與運(yùn)行

      使用OpenCL Kernel Wrapper/C++編程方式

      實現(xiàn)kernel函數(shù)(可使用完整C++語法),記為cpp_kernel

      cpp_kernel包裝成標(biāo)準(zhǔn)C語言可以調(diào)用的函數(shù),記為clinkage_kernel

      使用riscv-gcc編譯器,將clinkage_kernel編譯為靜態(tài)庫(.a文件)

      將clinkage_kernel包裝成opencl C語法的kernel函數(shù),記為ocl_kernel

      編寫CPU端opencl程序。使用build from source的方式,將ocl_kernel源碼文件送入opencl與生成的靜態(tài)庫一起進(jìn)行編譯。之后創(chuàng)建kernel,運(yùn)行kernel。

      問題提問

      結(jié)合自己要從事方向

      并行計算的芯片公司,做出來的東西可能要給客戶用,怎么樣能把自己做的事融入到項目里面來。

      要做些什么?要做的是哪些?要做到哪些程度?免得自己不清楚在軟件里面的定位!

      疑問、疑惑對工作有哪些改善的?

      對任務(wù)的要求急不急啊?

      怎么分配任務(wù)?

      平時怎么匯報任務(wù)?匯報方式?

      例會是結(jié)合每個小組。

      開會是以什么樣的方式的組織?

      進(jìn)來之后有個儀式感?

      遇到問題找哪些人?上下游做什么的?你做的工作是哪一部分?

      性能調(diào)優(yōu)是根據(jù)什么調(diào)優(yōu)的?

      細(xì)一點(diǎn):counter等…,在計算過程中,在訪問資源的過程中有沒有達(dá)到很好的利用。

      大一點(diǎn):結(jié)合模型,借助性能分析工具,通過打點(diǎn)的方式,知道它在設(shè)備上的占用情況是不是已經(jīng)讓設(shè)備一直不停的再動。

      高一點(diǎn):整個業(yè)務(wù)上,多個模型,多個進(jìn)程等等,把任務(wù)分配合理,設(shè)備利用起來等!

      老員工也在學(xué)

      CV、仿真加速、區(qū)塊鏈、大數(shù)據(jù)分析

      多交流

      類似寒武紀(jì)這樣的AI公司,純做推理,講究功耗性能比,單位功耗里面輸出多少算力。在硬件上考慮很多東西,他們一個比較常用的方法就是算法硬件化。(用ASIC方式實現(xiàn))

      優(yōu)點(diǎn):功耗很低,面積很小,速度很快!

      弊端:模型支持有限制

      ESWIN與這些純做推理AI公司主要區(qū)別:

      定位不同,導(dǎo)致了實現(xiàn)細(xì)節(jié)不同,進(jìn)而在軟件層面工作的差異,ESWIN主要做通用型的硬件加速,通用型指很多實現(xiàn)是靠軟件來實現(xiàn)的!比如:算子實現(xiàn)、任務(wù)調(diào)度等都是通過可編程的方式實現(xiàn),對于軟件來講,靈活度比較大,挑戰(zhàn)性比較高,優(yōu)化能力都會有一個很高的要求!

      對于ASIC,主要把網(wǎng)絡(luò)的流程打成一個流,以狀態(tài)機(jī)的方式流動。

      兩者實現(xiàn)場景有些不一樣!

      ESWIN人不多,但同時做很多東西!實現(xiàn)的方式?jīng)Q定了很多東西需要自己去做。

      AI 云學(xué)院 深度學(xué)習(xí)

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:20個 CSS 快速提升技巧
      下一篇:【CANN訓(xùn)練營第四期】如何在AI1S云服務(wù)上基于ACL實現(xiàn)單算子調(diào)用
      相關(guān)文章
      亚洲国产精品自产在线播放| 久久亚洲国产成人精品性色| 亚洲Av无码国产情品久久 | 亚洲精品韩国美女在线| 亚洲伊人久久大香线蕉AV| 亚洲人成网7777777国产| 久久精品国产精品亚洲毛片| 亚洲精品岛国片在线观看| 亚洲国产av玩弄放荡人妇| 亚洲理论在线观看| 亚洲精品国产精品乱码在线观看| 精品国产日韩亚洲一区在线| 亚洲免费视频播放| 亚洲爱情岛论坛永久| 亚洲A∨午夜成人片精品网站| 亚洲AV无码之国产精品| 亚洲乱码一二三四五六区| 亚洲AV色香蕉一区二区| 亚洲国产成人久久精品影视| 日日噜噜噜噜夜夜爽亚洲精品| 亚洲AV无码之国产精品| 国产精品亚洲色图| 亚洲日韩国产一区二区三区在线| 亚洲第一精品电影网| 亚洲三级在线播放| 久久亚洲精品国产精品婷婷 | 亚洲av片在线观看| 亚洲国产黄在线观看| 亚洲午夜久久久久久噜噜噜| 亚洲精品网站在线观看不卡无广告| 国产亚洲精品高清在线| 精品国产综合成人亚洲区| 亚洲中文字幕无码久久精品1| 国产A在亚洲线播放| 亚洲专区在线视频| 亚洲人成毛片线播放| 亚洲狠狠婷婷综合久久| 亚洲欧洲中文日韩av乱码| 国产成人va亚洲电影| 相泽亚洲一区中文字幕| 亚洲伊人久久成综合人影院|