新(xīn)聞動態

免費谘詢熱線(xiàn)

13621929115
公司新(xīn)聞
您的位置(zhì): 主頁 > 新聞動(dòng)態 > 公司新聞

產業機器人

發布日期:2021-09-15 16:14瀏覽次數:
本文簡樸先容了神經網(wǎng)絡模型實際應用在移動平台必不(bú)可少的一步——量化(huà),以(yǐ)及天元(yuán)(MegEngine )在量(liàng)化上做的<b>搬運產(chǎn)業機器人DH建模</b>一些工作:包括底層針對不(bú)同平台的(de)一些優化效果,在用戶接口使用上的一些設計理念。之後(hòu)可(kě)以再轉換至 Q 模型上,通過 trace.dump 接口(kǒu)就可以直接導出進行(háng)部署。練習結束後可以轉換(huàn)至 QFloat 模型(xíng)上,通(tōng)過配置不同的 Observer 和假量化算子來選擇不同的量化(huà)參數 scale 獲取方式,從而選擇進行(háng) QAT 或 Calibration 後量化。 
ARM 平(píng)台
量化部門作為模型推理部署的(de)重(chóng)要步驟,是業界在大規模(mó)產業應用當中極為關注的部門,它在 MegEngine 的底層優化中占(zhàn)了很大比重。 
工程
另(lìng)外,由<b>產業木材可以做家具嘛</b>於分段函數在分段點沒有梯(tī)度,所認為了使假量化操縱不影響(xiǎng)梯度回傳,就需(xū)要模擬一個梯度,最(zuì)簡樸的方法(fǎ)就是用y=x來模擬這一分段函數,事實證實這麽做也是有效的,這種(zhǒng)經典的操(cāo)縱被(bèi)稱為“Straight-Through-Estimator”(STE)。 
CUDA 平台
ARM平(píng)<b>產業機器人3d模型下載</b>台一般是指手機移動端,其係(xì)統架構和底層指令都不同於www.17C.com熟知的電腦CPU,而跟著架構的變(biàn)遷,不同架(jià)構之(zhī)間的指令也存在不(bú)兼容的題目。 MegEngine Website:https://megengine.org.cn
QFloat → Q 並(bìng)導出用於部署:
這樣的好處在於,用戶可以控製每一處量(liàng)化過程的細節,可以分別采用不同量化算子和數值類型。 一般在通(tōng)用計算平台上,浮點計(jì)算是最常用的(de)計算方式,所以大部門指令也(yě)是針對浮點計算的(de),這使得量化模型所需的定點計算機能往往並不理想,這就需要針對各個平台優化其定點計(jì)算(suàn)的機能。也歡迎閱讀(dú)www.17C.com此前的(de)MegEngine係列文章:
。 下(xià)文簡樸說明一下在 MegEngine 中轉(zhuǎn)換一(yī)個 ResNet 網絡的全流程代碼: Float → QFloat:
如上圖,用戶首先在普通 Module 長進行正常的模型練習工作。 因為三者的精度一般是 Float > QFloat > Q ,故量(liàng)化算法也就分為兩步: 拉近 QFloat 和 Q:這樣練(liàn)習階段的精度可以作為終(zhōng)極 Q 精度(dù)的代(dài)辦代理指標,這一階段偏工程;拔高 QFloat 迫臨 Float:這樣就可以將(jiāng)量化模型機(jī)能盡可能恢複到 Float 的精(jīng)度,這一階段偏算法。 這樣實現的缺點在於用(yòng)戶在使用時需要修改原先的網絡結構,使用 fuse 好的 Module 搭建網絡,而好處則是用戶能更直(zhí)接地控製網絡如何(hé)轉換,比猶如時存在需要(yào) fuse 和不需(xū)要 fuse 的 Conv 算子,比(bǐ)擬(nǐ)提供(gòng)一個冗長的白名單,www.17C.com更(gèng)傾向於在網絡結構中顯式地(dì)控(kòng)製,而一些默(mò)認會進行轉換的算子,也可以通過 disable_quantize 方法來控製其不(bú)進行轉換。 針對推理(lǐ)優化(huà)中常用的算子融合,MegEngine 提(tí)供(gòng)了一係列已 fuse 好的 Module,其對應的 QuantizedModule 版本都(dōu)會直接調用底層實現好(hǎo)的融合算子(好比(bǐ) conv_bias)。為此,MegEngine針對ARM v8.2前後版天(tiān)職別實現了不同的優化: ARM v8.2 主要的特性是提(tí)供了新的引入了新的 fp16 運(yùn)算和 int8 dot 指令,MegEngine基於此(cǐ)進行一係列細節(jiē)優化(細節:四個(gè)int8放到一個128寄存器的32分塊裏(lǐ)一起算),終極實現了比浮點版本快2~3倍的速度晉升而對於v8.2之前的ARM處理器,MegEngine則通過對Conv使(shǐ)用nchw44的layout和(hé)細粒(lì)度優化,並立異性(xìng)地使用了int8(而非傳統(tǒng)的int6)下(xià)的winograd算法來加速Conv計算,最(zuì)使實現能(néng)夠和浮點(diǎn)運算媲美的速(sù)度。各個版本的算子是逐一對應的,且通過公(gōng)道的類繼續免除了大量算子實現中的冗餘代碼(mǎ),清(qīng)楚簡潔(jié)。 
X86 平台
CUDA 平(píng)台是指 NVIDIA 旗下 GPU 平台,因為提供 CUDNN 和 Toolkit 係(xì)列接口以及 TensorRT 專用推(tuī)理庫,大部門算子可以(yǐ)使用官方優化,而 MegEngine 則在此基(jī)礎長進行了更多細節的優化,好比如何更好地利用 GPU 的TensorCore 進(jìn)行加速,不同型號之間一些差異的處理等,終極效果根據不同模型也(yě)有非常顯著(zhe)的推理加(jiā)速。 盡管不同量化算法可能在假量化的詳細實現上有所區別,但是一般都(dōu)會有一個“截(jié)斷”的操縱,即把數值範圍較大的浮點數轉換成數值範圍較小的(de)整數(shù)類型,好比下圖,輸入一個[-1, 1)範圍的浮點數,假如(rú)轉換(huàn)為 4 位整型,則最多隻能表示 2^4 個值,所以需(xū)要將輸(shū)入的範圍劃分(fèn)為16段,每段對應一(yī)個固定的輸出值,這樣就形成了一個類似分段函數的(de)圖像(xiàng),計算公式為:
以常<b>車間5s治理(lǐ)內容尺度車間圖片</b>用的 Type3 為例,一個完整的量化流程分為三階段(duàn):
Type1 和 Type2 因為是在模型浮點模型練(liàn)習(xí)之後參與,無需大量練習數據,故而轉換代價更低,被稱為後量(liàng)化(Post Quantization),區別在於是否需要小批量數據來校準(Calibration);Type3 和 Type4 則需要在浮點模型(xíng)練(liàn)習時就插入一些假量化(FakeQuantize)算(suàn)子,模擬量化過程中數值截斷後精度降低的情形,故而稱為量化感知練習(xí)(Quantization Aware Training, QAT)。 
以上是對各個平台推理加(jiā)速效果的整體先(xiān)容,更多更(gèng)細節的先(xiān)容(róng)可以期待之(zhī)後的係列文(wén)章(zhāng)。 
實現量化的算法多種多樣,一(yī)般按照代價從低(dī)到高可以分為以(yǐ)下四種:
一種最直觀的裁剪方式就是用更少位(wèi)數的數值(zhí)類型來存儲網絡參數,好比常見的(de)做法是將 32 位浮點數模型轉換成 8 位整數模型,模型大小減少為 1/4,而(ér)運行(háng)在特定的設備上其計算速度(dù)也能晉升為 2~4 倍,這種模型(xíng)轉換方式叫做量(liàng)化(Quantization)。在目前開源的版本裏,針對三大平台(X86、CUDA、ARM),MegEngine都有非常具體的支持,尤其是(shì)ARM平台。本文將扼要先容神經網(wǎng)絡量化的原理,並與大(dà)家分享MegEngine量化方麵的(de)設(shè)計思(sī)路與實操(cāo)教程。 另外www.17C.com還明確了假量化算子(FakeQuantize)和Observer的職責,前者將主要(yào)負責對輸入進行截斷處理的計算部門,而後者(zhě)則隻會記實輸入的值,不會改變輸出,符合 Observer 的語義。 
(1)以(yǐ)一個練習(xí)完畢的浮點模型(稱為 Float 模型)為出發(fā)點;(2)包含假量化算子的用浮點操縱來模擬量化過程的新模型(Quantized-Float 模型或 QFloat 模型);(3)可(kě)以(yǐ)直接在終端設備上運行的模型(Quantized 模型,簡稱 Q 模型)。 
工程之道,CPU推理(lǐ)機能進步數十倍,MegEngine計算(suàn)圖、MatMul優化解析工(gōng)程之道,MegEngine推理(lǐ)機能(néng)極致優化之綜(zōng)述篇工程(chéng)之道,深度解析(xī)MegEngine亞線性顯存優化技術 背景
MegEngine 提供從練習到部署完整的量化支持,包括量(liàng)化感知練習以及練習後量化,憑借“練習推理一體”的特性,MegEngine更能保證量化之後的模型(xíng)與部(bù)署之後的效果(guǒ)一致。 原理
近年來跟著邊沿計算和物聯網的興起與發展,很多(duō)移動(dòng)終端(好比手機)成為了深度學習應用的承載平台(tái),甚至泛起了各式各樣專用的神經網絡計算芯片。 天元(MegEngine)相信,通過(guò)簡潔(jié)清楚的接口設計與極致(zhì)的機能優化.
總結
更多接口細節可以參考官網文檔。分別代表上文提及的帶假量(liàng)化算子的 QFloat 模型(xíng)與 Q 模型,並提(tí)供普通(tōng) Module → QATModule → QuantizedModule 三階段的轉(zhuǎn)換接口。 第一步在MegEngine框架的“練習推理一體化”特性下得到了保證,而第二步則取決於不同的量化(huà)算法。 在配(pèi)置使用上(shàng),用戶需要顯式指(zhǐ)定針對 weight、activation 分別使用哪種 Observer 和 FakeQuantize,好比:
除了底層實現上的加速與優化,在 Python 側練習部門,MegEngine對接(jiē)口也有良多細節設計,使得整(zhěng)體代碼邏輯清楚簡(jiǎn)潔。 量化的(de)目的是為了追求極致的推理計算速度(dù),為此舍棄了數值表示的精度,直覺上會帶來較(jiào)大的模型掉點,但是<b>老式磨粉(fěn)機</b>在使(shǐ)用一係列精細的量化處理之後,其在推(tuī)理時的掉點可以變得微乎其微,並能支持正常的部署(shǔ)應(yīng)用。 www.17C.com在 Module 中額外引入了兩<b>產業(yè)建模(mó)教程</b>個基類:QATModule、QuantizedModule 。 
X86 平台是指 Intel CPU 平台(tái),近年來跟著深度學習的發展,其也(yě)慢慢提供(gòng)了針對定(dìng)點運算更多的支持(chí)。因為這些設備往(wǎng)往(wǎng)對計算資源和能耗有較大限製,因此在高機能服務器上練習得到的神經網絡模型需要進行裁剪以縮小內存占用、晉升計(jì)算速度(dù)後,才能較好地在這些平台上運行。而對於不支持 VNNI 指令的 CPU,一般隻提供最低 int16 的數值類型支持,則通(tōng)過使用 AVX2(Advanced Vector Extensions)這一向量格局,實現了 int8 推理機能與(yǔ)浮點機能持平。 使用
在新(xīn)一代至強(Xeon)處(chù)理器上,通過使用 VNNI(Vector Neural Network Instructions)指(zhǐ)令,MegEngine 將 CPU 的 int8 推理機能(néng)優化到了浮(fú)點機能的 2~3 倍。
標簽:

產品推薦(jiàn)

Copyright © 2002-2020 上海(hǎi)潤之模型設計有限公司 版權所有 展示模型,展品模型,展廳模型,展示道(dào)具,展廳展品,展品道具(jù),模型(xíng)定製,模型公司,上(shàng)海模型公司 備案號:滬ICP備20018260號(hào)

13621929115
网站地图 www.17C.com_17.C-起草网登录在线_17c.一起草 在线观看视频_17c.com免费观看入口