logo 🤗

技术视野

聚焦科技前沿,分享技术解析,洞见未来趋势。在这里,与您一起探索人工智能的无限可能,共赴技术盛宴。

准备工作

  1. 一张英伟达显卡,8GB以上显存,30系/40系新卡。
  2. 安装了英伟达显卡驱动,版本大于等于530。
  3. 安装了cuda,这里推荐12.1(主要跟着pytorch需要的cuda版本走,并且trt-llm需要cuda>=12)官网链接,下载后双击安装即可,安装位置默认即可。
  4. 安装cudnn,一般来说选最新的就可以了,这里我选择8.9.7,官网链接,这里需要登录才能下载。将cudnn的压缩包解压,找到cuda的安装目录,比如我的cuda12.1是安装在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1目录,然后你将cudnn里面的对应目录的文件复制到对应文件夹即可。下面是一个简单的例子:
  • cudnn-windows-x86_64-8.9.7.29_cuda12-archive\bin目录下面的dll文件,复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\bin目录下面
  • cudnn-windows-x86_64-8.9.7.29_cuda12-archive\include目录下面的.h文件,复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\include目录下面
  • cudnn-windows-x86_64-8.9.7.29_cuda12-archive\lib\x64目录下面的.lib文件,复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\lib\x64目录下面
  1. 安装anaconda,清华镜像站下载地址
  2. 安装MPI Windows库,mpi4py依赖它运行,没有会报错。官网链接,下载安装msmpisetup.exe即可。

image.png

正式开始

  1. 创建一个叫trt-llm的虚拟环境,python版本3.10.12(因为官方docker里面的python版本是这个版本,这里保持一致)
conda create -n trt_llm python==3.10.12
conda activate trt_llm
  1. 安装TensorRT-LLM,目前最新版是0.7.1,这里先推荐安装0.7.0(因为最新trtion是对应0.7.0的,所以我这里暂时还是用0.7.0),安装时候会自动将pytorch也安装上去,所以这里需要将pytorch的pypi源加上。
pip install tensorrt_llm==0.7.0 --extra-index-url https://pypi.nvidia.com --extra-index-url https://download.pytorch.org/whl/cu121
  • 运行该命令会自动从Nvidia官网下载并安装TensorRT,这个过程需要比较好的网络,请耐心等待。
  1. 顺手测试一下pytorch的cuda是否可用,运行下面的命令,输出为True则说明Ok
python -c "import torch; print(torch.cuda.is_available())"
  1. 再测试一下TensorRT-LLM是否ok
python -c "import tensorrt_llm; print(tensorrt_llm.__version__)"
  • 输出结果如下,第一行警告可以忽略。
[01/04/2024-14:32:30] [TRT-LLM] [W] A required package 'psutil' is not installed. Will not monitor the device memory usages. Please install the package first, e.g, 'pip install pynvml>=11.5.0'.
0.7.0
  1. 然后,我们来测试一下TensorRT-LLM对Qwen进行加速,使用我之前的项目:https://github.com/Tlntin/Qwen-TensorRT-LLM,测试结果输出正常,下面给出一个简单示例,完整说明请看项目Readme
# 克隆项目
git clone https://github.com/Tlntin/Qwen-TensorRT-LLM.git

# 进入qwen目录
cd examples\qwen

# 复制huggingface的qwen权重过来(比如1.8b的权重https://huggingface.co/Qwen/Qwen-1_8B-Chat),重命名为qwen_7b_chat

# 安装依赖
pip install -r requirements.txt

# 编译fp16 Engine
python3 build.py --remove_input_padding --enable_context_fmha

# 试运行
python3 run.py

# 运行终端chat
python3 cli_chat.py

# 运行api
python3 api.py

# 再开一个终端运行web_demo.py(此demo依赖上面的api.py)
# 然后访问:http://localhost:7860/
python3 web_demo.py

image.png

  • 运行run.py的时候其实遇到了一个小坑,就是第6行的import tensorrt as trt会导致windows找不到pytorch,正好这一行没用上,所以我就注释掉了。
  1. 最后,顺手测试一下windows下,huggingface原版和trt-llm版的吞吐差别吧,暂时都只测试batch_size=1的差异。
  • 选择模型为Qwen-1_8B-Chat
  • 限制最大输入6k,最大输出2k
  • TRT-LLM那边使用smooth quant做量化
  • 测量模型吞吐速度和生成速度。需要下载ShareGPT_V3_unfiltered_cleaned_split.json这个文件。
  • 可以通过wget/浏览器直接下载,下载链接
  • 测量huggingface模型
python3 benchmark.py --backend=hf --dataset=ShareGPT_V3_unfiltered_cleaned_split.json --hf_max_batch_size=1
  • 测量trt-llm模型
python3 benchmark.py --backend=trt_llm --dataset=ShareGPT_V3_unfiltered_cleaned_split.json --trt_max_batch_size=1
  • 测试结果:
# hf(bf16原版)
Throughput: 0.18 requests/s, 93.45 tokens/s

# trt-llm(int8 smooth quant)
Throughput: 1.35 requests/s, 719.49 tokens/s

版权属于:tlntin
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
更新于: 2024年01月05日 09:33


39 文章数
5 分类数
40 页面数
已在风雨中度过 1年169天7小时40分
目录
来自 《Windows安装TensorRT-LLM, 单batch达到8倍加速》
暗黑模式
暗黑模式
返回顶部
暗黑模式
暗黑模式
返回顶部