NVIDIA-搭建TensorRT-LLM环境

TensorRT-LLM 是 NVIDIA 开发的一款用于优化大型语言模型推理的 TensorRT 工具箱

Github仓库:https://github.com/NVIDIA/TensorRT-LLM
官方文档:https://nvidia.github.io/TensorRT-LLM/index.html

TensorRT-LLM 是一个开源库,用于优化大型语言模型(LLM)的推理过程。它提供了最先进的优化技术,包括自定义注意力核、飞行批处理(inflight batching)、分页KV缓存、量化(FP8、FP4、INT4 AWQ、INT8 SmoothQuant 等)、推测解码等,以在 NVIDIA GPU 上高效地进行推理。

近期重新架构并采用 PyTorch 后端,TensorRT-LLM 现在结合了峰值性能和更灵活、面向开发者的友好工作流。原来的基于 TensorRT 的后端仍然受支持,并继续提供一种构建高度优化“引擎”的提前编译路径(ahead-of-time compilation)。PyTorch 后端通过加快开发迭代和实验速度来补充这一点。

TensorRT-LLM 提供一个灵活的 LLM API,简化了在 PyTorch 和 TensorRT 后端之间的模型设置和推理过程。它支持广泛的推理用例,从单个 GPU 到使用张量并行(Tensor Parallelism)和/或流水线并行(Pipeline Parallelism)的多节点多 GPU。它还包含一个与 NVIDIA Triton 推理服务器集成的后端。

几个广受欢迎的模型已经被预定义,并可以通过使用原生 PyTorch 代码(针对 PyTorch 后端)或类似 PyTorch 的 Python API(针对 TensorRT 后端)轻松进行定制和扩展。

Nvidia Jetson AGX Orin 环境搭建

准备工作

  • 一台 Jetson AGX Orin
  • 一台 电脑(台式或笔记本均可,作者使用的是Windows系统,建议10以上)
  • 电源、网线、type-c 转 USB线
  1. 将电源、网线和 type-c 接入 Jetson AGX Orin
  2. 将USB接入电脑
  3. Jetson AGX Orin 侧面有三个按钮从左至右依次为1号、2号、3号,长按2号按钮不松手,然后按1号,灯亮了松开即可开启 Recovery 模式
    • ⚠️注意:需要将接电自启动的连接帽拔掉
  4. 打开 Windows 终端,安装 Scoop 环境 (目的是为了安装 wsl2 和 linux 子系统)
    • scoop bucket add sdoog https://github.com/xrgzs/sdoog.git
  5. 完成后运行 scoop install sdoog/wsl2 sdoog/wsl-ubuntu2204 usbipd (目的是为了搭建ubuntu环境,与APX通信)
    • 完成后需重启,首次需要直接运行 wsl-ubuntu2204 后才会被 wsl2 纳管
  6. 为 ubuntu2204 安装 SDK Manager
  7. 在终端中运行 usbipd list 确定 APX 设备的 BUS ID
  8. 运行 wsl 并在新的终端中执行 usbipd attach -w <wsl_name> --busid <bus_id> --auto-attach
    • 完成后在 wsl-ubuntu2204 中执行 lsusb 查看是否存在 APX 设备
  9. 在 wsl-ubuntu2204 中运行 sdkmanager --cli
    • ⚠️注意:安装过程中会有一次断线,需要在1分钟内恢复,长按2号按钮不松手,然后按3号,然后再松开3号,最后松开2号
    • 🔔提示:网络不佳可能需要代理
    • 🔔提示:按照提示选择自己合适的版本进行安装,重装系统均需要重新刷 Flash
    • 🔔提示:如果刷入失败,建议重新进入 Recovery 模式后重试
  10. 完成后则可通过网络连接继续安装其他组建

优化处理

保障 autoremove 导致依赖丢失

