0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

解锁NVIDIA TensorRT-LLM的卓越性能

NVIDIA英伟达企业解决方案 ? 来源:NVIDIA英伟达企业解决方案 ? 2024-12-17 17:47 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

NVIDIA TensorRT-LLM 是一个专为优化大语言模型 (LLM) 推理而设计的库。它提供了多种先进的优化技术,包括自定义 Attention Kernel、Inflight Batching、Paged KV Caching、量化技术 (FP8、INT4 AWQ、INT8 SmoothQuant 等) 以及更多功能,确保您的 NVIDIA GPU 能发挥出卓越的推理性能。

我们深知您对易用性的需求,为了让您更快上手,并迅速实现流行模型的高性能推理,我们开发了 LLM API,通过简洁的指令,您可轻松体验 TensorRT-LLM 带来的卓越性能!

LLM API 是一个 high-level Python API,专为 LLM 推理工作流而设计。以下是一个展示如何使用 TinyLlama 的简单示例:

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。

当前 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

一、详细介绍

1.1 模型准备

LLM class 可支持以下三种模型导入来源:

Hugging Face Hub直接从 Hugging Face 模型库下载模型,例如 TinyLlama/TinyLlama-1.1B-Chat-v1.0。

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

本地 TensorRT-LLM 引擎:使用通过 trtllm-build 工具构建或由 Python LLM API 保存的 Engine。

您可以使用 LLM(model=) 构造函数来灵活切换这些格式。以下各节将详细介绍具体使用方法。

Hugging Face Hub

使用 Hugging Face Hub 来导入模型非常直观,只需在 LLM 构造函数中指定模型仓库名称即可:

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

本地 Hugging Face 模型

由于 Hugging Face 模型库的广泛应用,API 将 Hugging Face 格式作为主要输入来源之一。当您要使用 Llama 3.1 模型时,请通过以下命令从 Meta Llama 3.1 8B 模型页面下载模型:

git lfs install
gitclone

下载完成后,您可以通过以下方式加载模型:

llm = LLM(model=)

请注意,使用此模型需要遵守特定许可条款:

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

在开始下载之前,请确保同意这些条款并在 Hugging Face 上完成身份验证:

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

本地 TensorRT-LLM 引擎

LLM API 支持使用 TensorRT-LLM Engine,您可以通过以下两种方式构建 Engine:

您可使用 trtllm-build 工具从 Hugging Face 模型直接构建 TensorRT-LLM Engine,并将其保存到磁盘供后续使用。详细说明请参考 GitHub 上的 README 和 examples/llama 仓库。构建完成后,您可以这样加载模型:

llm = LLM(model=)

或者,您可以使用 LLM instance 来创建 Engine 并保存到本地磁盘:

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

可以参考第一种方法使用 model 参数来加载 Engine。

1.2 使用技巧和故障排除

以下是针对熟悉 TensorRT-LLM 其他 API 的用户,在刚开始使用 LLM API 时可能遇到的常见问题及其解决方案:

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

在使用 LLM API 进行单节点多 GPU 推理时,无需添加 mpirun 前缀。您可以直接运行 python llm_inference_distributed.py 来执行多 GPU 推理。

Slurm 节点上的挂起问题

在使用 Slurm 管理的节点上遇到挂起或其他问题时,请在启动脚本中添加前缀 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 上被调用,错误代码为 1。

由于 LLM API 依赖 mpi4py 库,为避免 mpi4py 中的递归生成进程,请将 LLM 类放在函数中,并在 __main__ 命名空间下保护程序的主入口点。

注意:此限制仅适用于多 GPU 推理。

二、常见自定义操作

2.1 量化

TensorRT-LLM 可以通过在 LLM 实例中设置适当 Flags,自动对 Hugging Face 模型进行量化。例如,要执行 Int4 AWQ 量化,以下代码会触发模型量化。请参考完整的支持的标志列表和可接受的值。

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

2.2 采样

SamplingParams 可以自定义采样策略以控制 LLM 生成的响应,如 Beam Search、Temperature 和其他参数。

例如,要启用 Beam Size 为 4 的 Beam Search,请按如下方式设置 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 管理并分发字段到 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

更多详情请参考 class 文档

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

2.3 Build 配置

