英偉達PyTorch最佳化神器TensorRT重磅更新!10億引數大模型實時執行,GPT推理加速21倍

英偉達PyTorch最佳化神器TensorRT重磅更新!10億引數大模型實時執行,GPT推理加速21倍

新智元報道

編輯:好睏 小鹹魚

【新智元導讀】

12月2日,英偉達釋出了最新的TensorRT 8。2版本,對10億級引數模型進行了最佳化,讓實時執行NLP應用成為可能。與原始PyTorch模型相比,TensorRT可以將T5、GPT-2的延遲降低9到21倍。

眾所周知,PyTorch和TensorFlow是兩個非常受歡迎的深度學習框架。

12月2日,英偉達釋出了最新的TensorRT 8。2版本,對10億級引數的NLP模型進行了最佳化,其中就包括用於翻譯和文字生成的T5和GPT-2。

而這一次,TensorRT讓實時執行NLP應用程式成為可能。

英偉達PyTorch最佳化神器TensorRT重磅更新!10億引數大模型實時執行,GPT推理加速21倍

Torch-TensorRT:6倍加速

TensorRT是一個高效能的深度學習推理最佳化器,讓AI應用擁有低延遲、高吞吐量的推理能力。

新的TensorRT框架為PyTorch和TensorFlow提供了簡單的API,帶來強大的FP16和INT8最佳化功能。

只需一行程式碼,呼叫一個簡單的API,模型在NVIDIA GPU上就能實現高達6倍的效能提升。

英偉達PyTorch最佳化神器TensorRT重磅更新!10億引數大模型實時執行,GPT推理加速21倍

Torch-TensorRT:工作原理

Torch-TensorRT編譯器的架構由三個階段組成:

簡化TorchScript模組

轉換

執行

簡化TorchScript模組

Torch-TensorRT可以將常見操作直接對映到TensorRT上。值得注意的是,這種過程並不影響計算圖本身的功能。

英偉達PyTorch最佳化神器TensorRT重磅更新!10億引數大模型實時執行,GPT推理加速21倍

解析和轉換TorchScript

轉換

Torch-TensorRT自動識別與TensorRT相容的子圖,並將它們翻譯成TensorRT操作:

具有靜態值的節點被評估並對映到常數。

描述張量計算的節點被轉換為一個或多個TensorRT層。

剩下的節點留在TorchScript中,形成一個混合圖,並作為標準的TorchScript模組返回。

英偉達PyTorch最佳化神器TensorRT重磅更新!10億引數大模型實時執行,GPT推理加速21倍

將Torch的操作對映到TensorRT上

修改後的模組會在嵌入TensorRT引擎後返回,也就是說整個模型,包括PyTorch程式碼、模型權重和TensorRT引擎,都可以在一個包中進行移植。

英偉達PyTorch最佳化神器TensorRT重磅更新!10億引數大模型實時執行,GPT推理加速21倍

將Conv2d層轉化為TensorRT引擎,而log_sigmoid則回到TorchScript JIT中

執行

當執行編譯模組時,TorchScript直譯器會呼叫TensorRT引擎並傳遞所有輸入。之後,TensorRT會將結果推送回直譯器,整個流程和使用普通的TorchScript模組別無二致。

英偉達PyTorch最佳化神器TensorRT重磅更新!10億引數大模型實時執行,GPT推理加速21倍

PyTorch和TensorRT操作的執行時執行

Torch-TensorRT:特點

對INT8的支援

Torch-TensorRT透過兩種技術增強了對低精度推理的支援:

訓練後量化(PTQ)

量化感知訓練(QAT)

對於PTQ來說,TensorRT用目標領域的樣本資料訓練模型,同時跟蹤FP32精度下的權重啟用,以校準FP32到INT8的對映,使FP32和INT8推理之間的資訊損失最小。

稀疏性

英偉達的安培架構在A100 GPU上引入了第三代張量核心,可以在網路權重中增加細粒度的稀疏性。

因此,A100在提供最大吞吐量的同時,也不會犧牲深度學習核心的矩陣乘法累積工作的準確性。

TensorRT支援在Tensor Core上執行深度學習模型的稀疏層,而Torch-TensorRT將這種稀疏支援擴充套件到卷積和全連線層。

舉個例子

比如,用EfficientNet影象分類模型進行推理,並計算PyTorch模型和經過Torch-TensorRT最佳化的模型的吞吐量。

以下是在NVIDIA A100 GPU上取得的結果,batch size為1。

英偉達PyTorch最佳化神器TensorRT重磅更新!10億引數大模型實時執行,GPT推理加速21倍

在NVIDIA A100 GPU上比較原生PyTorch和Torch-TensorRt的吞吐量

用TensorRT實現T5和GPT-2實時推理

英偉達PyTorch最佳化神器TensorRT重磅更新!10億引數大模型實時執行,GPT推理加速21倍

