TensorRT-LLM笔记

news2024/11/5 17:01:41

原文链接

开启inflight-batching, client侧需要使用inflight_batcher_llm_client.py:

python3 inflight_batcher_llm/client/inflight_batcher_llm_client.py --request-output-len 200 --tokenizer-dir ${HF_LLAMA_MODEL}

bad_words: output中不允许出现的词语;

stop_words: output生成到这些词,则停止;

build engine常用参数:

--gpt_attention_plugin float16

--gemm_plugin float16

--context_fmha enable

--kv_cache_type paged:Paged KV Cache?

Best Practices for Tuning the Performance of TensorRT-LLM — tensorrt_llm documentation

max_batch_sizemax_seq_len and max_num_tokens

--multiple_profiles: 允许trtllm多次尝试,其自动选取性能最好的;

1. 默认打开:--gpt_attention_plugin:in-place update on KV cache;减少了显存占用,减少了显存copy;

2. 默认打开:--context_fmha:attention计算这里,是否采用fused kernel;短句子,用vanilla;长句子,用FlashAttention和FlashAttention2; 官网介绍

3. 默认打开:--remove_input_padding:输入序列末尾不再padding;(我猜就是为inflight-batching?)

4. 默认打开:--paged_kv_cache:Paged Attention;

5. 默认打开: inflight-batching; 当1、3、4都打开时,该功能自动打开;将context阶段的seq和generate阶段的seq,放在同一个batch里,interleave起来进行计算?

--reduce_fusion enable: fuse the ResidualAdd and LayerNorm kernels after AllReduce into a single kernel;  似乎有前置条件:“when the custom AllReduce is already enabled”

Embedding分散存放:官方示例;2~3个选项同时打开:--use_parallel_embedding和--embedding_sharding_dim和--use_embedding_sharing;"--embedding_sharding_dim 0"按照vocab size进行划分;"--embedding_sharding_dim 0"按照维度进行划分;(Best Practices里说,convert_checkpoint.py阶段还要用上--use_embedding_sharing,trtllm-build阶段还要用上--lookup_plugin和--gemm_plugin)

# 2-way tensor parallelism with embedding parallelism along hidden dimension
python3 convert_checkpoint.py --model_dir gpt2 \
        --dtype float16 \
        --tp_size 2 \
        --use_parallel_embedding \
        --embedding_sharding_dim 1 \
        --output_dir gpt2/trt_ckpt/fp16/2-gpu

trtllm-build --checkpoint_dir gpt2/trt_ckpt/fp16/2-gpu \
        --output_dir gpt2/trt_engines/fp16/2-gpu

 --use_fused_mlp;(默认关闭的);将2个MLP层和1个激活层,fuse到1个kernel里;FP8的时候可能影响精度,可尝试关掉(打开的话:--use_fused_mlp=enable --gemm_swiglu_plugin fp8);

--gemm_plugin: (默认关闭的);使用NVIDIA cuBLASLt执行GEMM计算;FP16和BF16建议开着,可以加速计算、减少显存占用;FP8:小batch建议打开,大batch建议关闭;

KV cache的显存占用:--kv_cache_free_gpu_mem_fraction范围在0.0~1.0,free memory里用来存放KV cache的比例,默认是0.9,可以设到0.95,不要设到1.0,因为要留一点儿给input和output;--max_tokens_in_paged_kv_cache,KV cache里存放的token数量,建议只设fraction参数即可,会自动计算token数量;

--max_attention_window_size: 以效果换性能;KV cache里最多只保存这么多个token;如果input tokens+output tokens, 超过了这个数,则只有末尾这个数个tokens会参与attention计算,最前面的tokens的显存被释放;

LLama Examples

--use_paged_context_fmha: 跟--context_fmha(FlashAttention)相比,适用于long context,prefilling阶段可把input context划分为多个chunk,每个chunk单独进行计算;从而减少了activation memory的大小,允许了更长的input;和--max_num_tokens一起用才行,指定好每个chunk最多多少个tokens(我推测,如果input超出这个长度,则会被切成多个chunk,执行多次prefilling前向推理)

python -m tensorrt_llm.commands.build --checkpoint_dir /tmp/llama-3-8B-1048k/trt_ckpts \
            --output_dir /tmp/llama-3-8B-1048k/trt_engines \
            --gemm_plugin float16 \
            --max_num_tokens 4096 \
            --max_input_len 131072 \
            --max_seq_len 131082 \
            --use_paged_context_fmha enable

