微軟宣布將開源應用於ONNX Runtime預測引擎,經最佳化過的自然語言處理模型BERT版本,這個模型是微軟為Bing搜尋引擎打造,可以擴充到GPU和CPU上計算,以低延遲即時處理Bing上數百萬次的查詢。

BERT(Bidirectional Encoder Representations from Transformers)是由Google所開發,用於自然語言處理熱門的深度學習模型,但是因為BERT需要非常大量的運算,因此要在即時產品環境,應用大型Transformer網路,運算成本將非常高昂,微軟提到,當每個查詢都經12層或是24層的BERT模型運算,要降低延遲和成本都會是一大挑戰。

微軟在去年11月的時候發表了研究進展,在不嚴重影響精確度的情況下,將BERT模型壓縮剩下3層,大幅降低運算成本,但是即便模型只剩3層,基準測試服務仍需要77毫秒,這個延遲時間在每秒處理數百萬查詢和檔案的規模下,成本依然過高,因此微軟再進一步最佳化模型,使用C++ API重新實作整個模型,以GPU架構提高吞吐量800倍。

現在這個經最佳化的成果已經在Bing中使用,微軟提到,這個模型可以用在網頁搜尋的自然語言處理工作,他們想以簡單的方式跟社群共享這個成果,目前的解決方案需要開發人員以C++函式庫重新實作整個模型,但這個工程過於耗時,所以為了推廣Transformer預測以及其他改進,除了擴充CPU的支援外,微軟還將這些成果在ONNX Runtime中開源。

ONNX Runtime是機器學習模型的預測引擎,與PyTorch、TensorFlow以及支援ONNX標準的工具相容,ONNX Runtime具有開放且可擴充的基礎架構,能使用內建的圖最佳化(Graph Optimization)和各種硬體加速功能,來最佳化和加速推理。而像是BERT這樣的Transformer模型,由許多運算子(Operator)的圖構成,ONNX Runtime內建圖最佳化功能,可以簡化圖並且減少節點,進而執行更複雜的節點融合和布局最佳化。

應用這些最佳化,可以讓128序列長度的12層fp16 BERT-SQUAD預測延遲時間只有1.7微秒,24層fp16 BERT-SQUAD預測時間為4微秒,而在ONNX Runtime中量測具有128序列長度的3層fp32 BERT,CPU預測速度提高17倍,在GPU預測速度則提高3倍以上。

使用者現在可以透過使用ONNX Runtime,獲得最新的BERT最佳化,微軟使用Bing的Transformer預測程式碼綜合開發ONNX Runtime,因此用戶不僅能以Bing的流量規模,執行ONNX Runtime預測大型Transformer網路,而且還獲得改善Bing延遲的最佳化。

微軟表示,ONNX Runtime的易用性,可以減少將最佳化用在新情境的時間,從數天縮短至數小時,且將ONNX Runtime用於電腦視覺、語音、語言處理和預測等各種模型,與在相同硬體執行的其他解決方案相比,效能提升了17倍。

微軟提供了PyTorchTensorFlow版本的BERT加速範例程式碼,同時還釋出使用Azure機器學習創建和管理工作管線的教程,教用戶以ONNX Runtime進行訓練和部署。


Advertisement

更多 iThome相關內容