0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

解鎖NVIDIA TensorRT-LLM的卓越性能

NVIDIA英偉達(dá)企業(yè)解決方案 ? 來源:NVIDIA英偉達(dá)企業(yè)解決方案 ? 2024-12-17 17:47 ? 次閱讀

NVIDIA TensorRT-LLM 是一個(gè)專為優(yōu)化大語(yǔ)言模型 (LLM) 推理而設(shè)計(jì)的庫(kù)。它提供了多種先進(jìn)的優(yōu)化技術(shù),包括自定義 Attention Kernel、Inflight Batching、Paged KV Caching、量化技術(shù) (FP8、INT4 AWQ、INT8 SmoothQuant 等) 以及更多功能,確保您的 NVIDIA GPU 能發(fā)揮出卓越的推理性能。

我們深知您對(duì)易用性的需求,為了讓您更快上手,并迅速實(shí)現(xiàn)流行模型的高性能推理,我們開發(fā)了 LLM API,通過簡(jiǎn)潔的指令,您可輕松體驗(yàn) TensorRT-LLM 帶來的卓越性能!

LLM API 是一個(gè) high-level Python API,專為 LLM 推理工作流而設(shè)計(jì)。以下是一個(gè)展示如何使用 TinyLlama 的簡(jiǎn)單示例:

from tensorrt_llm import LLM, SamplingParams
 
prompts = [
    "Hello, my name is",
    "The president of the United States is",
    "The capital of France is",
    "The future of AI is",
]
sampling_params = SamplingParams(temperature=0.8, top_p=0.95)
 
llm = LLM(model="TinyLlama/TinyLlama-1.1B-Chat-v1.0")
 
outputs = llm.generate(prompts, sampling_params)
 
# Print the outputs.
for output in outputs:
    prompt = output.prompt
    generated_text = output.outputs[0].text
print(f"Prompt:{prompt!r},Generatedtext:{generated_text!r}")

希望以上示例能幫助您快速入門 NVIDIA TensorRT-LLM LLM API。

當(dāng)前 TensorRT-LLM LLM API 可支持的模型

Llama (including variants Mistral, Mixtral, InternLM)

GPT (including variants Starcoder-1/2, Santacoder)

Gemma-1/2

Phi-1/2/3

ChatGLM (including variants glm-10b, chatglm, chatglm2, chatglm3, glm4)

QWen-1/1.5/2

Falcon

Baichuan-1/2

GPT-J

Mamba-1/2

一、詳細(xì)介紹

1.1 模型準(zhǔn)備

LLM class 可支持以下三種模型導(dǎo)入來源:

Hugging Face Hub直接從 Hugging Face 模型庫(kù)下載模型,例如 TinyLlama/TinyLlama-1.1B-Chat-v1.0。

本地 Hugging Face 模型使用已下載到本地的 Hugging Face 模型。

本地 TensorRT-LLM 引擎:使用通過 trtllm-build 工具構(gòu)建或由 Python LLM API 保存的 Engine。

您可以使用 LLM(model=) 構(gòu)造函數(shù)來靈活切換這些格式。以下各節(jié)將詳細(xì)介紹具體使用方法。

Hugging Face Hub

使用 Hugging Face Hub 來導(dǎo)入模型非常直觀,只需在 LLM 構(gòu)造函數(shù)中指定模型倉(cāng)庫(kù)名稱即可:

llm = LLM(model="TinyLlama/TinyLlama-1.1B-Chat-v1.0")

本地 Hugging Face 模型

由于 Hugging Face 模型庫(kù)的廣泛應(yīng)用,API 將 Hugging Face 格式作為主要輸入來源之一。當(dāng)您要使用 Llama 3.1 模型時(shí),請(qǐng)通過以下命令從 Meta Llama 3.1 8B 模型頁(yè)面下載模型:

git lfs install
gitclone

下載完成后,您可以通過以下方式加載模型:

llm = LLM(model=)

請(qǐng)注意,使用此模型需要遵守特定許可條款:

