构建TensorRT LLM模型

为了帮助用户加速模型构建转换,我们提供模型构建转换示例镜像,本文介绍如何使用示例镜像进行模型转换。

构建模型示例镜像

  1. 准备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
  2. 执行以下命令,构建模型转换示例镜像。

    docker build -t tensorrt-llm-model-build .
    重要

    本示例构建镜像使用的操作系统为Ubuntu 22.04,数据盘为500GiB,并且需要一台装备了NVIDIA GPU的计算机。请确保已安装适用于您GPU型号的最新NVIDIA驱动程序以及CUDA 12.4.1工具包。以上配置仅供参考,请以实际情况为准。

  3. 安装NVIDIA Container Toolkit,详情请参见nvidia container toolkit

  4. 安装完成,重新启动Docker服务。

    sudo systemctl restart docker

模型构建转换

  1. 拉取原始模型。详情请参见Qwen2-7B-Instruct下载模型。

  2. 使用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
  3. 在执行完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执行框架的模型服务