注意:max_input_len指定了输入最大长度,max_num_tokens指定了对输入进行分块的chunk大小;max_seq_len-max_input_len指定了输出的最大长度;(也可以把--max_batch_size设成1,进一步减少显存占用)

int8 kv cache + per-channel weight-only quantization:

# Build model with both INT8 weight-only and INT8 KV cache enabled
python convert_checkpoint.py --model_dir ./llama-models/llama-7b-hf   \
                             --output_dir ./tllm_checkpoint_1gpu_int8_kv_wq \
                             --dtype float16  \
                             --int8_kv_cache \             # KV
                             --use_weight_only \           # W
                             --weight_only_precision int8  # W

trtllm-build --checkpoint_dir ./tllm_checkpoint_1gpu_int8_kv_wq \
            --output_dir ./tmp/llama/7B/trt_engines/int8_kv_cache_weight_only/1-gpu \
            --gemm_plugin auto  # 默认是disable的!

int8 kv cache + int4 awq weight quantization:

(注意,用的是quantize.py,而不是convert_checkpoint..py)

python ../quantization/quantize.py --model_dir /tmp/llama-7b-hf \
                                   --output_dir ./tllm_checkpoint_1gpu_awq_int8_kv_cache \
                                   --dtype float16 \
                                   --qformat int4_awq \     # AWQ
                                   --awq_block_size 128 \   # AWQ
                                   --kv_cache_dtype int8 \  # KV
                                   --calib_size 32

trtllm-build --checkpoint_dir ./tllm_checkpoint_1gpu_awq_int8_kv_cache \
            --output_dir ./tmp/llama/7B/trt_engines/int8_kv_cache_int4_AWQ/1-gpu/ \
            --gemm_plugin auto \

SmoothQuant: (INT8-Activation * INT8-Weight)

(--per_token和--per_channel,是用空间换精度,可选0~2个)

# Build model for SmoothQuant in the _per_token_ + _per_channel_ mode
python3 convert_checkpoint.py --model_dir /llama-models/llama-7b-hf \
                            --output_dir /tmp/tllm_checkpoint_1gpu_sq \
                            --dtype float16 \
                            --smoothquant 0.5 \ #
                            --per_token \       # Optional
                            --per_channel       # Optional

trtllm-build --checkpoint_dir /tmp/tllm_checkpoint_1gpu_sq \
             --output_dir ./engine_outputs \
             --gemm_plugin auto

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

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

相关文章

我谈正态分布——正态偏态

目录 pdf和cdf参数 标准正态分布期望和方差分布形态 3 σ 3\sigma 3σ原则 正态和偏态正态偏态瑞利分布偏度 (Skewness)峰度 (Kurtosis) 比较 正态分布的英文是Normal Distribution,normal是“正常”或“标准”的意思,中文翻译是正态,多完美的…

Web服务器(理论)

目录 Web服务器www简介常见Web服务程序介绍:服务器主机主要数据浏览器 网址及HTTP简介URLhttp请求方法:2.3 HTTP协议请求的工作流程: www服务器的类型静态网站动态网站 HTTPS简介概念解释SSL协议分为两层SSL协议提供的服务 HTTPS安全通信机制图解过程 快…

解决方案 | 部署更快,自动化程度高!TOSUN同星线控底盘解决方案

Tosun——线控底盘解决方案 在汽车智能化和电动化进程中,智能线控底盘相关的核心技术和产品成为了新能源汽车及智能驾驶产业的重点发展方向。同星智能作为行业先行者,精研汽车电子行业整体解决方案,提供基于TSMaster的底盘HIL仿真测试解决方…

服务器作业(2)

架设一台NFS服务器,并按照以下要求配置 关闭防火墙 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 配置文件设置: [rootlocalhost ~]# vim /etc/exports 1、开放/nfs/shared目录,供所有用户查询资料 共享…

架构师备考-软件工程相关补充

目录 软件开发生命周期 软件工程过程 软件维护分类 遗留系统 软件重用 逆向工程 相关概念 抽象层次 需求工程 需求工程主要活动 需求管理的主要活动 需求获取的主要步骤 需求获取方法 需求变更管理的过程 净室软件工程 定义 理论基础 技术手段 应用 缺点 软…

基于SSM+VUE小型企业财务报销管理系统JAVA|VUE|Springboot计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解

源代码数据库LW文档(1万字以上)开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统:Window操作系统 2、开发工具:IntelliJ IDEA或者Eclipse 3、数据库存储&#xff1a…

站大爷代理IP工具的导入功能介绍

