中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么提升BERT的推斷速度

發布時間:2022-03-29 14:21:09 來源:億速云 閱讀:587 作者:iii 欄目:大數據

這篇“怎么提升BERT的推斷速度”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“怎么提升BERT的推斷速度”文章吧。

導讀  

微軟剛剛開源了Transformer的突破性優化,大大提升了CPU和GPU上的推理速度。

用于自然語言處理的最流行的深度學習模型之一是BERT。由于需要大量的計算,在大規模推斷上BERT計算量非常大,甚至在嚴格的延遲約束下都不可能。最近,我們分享了“Bing has improved BERT inference on GPU for its real-time”,在必應的延遲限制內,每秒服務超過100萬個BERT推斷。我們很高興地宣布,微軟已經在ONNX Runtime中開源了這些優化的增強版本,并將它們擴展到GPU和CPU上。

有了ONNX Runtime,人工智能開發人員現在可以很容易地在CPU和GPU硬件上生產出高性能的大型transformer模型,使用和微軟一樣的技術來服務客戶。

Bing里的自然語言處理

為了向我們的客戶提供最相關的結果,Bing使用了最先進的自然語言處理(NLP)技術來更好地理解用戶查詢、網頁和其他文檔。NLP的一個關鍵組件是語言表示模型,如BERT、RoBERTa或MT-DNN。必應開發和調優了自己的語言表征模型,用于網絡搜索,問答,以及圖像的描述等任務上面。

然而,在實時生產環境中使用大型的transformer network會帶來延遲和成本方面的挑戰,因為為每個查詢運行12層或24層的BERT在計算上非常昂貴。正如去年11月宣布的那樣,我們首先使用知識蒸餾將較大的模型濃縮成一個三層的BERT模型,沒有顯著的精度損失,顯著降低了計算成本。但是,經過提煉的三層BERT模型仍然以77ms的延遲為基準,每秒運行數百萬個查詢和文檔的速度仍然非常昂貴。為了進一步優化,使用c++ api重新實現了整個模型,充分利用了GPU架構,與CPU相比,該架構實現了800x的吞吐量提升。

一旦這些優化在Bing產品中成功使用,就有更多的事情要做。由于這些大型的transformer network可用于web搜索之外的更多NLP任務,所以我們需要一種簡單的方法來為其他人共享這些有益的工作。當前的解決方案要求每個模型開發人員使用我們的c++庫重新實現模型,這是非常耗時的。為了進一步普及transformer推理并使其他人能夠從這些改進中獲益,我們進一步優化了它們,將它們擴展到CPU,并在ONNX Runtime中開放它們的源代碼。

使用ONNX Runtime實現17x BERT推理加速

ONNX Runtime是一個高性能的機器學習模型推理引擎。它與PyTorch、TensorFlow以及許多其他支持ONNX標準的框架和工具兼容。ONNX Runtime設計了一個開放和可擴展的體系結構,通過利用內置的圖形優化和跨CPU、GPU和邊緣設備的各種硬件加速功能,可以輕松地優化和加速推理。ONNX Runtime可以很容易地插入到你的技術堆棧中,因為它可以在Linux、Windows、Mac和Android上工作,并且為Python、c#、c++、C和Java提供了方便的api。

像BERT這樣的Transformer模型由許多操作符組成。圖形優化,從小的圖形簡化和節點清除到更復雜的節點融合和布局優化,是構建在ONNX Runtime中的一項基本技術。由于BERT模型主要由堆疊的Transformer單元組成,我們通過將多個基本運算符的關鍵子圖融合成CPU和GPU的單一內核來優化每個單元,包括Self-Attention層、LayerNormalization層和Gelu層。這大大減少了大量基本計算之間的內存復制。

另外,在Self-Attention的CPU實現中,根據Self-Attention heads的數量對矩陣Q、K、V的列進行了劃分。通過這種優化,我們可以顯著提高并行性,并充分利用可用的CPU內核。并且,Q、K、V全連接后的轉置運算可以在GEMM中進行計算,進一步降低了計算成本。

通過這些優化,ONNX Runtime在Azure標準NC6S_v3 (GPU V100)上對128個序列長度和批大小為1的BERT-SQUAD執行推理:

  • 12層 fp16 BERT-SQUAD為1.7ms。
  • 24層 fp16 BERT-SQUAD為4.0ms。

下面是ONNX Runtime上3層fp32 BERT與128序列長度的詳細的性能數字。在CPU上,我們看到了17x的加速,在GPU上,我們看到了超過3倍的加速。

怎么提升BERT的推斷速度

在全局大規模使用ONNX Runtime推理

隨著最新的BERT優化在ONNX Runtime可用,Bing將transformer推理代碼庫轉換為聯合開發的ONNX Runtime。ONNX不僅在Bing流量范圍內對大型transformer網絡進行了推理,而且新的優化還降低了Bing的延時。此外,Bing發現ONNX Runtime更容易使用,并將新場景優化的重用時間從幾天縮短到幾個小時。

除了Bing之外,ONNX Runtime還被微軟的數十種產品和服務所部署,包括Office、Windows、Cognitive services、Skype、Bing Ads和PowerBI等。ONNX Runtime用于計算機視覺、語音、語言處理、預測等各種模型。與以前的推理解決方案相比,團隊在相同的硬件上實現了最多18倍的性能改進。

開始使用BERT加速

你可以利用微軟的技術在你自己的產品中使用的相同的加速,不管你是針對云還是智能邊緣,或者你是使用cpu還是gpu。我們開始:

  1. 使用或從流行的框架(如PyTorch或TensorFlow)加載預訓練的模型。
  2. 通過從PyTorch導出或從TensorFlow/Keras轉換為ONNX格式,為優化推斷準備模型。
  3. 使用ONNX Runtime進行跨多個平臺和硬件的高性能推理。

以上就是關于“怎么提升BERT的推斷速度”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

岢岚县| 庆元县| 兴安盟| 宣汉县| 休宁县| 望江县| 清徐县| 雷波县| 龙岩市| 时尚| 长垣县| 四平市| 三穗县| 濮阳县| 青龙| 翁源县| 罗城| 兴化市| 天等县| 卢龙县| 龙江县| 正阳县| 新安县| 临桂县| 韶关市| 德州市| 松原市| 襄垣县| 监利县| 灵川县| 建阳市| 鲜城| 三穗县| 华坪县| 太谷县| 延安市| 海兴县| 枣强县| 龙州县| 广德县| 银川市|