Transformer架構完全改變了自然語言處理領域。近年來,許多新穎的大語言模型都建立在Transformer模組之上,比如BERT、GPT和T5。

T5和GPT-2簡介

T5可以用來回答問題、做總結、翻譯文字和分類文字。

T5(Text-To-Text Transfer Transformer,文字到文字轉換Transformer)是谷歌建立的架構。它將所有自然語言處理(NLP)任務重新組織成統一的文字到文字格式,其中輸入和輸出總是文字字串。

英偉達PyTorch最佳化神器TensorRT重磅更新!10億引數大模型實時執行,GPT推理加速21倍

T5的架構能夠將相同的模型、損失函式和超引數應用於任何自然語言處理任務,如機器翻譯、文件摘要、問題回答和分類任務,如情感分析。

T5模型的靈感來自於一個NLP領域的共識,即遷移學習已經在自然語言處理中取得了最先進的結果。

遷移學習背後的原理是,在大量可用的未標記資料上經過預訓練的模型,可以在較小的特定任務的已標記資料集上進行針對性的微調。事實證明,預訓練-微調模型比從頭開始在特定任務資料集上訓練的模型具有更好的結果。

英偉達PyTorch最佳化神器TensorRT重磅更新!10億引數大模型實時執行,GPT推理加速21倍

T5模型在許多下游自然語言處理任務上獲得了最先進的結果。已釋出的預訓練T5的引數最多高達3B和11B。

雖說都是語言模型,GPT-2的長處在於生成優秀的文字。

GPT-2(Generative Pre-Trained Transformer 2)是一種自迴歸無監督語言模型,最初由OpenAI提出。

英偉達PyTorch最佳化神器TensorRT重磅更新!10億引數大模型實時執行,GPT推理加速21倍

它是由transformer解碼器塊構建的,並在非常大的文字語料庫上進行訓練,以預測文字的下一個單詞。

英偉達PyTorch最佳化神器TensorRT重磅更新!10億引數大模型實時執行,GPT推理加速21倍

已釋出的GPT-2模型中,最大的擁有1。5B引數,能夠寫出非常連貫的文字。

用TensorRT部署T5和GPT-2

雖然較大的神經語言模型通常會產生更好的結果,但將其部署到生產中會帶來很大的挑戰,尤其是對於線上應用程式,幾十毫秒的額外延遲足以讓使用者的體驗變差很多。

藉助最新的TensorRT 8。2,英偉達針對大模型的實時推斷這一需求,優化了T5和GPT-2。

首先,從Hugging Face模型中心下載Hugging Face PyTorch T5模型及其相關的tokenizer。

接下來,將模型轉換為經過最佳化的TensorRT執行引擎。

不過,在將T5模型轉換為TensorRT引擎之前,需要將PyTorch模型轉換為一種中間通用格式:ONNX。

ONNX是機器學習和深度學習模型的開放格式。它能夠將深度學習和機器學習模型從不同的框架(如TensorFlow、PyTorch、MATLAB、Caffe和Keras)轉換為一個統一的格式。

然後,將準備好的T5 ONNX編碼器和解碼器轉換為最佳化的TensorRT引擎。由於TensorRT執行了許多最佳化,例如融合操作、消除轉置操作和核心自動調整(在目標GPU架構上找到效能最佳的核心),因此這一轉換過程可能需要一段時間。

最後,就可以用T5的TensorRT引擎進行推理了。

同樣,對於GPT-2模型也可以按照相同的過程生成一個TensorRT引擎。最佳化後的TensorRT引擎可以在HuggingFace推理工作流中替代原始的PyTorch模型。

TensorRT vs PyTorch CPU、PyTorch GPU

透過將T5或GPT-2轉變為TensorRT引擎,與PyTorch模型在GPU上的推斷時間相比,TensorRT的延遲降低了3至6倍,與PyTorch模型在CPU上的推斷時間相比,延遲更是降低了9至21倍。

英偉達PyTorch最佳化神器TensorRT重磅更新!10億引數大模型實時執行,GPT推理加速21倍

T5-3B模型推斷時間比較

與PyTorch模型在CPU上的推斷時間相比,執行在A100 GPU上的TensorRT引擎將延遲縮小了21倍。

對NLP感興趣的朋友,要是想加速大語言模型的推理過程,就快來試試TensorRT 8。2吧!

參考資料:

https://developer。nvidia。com/blog/nvidia-announces-tensorrt-8-2-and-integrations-with-pytorch-and-tensorflow/?ncid=so-twit-314589#cid=dl13_so-twit_en-us

https://developer。nvidia。com/blog/accelerating-inference-up-to-6x-faster-in-pytorch-with-torch-tensorrt/

https://developer。nvidia。com/blog/optimizing-t5-and-gpt-2-for-real-time-inference-with-tensorrt/

TAG: TensorRT模型T5PyTorchGPT