您好,登錄后才能下訂單哦!
這篇“怎么提升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使用了最先進的自然語言處理(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是一個高性能的機器學習模型推理引擎。它與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執行推理:
下面是ONNX Runtime上3層fp32 BERT與128序列長度的詳細的性能數字。在CPU上,我們看到了17x的加速,在GPU上,我們看到了超過3倍的加速。
隨著最新的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倍的性能改進。
你可以利用微軟的技術在你自己的產品中使用的相同的加速,不管你是針對云還是智能邊緣,或者你是使用cpu還是gpu。我們開始:
以上就是關于“怎么提升BERT的推斷速度”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。