在Windows上从源代码构建
注意
本节适用于高级用户。如果您计划使用预构建的TensorRT-LLM发布轮子,请跳过本节。
先决条件
安装我们在Windows上安装文档中列出的先决条件。
安装 CMake,推荐版本为 3.27.7,并选择将其添加到系统路径的选项。
下载并安装 Visual Studio 2022。
下载并解压 TensorRT 10.7.0.23。
构建TensorRT-LLM Docker镜像
Docker桌面
设置以下配置:
右键点击Windows系统托盘中的Docker图标(任务栏的右下角),然后选择切换到Windows容器…。
在Docker Desktop设置的常规选项卡中,取消勾选使用基于WSL 2的镜像。
在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
构建和提取文件
克隆并在容器内设置 TensorRT-LLM 仓库。
git clone https://github.com/NVIDIA/TensorRT-LLM.git
cd TensorRT-LLM
git submodule update --init --recursive
构建 TensorRT-LLM。此命令生成
build\tensorrt_llm-*.whl。
python .\scripts\build_wheel.py -a "89-real" --trt_root C:\workspace\TensorRT-10.7.0.23\
复制或移动
build\tensorrt_llm-*.whl到你的挂载文件夹中,以便在你的主机上访问。如果你打算使用 C++ 运行时,你还需要从构建中收集各种 DLL 到你的挂载文件夹中。更多信息,请参考 C++ 运行时使用。
在裸金属上构建TensorRT-LLM
先决条件
安装我们在Windows上安装文档中列出的所有先决条件(
git、python、CUDA)。安装Nsight NVTX。Windows上的TensorRT-LLM目前依赖于NVTX资源,这些资源并未随CUDA 12.6.3安装程序一起打包。要安装这些资源,请下载CUDA 11.8 Toolkit。
在安装过程中,选择高级安装。
Nsight NVTX 位于 CUDA 下拉菜单中。
取消选择所有包,并选择Nsight NVTX。
安装依赖项的两种方式之一:
运行
setup_build_env.ps1脚本,该脚本会自动安装CMake、Microsoft Visual Studio Build Tools和TensorRT,并使用默认设置。以管理员身份运行PowerShell以使用脚本。
./setup_build_env.ps1 -TRTPath <TRT-containing-folder> [-skipCMake] [-skipVSBuildTools] [-skipTRT]
运行脚本后关闭并重新打开PowerShell,以便
Path更改生效。提供一个已经存在的目录来包含TensorRT到
-TRTPath,例如,-TRTPath ~/inference可能是有效的,但如果TensorRT不存在,-TRTPath ~/inference/TensorRT将无效。如果提供了-skipTRT,则不需要-TRTPath。
逐个安装依赖项。
安装 CMake,推荐版本为 3.27.7,并选择将其添加到系统路径的选项。
下载并安装 Visual Studio 2022。当提示选择更多工作负载时,勾选使用C++进行桌面开发。
下载并解压 TensorRT 10.7.0.23。将文件夹移动到一个你可以稍后引用的位置,例如
%USERPROFILE%\inference\TensorRT。将TensorRT库添加到系统的
Path环境变量中。您的Path应该包含如下一行:
%USERPROFILE%\inference\TensorRT\lib
关闭并重新打开任何现有的PowerShell或Git Bash窗口,以便它们获取新的
Path。首先通过执行以下命令移除现有的
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
安装TensorRT核心库,运行PowerShell,并使用
pip安装Python wheel。
pip install %USERPROFILE%\inference\TensorRT\python\tensorrt-*.whl
验证您的TensorRT安装是否正常工作。
python -c "import tensorrt as trt; print(trt.__version__)"
步骤
启动一个64位的开发者PowerShell。从您常用的PowerShell终端中,运行以下两个命令之一。
如果您安装了Visual Studio Build Tools(即使用了
setup_build_env.ps1脚本):
& 'C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Common7\Tools\Launch-VsDevShell.ps1' -Arch amd64
如果您安装了Visual Studio Community(例如通过手动GUI设置):
& 'C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\Launch-VsDevShell.ps1' -Arch amd64
在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_llmtensorrt_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.dllnvinfer_plugin_tensorrt_llm.expnvinfer_plugin_tensorrt_llm.lib
th_common库位于cpp\build\tensorrt_llm\thop\th_common.dllth_common.expth_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。