用TensorRT-LLM进行LLama的推理和部署

Deploy an AI Coding Assistant with NVIDIA TensorRT-LLM and NVIDIA Triton | NVIDIA Technical Blog
Quick Start Guide — tensorrt_llm documentation (nvidia.github.io)

使用TensorRT-LLM的源码,来下载docker并在docker里编译TensorRT-LLM;

模型格式先Huggingface转为FasterTransformer;再用TensorRT-LLM将其compile为TensorRT engine;然后可用TensorRT-LLM的C++ runtime来跑推理(或者模型放到Triton Repo上,并指定TensorRT-LLM为backend)

Input的Tokenizing和Output的De-Tokenizing,视作前处理、后处理,创建"Python Model";整个流程用一个"Ensemble Model"来表示,包含以上两个"Model"以及真正的GPT-Model;

Best Practices for Tuning the Performance of TensorRT-LLM — tensorrt_llm documentation (nvidia.github.io)

LLama:

https://github.com/NVIDIA/TensorRT-LLM/blob/main/examples/llama/README.md

TensorRT-LLM支持很多常用模型;例如:baichuan、internlm、chatglm、qwen、bloom、gpt、gptneox、llama;

convert_checkpoint.py,是每种模型用自己的;run.py,是所有模型共享;

每种模型,支持的技术完善程度不同。

支持LLama的以下功能:

  • FP16
  • FP8
  • INT8 & INT4 Weight-Only
  • SmoothQuant
  • Groupwise quantization (AWQ/GPTQ)
  • FP8 KV CACHE
  • INT8 KV CACHE (+ AWQ/per-channel weight-only)
  • Tensor Parallel
  • STRONGLY TYPED

python convert_checkpoint.py

--tp_size 4   // Tensor-parallel

--pp_size 4  // Pipeline-parallel

Pipeline并行,在某一个GPU忙碌时,其他GPU是否在忙着处理别的batch?

量化相关:

Numerical Precision — tensorrt_llm documentation (nvidia.github.io)

9种量化,对每种模型只支持一部分:

Model

FP32

FP16

BF16

FP8

W8A8 SQ

W8A16

W4A16

W4A16 AWQ

W4A16 GPTQ

### TensorRT-LLM Framework Usage and Documentation TensorRT-LLM 是 NVIDIA 提供的一个高性能推理优化框架,专门用于加速大型语言模型(LLMs)其他复杂神经网络的部署。它能够显著提升模型性能并降低延迟时间,适用于多种硬件平台。 以下是关于如何使用 TensorRT-LLM 的详细介绍: #### 安装与环境配置 要开始使用 TensorRT-LLM,需先安装必要的依赖项以及该工具本身。推荐的方式是从官方文档获取最新版本的信息[^4]。一般情况下,可以通过 pip 或者源码编译来完成安装过程。例如: ```bash pip install nvidia-tensorrt ``` 对于更复杂的设置或者特定需求,则可能需要从 GitHub 上克隆项目仓库,并按照 README 文件中的指导进行本地构建[^5]。 #### 数据准备与模型转换 由于大多数主流大模型如 LLaMA 都是在 PyTorch 中实现的,在将其迁移到 TensorRT-LLM 前往往需要经历一系列转化步骤。这包括但不限于量化处理、剪枝操作以及 ONNX 格式的导出等环节[^6]。具体命令如下所示: ```python import torch from transformers import AutoModelForCausalLM model_name = "your_model_path" pt_model = AutoModelForCausalLM.from_pretrained(model_name) dummy_input = torch.randint(0, 10000, (batch_size, seq_len)).cuda() torch.onnx.export(pt_model, dummy_input, f"{model_name}.onnx", input_names=["input_ids"], output_names=["logits"]) ``` 上述脚本展示了怎样把一个基于 Hugging Face Transformers 库加载好的预训练模型保存成兼容 TensorRT 的中间表示形式——ONNX 文件[^7]。 #### 性能调优技巧 一旦完成了基础搭建之后,就可以利用 TensorRT 自带的各种特性进一步提高效率。比如 FP16/INT8 精度混合运算可以有效减少显存占用同时维持较高的准确性;而多流并发执行则允许单张 GPU 同时服务于多个请求从而摊薄固定开销部分的成本[^8]。 另外值得注意的是,针对某些特殊应用场景还可以探索自定义插件机制以满足独特的需求[^9]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值