博客專欄

        EEPW首頁 > 博客 > 揭曉飛槳平臺提速秘訣:INT8 量化加速實現“事半功倍”

        揭曉飛槳平臺提速秘訣:INT8 量化加速實現“事半功倍”

        發布人:AI科技大本營 時間:2021-09-19 來源:工程師 發布文章

        為幫助廣大企業和開發者更加便捷和快速地創建深度學習應用,百度飛槳正不斷地提升平臺的訓練和推理能力,并與英特爾緊密合作,在至強? 平臺集成的AI加速能力的支持下,以 INT8 量化方案,在不影響預測準確度的情況下,將多個深度學習模型的推理速度加速到使用 FP32 時的 2-3 倍,大大提升了用戶深度學習應用的工作效能。

        在圖像分類等深度學習應用中,使用 INT8 替代 FP32 來提升推理效率、降低功耗和部署復雜度,是目前 AI 技術發展的重要方向。飛槳基于第二代英特爾? 至強? 可擴展處理器的高性能算力以及英特爾? 深度學習加速( VNNI 指令集)的技術,對應的 INT8 方案在不影響推理準確度的情況下,推理速度實現顯著的提升。

        -- 高鐵柱 高級經理 百度深度學習平臺部

        作為一家持續創新, 致力于“用科技讓復雜世界更簡單”的高科技公司, 百度* 正不遺余 力地推進人工智能(Artificial Intelligence, AI)最前沿技術的發展與探索, 并為各行業 與 AI 的無縫對接提供基礎支撐。其中,飛槳*(PaddlePaddle*)作百度推出的開源深度 學習平臺, 就能幫助企業與開發者快速、便捷地創建自己的深度學習應用。

        隨著飛槳在 AI應用領域的不斷拓展, 百度發現, AI 訓練與推理所需的巨大計算量和部署 復雜度, 給其在企業市場上的商用部署造成了較高的門檻, 對可用性造成了影響。同時,  它也看到, 在用于圖像識別、圖像分類等場景的深度學習模型中, INT8 等低精度的定點 計算在推理準確度上與傳統的 32 位浮點計算相差無幾, 但在計算速度、功率消耗上卻有 著更大的優勢。

        通過與英特爾開展緊密合作, 百度在其飛槳深度學習平臺中發布了 INT8 離線量化方案。 實際驗證表明, 基于第二代英特爾? 至強?可擴展處理器平臺, 并利用其集成的、對 INT8 有優化支持的英特爾? 深度學習加速技術(VNNI指令集), 可在不影響預測準確度的情 況下, 使多個深度學習模型在使用 INT8 時的推理速度,加速到使用 FP32 時的 2-3 倍之多1,大大提升了用戶深度學習應用的工作效能。

        百度飛槳開源深度學習平臺實現的解決方案優勢:

        ? 在圖像分類等場景所用的深度學習模型中,采用 INT8 等低精度定點計算方式,可以更高效地利用高速緩存,減少帶寬瓶頸,并更大限度地利用計算資源,降低功率消耗;

        ? 在 ResNet-50* 和 MobileNet-V1* 等多個深度學習模型上的實踐表明,基于第二代英特爾? 至強? 可擴展處理器,特別是它所集成的英特爾? 深度學習技術的支持,INT8可以實現與 FP32 相近的深度學習模型推理準確度,兩者差值在 1% 以內2;

        ? 在這些深度學習模型上的實踐,同時還表明,基于第二代英特爾? 至強? 可擴展處理器及英特爾?深度學習技術的支持,INT8 可實現更快的深度學習模型推理速度,其推理速度約為 FP32 的 2.2 倍~2.79倍3。


        飛槳深度學習框架

        作為一個易學易用、安全高效的分布式深度學習平臺,百度飛槳具備優異的訓練和推理性能。它在核心框架基礎上,提供了 VisualDL*、PARL*、AutoDL*、EasyDL* 以及 AI Studio* 等全流程深度學習工具組件和服務平臺,能夠滿足不同開發者和企業學習、開發及部署 AI 應用與服務的需求。目前,該框架已在智能推薦、機器視覺、自然語言處理等一系列 AI 應用場景的探索中,獲取了豐碩的實踐成果,得到了眾多 AI 開發者的青睞。

        為了進一步提升飛槳在商業部署中的可用性,百度團隊從多個維度著手,進一步探索提升其工作效率、降低其部署門檻和復雜度的“捷徑”。傳統上,深度學習的訓練和推理過程都采用精度較高的浮點數值,例如 FP32。高精度數值意味著 AI 系統會承載更大的計算、存儲壓力,有更高的功率消耗以及更復雜的系統設計。而隨著 AI 應用部署的“戰場”越來越廣,網絡邊緣節點乃至移動終端都開始接入 AI 應用,這對 AI 系統的計算、存儲能力和功耗提出了更為苛刻的要求。為此,飛槳也在尋求更多樣、更適合的方式來提升自身的可用性和資源利用效率。

        在圖像識別、圖像分類等場景的深度學習場景中,采用 INT8 等較低精度的數值替代 FP32 是一種可行的方案。低精度數值可以更好地使用高速緩存,增加內存數據傳輸效率,減少帶寬瓶頸,從而能夠更為充分地利用計算和存儲資源,并降低系統功率。這意味著,在同樣資源的支持下,INT8 可為深度學習的推理帶來更多的每秒操作數(Operations Per Second,OPS)。

        為幫助用戶便捷地采用 INT8 構建其深度學習應用,并取得與 FP32同樣優異的推理性能,百度與英特爾開展了深入的技術合作,利用第二代英特爾? 至強? 可擴展處理器集成的英特爾? 深度學習加速技術對 INT8 更優的支持,在最新版本的飛槳中,為用戶提供了離線 INT8 深度學習推理能力,并在隨后進行的一系列驗證測試中,印證了這一方案的應用優勢。


        更具效能的 INT8 推理方案

        與 FP32 相比,INT8 有著更小的數值精度和動態范圍,因此在深度學習中采用 INT8 推理方式,需要著重解決計算執行時的信息損失問題。在飛槳新版中,離線 INT8 推理功能通過校準的方式來形成待推理的 INT8 模型,實現了在將 FP32 轉換為INT8 時盡可能減少其信息損失的目標。

        以圖像分析應用為例,從高精度數值向低精度數據轉換,實際是一個邊計算邊縮減的過程。換言之,如何確認縮減的范圍是盡可能減少信息損失的關鍵。在 FP32 向 INT8 映射的過程中,根據數據集校準的方式,來確定映射縮減的參數。在確定參數后,平臺再根據所支持的 INT8 操作列表,對圖形進行分析并執行量化/反量化等操作。量化操作用于 FP32 向 S8(有符號 INT8)或 U8(無符號 INT8)的量化,反量化操作則執行反向操作。

        基于以上概念,如圖一所示,飛槳將校準過程分成了張量統計收集和圖形轉換兩個步驟。前者會輸入預設的校準數據集(可根據用戶需求來確定校準數據集的 Batch Size 大小和迭代次數)和經優化的 FP32 模型及權重,平臺會在校準數據集上執行 FP32 推理,并獲得激活張量(Ac tivation Tensor)和權重張量(Weight Tensor)兩個參數。

        1.png

        圖一 飛槳離線 INT8 推理校準流程

        在隨后的圖形轉換過程中,平臺首先會通過用戶所指定的量化算法,并根據上述兩個參數來確定量化比例。其次,在對需要計算的圖形進行分析后,平臺會根據所支持的 INT8 操作列表(飛槳定義了兩個新的 Kernel:Conv2D* 和 Pool2D*)進行量化/反量化的插入操作,從而將量化比例添加到 Conv 作為 OP 屬性。最后,平臺將量化后的 INT8 模型保存,以便進行后續推理部署。

        除了量化和反量化操作,飛槳還定義了 INT8 Kernel Conv 和 INT8Kernel Pool 兩種操作,前者輸入 S8/U8 數值,采用 S8 的權重;輸出為 S8/U8/FP32 三類數值,用于支持 INT8 Conv2D 計算;后者輸入輸出均為 S8/U8 數值,用于支持 INT8 Pool2D 計算。

        來自英特爾新一代至強的技術助力

        在新版飛槳中,百度導入了英特爾? 深度學習加速技術——這一集成在第二代英特爾? 至強? 可擴展處理器中的全新 AI 技術的支持。英特爾這款全新處理器不僅以優化的微架構、更多及更快的內核和內存通道帶來了計算性能的提升,更面向 AI 應用提供了更為全面的硬件加速能力。

        英特爾? 深度學習加速技術通過 VNNI 指令集提供了多條全新的寬融合乘加 (FMA) 內核指令,可用于支持 8 位或 16 位低精度數值相乘,這對于需要執行大量矩陣乘法的深度學習計算而言尤為重要。它的導入,使得用戶在執行 INT8 推理時,對系統內存的要求最大可減少75%4,而對內存和所需帶寬的減少,也加快了低數值精度運算的速度,從而使系統整體性能獲得大幅提升。

        利用第二代英特爾? 至強? 可擴展處理器提供的強勁算力,以及英特爾? 深度學習技術提供的加速能力,百度團隊已在 ResNet-50 和 MobileNet-V1 兩種圖像分類應用常用的網絡模型上,對離線 INT8推理進行了縝密的測試驗證。在推理準確度驗證中,平臺采用了英特爾? 至強? 金牌 6271 處理器,測試在擁有 50,0005張圖像的 Full ImageNet Val* 完整驗證數據集上完成。如表 1 所示,從測試結果來看,在 ResNet-50 和 MobileNet-V1 兩種模型的 TOP-1 準確率(預測出最大概率的分類是正確的概率)上,INT8 分別只有 0.4% 和 0.31% 的準確度損失6,基本可視為沒有準確度損失。

        2.png

        表一 FP32 和 INT8 推理準確度結果比較6

        在接下來的推理吞吐量(速度)性能測試中,平臺采用英特爾? 至強? 金牌 6271 處理器單核部署,并根據百度的業務部署要求,Batch Size 配置為 1 來衡量吞吐量。如表 2 所示,測試結果表明,在 Full ImageNet Val 完整驗證數據集上,ResNet-50 和 MobileNet-V1 兩種模型的 INT8 推理吞吐量是 FP32 的 2.2 倍到 2.79 倍7。由此可見,在不影響預測準確度的情況下,使用 INT8,可讓多種深度學習模型的推理速度得到顯著提升,這就意味著能有效提升用戶深度學習應用的工作效能。

        3.png

        表二 FP32 和 INT8 推理吞吐量結果比較7


        總結與展望

        在過去數年中,百度與英特爾就深度學習等先進技術與平臺的發展,一直在開展緊密的技術協作。在飛槳平臺開發過程中,英特爾工程師以豐富的硬件調優經驗,助力解決了許多關鍵問題,例如并行性能問題、處理器緩存競爭帶來的性能問題等,從而在框架層次上整體提升了飛槳的預測性能。同時,在英特爾的支持下,百度也基于英特爾? 數學核心函數庫(Intel? Math Kernel Library,英特爾? MKL)和面向深度神經網絡的英特爾? 數學核心函數庫(Intel? Math Kernel Library for Deep Neural Network, 英特爾? MKL-DNN)提供的特性,對不同類型的深度學習模型進行了特定的性能優化,并已在自然語言處理、圖像處理等模型上獲得了顯著的進展。

        而在基于英特爾? 架構處理器的推理效率提升方面,雙方的技術協作更是結出了豐碩的成果。目前,百度內部業務和開源平臺上的一些深度學習模型已實現了英特爾? 架構處理器資源利用率與性能的提升。

        同時,針對特定型號的服務器經優化后,已在平臺中實現了現有最佳(State Of The Art,SOTA)效率并逐步上線。同時,在最新的飛槳中,還集成了面向各種設備和框架的英特爾? nGraph 深度學習模型編譯器,大大提升了用戶部署深度學習環境的效率。

        未來,百度與英特爾在AI方面的合作,還將圍繞四個方向持續展開。首先,百度計劃將英特爾的量化和壓縮方面的技術,集成到飛槳的整體工具鏈中;其次,英特爾? MKL-DNN 作為英特爾面向深度學習的核心數學函數庫,也將進一步提供低精度數值函數支持,可作為處理器上的高性能 Kernel,成為更多飛槳 OP 的首選;第三,英特爾? nGraph 編譯器也將靈活地作為子圖,參與飛槳在英特爾? 架構平臺上的高性能執行;最后,雙方團隊還計劃在百度內部和外部完成更多飛槳部署實例的優化,攜手為用戶帶去更多、更優異的深度學習平臺能力。

        1,2,3,7 數據源自 2019 年 4 月 4 日, 百度基于第二代英特爾? 至強? 可擴展處理器開展的測試。

        測試平臺配置: 雙路英特爾? 至強? 金牌 6271 處理器, 主頻為 2.6GHz, 24 核心/48 線程, 啟用睿頻, 啟用超線程, 搭載 512 GB 內存(16 slots/ 32GB/ 2666 MHz)。

        操作系統為 CentOS 6.3, 5.16 (ucode 0x4000013), 測試基于深度學習框架飛槳 1.4.0 版本, Kernel 版本為 3.10.0, 編譯器版本為 GCC4.8.2, 使用英特爾? MKL-DNN 庫 0.18 版本;工作負載: 在 Full ImageNet Val 完整驗證數據集上使用 ResNet50 and MobileNet-V1, Batch Size=1, Datatype: INT8

        基準配置: 雙路英特爾? 至強? 金牌 6271 處理器, 主頻為 2.6GHz, 24 核心/48 線程, 啟用睿頻, 啟用超線程, 搭載 512 GB 內存(16 slots/ 32GB/ 2666 MHz)。

        操作系統為 CentOS 6.3, 5.16 (ucode 0x4000013), 測試基于深度學習框 飛槳 1.4.0 版本, Kernel 版本為 3.10.0,編譯器版本為 GCC4.8.2,使用英特爾? MKL-DNN 庫0.18版本;工作負載: 在 Full ImageNet Val 完整驗證數據集上使用ResNet50 and MobileNet-V1, Batch Size=1, Datatype: FP32

        4 數據源引自 https://software.intel.com/en-us/articles/lower-numerical-precision-deep-learning-inference-and-training

        5http://www.image-net.org/challenges/LSVRC/2012/nnoupb/ILSVRC2012_img_val.tar

        6 數據援引自“以數據為中心 加速數字經濟落地——2019 英特爾? 創新產品發布會”上的百度分享環節 以上性能測試結果可能并未反映所有公開可用的安全更新。詳情請參閱配置信息披露。

        沒有任何產品或組件是絕對安全的。英特爾并不控制或審計第三方數據。請您審查該內容, 咨詢其他來源, 并確認提及數據是否準確。

        性能測試中使用的軟件和工作負荷可能僅在英特爾微處理器上進行了性能優化。

        諸如SYSmark和MobileMark等測試均系基于特定計算機系統、硬件、軟件、操作系統及功能。上述任何要素的變動都有可能導致測試結果的變化。請參考其他信息及性能測試(包括結合其他產品使 用時的運行性能)以對目標產品進行全面評估。更多信息, 詳見www.intel.com/benchmarks。

        英特爾技術特性和優勢取決于系統配置, 并可能需要支持的硬件、軟件或服務才能激活。更多信息, 請見 Intel.com, 或從原始設備制造商或零售商處獲得更多信息。描述的成本降低情景均旨在在特 定情況和配置中舉例說明特定英特爾產品如何影響未來成本并提供成本節約。情況均不同。英特爾不保證任何成本或成本降低。

        英特爾、Intel、至強是英特爾公司在美國和或其他國家的商標。英特爾商標或商標及品牌名稱資料庫的全部名單請見intel.com上的商標。

        *其他的名稱和品牌可能是其他所有者的資產。

        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞: AI

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 上犹县| 梨树县| 绥化市| 平乡县| 无极县| 瑞昌市| 大冶市| 泰顺县| 托克托县| 霞浦县| 黄骅市| 汉阴县| 双流县| 临海市| 伊吾县| 开封市| 台南县| 德州市| 台北市| 万安县| 民乐县| 铜梁县| 台南市| 曲沃县| 新田县| 宜兰市| 克什克腾旗| 浏阳市| 荃湾区| 股票| 山西省| 敖汉旗| 中阳县| 香河县| 关岭| 昂仁县| 上林县| 罗源县| 静乐县| 洛南县| 栖霞市|