微軟開源以ONNX Runtime加速BERT模型的優化成果
微軟宣布將開源應用於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倍。
微軟提供了PyTorch和TensorFlow版本的BERT加速范常式序代碼,同時還發布使用Azure機器學習創建和管理工作管線的教程,教用戶以ONNX Runtime進行訓練和部署。