在数字化时代,代理IP成为了网络爬虫、数据挖掘等网络活动中不可或缺的工具。站大爷代理IP工具深刻理解用户的需求,提供了多种代理IP导入方式,让代理IP的管理变得简单高效。下面就来详细了解一下这些便捷的导入方法: 一、站大爷AP…

CSP-J2023T4 旅游巴士(同余最短路)

题目链接:https://www.luogu.com.cn/problem/P9751 题意:给定 n 个点, m 条单向边,一个时间间隔 k 。有这样一些限制条件: 1)1号点是入口, n 号点是出口; 2)经过一条边…

React系列教程(2)React哲学

豆约翰习惯将掌握某一技术分为5个层次:初窥门径,小试牛刀,渐入佳境,得心应手,玩转自如 本篇属于React框架中的第1层次即初窥门径 我们认为,React 是用 JavaScript 构建快速响应的大型 Web 应用程序的首选方…

「Mac畅玩鸿蒙与硬件29」UI互动应用篇6 - 多选问卷小应用

本篇将带你实现一个多选问卷小应用,用户可以勾选选项并点击提交按钮查看选择的结果。通过本教程,你将学习如何使用 Checkbox 组件、动态渲染列表、状态管理及用户交互,构建完整的应用程序。 关键词 UI互动应用Checkbox 组件状态管理动态列表…

【linux 多进程并发】0203 网络资源的多进程处理,子进程完全继承网络套接字,避免“惊群”问题

0203 网络资源的多进程处理 ​专栏内容: postgresql使用入门基础手写数据库toadb并发编程 个人主页:我的主页 管理社区:开源数据库 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 一、概…

江协科技STM32学习- P32 MPU6050

🚀write in front🚀 🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝​…

程序设计方法与实践-时空权衡

什么是时空权衡? 时空权衡是算法设计中的一个众所周知的问题,也就是对算法的空间和时间效率做出权衡,它大概有分两种形式: 对输入的部分数据或者全部数据作预处理,然后对于获得额外信息储存起来,从而加快…

STM32F1学习——TIM

一、STM32中的定时器 在STM32中分为三种定时器,分别是基本定时器,通用定时器和高级定时器,每种定时器都是向下兼容的。 二、定时器详细介绍 a、基本定时器 基本定时器主要由下面与分频器、计数器 和 自动重装寄存器三个组成的时基单元&#…

W5500-EVB-Pico2评估板介绍

目录 1 概述 2 板载资源 2.1 硬件规格 2.2 硬件规格 2.3 工作条件 3 参考资料 3.1 RP2350 数据手册 3.2 W5500 数据手册 3.3 原理图 原理图 & 物料清单 & Gerber 文件 3.3 尺寸图 (单位 : mm) 3.4 参考例程 认证 CE FCC AWS 资质 Microsoft Azure 认证…

FFmpeg 4.3 音视频-多路H265监控录放C++开发十二:在屏幕上显示多路视频播放,可以有不同的分辨率,格式和帧率。

上图是在安防领域的要求,一般都是一个屏幕上有显示多个摄像头捕捉到的画面,这一节,我们是从文件中读取多个文件,显示在屏幕上。

Oracle视频基础1.4.3练习

15个视频 1.4.3 できない dbca删除数据库 id ls cd cd dbs ls ls -l dbca# delete a database 勾选 # chris 勾选手动删除数据库 ls ls -l ls -l cd /u01/oradata ls cd /u01/admin/ ls cd chris/ ls clear 初始化参数文件,admin,数据文件#新版本了…

一个由Deno和React驱动的静态网站生成器

大家好,今天给大家分享一个由 Deno React 驱动的静态网站生成器Pagic。 项目介绍 Pagic 是一个由 Deno React 驱动的静态网站生成器。它配置简单,支持将 md/tsx 文件渲染成静态页面,而且还有大量的官方或第三方主题和插件可供扩展。 核心…

1分钟解决Excel打开CSV文件出现乱码问题

一、编码问题 1、不同编码格式 CSV 文件有多种编码格式,如 UTF - 8、UTF - 16、ANSI 等。如果 CSV 文件是 UTF - 8 编码,而 Excel 默认使用的是 ANSI 编码打开,就可能出现乱码。例如,许多从网络应用程序或非 Windows 系统生成的 …

发布天工AI高级搜索功能,昆仑万维做最懂科研学术的AI搜索

今天,昆仑万维天工AI正式发布最新版本的AI高级搜索功能。 一年时光,栉风沐雨。昆仑万维致力于通过领先的AI技术,为全球用户提供创新的智能搜索和信息处理解决方案。无论是金融、科技领域的专业搜索还是文档分析,「天工AI高级搜索…