当前位置: 首页 > news >正文

TensorRT-LLM加速框架的基本使用

TensorRT-LLM是英伟达发布的针对大模型的加速框架,TensorRT-LLM是TensorRT的延申。TensorRT-LLM的GitHub地址是 https://github.com/NVIDIA/TensorRT-LLM

这个框架在0.8版本有一个比较大的更新,原先的逻辑被统一了,所以早期的版本就不介绍了。这个教程介绍0.11.0的main分支版本。

TensorRT-LLM的加速推理分为3个阶段。:

  1. 转为TensorRTLLM格式
  2. 转为TensorRTLLM引擎
  3. 运行推理

TensorRT-LLM只支持部分大模型,具体可以看它GitHub中的example文件夹。下面以InternLM2大模型为例子,展示TensorRT-LLM的使用。

环境

  • 8张3090,在本例中使用了两张24G的3090显卡。
  • 现在基本都使用Docker了,因为使用TensorRT-LLM主要还是想要最终的部署,建议参考tensorrtllm_backend服务端
    来编译。这个仓库提供了tritonserver+TensorRTLLM(服务端+加速框架),也有编译好的docker镜像
    NGC地址

转为TensorRT-LLM格式

在官方给出的Internlm2实例文件夹中执行命令

python convert_checkpoint.py --model_dir /tensorrtllm_backend/triton_model_repo/tensorrt_llm/internlm2-chat-20b \--dtype bfloat16 \--output_dir ./internlm2-chat-20b/trt_engines/bf16/2-gpu/ \--tp_size 2

因为一张24G的显卡不足以加载20B的模型 ,所以设置tp_size为2。
模型转化格式的截图

生成引擎文件

使用trtllm-build命令将TensorRT-LLM格式的文件生成引擎。命令如下

CUDA_VISIBLE_DEVICES=1,2 trtllm-build --checkpoint_dir  /model2engine/internlm2/internlm2-chat-20b/trt_engines/bf16/2-gpu \--max_batch_size 8  --max_input_len 2048 \--max_output_len 2048  \--gemm_plugin bfloat16\--gpt_attention_plugin bfloat16 \--remove_input_padding enable  \--paged_kv_cache enable \--tp_size 2  \--use_custom_all_reduce disable\--output_dir  /model2engine/internlm2/engine_outputs

转化完成

运行推理

CUDA_VISIBLE_DEVICES=1,2  mpirun -n 2 --allow-run-as-root \python ../run.py --max_output_len=120 \--input_text '你是谁啊?' \--tokenizer_dir /tensorrtllm_backend/triton_model_repo/tensorrt_llm/internlm2-chat-20b \--engine_dir=/model2engine/internlm2/engine_outputs

输出结果

相关文章:

  • 数据库原理与安全复习笔记(未完待续)
  • 【Linux】使用 iptables 验证访问HDFS 所使用到的端口
  • 光纤通讯资料收集
  • java课程设计GUI学生信息管理系统
  • 爬虫阶段思考
  • 【Rust】——所有可能会用到模式的位置
  • Spring Cloud学习:如何实现Gateway 服务网关限流
  • ESP32 esp-idf esp-adf环境安装及.a库创建与编译
  • OpenCV颜色检测
  • 网络编程(六)TCP并发服务器
  • B3996 [洛谷 202406GESP 模拟 三级] 小洛的数字游戏
  • SpringMVC:拦截Mybatis的mapper
  • 如何设计高可用的淘客返利系统
  • Synchronized、volatile与ReentrantLock:比较这些同步机制在Java并发编程中的应用和区别
  • Spring响应式编程之Reactor操作符
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • [译]前端离线指南(上)
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • Java,console输出实时的转向GUI textbox
  • Javascript 原型链
  • Laravel 中的一个后期静态绑定
  • Linux中的硬链接与软链接
  • MQ框架的比较
  • Vue 重置组件到初始状态
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 简单实现一个textarea自适应高度
  • 前端临床手札——文件上传
  • 删除表内多余的重复数据
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 手写一个CommonJS打包工具(一)
  • 一文看透浏览器架构
  • ​iOS安全加固方法及实现
  • (175)FPGA门控时钟技术
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (二)正点原子I.MX6ULL u-boot移植
  • (二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2
  • (六)软件测试分工
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (强烈推荐)移动端音视频从零到上手(下)
  • (三十五)大数据实战——Superset可视化平台搭建
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • .Net Core 中间件与过滤器
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .NET IoC 容器(三)Autofac
  • .NET MVC第五章、模型绑定获取表单数据
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .NET/C# 使窗口永不获得焦点
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .NET框架
  • .Net下的签名与混淆