文章目录
一、背景
LLM模型训练完毕、部署在线上进行使用时,遇到的一大难题是并发问题。
以单个模型为例,当模型进行计算时至少要花6、7秒甚至更多。这导致,如果这时有一个新的请求给到模型,模型需要等上一个请求计算完毕才能进行新的计算。
如果一个基于大模型的线上服务,其峰值并发访问量会达到几千、几万,从成本的角度考虑,也不可能同时部署这么多个模型来支持这样的访问量。
另一方面,从理论上来说,LLM模型都是多层transformer block。当前层block计算完毕后,即使最终结果仍为给出,但当前层已处于闲置状态,如果这时把新的请求给到当前层进行计算,也不会对上一个请求的计算结果产生干扰。因此,从理论角度,模型的推理加速是有可行性的。
基于此理论,Nvidia官方则推出了的模型部署方案TensorRT-LLM。
二、部署流程
使用TensorRT-LLM部署大模型需要以下几步:
- 安装TensorRT-LLM
- 启动容器
- 安装python依赖
- 转化模型格式
- 运行/部署
下面将依次介绍这些流程具体实施方案。
三、安装TensorRT-LLM
结合自己的显卡驱动版本,从官网拉取合适的docker镜像。
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/tensorrt/tags
我的驱动版本为:Driver Version: 530.30.02 CUDA Version: 12.1
我拉取的版本为:24.03-py3
注意:
- 早期,官方未提供镜像的时,需要从github拉取源码+cmake本地编译完成安装,这也是其他博客、教程中主要使用的方式。
- 但这一方式的缺点是需要预装很多环境,且编译过程非常耗时(几个小时)。
并且,若服务器本身无法连上境外网站(比如github)时,需要先下载到本地再上传至服务器,过程非常繁琐。- 因此,强烈推荐大家直接拉取镜像即可。另外,若docker版本低于19.02,其pull命令会略有不同,详情请在官网中查看。
四、启动容器
使用以下指令启动容器
docker run \
--gpus all