NVIDIA Chat With RTX(1)——TensorRT-LLM
- Demo介紹:將自定義資料(文檔、筆記、視頻或其他數(shù)據(jù))與LLM建立連接,從而令 LLM 更具個(gè)性化。支持多種文件格式,包括文本文件、pdf、doc/docx 和 xml。只需在該應(yīng)用中指定包含目標(biāo)文件的文件夾,該應(yīng)用便會在幾秒內(nèi)將目標(biāo)文件加載到庫中。不僅如此,還可以提供YouTube 播放列表的URL,然后該應(yīng)用會自動加載播放列表中的視頻轉(zhuǎn)寫內(nèi)容,使之能夠查詢視頻中包含的內(nèi)容。
- 視頻介紹:https://images.nvidia.cn/cn/youtube-replicates/gdsRJZT3IJw.mp4
- Demo的【核心參考】代碼:https://github.com/NVIDIA/trt-llm-rag-windows (注意:Demo是參照此代碼進(jìn)行二次開發(fā))

- 整包下載鏈接(35G):https://us.download.nvidia.cn/RTX/NVIDIA_ChatWithRTX_Demo.zip
解壓后目錄結(jié)構(gòu)如上。該包已經(jīng)把llama2-13B-int4量化模型(約25G)和mistral-7B-int4量化模型(約14G)集成進(jìn)去,也把trt-llm-rag-windows代碼集成到trt-llm-rag-windows-main中。
運(yùn)行平臺和資源要求如下:
總的來說,整個(gè)技術(shù)棧包括幾個(gè)方面:
- LLM:Llama2-13B、Mistral-7B、AWQ量化技術(shù)
- 加速框架:TensorRT-LLM
- RAG:基于llama-index、langchain、Faiss實(shí)現(xiàn)RAG

