精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

CPU上最流行的加速神經網絡推理方法之一

Tensorflowers ? 來源:TensorFlow ? 作者:TensorFlow ? 2021-09-12 15:57 ? 次閱讀

量化是在 CPU 上最流行的加速神經網絡推理方法之一。去年,TensorFlow Lite 通過 XNNPACK 后端提高了浮點模型的性能。如今,我們將 XNNPACK 后端擴展至量化模型。各個計算機視覺模型就表現而言,與默認的 TensorFlow Lite 量化內核相比,改擴展在 ARM64 手機上的速度平均提升 30%,在 x86-64 筆記本電腦及桌面設備系統上提升 5 倍,在 WebAssembly SIMD 的瀏覽器內推理上提升 20 倍。

TensorFlow Lite

https://tensorflow.google.cn/lite

XNNPACK 后端

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/delegates/xnnpack/README.md

XNNPACK 中的量化推理針對 TensorFlow 模型優化工具包所用的對稱量化架構進行了優化。XNNPACK 既支持傳統的按張量量化架構,也支持較新且準確率更高的帶有權重渠道量化和激活按張量量化的架構。此外,XNNPACK 還支持非對稱量化架構,但效率有所降低。

對稱量化架構

https://tensorflow.google.cn/lite/performance/quantization_spec#symmetric_vs_asymmetric

傳統的按張量量化架構

https://arxiv.org/abs/1712.05877

帶有權重渠道量化和激活按張量量化的架構

https://arxiv.org/abs/1806.08342

性能提升

我們在一些邊緣設備和神經網絡架構針對 XNNPACK 加速的量化推理進行了評估。我們以下文介紹的四個公開模型和兩個內部量化模型為基準,它涵蓋了常見的計算機視覺任務:

