真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

怎么提升BERT的推斷速度

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

成都創(chuàng)新互聯(lián)自2013年起,先為南縣等服務建站,南縣等地企業(yè),進行企業(yè)商務咨詢服務。為南縣企業(yè)網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。

導讀  

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

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

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

Bing里的自然語言處理

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

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

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

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

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

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

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

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

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

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

怎么提升BERT的推斷速度

在全局大規(guī)模使用ONNX Runtime推理

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

除了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格式,為優(yōu)化推斷準備模型。
  3. 使用ONNX Runtime進行跨多個平臺和硬件的高性能推理。

以上就是關于“怎么提升BERT的推斷速度”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網站標題:怎么提升BERT的推斷速度
文章起源:http://weahome.cn/article/gcjodh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部