https://ai.meta.com/resources/models-and-libraries/llama-downloads/

在開始下載之前,請(qǐng)確保同意這些條款并在 Hugging Face 上完成身份驗(yàn)證:

https://huggingface.co/meta-llama/Meta-Llama-3-8B?clone=true

本地 TensorRT-LLM 引擎

LLM API 支持使用 TensorRT-LLM Engine,您可以通過以下兩種方式構(gòu)建 Engine:

您可使用 trtllm-build 工具從 Hugging Face 模型直接構(gòu)建 TensorRT-LLM Engine,并將其保存到磁盤供后續(xù)使用。詳細(xì)說明請(qǐng)參考 GitHub 上的 README 和 examples/llama 倉(cāng)庫(kù)。構(gòu)建完成后,您可以這樣加載模型:

llm = LLM(model=)

或者,您可以使用 LLM instance 來創(chuàng)建 Engine 并保存到本地磁盤:

llm = LLM()
# Save engine to local disk
llm.save()

可以參考第一種方法使用 model 參數(shù)來加載 Engine。

1.2 使用技巧和故障排除

以下是針對(duì)熟悉 TensorRT-LLM 其他 API 的用戶,在剛開始使用 LLM API 時(shí)可能遇到的常見問題及其解決方案:

RuntimeError: only rank 0 can start multi-node session, got 1

在使用 LLM API 進(jìn)行單節(jié)點(diǎn)多 GPU 推理時(shí),無需添加 mpirun 前綴。您可以直接運(yùn)行 python llm_inference_distributed.py 來執(zhí)行多 GPU 推理。

Slurm 節(jié)點(diǎn)上的掛起問題

在使用 Slurm 管理的節(jié)點(diǎn)上遇到掛起或其他問題時(shí),請(qǐng)?jiān)趩?dòng)腳本中添加前綴 mpirun -n 1 --oversubscribe --allow-run-as-root。

示例命令:

mpirun-n1--oversubscribe--allow-run-as-rootpythonllm_inference_distributed.py

在通訊器 MPI_COMM_WORLD 中,MPI_ABORT 在 rank 1 上被調(diào)用,錯(cuò)誤代碼為 1。

由于 LLM API 依賴 mpi4py 庫(kù),為避免 mpi4py 中的遞歸生成進(jìn)程,請(qǐng)將 LLM 類放在函數(shù)中,并在 __main__ 命名空間下保護(hù)程序的主入口點(diǎn)。

注意:此限制僅適用于多 GPU 推理。

二、常見自定義操作

2.1 量化

TensorRT-LLM 可以通過在 LLM 實(shí)例中設(shè)置適當(dāng) Flags,自動(dòng)對(duì) Hugging Face 模型進(jìn)行量化。例如,要執(zhí)行 Int4 AWQ 量化,以下代碼會(huì)觸發(fā)模型量化。請(qǐng)參考完整的支持的標(biāo)志列表和可接受的值。

fromtensorrt_llm.llmapiimportQuantConfig,QuantAlgo
quant_config = QuantConfig(quant_algo=QuantAlgo.W4A16_AWQ)
llm=LLM(,quant_config=quant_config)

2.2 采樣

SamplingParams 可以自定義采樣策略以控制 LLM 生成的響應(yīng),如 Beam Search、Temperature 和其他參數(shù)。

例如,要啟用 Beam Size 為 4 的 Beam Search,請(qǐng)按如下方式設(shè)置 Sampling_Params:

from tensorrt_llm.llmapi import LLM, SamplingParams, BuildConfig


build_config = BuildConfig()
build_config.max_beam_width = 4


llm = LLM(, build_config=build_config)
# Let the LLM object generate text with the default sampling strategy, or
# you can create a SamplingParams object as well with several fields set manually
sampling_params = SamplingParams(beam_width=4) # current limitation: beam_width should be equal to max_beam_width


for output in llm.generate(, sampling_params=sampling_params):
print(output)