# sudo vim /etc/apt/apt.conf.d/01autoremove
APT
{
  NeverAutoRemove
  {
    "^firmware-linux.*";
    "^linux-firmware$";
    "^linux-image-[a-z0-9]*$";
    "^linux-image-[a-z0-9]*-[a-z0-9]*$";
    // OpenCV 模块(所有 4.5d 版本)
    "^libopencv-*";

    // GDAL 相关库和数据包
    "libgdal*";
    "gdal-data";

    // VTK 和 NetCDF
    "libvtk9.1";
    "libnetcdf*";

    // HDF 相关(HDF4/HDF5)
    "libhdf*";

    // 其他核心依赖
    "libsz2";
    "libaec0";
    "libarmadillo10";
    "libarpack2";

    // FFmpeg 开发库
    "libav*-dev";

    // 压缩和编码库
    "libblosc1";
    "libcfitsio9";
    "libcharls2";

    // 图像和视频处理
    "libgdcm*";
    "libdc1394-dev";
    "libtiff*";
    "libdeflate-dev";
    "libexif-dev";
    "libjpeg*";
    "libheif1";

    // GIS 和空间数据
    "libspatialite7";
    "libfreexl1";
    "libfyba0";
    "librttopo1";
    "libgeos*";
    "libgeotiff5";

    // 渲染和图形库
    "libgl2ps1.4";
    "libglew2.2";

    // 图像处理(OpenEXR/IlmBase)
    "libopenexr*";
    "libilmbase-dev";

    // KML 和地理编码
    "libkml*";

    // OCR 和图像处理
    "libtesseract*";
    "liblept*";

    // 数据库和连接库
    "libmysqlclient*";
    "libodbc*";
    "libpq5";
    "mysql-common";

    // 其他开发工具
    "libraw1394-dev";
    "libsocket++1";
    "libsuperlu5";
    "libtbb-dev";
    "liburiparser1";
    "libxerces-c3.2";

    // 项目和 ODBC 数据
    "proj-data";
    "unixodbc-common";

    //Other
    "libavformat-dev";
    "libavcodec-dev";
    "libswscale-dev";
    "libswresample-dev";
    "libavutil-dev";
    "libgphoto2-dev";
    "libpng-dev";
  };

  VersionedKernelPackages
  {
	# kernels
	"linux-.*";
	"kfreebsd-.*";
	"gnumach-.*";
	# (out-of-tree) modules
	".*-modules";
	".*-kernel";
  };

  Never-MarkAuto-Sections
  {
	"metapackages";
	"contrib/metapackages";
	"non-free/metapackages";
	"restricted/metapackages";
	"universe/metapackages";
	"multiverse/metapackages";
  };

  Move-Autobit-Sections
  {
	"oldlibs";
	"contrib/oldlibs";
	"non-free/oldlibs";
	"restricted/oldlibs";
	"universe/oldlibs";
	"multiverse/oldlibs";
  };

};

TensorRT LLM 环境搭建

构建TensorRT LLM

官方文档:https://nvidia.github.io/TensorRT-LLM/index.html
构建过程:https://nvidia.github.io/TensorRT-LLM/installation/build-from-source-linux.html

克隆仓库

#可能需要代理访问
#export https_proxy=http://your.proxy.url
git clone -b v0.12.0-jetson https://github.com/NVIDIA/TensorRT-LLM.git
cd TensorRT-LLM
git lfs pull

创建venv环境

# 这里必须根据系统自带的python版本使用,若你的版本不是3.10,请调整安装方式
python -m pip install virtualenv
sudo apt install -y python3.10-venv python3-pip libopenblas-dev ccache
wget https://raw.githubusercontent.com/pytorch/pytorch/9b424aac1d70f360479dd919d6b7933b5a9181ac/.ci/docker/common/install_cusparselt.sh
export CUDA_VERSION=12.6 
sudo -E bash ./install_cusparselt.sh
python -m venv --system-site-packages .venv
source .venv/bin/activate

安装基础环境

pip install "huggingface_hub[cli]"
pip install -r requirements-dev-jetson.txt
python scripts/build_wheel.py --clean --cuda_architectures 87 -DENABLE_MULTI_DEVICE=0 --build_type Release --benchmarks --use_ccache -DCMAKE_CUDA_COMPILER=/usr/local/cuda-12.6/bin/nvcc
pip install build/tensorrt_llm-*.whl

使用TensorRT LLM

编译模型

官方文档:https://nvidia.github.io/TensorRT-LLM/0.18.2/quick-start-guide.html#compile-the-model-into-a-tensorrt-engine

以千问模型为例 Qwen2.5-32B-Instruct

cd examples/qwen
pip install -r requirements.txt
python convert_checkpoint.py --model_dir /path/to/Qwen/Qwen2.5-32B-Instruct --output_dir /path/to/Qwen2.5-32B-Instruct-ckpt
# 根据提示信息决定是否执行
# pip install pynvml>=11.5.0
# pip install --upgrade "numpy>=1.17.3,<1.25.0"

问题查询记录


NVIDIA-搭建TensorRT-LLM环境
https://blog.cikaros.top/doc/de8c4264.html
作者
Cikaros
发布于
2025年4月29日
许可协议