在Windows上从源代码构建

注意

本节适用于高级用户。如果您计划使用预构建的TensorRT-LLM发布轮子,请跳过本节。

先决条件

  1. 安装我们在Windows上安装文档中列出的先决条件。

  2. 安装 CMake,推荐版本为 3.27.7,并选择将其添加到系统路径的选项。

  3. 下载并安装 Visual Studio 2022

  4. 下载并解压 TensorRT 10.7.0.23

构建TensorRT-LLM Docker镜像

Docker桌面

  1. 安装 Docker Desktop on Windows

  2. 设置以下配置:

  3. 右键点击Windows系统托盘中的Docker图标(任务栏的右下角),然后选择切换到Windows容器…

  4. 在Docker Desktop设置的常规选项卡中,取消勾选使用基于WSL 2的镜像

  5. Docker Engine选项卡上,将您的配置文件设置为:

{
  "experimental": true
}

注意

构建完成后,将文件从容器中复制出来。对于基于Hyper-V的镜像,Windows不支持docker cp。除非你使用的是基于WSL 2的镜像,否则在运行容器时挂载一个文件夹,例如trt-llm-build,以便在容器和主机系统之间移动文件。

获取图像

Docker容器将在未来的版本中提供公开下载。目前,必须手动构建。从TensorRT-LLM\windows\文件夹中,运行构建命令:

docker build -f .\docker\Dockerfile -t tensorrt-llm-windows-build:latest .

您的图像现在可以使用了。

运行容器

以交互模式运行容器,并挂载您的构建文件夹。使用-m标志指定内存限制。默认情况下,限制为2 GB,这对于构建TensorRT-LLM来说是不够的。

docker run -it -m 12g -v .\trt-llm-build:C:\workspace\trt-llm-build tensorrt-llm-windows-build:latest

构建和提取文件

  1. 克隆并在容器内设置 TensorRT-LLM 仓库。

git clone https://github.com/NVIDIA/TensorRT-LLM.git
cd TensorRT-LLM
git submodule update --init --recursive
  1. 构建 TensorRT-LLM。此命令生成 build\tensorrt_llm-*.whl

python .\scripts\build_wheel.py -a "89-real" --trt_root C:\workspace\TensorRT-10.7.0.23\
  1. 复制或移动 build\tensorrt_llm-*.whl 到你的挂载文件夹中,以便在你的主机上访问。如果你打算使用 C++ 运行时,你还需要从构建中收集各种 DLL 到你的挂载文件夹中。更多信息,请参考 C++ 运行时使用

在裸金属上构建TensorRT-LLM

先决条件

  1. 安装我们在Windows上安装文档中列出的所有先决条件(gitpythonCUDA)。

  2. 安装Nsight NVTX。Windows上的TensorRT-LLM目前依赖于NVTX资源,这些资源并未随CUDA 12.6.3安装程序一起打包。要安装这些资源,请下载CUDA 11.8 Toolkit

    1. 在安装过程中,选择高级安装

    2. Nsight NVTX 位于 CUDA 下拉菜单中。

    3. 取消选择所有包,并选择Nsight NVTX

  3. 安装依赖项的两种方式之一:

    1. 运行setup_build_env.ps1脚本,该脚本会自动安装CMake、Microsoft Visual Studio Build Tools和TensorRT,并使用默认设置。

      1. 以管理员身份运行PowerShell以使用脚本。

      ./setup_build_env.ps1 -TRTPath <TRT-containing-folder> [-skipCMake] [-skipVSBuildTools] [-skipTRT]
      
      1. 运行脚本后关闭并重新打开PowerShell,以便Path更改生效。

      2. 提供一个已经存在的目录来包含TensorRT到-TRTPath,例如,-TRTPath ~/inference可能是有效的,但如果TensorRT不存在,-TRTPath ~/inference/TensorRT将无效。如果提供了-skipTRT,则不需要-TRTPath

    2. 逐个安装依赖项。

      1. 安装 CMake,推荐版本为 3.27.7,并选择将其添加到系统路径的选项。

      2. 下载并安装 Visual Studio 2022。当提示选择更多工作负载时,勾选使用C++进行桌面开发

      3. 下载并解压 TensorRT 10.7.0.23。将文件夹移动到一个你可以稍后引用的位置,例如 %USERPROFILE%\inference\TensorRT

        1. 将TensorRT库添加到系统的Path环境变量中。您的Path应该包含如下一行:

        %USERPROFILE%\inference\TensorRT\lib
        
        1. 关闭并重新打开任何现有的PowerShell或Git Bash窗口,以便它们获取新的Path

        2. 首先通过执行以下命令移除现有的 tensorrt 轮子

        pip uninstall -y tensorrt tensorrt_libs tensorrt_bindings
        pip uninstall -y nvidia-cublas-cu12 nvidia-cuda-nvrtc-cu12 nvidia-cuda-runtime-cu12 nvidia-cudnn-cu12
        
        1. 安装TensorRT核心库,运行PowerShell,并使用pip安装Python wheel。

        pip install %USERPROFILE%\inference\TensorRT\python\tensorrt-*.whl
        
        1. 验证您的TensorRT安装是否正常工作。

        python -c "import tensorrt as trt; print(trt.__version__)"
        