1.EfficientNet-Lite0 圖像分類 [下載

下載

https://tfhub.dev/tensorflow/lite-model/efficientnet/lite0/int8/2

2.EfficientDet-Lite0 對象檢測 [下載]

EfficientDet-Lite0

https://arxiv.org/abs/1911.09070

下載

https://tfhub.dev/tensorflow/lite-model/efficientdet/lite0/int8/1

3.DeepLab v3 分割,使用 MobileNet v2 特征提取器 [下載]

DeepLab v3

https://ai.googleblog.com/2018/03/semantic-image-segmentation-with.html

MobileNet v2

https://arxiv.org/abs/1801.04381

下載

https://tfhub.dev/sayakpaul/lite-model/deeplabv3-mobilenetv2/1/default/1

4.CartoonGAN 圖像風格轉化 [下載]

CartoonGAN

https://ieeexplore.ieee.org/document/8579084

下載

https://tfhub.dev/sayakpaul/lite-model/cartoongan/int8/1

5.Face Mesh 特征點的量化版本

6.視頻分割的量化版本

視頻分割

https://ai.googleblog.com/2018/03/mobile-real-time-video-segmentation.html

使用 XNNPACK 在 Android/ARM64 手機上對量化的計算機視覺模型進行單線程推理時的速度提升

在六個 Android ARM64 移動設備上,XNNPACK 與默認的 TensorFlow Lite 量化內核相比,平均提升 30%。

使用 XNNPACK 在 x86-64 筆記本電腦和桌面設備系統上對量化的計算機視覺模型進行單線程推理時的速度提升

XNNPACK 在搭載 x86 處理器的筆記本電腦和桌面設備系統上有了更大幅度的提升。在我們基準測試中的 5 個 x86 處理器上,XNNPACK 將推理速度平均提升 5 倍。值得注意的是,不支持 AVX 指令集的低端和老式處理器,通過將量化推理轉換為 XNNPACK,將速度提升 20 倍以上,而 TensorFlow Lite 以前的推理后端只針對 AVX、AVX2 和 AVX512 指令集優化了,而 XNNPACK 則為所有 x86-64 處理器提供了優化實現。

通過 V8 運行時,使用 XNNPACK 在手機、筆記本電腦和桌面設備上對量化的計算機視覺模型進行單線程 WebAssembly SIMD 推理的速度提升

除了傳統的移動設備和筆記本電腦/桌面設備平臺外,XNNPACK 還通過 TensorFlow Lite Web API網絡平臺進行量化推理加速。上圖展示了在 3 個 x86-64 和 2 個 ARM64 系統上通過 V8 JavaScript 引擎運行 WebAssembly SIMD 基準時,與默認的 TensorFlow Lite 實現相比,幾何速度平均提升 20 倍。

TensorFlow Lite Web API

https://github.com/tensorflow/tfjs/tree/master/tfjs-tflite

兩年的優化

XNNPACK 起初是 QNNPACK 庫的一個分支,但是由于 XNNPACK 的第一個版本專注于浮點推理,而 QNNPACK 專注于量化推理,因此無法將兩者進行比較。如今,隨著 XNNPACK 引入對量化推理的支持及近兩年的性能優化,我們可以直接評估。

QNNPACK

https://github.com/pytorch/QNNPACK

為了比較這兩個量化推理后端,我們將隨機的 MobileNet v1 和 MobileNet v2 模型從 XNNPACK API 移植到 QNNPACK API,并在兩個 ARM64 Android 手機和兩個 x86-64 系統上對其單線程性能進行了基準測試。上圖顯示了結果,XNNPACK 在兩年內取得了驚人的進步。XNNPACK 在舊的 Pixel 3a 手機上的速度提升 50%,在新的 Pixel 4a 手機上速度提升 4 到 5 倍,在 x86-64 筆記本電腦上提升 2.5X,在 x86-64 工作站上提升 3 倍多。XNNPACK 從 QNNPACK 派生出來后的兩年中進行了多種優化,這使其性能提升:

MobileNet v1

https://github.com/google/XNNPACK/blob/master/models/qs8-mobilenet-v1.cc

MobileNet v2

https://github.com/google/XNNPACK/blob/master/models/qs8-mobilenet-v2.cc

XNNPACK 保留了 QNNPACK 中的優化,如間接卷積算法和針對微架構的微內核選擇,并通過間接反卷積算法將其進一步增強,同時具備更靈活的能力,如量化加法運算符和量化乘法運算符中內置的類 numpy 廣播。

間接卷積算法

https://arxiv.org/abs/1907.02129

間接反卷積算法

https://ieeexplore.ieee.org/document/9150450

卷積、反卷積和全連接運算符將 8 位激活和權重的乘積累積為 32 位數字,最終需要將該數字轉換回來,或者重新量化為 8 位數字。有多種方法可以實現重新量化,但 QNNPACK 采用了來自 GEMMLOWP庫的架構,該庫開創了神經網絡推理的量化計算。然而,人們后來發現 GEMMLOWP 的重新量化架構在準確率和性能方面并不是最優的,XNNPACK 憑借更高的性能和準確率取代了它。

GEMMLOWP 庫

https://github.com/google/gemmlowp

QNNPACK 以非對稱量化架構為目標,其中激活和權重都表示為無符號整數,并帶有零點和比例量化參數,而 XNNPACK 的優化專注于對稱量化,其中激活和權重都是有符號整數,且權重有額外的限制:權重的零點始終為零,量化的權重被限制在 [-127, 127] 范圍間(雖然 -128 可以表示為有符號 8 位整數,但是仍被排除在外)。在 XNNPACK 中利用對稱量化時具有兩個計算優勢。首先,過濾器權重是靜態時,輸入零點與過濾器權重的乘積累積結果可以完全融合到卷積、反卷積和全連接運算符中的偏移項中。因此,推理計算中完全沒有零點參數。其次,有符號的 8 位輸入元素與限制在 [-127, 127] 的權重元素的乘積可以填入 15 位。如此一來,卷積、反卷積和全連接運算符的微內核能夠在 16 位變量上進行一半的累積,而不是始終將乘積擴展到 32 位。

表示為無符號整數,并帶有零點和比例量化參數

https://arxiv.org/abs/1712.05877

QNNPACK 微內核針對 ARM 上的 NEON SIMD 指令集和 x86 上的 SSE2 SIMD 指令集進行了優化,但 XNNPACK 支持更多的特定指令集優化。XNNPACK 中的大多數量化微內核都針對 x86/x86-64 上的 SSE2、SSE4.1、AVX、XOP、AVX2 和 AVX512 指令集,ARM/ARM64 上的 NEON、NEON V8 和 NEON 點積指令集,以及 WebAssembly SIMD 指令集進行了優化。此外,XNNPACK 為 WebAssembly 1.0 和 pre-NEON ARM 處理器提供標量支持。

QNNPACK 為高端 ARM 和低端 ARM 內核引入了提供專門匯編微內核的想法,而 XNNPACK 將這一想法進一步推進。XNNPACK 不僅針對 Cortex-A53、Cortex-A55 以及具有或不具有 NEON 點積指令集的高端內核的專門專家調整軟件流水線匯編微內核,甚至在它們之間還支持實時切換。進行推理的線程從大核遷移到小核時,XNNPACK 會自動適應,從使用針對大核優化的微內核轉換到針對小核優化的微內核。

QNNPACK 主要專注于多線程推理,并將計算分割成大量的小任務,每個任務計算輸出張量的一個小切片。XNNPACK 重新設計了并行化,讓任務變得靈活:可以分割為細粒度或粗粒度,具體取決于參與并行化的線程數量。通過動態調整任務粒度,XNNPACK 在單線程執行中實現了低開銷,在多線程推理中實現了高并行化效率。

總之,這些優化讓 XNNPACK 擁有最先進的量化推理能力,且讓 TensorFlow Lite 成為最通用的量化推理解決方案,涵蓋包括 Raspberry Pi Zero、Chromebook,以及具有服務器類處理器的工作站在內的眾多系統。

如何使用?

量化的 XNNPACK 推理在所有平臺 TensorFlow Lite 的 CMake 構建,以及網絡平臺 TensorFlow Lite 的 Bazel 構建中默認啟用,并將在 2.7 版本的 TensorFlow Lite Web API 中可用。在其他平臺的 Bazel 構建中,量化的 XNNPACK 推理通過構建時的選擇機制啟用。使用 Bazel 構建 TensorFlow Lite 時,如果添加 --define tflite_with_xnnpack=true --define xnn_enable_qs8=true,TensorFlow Lite 解釋器將默認使用 XNNPACK 后端,使用具有對稱量化的受支持運算符??梢酝ㄟ^添加 --define xnn_enable_qu8=true Bazel 選項,對非對稱量化的運算符進行有限支持。

TensorFlow Lite Web API

https://github.com/tensorflow/tfjs/tree/master/tfjs-tflite

可加速哪些運算?

XNNPACK 后端目前支持量化的 TensorFlow Lite 運算符的子集(請參閱文檔,了解詳細信息和限制)。XNNPACK 支持由模型優化工具包通過訓練后的整數量化和量化感知訓練產生的模型,但不支持訓練后的動態范圍量化。

文檔

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/delegates/xnnpack/README.md#quantized-operators

未來展望

這是 XNNPACK 集成到 TensorFlow Lite 后的第三個版本,之前是浮點實現的初始版本以及引入稀疏推理支持的后續版本。在未來版本中,我們將添加以下改進:

最新 ARM 處理器上的半精度推理

稀疏量化推理。

更加快速的密集推理。

希望您能在 GitHub 和 StackOverflow 頁面上積極發表您的想法和評論,您也可以在 discuss.tensorflow.org 上提問。

GitHub

https://github.com/tensorflow/tensorflow/issues

StackOverflow

https://stackoverflow.com/questions/tagged/tensorflow-lite

discuss.tensorflow.org

http://discuss.tensorflow.org

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10825

    瀏覽量

    211149
  • 模型
    +關注

    關注

    1

    文章

    3172

    瀏覽量

    48713

原文標題:用 XNNPACK 加速量化推理

文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    國產芯運行TinyMaxi輕量級的神經網絡推理庫-米爾基于芯馳D9國產商顯板

    本篇測評由優秀測評者“短笛君”提供。本文將介紹基于米爾電子MYD-YD9360商顯板(米爾基于芯馳D9360國產開發板)的TinyMaxi輕量級的神經網絡推理庫方案測試。 算力測試TinyMaix
    發表于 08-09 18:26

    國產芯運行TinyMaxi輕量級的神經網絡推理庫-米爾基于芯馳D9國產商顯板

    D9360國產開發板)的TinyMaxi輕量級的神經網絡推理庫方案測試。 算力測試 TinyMaix 是面向單片機的超輕量級的神經網絡推理庫,即 TinyML
    發表于 08-07 18:06

    FPGA在深度神經網絡中的應用

    隨著人工智能技術的飛速發展,深度神經網絡(Deep Neural Network, DNN)作為其核心算法之一,在圖像識別、語音識別、自然語言處理等領域取得了顯著成果。然而,傳統的深度神經網絡模型
    的頭像 發表于 07-24 10:42 ?561次閱讀

    神經網絡專用硬件實現的方法和技術

    神經網絡專用硬件實現是人工智能領域的個重要研究方向,旨在通過設計專門的硬件來加速神經網絡的訓練和推理過程,提高計算效率和能效比。以下將詳細
    的頭像 發表于 07-15 10:47 ?965次閱讀

    什么是神經網絡加速器?它有哪些特點?

    神經網絡加速器是種專門設計用于提高神經網絡計算效率的硬件設備。隨著深度學習技術的快速發展和廣泛應用,神經網絡模型的復雜度和計算量急劇增加,
    的頭像 發表于 07-11 10:40 ?425次閱讀

    遞歸神經網絡的實現方法

    遞歸神經網絡(Recursive Neural Network,簡稱RNN)是種特殊類型的神經網絡,其特點在于能夠處理具有層次或樹狀結構的數據,并通過遞歸的方式對這些數據進行建模。與循環神經
    的頭像 發表于 07-10 17:02 ?278次閱讀

    如何在FPGA實現神經網絡

    可編程門陣列(FPGA)作為種靈活、高效的硬件實現方式,為神經網絡加速提供了新的思路。本文將從FPGA實現神經網絡的基本原理、關鍵技術、實現流程以及應用前景等方面進行詳細闡述。
    的頭像 發表于 07-10 17:01 ?1733次閱讀

    BP神經網絡和人工神經網絡的區別

    BP神經網絡和人工神經網絡(Artificial Neural Networks,簡稱ANNs)之間的關系與區別,是神經網絡領域中個基礎且重要的話題。本文將從定義、結構、算法、應用及
    的頭像 發表于 07-10 15:20 ?840次閱讀

    rnn是遞歸神經網絡還是循環神經網絡

    RNN(Recurrent Neural Network)是循環神經網絡,而非遞歸神經網絡。循環神經網絡種具有時間序列特性的神經網絡,能
    的頭像 發表于 07-05 09:52 ?491次閱讀

    遞歸神經網絡是循環神經網絡

    遞歸神經網絡(Recurrent Neural Network,簡稱RNN)和循環神經網絡(Recurrent Neural Network,簡稱RNN)實際是同個概念,只是不同的
    的頭像 發表于 07-04 14:54 ?637次閱讀

    深度神經網絡的設計方法

    深度神經網絡(Deep Neural Networks, DNNs)作為人工智能領域的重要技術之一,通過模擬人腦神經元之間的連接,實現了對復雜數據的自主學習和智能判斷。其設計方法不僅涉
    的頭像 發表于 07-04 13:13 ?409次閱讀

    bp神經網絡和卷積神經網絡區別是什么

    結構、原理、應用場景等方面都存在定的差異。以下是對這兩種神經網絡的比較: 基本結構 BP神經網絡種多層前饋神經網絡,由輸入層、隱藏層和
    的頭像 發表于 07-03 10:12 ?1022次閱讀

    卷積神經網絡分類方法有哪些

    卷積神經網絡(Convolutional Neural Networks,CNN)是種深度學習模型,廣泛應用于圖像分類、目標檢測、語義分割等計算機視覺任務。本文將詳細介紹卷積神經網絡的分類
    的頭像 發表于 07-03 09:40 ?396次閱讀

    卷積神經網絡和bp神經網絡的區別

    化能力。隨著深度學習技術的不斷發展,神經網絡已經成為人工智能領域的重要技術之一。卷積神經網絡和BP神經
    的頭像 發表于 07-02 14:24 ?2922次閱讀

    構建神經網絡模型方法有幾種

    構建神經網絡模型是深度學習領域的核心任務之一。本文將詳細介紹構建神經網絡模型的幾種方法,包括前饗神經網絡、卷積
    的頭像 發表于 07-02 10:15 ?312次閱讀