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