除了上述参数外,您还可以使用 build_config 类和从 trtllm-build CLI 借用的其他参数来自定义构建配置。这些构建配置选项为目标硬件和用例构建 Engine 提供了灵活性。请参考以下示例:

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

?

更多详情请参考 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 借用的参数来自定义 Runtime 配置。这些 Runtime 配置选项在 KV cache management、GPU memory allocation 等方面提供了额外的灵活性。请参考以下示例:

fromtensorrt_llm.llmapiimportLLM,KvCacheConfig


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

2.5 自定义 Tokenizer

默认情况下,LLM API 使用 transformers 的 AutoTokenizer。您可以在创建 LLM 对象时传入自己的分词器来覆盖它。请参考以下示例:

llm=LLM(,tokenizer=)

?

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

也可以使用以下代码直接输入 token ID,由于未使用 Tokenizers,该代码生成的是不带文本的 token ID。

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

关于作者

严春伟

NVIDIA 性能架构师,目前主要聚焦于大模型推理架构和优化。

张国铭

NVIDIA 性能架构师,目前主要从事大模型推理架构和优化 。

Adam Zheng

NVIDIA 产品经理,负责 NVIDIA AI 平台软件产品管理,目前主要聚焦于大模型推理架构和优化。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • NVIDIA
    +关注

    关注

    14

    文章

    5389

    浏览量

    107063
  • gpu
    gpu
    +关注

    关注

    28

    文章

    4998

    浏览量

    132447
  • 模型
    +关注

    关注

    1

    文章

    3573

    浏览量

    50900
  • LLM
    LLM
    +关注

    关注

    1

    文章

    334

    浏览量

    984

原文标题:TensorRT-LLM: LLM API 精简指令畅享卓越性能!