步骤

  1. 启动一个64位的开发者PowerShell。从您常用的PowerShell终端中,运行以下两个命令之一。

    1. 如果您安装了Visual Studio Build Tools(即使用了setup_build_env.ps1脚本):

    & 'C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Common7\Tools\Launch-VsDevShell.ps1' -Arch amd64
    
    1. 如果您安装了Visual Studio Community(例如通过手动GUI设置):

    & 'C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\Launch-VsDevShell.ps1' -Arch amd64
    
  2. 在PowerShell中,从TensorRT-LLM根文件夹运行:

python .\scripts\build_wheel.py -a "89-real" --trt_root <path_to_trt_root>

-a 标志指定设备架构。"89-real" 支持 GeForce 40 系列显卡。

标志 -D "ENABLE_MULTI_DEVICE=0",虽然在此未指定,但在 Windows 上是隐含的。多设备推理在 Linux 上受支持,但在 Windows 上不受支持。

此命令生成 build\tensorrt_llm-*.whl

与TensorRT-LLM C++运行时的链接

注意

本节面向高级用户。如果您不打算直接使用TensorRT-LLM C++运行时,请跳过本节。您必须从源代码构建才能使用C++运行时。

从源代码构建会创建库,如果您希望直接链接到TensorRT-LLM的C++运行时,可以使用这些库。如果您希望运行C++单元测试和一些基准测试,这些库也是必需的。

从源代码构建会产生以下库文件。

  • tensorrt_llm 库位于 cpp\build\tensorrt_llm

    • tensorrt_llm.dll - 共享库

    • tensorrt_llm.exp - 导出文件

    • tensorrt_llm.lib - 用于链接到 tensorrt_llm.dll 的存根

  • 依赖库(这些会被复制到 tensorrt_llm\libs\

    • nvinfer_plugin_tensorrt_llm 库位于 cpp\build\tensorrt_llm\plugins\

      • nvinfer_plugin_tensorrt_llm.dll

      • nvinfer_plugin_tensorrt_llm.exp

      • nvinfer_plugin_tensorrt_llm.lib

    • th_common 库位于 cpp\build\tensorrt_llm\thop\

      • th_common.dll

      • th_common.exp

      • th_common.lib

为了使用TensorRT-LLM C++运行时,除了某些torch DLL和TensorRT DLL的位置外,还必须将这些DLL的位置添加到Windows的Path中。将这些库的位置附加到您的Path中。完成后,您的Path应包含类似以下的行:

%USERPROFILE%\inference\TensorRT\lib
%USERPROFILE%\inference\TensorRT-LLM\cpp\build\tensorrt_llm
%USERPROFILE%\AppData\Local\Programs\Python\Python310\Lib\site-packages\tensorrt_llm\libs
%USERPROFILE%\AppData\Local\Programs\Python\Python310\Lib\site-packages\torch\lib

您的Path添加可能有所不同,特别是如果您使用了Docker方法并将所有相关的DLL复制到一个文件夹中。

再次关闭并重新打开任何现有的PowerShell或Git Bash窗口,以便它们获取新的Path