免費(fèi)谘(zī)詢熱線

13621929115
公司新聞
您的(de)位置: 主頁 > 新聞動態 > 公司新聞

風(fēng)力發電模型

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

產品推薦

Copyright © 2002-2020 上海潤之模型設計有限公司(sī) 版權所有 展示模型,展品模型,展廳模型,展示道具(jù),展(zhǎn)廳(tīng)展(zhǎn)品,展品道具,模型定製,模型公司,上海模型公司(sī) 備案號:滬ICP備20018260號

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