文章出处:【微信号:NVIDIA-Enterprise,微信公众号:NVIDIA英伟达企业解决方案】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    DeepSeek R1 MTP在TensorRT-LLM中的实现与优化

    TensorRT-LLMNVIDIA Blackwell GPU 上创下了 DeepSeek-R1 推理性能的世界纪录,Multi-Token Prediction (MTP) 实现了大幅提速
    的头像 发表于 08-30 15:47 ?2509次阅读
    DeepSeek R1 MTP在<b class='flag-5'>TensorRT-LLM</b>中的实现与优化

    TensorRT-LLM初探(一)运行llama

    TensorRT-LLM正式出来有半个月了,一直没有时间玩,周末趁着有时间跑一下。
    的头像 发表于 11-16 17:39 ?1979次阅读
    <b class='flag-5'>TensorRT-LLM</b>初探(一)运行llama

    使用NVIDIA Triton和TensorRT-LLM部署TTS应用的最佳实践

    针对基于 Diffusion 和 LLM 类别的 TTS 模型,NVIDIA Triton 和 TensorRT-LLM 方案能显著提升推理速度。在单张 NVIDIA Ada Love
    的头像 发表于 06-12 15:37 ?906次阅读
    使用<b class='flag-5'>NVIDIA</b> Triton和<b class='flag-5'>TensorRT-LLM</b>部署TTS应用的最佳实践

    如何在魔搭社区使用TensorRT-LLM加速优化Qwen3系列模型推理部署

    TensorRT-LLM 作为 NVIDIA 专为 LLM 推理部署加速优化的开源库,可帮助开发者快速利用最新 LLM 完成应用原型验证与产品部署。
    的头像 发表于 07-04 14:38 ?1003次阅读

    TensorRT-LLM中的分离式服务

    在之前的技术博客中,我们介绍了低延迟[1] 和高吞吐[2] 场景的优化方法。对于生产部署,用户还关心在满足特定延迟约束的情况下,每个 GPU 的吞吐表现。本文将围绕“吞吐量-延迟”性能场景,介绍 TensorRT-LLM 分离式服务的设计理念、使用方法,以及
    的头像 发表于 08-27 12:29 ?704次阅读
    <b class='flag-5'>TensorRT-LLM</b>中的分离式服务

    卓越性能电源计划的目的

    卓越性能”是一项新的电源计划,仅在 Windows 10 Pro for Workstation 操作系统中可用。从卓越性能(Ultimate Performance)字面上就不难看出其存在的意义
    发表于 12-27 07:06

    性能选项和卓越性能基础知识总结

    卓越模式1.1 基础知识:高性能选项和卓越性能个人总结为:卓越性能会降低电压,提高功耗,使硬件温度更低,耗电更快,速度更快 一般默认的设置是“平衡...
    发表于 03-02 07:43

    阿里云 &amp; NVIDIA TensorRT Hackathon 2023 决赛圆满收官,26 支 AI 团队崭露头角

    及优胜奖,展现出了卓越的技术实力。 扫码查看获奖名单 解锁 NVIDIA TensorRT-LLM 挖掘生成式 AI 新需求 今年的 NVIDIA
    的头像 发表于 10-17 03:20 ?820次阅读
    阿里云 &amp; <b class='flag-5'>NVIDIA</b> <b class='flag-5'>TensorRT</b> Hackathon 2023 决赛圆满收官,26 支 AI 团队崭露头角

    现已公开发布!欢迎使用 NVIDIA TensorRT-LLM 优化大语言模型推理

    NVIDIA 于 2023 年 10 月 19 日公开发布 TensorRT-LLM ,可在 NVIDIA GPU 上加速和优化最新的大语言模型(Large Language Models)的推理
    的头像 发表于 10-27 20:05 ?1635次阅读
    现已公开发布!欢迎使用 <b class='flag-5'>NVIDIA</b> <b class='flag-5'>TensorRT-LLM</b> 优化大语言模型推理

    点亮未来:TensorRT-LLM 更新加速 AI 推理性能,支持在 RTX 驱动的 Windows PC 上运行新模型

    微软 Ignite 2023 技术大会发布的新工具和资源包括 OpenAI?Chat?API 的 TensorRT-LLM 封装接口、RTX 驱动的性能改进 DirectML?for?Llama?2
    的头像 发表于 11-16 21:15 ?1031次阅读
    点亮未来:<b class='flag-5'>TensorRT-LLM</b> 更新加速 AI 推理<b class='flag-5'>性能</b>,支持在 RTX 驱动的 Windows PC 上运行新模型

    NVIDIA加速微软最新的Phi-3 Mini开源语言模型

    NVIDIA 宣布使用 NVIDIA TensorRT-LLM 加速微软最新的 Phi-3 Mini 开源语言模型。TensorRT-LLM 是一个开源库,用于优化从 PC 到云端的
    的头像 发表于 04-28 10:36 ?1194次阅读

    魔搭社区借助NVIDIA TensorRT-LLM提升LLM推理效率

    “魔搭社区是中国最具影响力的模型开源社区,致力给开发者提供模型即服务的体验。魔搭社区利用NVIDIA TensorRT-LLM,大大提高了大语言模型的推理性能,方便了模型应用部署,提高了大模型产业应用效率,更大规模地释放大模型的
    的头像 发表于 08-23 15:48 ?1287次阅读

    TensorRT-LLM低精度推理优化

    本文将分享 TensorRT-LLM 中低精度量化内容,并从精度和速度角度对比 FP8 与 INT8。首先介绍性能,包括速度和精度。其次,介绍量化工具 NVIDIA TensorRT
    的头像 发表于 11-19 14:29 ?1696次阅读
    <b class='flag-5'>TensorRT-LLM</b>低精度推理优化

    NVIDIA TensorRT-LLM Roadmap现已在GitHub上公开发布

    感谢众多用户及合作伙伴一直以来对NVIDIA TensorRT-LLM的支持。TensorRT-LLM 的 Roadmap 现已在 GitHub 上公开发布!
    的头像 发表于 11-28 10:43 ?864次阅读
    <b class='flag-5'>NVIDIA</b> <b class='flag-5'>TensorRT-LLM</b> Roadmap现已在GitHub上公开发布

    NVIDIA TensorRT-LLM中启用ReDrafter的一些变化

    Recurrent Drafting (简称 ReDrafter) 是苹果公司为大语言模型 (LLM) 推理开发并开源的一种新型推测解码技术,该技术现在可与 NVIDIA TensorRT-LLM 一起使用。
    的头像 发表于 12-25 17:31 ?892次阅读
    在<b class='flag-5'>NVIDIA</b> <b class='flag-5'>TensorRT-LLM</b>中启用ReDrafter的一些变化