SamplingParams 管理并分發(fā)字段到 C++ classes,包括:

SamplingConfig:

https://nvidia.github.io/TensorRT-LLM/_cpp_gen/runtime.html#_CPPv4N12tensorrt_llm7runtime14SamplingConfigE

OutputConfig:

https://nvidia.github.io/TensorRT-LLM/_cpp_gen/executor.html#_CPPv4N12tensorrt_llm8executor12OutputConfigE

更多詳情請(qǐng)參考 class 文檔

https://nvidia.github.io/TensorRT-LLM/llm-api/reference.html#tensorrt_llm.llmapi.SamplingParams

2.3 Build 配置

除了上述參數(shù)外,您還可以使用 build_config 類和從 trtllm-build CLI 借用的其他參數(shù)來自定義構(gòu)建配置。這些構(gòu)建配置選項(xiàng)為目標(biāo)硬件和用例構(gòu)建 Engine 提供了靈活性。請(qǐng)參考以下示例:

11m = LLM(,
          build_config=Buildconfig(
            max_num_tokens=4096,
            max batch size=128,
            max_beam_width=4))

?

更多詳情請(qǐng)參考 buildconfig 文檔

https://github.com/NVIDIA/TensorRT-LLM/blob/main/tensorrt_llm/builder.py#L476-L509

2.4 自定義 Runtime

類似于 build_config,您也可以使用 runtime_config、peft_cache_config,或其他從 Executor API 借用的參數(shù)來自定義 Runtime 配置。這些 Runtime 配置選項(xiàng)在 KV cache management、GPU memory allocation 等方面提供了額外的靈活性。請(qǐng)參考以下示例:

fromtensorrt_llm.llmapiimportLLM,KvCacheConfig


llm=LLM(,
kv_cache_config=KvCacheConfig(
free_gpu_memory_fraction=0.8))

2.5 自定義 Tokenizer

默認(rèn)情況下,LLM API 使用 transformers 的 AutoTokenizer。您可以在創(chuàng)建 LLM 對(duì)象時(shí)傳入自己的分詞器來覆蓋它。請(qǐng)參考以下示例:

llm=LLM(,tokenizer=)

?

LLM () 工作流將使用您的 tokenizer 。

也可以使用以下代碼直接輸入 token ID,由于未使用 Tokenizers,該代碼生成的是不帶文本的 token ID。

llm=LLM()
foroutputinllm.generate([32,12]):
...

關(guān)于作者

嚴(yán)春偉

NVIDIA 性能架構(gòu)師,目前主要聚焦于大模型推理架構(gòu)和優(yōu)化。

張國(guó)銘

NVIDIA 性能架構(gòu)師,目前主要從事大模型推理架構(gòu)和優(yōu)化 。

Adam Zheng

NVIDIA 產(chǎn)品經(jīng)理,負(fù)責(zé) NVIDIA AI 平臺(tái)軟件產(chǎn)品管理,目前主要聚焦于大模型推理架構(gòu)和優(yōu)化。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • NVIDIA
    +關(guān)注

    關(guān)注

    14

    文章

    4986

    瀏覽量

    103044
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    28

    文章

    4739

    瀏覽量

    128941
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3243

    瀏覽量

    48836
  • LLM
    LLM
    +關(guān)注

    關(guān)注

    0

    文章

    288

    瀏覽量

    334

原文標(biāo)題:TensorRT-LLM: LLM API 精簡(jiǎn)指令暢享卓越性能!

