TensorRT-LLM | 大模型部署專用框架
本文經(jīng)自動(dòng)駕駛之心公眾號(hào)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)聯(lián)系出處。
TensorRT-LLM是NVIDIA推出的一款高性能深度學(xué)習(xí)推理優(yōu)化庫,專注于提升大型語言模型(LLM)在NVIDIA GPU上的推理速度和效率。如果您繞不開Nvidia的芯片,那么一定要好好了解這款推理庫。
項(xiàng)目鏈接:https://github.com/NVIDIA/TensorRT-LLM
一、TensorRT-LLM的優(yōu)勢(shì)
TensorRT-LLM(TensorRT for Large Language Models)旨在解決大型語言模型在實(shí)際應(yīng)用中面臨的性能瓶頸問題。通過提供一系列專為L(zhǎng)LM推理設(shè)計(jì)的優(yōu)化工具和技術(shù),TensorRT-LLM能夠顯著提升模型的推理速度,降低延遲,并優(yōu)化內(nèi)存使用。
二、TensorRT-LLM的核心功能
1)易于使用的Python API
- TensorRT-LLM提供了一個(gè)簡(jiǎn)潔易用的Python API,允許用戶定義大型語言模型并構(gòu)建包含先進(jìn)優(yōu)化的TensorRT引擎。
- 該API設(shè)計(jì)類似于PyTorch,使得具有PyTorch經(jīng)驗(yàn)的開發(fā)者能夠輕松遷移和集成。
2)模型優(yōu)化
- TensorRT-LLM支持多種量化選項(xiàng)(如FP16、INT8等),用戶可以根據(jù)具體需求選擇合適的配置,實(shí)現(xiàn)性能與精度的平衡。
- 通過層級(jí)融合、內(nèi)核選擇和精度調(diào)整等優(yōu)化技術(shù),TensorRT-LLM能夠顯著提升模型的推理速度。
3)內(nèi)存管理
- TensorRT-LLM通過智能內(nèi)存分配和分頁注意力機(jī)制,優(yōu)化了內(nèi)存使用,降低了內(nèi)存占用。
4)多線程并行與硬件加速
- 支持多線程并行處理,提高處理速度。
- 充分利用NVIDIA GPU的計(jì)算能力,加速模型推理。
5)動(dòng)態(tài)批處理
- TensorRT-LLM支持動(dòng)態(tài)批處理,通過同時(shí)處理多個(gè)請(qǐng)求來優(yōu)化文本生成,減少了等待時(shí)間并提高了GPU利用率。
6)多GPU與多節(jié)點(diǎn)推理
- 支持在多個(gè)GPU或多個(gè)節(jié)點(diǎn)上進(jìn)行分布式推理,提高了吞吐量并減少了總體推理時(shí)間。
7)FP8支持
- 配備TensorRT-LLM的NVIDIA H100 GPU能夠輕松地將模型權(quán)重轉(zhuǎn)換為新的FP8格式,并自動(dòng)編譯模型以利用優(yōu)化的FP8內(nèi)核。這得益于NVIDIA Hopper架構(gòu),且無需更改任何模型代碼。
8)最新GPU支持
- TensorRT-LLM 支持基于 NVIDIA Hopper、NVIDIA Ada Lovelace、NVIDIA Ampere、NVIDIA Turing 和 NVIDIA Volta 架構(gòu)的GPU。
三、TensorRT-LLM支持部署的模型
1)LLM系列
2)多模態(tài)大模型
四、量化相關(guān)
INT8 SmoothQuant (W8A8)
SmoothQuant技術(shù)在:https://arxiv.org/abs/2211.10438中被介紹。它是一種使用INT8對(duì)激活和權(quán)重進(jìn)行推理的方法,同時(shí)保持網(wǎng)絡(luò)(在下游任務(wù)中)的準(zhǔn)確性。如研究論文所述,必須對(duì)模型的權(quán)重進(jìn)行預(yù)處理。TensorRT-LLM包含用于準(zhǔn)備模型以使用SmoothQuant方法運(yùn)行的腳本。
關(guān)于如何為GPT、GPT-J和LLaMA啟用SmoothQuant的示例,可以在版本的examples/quantization
文件夾中找到。
INT4和INT8僅權(quán)重量化 (W4A16和W8A16)
INT4和INT8僅權(quán)重量化技術(shù)包括對(duì)模型的權(quán)重進(jìn)行量化,并在線性層(Matmuls)中動(dòng)態(tài)地對(duì)這些權(quán)重進(jìn)行反量化。激活使用浮點(diǎn)數(shù)(FP16或BF16)進(jìn)行編碼。要使用INT4/INT8僅權(quán)重量化方法,用戶必須確定用于量化和反量化模型權(quán)重的縮放因子。
GPTQ和AWQ (W4A16)
GPTQ和AWQ技術(shù)分別在https://arxiv.org/abs/2210.17323和https://arxiv.org/abs/2306.00978中介紹。TensorRT-LLM支持在線性層中使用每組縮放因子和零偏移來實(shí)現(xiàn)GPTQ和AWQ方法。有關(guān)詳細(xì)信息,請(qǐng)參閱WeightOnlyGroupwiseQuantMatmulPlugin
插件和相應(yīng)的weight_only_groupwise_quant_matmul
Python函數(shù)。
代碼中包括將GPTQ應(yīng)用于GPT-NeoX和LLaMA-v2的示例,以及使用AWQ與GPT-J的示例。這些示例是實(shí)驗(yàn)性實(shí)現(xiàn),并可能在未來的版本中有所改進(jìn)。
FP8 (Hopper)
TensorRT-LLM包含為GPT-NeMo、GPT-J和LLaMA實(shí)現(xiàn)的FP8。這些示例可以在examples/quantization
中找到。
五、TensorRT-LLM支持的硬件和軟件
六、TensorRT-LLM的應(yīng)用場(chǎng)景
TensorRT-LLM在多個(gè)領(lǐng)域展現(xiàn)了其強(qiáng)大的應(yīng)用能力,包括但不限于:
- 在線客服系統(tǒng):通過實(shí)時(shí)的對(duì)話生成,提供無縫的人工智能輔助服務(wù)。
- 搜索引擎:利用模型對(duì)查詢進(jìn)行增強(qiáng),提供更精準(zhǔn)的搜索結(jié)果。
- 自動(dòng)代碼補(bǔ)全:在IDE中集成模型,幫助開發(fā)者自動(dòng)完成代碼編寫。
- 內(nèi)容創(chuàng)作平臺(tái):自動(dòng)生成文章摘要或建議,提升創(chuàng)作者的工作效率。