为了帮助用户加速模型构建转换,我们提供模型构建转换示例镜像,本文介绍如何使用示例镜像进行模型转换。
构建模型示例镜像
准备Dockerfile文件。
为了避免因兼容性问题导致的模型加载失败,强烈建议基于NVIDIA提供的Triton Inference Server的镜像:
nvcr.io/nvidia/tritonserver:24.06-trtllm-python-py3
创建镜像,示例如下。FROM nvcr.io/nvidia/tritonserver:24.06-trtllm-python-py3 WORKDIR /usr/src/app RUN git clone https://github.com/triton-inference-server/tensorrtllm_backend.git WORKDIR /usr/src/app/tensorrtllm_backend RUN git fetch --tags RUN git checkout tags/v0.10.0 WORKDIR /usr/src/app/tensorrtllm_backend/tensorrt_llm RUN git lfs install RUN git submodule update --init --recursive WORKDIR /usr/src/app COPY ./build_tensorrt_engine.sh build_tensorrt_engine.sh RUN chmod +x build_tensorrt_engine.sh
执行以下命令,构建模型转换示例镜像。
docker build -t tensorrt-llm-model-build .
重要本示例构建镜像使用的操作系统为Ubuntu 22.04,数据盘为500GiB,并且需要一台装备了NVIDIA GPU的计算机。请确保已安装适用于您GPU型号的最新NVIDIA驱动程序以及CUDA 12.4.1工具包。以上配置仅供参考,请以实际情况为准。
安装NVIDIA Container Toolkit,详情请参见nvidia container toolkit。
安装完成,重新启动Docker服务。
sudo systemctl restart docker
模型构建转换
拉取原始模型。详情请参见Qwen2-7B-Instruct下载模型。
使用TensorRT-LLM执行推理前,需要将模型转换为TensorRT-LLM engines的格式。为了保证兼容性,需要保证模型转换时采用了与CAP当前支持的Triton Inference Server/TensorRT-LLM一样的版本。目前CAP模型服务中TensorRT框架采用的Triton Inference Server的版本是
24.06-trtllm-python-py3
。执行以下命令启动模型转换容器:
docker run --gpus=all --net=host -it --entrypoint=/bin/bash \ -e MODEL_PATH=${MODEL_PATH} -e CKPT_PATH=${CKPT_PATH} -e ENGINE_PATH=${ENGINE_PATH} -e MODEL_GROUP=${MODEL_GROUP} \ -v ${MODEL_PATH}:${MODEL_PATH} -v ${CKPT_PATH}:${CKPT_PATH} -v ${ENGINE_PATH}:${ENGINE_PATH} \ tensorrt-llm-model-build
构建模型对应的TensorRT-LLM engines。相关环境变量说明如下:
环境变量
说明
MODEL_PATH
模型存放路径。包含从模型社区,例如魔搭下载的模型原始代码和模型文件。例如:下载Qwen2-7B-Instruct到root路径下。
CKPT_PATH
用于保存模型构建转换过程中产生的checkpoint文件的路径,需自行创建。例如:root路径下新建doing文件夹。
ENGINE_PATH
用于保存最终模型对应的TensorRT-LLM engines的路径,需自行创建。例如:root路径下新建engine文件夹。
MODEL_GROUP
模型组,用于确定模型转换脚本的路径,值等于tensorrt_llm/examples模型对应的目录,取相对路径,例如qwen。
命令示例如下。
docker run --gpus=all --net=host -it --entrypoint=/bin/bash \ -e MODEL_PATH=/root/Qwen2-7B-Instruct -e CKPT_PATH=/root/doing -e ENGINE_PATH=/root/engine -e MODEL_GROUP=qwen \ -v /root/Qwen2-7B-Instruct:/root/Qwen2-7B-Instruct -v /root/doing:/root/doing -v /root/engine:/root/engine \ tensorrt-llm-model-build
在执行完
docker run
命令之后,会生成以engine.sh
为后缀的文件,在模型转换容器里执行./build.engine.sh
这个文件,生成模型的TensorRT-LLM engines
。
build.engine.sh请以实际生成的*.engine.sh名为准。
build.engine.sh提供的模型构建转换参数仅供参考,请参考tensorrtllm_backend repo、NVIDIA相关文档和业务的特点,选择合适的模型转换参数。
相关文档
如果您想将生成的TensorRT-LLM engines创建TensorRT执行框架的模型服务,详情请参见创建TensorRT执行框架的模型服务。