文章出處:【微信號(hào):NVIDIA-Enterprise,微信公眾號(hào):NVIDIA英偉達(dá)企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    TensorRT-LLM初探(一)運(yùn)行l(wèi)lama

    TensorRT-LLM正式出來有半個(gè)月了,一直沒有時(shí)間玩,周末趁著有時(shí)間跑一下。
    的頭像 發(fā)表于 11-16 17:39 ?1239次閱讀
    <b class='flag-5'>TensorRT-LLM</b>初探(一)運(yùn)行l(wèi)lama

    如何在Windows電腦電源選項(xiàng)開啟“卓越性能”模式呢

    一般我們的電腦電源選項(xiàng)中只有幾下幾項(xiàng):其實(shí)在一些版本的Windows10中微軟添加了一項(xiàng)“卓越性能”模式,開啟此模式可以把電腦的硬件發(fā)揮最大的性能管理員運(yùn)行“cmd”,運(yùn)行如下命令即可打開
    發(fā)表于 12-27 07:05

    卓越性能電源計(jì)劃的目的

    卓越性能”是一項(xiàng)新的電源計(jì)劃,僅在 Windows 10 Pro for Workstation 操作系統(tǒng)中可用。從卓越性能(Ultimate Performance)字面上就不難看出其存在的意義
    發(fā)表于 12-27 07:06

    查看開啟卓越性能模式前的系統(tǒng)各信息

    1、查看開啟卓越性能模式前的系統(tǒng)各信息:(1)系統(tǒng)版本:(2)電源選項(xiàng):(3)任務(wù)管理器:2、以管理員權(quán)限打開powershell,并輸入如下內(nèi)容后回車:powercfg
    發(fā)表于 12-31 07:15

    性能選項(xiàng)和卓越性能基礎(chǔ)知識(shí)總結(jié)

    卓越模式1.1 基礎(chǔ)知識(shí):高性能選項(xiàng)和卓越性能個(gè)人總結(jié)為:卓越性能會(huì)降低電壓,提高功耗,使硬件溫度更低,耗電更快,速度更快 一般默認(rèn)的設(shè)置是“平衡...
    發(fā)表于 03-02 07:43

    阿里云 &amp; NVIDIA TensorRT Hackathon 2023 決賽圓滿收官,26 支 AI 團(tuán)隊(duì)嶄露頭角

    及優(yōu)勝獎(jiǎng),展現(xiàn)出了卓越的技術(shù)實(shí)力。 掃碼查看獲獎(jiǎng)名單 解鎖 NVIDIA TensorRT-LLM 挖掘生成式 AI 新需求 今年的 NVIDIA
    的頭像 發(fā)表于 10-17 03:20 ?506次閱讀
    阿里云 &amp; <b class='flag-5'>NVIDIA</b> <b class='flag-5'>TensorRT</b> Hackathon 2023 決賽圓滿收官,26 支 AI 團(tuán)隊(duì)嶄露頭角

    現(xiàn)已公開發(fā)布!歡迎使用 NVIDIA TensorRT-LLM 優(yōu)化大語(yǔ)言模型推理

    NVIDIA 于 2023 年 10 月 19 日公開發(fā)布 TensorRT-LLM ,可在 NVIDIA GPU 上加速和優(yōu)化最新的大語(yǔ)言模型(Large Language Models)的推理
    的頭像 發(fā)表于 10-27 20:05 ?978次閱讀
    現(xiàn)已公開發(fā)布!歡迎使用 <b class='flag-5'>NVIDIA</b> <b class='flag-5'>TensorRT-LLM</b> 優(yōu)化大語(yǔ)言模型推理

    點(diǎn)亮未來:TensorRT-LLM 更新加速 AI 推理性能,支持在 RTX 驅(qū)動(dòng)的 Windows PC 上運(yùn)行新模型

    微軟 Ignite 2023 技術(shù)大會(huì)發(fā)布的新工具和資源包括 OpenAI?Chat?API 的 TensorRT-LLM 封裝接口、RTX 驅(qū)動(dòng)的性能改進(jìn) DirectML?for?Llama?2
    的頭像 發(fā)表于 11-16 21:15 ?676次閱讀
    點(diǎn)亮未來:<b class='flag-5'>TensorRT-LLM</b> 更新加速 AI 推理<b class='flag-5'>性能</b>,支持在 RTX 驅(qū)動(dòng)的 Windows PC 上運(yùn)行新模型

    如何在 NVIDIA TensorRT-LLM 中支持 Qwen 模型

    的特點(diǎn)和優(yōu)勢(shì)。然而,這些工具往往未能充分發(fā)揮 GPU 的性能。 為了解決這些問題,NVIDIA 推出了一種全新的解決方案—— Tens
    的頭像 發(fā)表于 12-04 20:25 ?959次閱讀
    如何在 <b class='flag-5'>NVIDIA</b> <b class='flag-5'>TensorRT-LLM</b> 中支持 Qwen 模型

    NVIDIA加速微軟最新的Phi-3 Mini開源語(yǔ)言模型

    NVIDIA 宣布使用 NVIDIA TensorRT-LLM 加速微軟最新的 Phi-3 Mini 開源語(yǔ)言模型。TensorRT-LLM 是一個(gè)開源庫(kù),用于優(yōu)化從 PC 到云端的
    的頭像 發(fā)表于 04-28 10:36 ?566次閱讀

    魔搭社區(qū)借助NVIDIA TensorRT-LLM提升LLM推理效率

    “魔搭社區(qū)是中國(guó)最具影響力的模型開源社區(qū),致力給開發(fā)者提供模型即服務(wù)的體驗(yàn)。魔搭社區(qū)利用NVIDIA TensorRT-LLM,大大提高了大語(yǔ)言模型的推理性能,方便了模型應(yīng)用部署,提高了大模型產(chǎn)業(yè)應(yīng)用效率,更大規(guī)模地釋放大模型的
    的頭像 發(fā)表于 08-23 15:48 ?453次閱讀

    NVIDIA Nemotron-4 340B模型幫助開發(fā)者生成合成訓(xùn)練數(shù)據(jù)

    Nemotron-4 340B 是針對(duì) NVIDIA NeMo 和 NVIDIA TensorRT-LLM 優(yōu)化的模型系列,該系列包含最先進(jìn)的指導(dǎo)和獎(jiǎng)勵(lì)模型,以及一個(gè)用于生成式 AI 訓(xùn)練的數(shù)據(jù)集。
    的頭像 發(fā)表于 09-06 14:59 ?314次閱讀
    <b class='flag-5'>NVIDIA</b> Nemotron-4 340B模型幫助開發(fā)者生成合成訓(xùn)練數(shù)據(jù)

    TensorRT-LLM低精度推理優(yōu)化

    本文將分享 TensorRT-LLM 中低精度量化內(nèi)容,并從精度和速度角度對(duì)比 FP8 與 INT8。首先介紹性能,包括速度和精度。其次,介紹量化工具 NVIDIA TensorRT
    的頭像 發(fā)表于 11-19 14:29 ?297次閱讀
    <b class='flag-5'>TensorRT-LLM</b>低精度推理優(yōu)化

    NVIDIA TensorRT-LLM Roadmap現(xiàn)已在GitHub上公開發(fā)布

    感謝眾多用戶及合作伙伴一直以來對(duì)NVIDIA TensorRT-LLM的支持。TensorRT-LLM 的 Roadmap 現(xiàn)已在 GitHub 上公開發(fā)布!
    的頭像 發(fā)表于 11-28 10:43 ?271次閱讀
    <b class='flag-5'>NVIDIA</b> <b class='flag-5'>TensorRT-LLM</b> Roadmap現(xiàn)已在GitHub上公開發(fā)布

    NVIDIA TensorRT-LLM中啟用ReDrafter的一些變化

    Recurrent Drafting (簡(jiǎn)稱 ReDrafter) 是蘋果公司為大語(yǔ)言模型 (LLM) 推理開發(fā)并開源的一種新型推測(cè)解碼技術(shù),該技術(shù)現(xiàn)在可與 NVIDIA TensorRT-LLM 一起使用。
    的頭像 發(fā)表于 12-25 17:31 ?106次閱讀
    在<b class='flag-5'>NVIDIA</b> <b class='flag-5'>TensorRT-LLM</b>中啟用ReDrafter的一些變化