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

news2024/10/7 16:21:33

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

输出结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1856884.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

爬虫阶段思考

内容:写这篇文章是因为最近帮同学改了很多的爬虫代码,感触良多。 我用豆瓣为例,并不是不会用别的,而是这个我个人感觉最经典。然后还会写我遇到的一些问题以及解决方法。 首先,我们得先知道怎样爬取。我用的scrapy框…

操作系统实训复习笔记(1)

目录 Linux vi/vim编辑器(简单) (1)vi/vim基本用法。 (2)vi/vim基础操作。 进程基础操作(简单) (1)fork()函数。 写文件系统函数(中等&…

TensorFlow高阶API使用与PyTorch的安装

欢迎来到 Papicatch的博客 文章目录 🍉TensorFlow高阶API使用 🍈示例1:使用tf.keras构建模型 🍍通过“序贯式”方法构建模型 🍍通过“函数式”方法构建模型 🍈示例2:编译模型关键代码 &am…

多商户零售外卖超市外卖商品系统源码

构建你的数字化零售王国 一、引言:数字化零售的崛起 在数字化浪潮的推动下,零售业务正经历着前所未有的变革。多商户零售外卖超市商品系统源码应运而生,为商户们提供了一个全新的数字化零售解决方案。通过该系统源码,商户们可以…

.locked勒索病毒详解 | 防御措施 | 恢复数据

引言 在数字化飞速发展的今天,我们享受着信息技术带来的便捷与高效,然而,网络安全问题也随之而来,且日益严重。其中,勒索病毒以其狡猾的传播方式和巨大的破坏性,成为了网络安全领域中的一大难题。.locked勒…

解决Element-ui的el-table固定列后出现的表格错位问题

问题情况大致是这样的: 查看官网 解决办法:

std::future 如何保存多个对象进行同步等待

std::future 是一个 C11 引入的标准库类,可用于异步获取计算结果。通常情况下,std::future 可以通过 get() 函数来等待异步操作完成,并获取其结果。 如果需要等待多个异步操作完成并获取它们各自的结果,可以使用 std::future 的姊…

2024年文化传播与公共艺术国际会议(CCPA 2024)

2024年文化传播与公共艺术国际会议(CCPA 2024) 2024 International Conference on Cultural Communication and Public Arts 【重要信息】 大会地点:桂林 大会官网:http://www.icccpa.com 投稿邮箱:icccpasub-conf.co…

群辉NAS使用Kodi影视墙

目录 一、KODI安装 二、修改UI语言 1、修改显示字体 2、修改语言为中文 四、添加媒体库 五、观看电影 五、高级设置 1、视图类型 2、修改点击播动作 五、补充 1、文件组织结构及命名 2、电影信息的刮削 (1)添加影片 (2)演员管理 (3)影片管理 (4)说明 K…

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第47课-动态切换内嵌blender展厅的壁画

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第47课-动态切换内嵌blender展厅的壁画 使用dtns.network德塔世界(开源的智体世界引擎),策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编…

基于Java协同过滤算法的电影推荐系统设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,…

高晓松音频 百度网盘,高晓松音频 百度网盘资源,百度云大全

讲座主要围绕分享了自己的心得和体会,以及对产业现状的深刻洞察。认为,不仅是一种艺术形式,更是一种生活方式。他鼓励年轻人要勇于追求自己的音乐梦想,同时也要关注音乐产业的发展趋势,为音乐产业的繁荣贡献自己的力量…

通俗范畴论4 范畴的定义

注:由于CSDN无法显示本文章源文件的公式,因此部分下标、字母花体、箭头表示可能会不正常,请读者谅解 范畴的正式定义 上一节我们在没有引入范畴这个数学概念的情况下,直接体验了一个“苹果1”范畴,建立了一个对范畴的…

神经网络参数-----学习率(Learning Rate)

学习率 学习率是训练神经网络的重要超参数之一,它代表在每一次迭代中梯度向损失函数最优解移动的步长。它的大小决定网络学习速度的快慢。在网络训练过程中,模型通过样本数据给出预测值,计算代价函数并通过反向传播来调整参数。重复上述过程…

浅析优化文本提示技术 —— TextGrad

引言 大模型领域,现在除了不断推出各种底层大模型外,还涌现了许多包含复杂组件的复合系统,包括框架、工具等。 TextGrad VS DSPy 先来从大的概念范围看看 TextGrad 与 DSPy 的对比: TextGrad: (1&…

【PL理论深化】(3) 数学归纳法:归纳假设 (IH) | 结构归纳法 | 归纳假设的证明

💬 写在前面:所有编程语言都是通过归纳法定义的。因此,虽然编程语言本身是有限的,但用该语言编写的程序数量是没有限制的,本章将学习编程语言研究中最基本的归纳法。本章我们继续讲解归纳法,介绍归纳假设和…

Jitter Injection详解

一、定义与作用 Jitter Injection,即抖动注入,是一种在通信系统中人为地添加抖动的技术。该技术通过在发送端对数据包进行延迟和抖动调整,以实现对整个通信系统的时延和抖动的控制。其主要作用包括: 改善传输质量:通…

振弦采集仪在地铁隧道工程安全监测中的应用实践

振弦采集仪在地铁隧道工程安全监测中的应用实践 河北稳控科技振弦采集仪是一种常用于结构监测领域的仪器,主要用于测量结构物振动的频率、幅值、相位以及动力特性等参数。在地铁隧道工程的安全监测中,振弦采集仪起着关键的作用。 随着城市的不断发展&am…

同城跑腿APP开发,随叫随到超方便!

随着移动互联网的发展和人们生活节奏的加快,越来越多的人们没有闲暇的时间来做一些繁琐的事情,比如说买药、挂号、排队、送花、取文件等等。如果没有时间去处理这些事情怎么办?开发同城跑腿APP,提供跑腿服务,随时办事随…

Vue核心指令解析:探索MVVM与数据操作之美

文章目录 前言一、Vue.js1. MVVM模式介绍2. 单页面组件介绍及案例讲解3. 插值表达式介绍及案例讲解 二、Vue常用指令详解1. 数据绑定指令v-textv-html 2. 条件渲染指令v-ifv-show 3. 列表渲染指令v-for循环数组介绍及案例讲解循环对象介绍及案例讲解 4. 事件监听指令v-on事件修…