TensorRT-LLM是英伟达发布的针对大模型的加速框架,TensorRT-LLM是TensorRT的延申。TensorRT-LLM的GitHub地址是 https://github.com/NVIDIA/TensorRT-LLM
这个框架在0.8版本有一个比较大的更新,原先的逻辑被统一了,所以早期的版本就不介绍了。这个教程介绍0.11.0的main分支版本。
TensorRT-LLM的加速推理分为3个阶段。:
- 转为TensorRTLLM格式
- 转为TensorRTLLM引擎
- 运行推理
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