TensorRT-LLM
1. 簡介
首先介紹TensorRT-LLM,這是一個(gè)用于優(yōu)化LLM推理的工具包。它提供了Python API來定義模型并將其編譯成針對NVIDIA GPU的高效TensorRT引擎。它還包含Python和C++組件來構(gòu)建Runtime以執(zhí)行這些引擎,以及Triton推理服務(wù)器的后端,以便于創(chuàng)建基于Web的LLM服務(wù)。
2. 主要特點(diǎn)
- TensorRT-LLM支持通過兩種不同的模型并行模式實(shí)現(xiàn)多GPU支持:
- 張量并行(Tensor Parallelism) :將模型的不同層分割到不同的GPU上,每個(gè)GPU運(yùn)行整個(gè)網(wǎng)絡(luò)并在需要時(shí)與其他GPU同步。
- 流水線并行(Pipeline Parallelism) :將模型的不同層分配給不同的GPU,每個(gè)GPU運(yùn)行模型的一個(gè)子集,在這些層子集之間的邊界發(fā)生通信。
3. 使用TensorRT-LLM的幾個(gè)關(guān)鍵步驟
- 定義模型:使用Python API描述LLM;可以定義自定義模型或使用預(yù)定義的網(wǎng)絡(luò)架構(gòu)。
- 訓(xùn)練模型:使用其他訓(xùn)練框架進(jìn)行訓(xùn)練,獲得checkpoint。
- 編譯引擎:使用TensorRT-LLM的Builder API將模型編譯成優(yōu)化的TensorRT引擎。
- 構(gòu)架Runtime:使用TensorRT-LLM的運(yùn)行時(shí)組件加載并驅(qū)動引擎的執(zhí)行。
- 服務(wù)化部署:使用Triton后端快速創(chuàng)建基于Web的服務(wù)。
4. LLM推理性能指標(biāo)
衡量LLM推理服務(wù)的4個(gè)主要性能指標(biāo):
- 第一次生成詞匯時(shí)間(Time to First Token,TTFT):度量模型在收到用戶查詢后生成第一個(gè)詞匯的時(shí)間。TTFT越短,用戶體驗(yàn)越好。
- 每輸出詞匯時(shí)間(Time Per Output Token,TPOT):計(jì)算模型為一個(gè)指定查詢生成一個(gè)詞匯所需的時(shí)間。TPOT越快,用戶感知到的模型越快。
- 延遲(Latency):將TTFT和生成所有詞匯的總時(shí)間(用TPOT計(jì)算)相加,測量模型整體響應(yīng)一個(gè)查詢的時(shí)間。
- 吞吐量(Throughput):測量服務(wù)器為所有用戶和查詢每秒生成的輸出詞匯數(shù)量。優(yōu)化最大吞吐量可以提高服務(wù)器容量和用戶體驗(yàn)。
5. 部署LLM的挑戰(zhàn)
- 高內(nèi)存使用:LLM需要大量內(nèi)存來存儲它們的參數(shù)和中間激活,尤其是是來自注意力層的key和value參數(shù)。這使得在資源有限的環(huán)境中部署它們變得困難。
- 可擴(kuò)展性有限:傳統(tǒng)實(shí)現(xiàn)難以處理大量并發(fā)推理請求,導(dǎo)致可擴(kuò)展性和響應(yīng)性問題。當(dāng)在生產(chǎn)服務(wù)器上運(yùn)行LLM時(shí),GPU的利用率不高時(shí),這一點(diǎn)尤為突出。
- 計(jì)算開銷:LLM推理涉及的廣泛矩陣計(jì)算可能很昂貴,尤其是對于大型模型。高內(nèi)存使用和低吞吐量的結(jié)合進(jìn)一步增加了運(yùn)營成本。
這些挑戰(zhàn)凸顯了需要更高效和可擴(kuò)展的方法來部署LLM進(jìn)行推理。通過解決這些挑戰(zhàn),可以釋放LLM的全部潛力,并實(shí)現(xiàn)它們在各種應(yīng)用中的無縫集成。
6. 和vLLM、PyTorch的Flash-Decoding對比分析
| Feature / Aspect | Nvidia TensorRT-LLM | vLLM | PyTorch (Flash-Decoding) |
|---|---|---|---|
| 內(nèi)存效率 | 利用NVIDIA硬件優(yōu)化LLM的內(nèi)存使用 | 采用PagedAttention算法進(jìn)行高效內(nèi)存管理 | 采用Flash-Decoding來優(yōu)化長上下文推理的內(nèi)存使用 |
| 吞吐量 | 利用諸如在in-flight batching等技術(shù)以獲得高吞吐量 | 聲稱與傳統(tǒng)Transformer相比實(shí)現(xiàn)了更高的吞吐量 | 即使處理非常長的序列也能實(shí)現(xiàn)高吞吐量的有效并行化 |
| 計(jì)算效率 | 使用流式tokens和量化技術(shù) | 具有高速性能,并在基準(zhǔn)測試中實(shí)現(xiàn)了實(shí)質(zhì)性改進(jìn) | 由于優(yōu)化的注意力計(jì)算,對于非常長的序列生成速度高達(dá)8倍 |
| 平臺/硬件利用 | 針對NVIDIA硬件進(jìn)行優(yōu)化,利用NVIDIA Hopper Transformer引擎等功能 | 為LLM工作負(fù)載設(shè)計(jì)的高效性能,適用于受限環(huán)境 | 即使處理小批量和大上下文,也充分利用GPU能力進(jìn)行推理 |
| 兼容性和集成 | 提供與各種LLM的兼容性,支持集成到NVIDIA AI平臺 | 與Hugging Face模型兼容的API、集成 | 與PyTorch生態(tài)系統(tǒng)緊密集成,適用于各種LLM的應(yīng)用 |
| 性能指標(biāo)** | 與傳統(tǒng)方法相比展示更好的性能 | 優(yōu)于HuggingFace serving和HuggingFace TGI | 對于序列長度的擴(kuò)展性改進(jìn),在基準(zhǔn)測試中勝過其他方法 |
| 適用場景 | 適用于利用NVIDIA生態(tài)系統(tǒng)的各種LLM應(yīng)用 | 適用于內(nèi)存有限且需要高吞吐量的環(huán)境 | 在摘要、對話或代碼庫等長上下文處理任務(wù)中具有優(yōu)勢 |
| 成本效益 | 旨在通過高效利用計(jì)算資源降低運(yùn)營成本 | 設(shè)計(jì)用于經(jīng)濟(jì)有效的LLM部署,提高可訪問性 | 為長上下文應(yīng)用提供經(jīng)濟(jì)有效的推理 |
| 技術(shù)創(chuàng)新點(diǎn) | 包括為LLM優(yōu)化的內(nèi)核和處理函數(shù) | 持續(xù)改進(jìn)服務(wù)引擎設(shè)計(jì) | 引入新的并行化維度以提高推理效率 |
5. 參考資料
- 代碼:https://github.com/NVIDIA/TensorRT-LLM/tree/main
- 文檔:https://nvidia.github.io/TensorRT-LLM/
- Trt-llm在H100、A100和Ada上的表現(xiàn):https://github.com/NVIDIA/TensorRT-LLM/blob/main/docs/source/performance.md
評論
圖片
表情
