NVIDIA Jetson Xavier NX 部署 Triton-Inference-Server
参考:https://blog.csdn.net/zachary_hao/article/details/132149492
查看当前的JetPack版本
jtop
使用jtop查看系统信息,按数字键7切换到INFO:
下载triton-server
在这里下载:https://github.com/triton-inference-server/server/releases/tag/v2.35.0
最新只找到适用于JetPack5.1.2的版本(JP5.1.3应该可以使用)
更高版本似乎已经不再支持Ubuntu20.04(JP5.x)
下载好之后,传到Jetson上解压:
这里直接将内部的tritonserver解压到home下。
tritonserver解压即用,但在此之前还需要安装一些依赖。
安装triton-server依赖
官方提供的在Jetson上的部署教程:https://github.com/triton-inference-server/server/blob/main/docs/user_guide/jetson.md
主要看#Installation and Usage这一部分
[推荐]安装运行TritonServer所需的依赖
# The following runtime dependencies must be installed before running Triton server:
# 在运行Triton服务器之前,必须安装这些依赖:
# 官方提供的命令没加sudo,这里手动加一下
sudo apt-get update && \
sudo apt-get install -y --no-install-recommends \
libb64-0d \
libre2-9 \
libssl1.1 \
rapidjson-dev \
libopenblas-dev \
libarchive-dev \
zlib1g \
python3 \
python3-dev \
python3-pip
# The following runtime dependencies must be installed before running Triton client:
sudo apt-get update && \
sudo apt-get install -y --no-install-recommends \
curl \
jq
pip3 install --upgrade wheel setuptools && \
pip3 install --upgrade grpcio-tools numpy attrdict pillow
PyTorch也是依赖的一部分,如果你还没有安装,可以看下面"安装构建TritonServer所需的依赖"部分的PyTorch部分安装。
# Note: The PyTorch backend depends on libomp.so, which is not loaded automatically. If using the PyTorch backend in Triton, you need to set the LD_LIBRARY_PATH to allow libomp.so to be loaded as needed before launching Triton.
# 注意: PyTorch后端依赖于 libomp.so,但它不会被自动加载。如果你需要使用PyTorch后端,你需要设置LD_LIBRARY_PATH环境变量让libomp.so在Triton启动之前加载。
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib/llvm-8/lib"
[非必须]安装构建TritonServer所需的依赖
在Jetson上构建比较麻烦,本教程推荐直接下载解压使用,如果一定需要手动构建,参考下面的教程(对官方教程作了简单翻译)
# The following dependencies must be installed before building Triton server:
# 在部署Triton服务器之前,必须安装这些依赖:
# 官方提供的命令没加sudo,这里手动加一下
sudo apt-get update && \
sudo apt-get install -y --no-install-recommends \
software-properties-common \
autoconf \
automake \
build-essential \
git \
libb64-dev \
libre2-dev \
libssl-dev \
libtool \
libboost-dev \
rapidjson-dev \
patchelf \
pkg-config \
libopenblas-dev \
libarchive-dev \
zlib1g-dev \
python3 \
python3-dev \
python3-pip
# Additional Onnx Runtime dependencies must be installed to build the Onnx Runtime backend:
# 如果要部署ONNX后端,需要安装额外的Onnx运行依赖
pip3 install --upgrade flake8 flatbuffers
# Additional PyTorch dependencies must be installed to build (and run) the PyTorch backend:
# 如果要部署PyTorch后端,需要安装额外的PyTorch运行依赖
sudo apt-get -y install autoconf \
bc \
g++-8 \
gcc-8 \
clang-8 \
lld-8
pip3 install --upgrade expecttest xmlrunner hypothesis aiohttp pyyaml scipy ninja typing_extensions protobuf
# Apart from these PyTorch dependencies, the PyTorch wheel corresponding to the release must also be installed (for build and runtime):
# 除了上面那些PyTorch依赖,还需要安装与构建版本相关的PyTorch wheel(用于构建和运行)
pip3 install --upgrade https://developer.download.nvidia.com/compute/redist/jp/v50/pytorch/torch-1.12.0a0+2c916ef.nv22.3-cp38-cp38-linux_aarch64.whl
# The following dependencies must be installed before building Triton client libraries/examples:
# 在构建Triton库/示例之前,必须安装这些依赖
sudo apt-get install -y --no-install-recommends \
curl \
jq
pip3 install --upgrade wheel setuptools cython && \
pip3 install --upgrade grpcio-tools numpy attrdict pillow
注意:OpenCV默认作为JetPack的一部分安装,也是依赖的一部分。
注意:当在Jetson上构建Triton时,最好使用新版本的cmake,以下是更新cmake到3.25.2的脚本:
sudo apt remove cmake
# Using CMAKE installation instruction from:: https://apt.kitware.com/
sudo apt update && apt install -y gpg wget && \
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | \
gpg --dearmor - | \
tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null && \
. /etc/os-release && \
echo "deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ $UBUNTU_CODENAME main" | \
tee /etc/apt/sources.list.d/kitware.list >/dev/null && \
apt-get update && \
apt-get install -y --no-install-recommends cmake cmake-data
部署triton-server
使用git下载server仓库:
git clone https://github.com/triton-inference-server/server.git
下载示例模型:
cd server/docs/examples # server是clone保存仓库的地方
./fetch_models.sh
尝试运行tritonserver:
cd ~/tritonserver
./bin/tritonserver --model-repository=./server/docs/examples/model_repository --backend-directory=./backends
不出意外的话,就要出意外了:
提示缺少libboost库
遗憾的是,软件源中没有1.80.0版本的libboost,需要使用源码构建。
首先去下载libboost==1.80.0
:https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.tar.gz
其他版本可以在这里找到:https://boostorg.jfrog.io/artifactory/main/release/
# 下载完成后,解压
tar xzvf boost_*.tar.gz
cd boost_1_80_0
# 获取所需的库,主要的是boost::regex支持的icu:
sudo apt-get update
sudo apt-get install build-essential g++ python-dev autotools-dev libicu-dev build-essential libbz2-dev libboost-all-dev
# Boost的引导程序设置:
./bootstrap.sh --prefix=/usr/
# 安装:
sudo ./b2 install
漫长的编译过程……耐心等待……
终于编译完成了……
再次运行,没有提示缺少库了,但是示例模型还是加载不了,索性直接部署自己的模型:
./bin/tritonserver --model-repository=/home/jetson/RoboContest/#CyberCartNX/CCVision/triton/models --backend-directory=./backends --backend-config=tensorrt,version=8
需要注意,不能使用~/
这样的路径,求稳的话最好直接用绝对路径指定一下。
看到这样的输出,代表triton服务器部署成功,接下来可以用client试试推理了。
- 感谢你赐予我前进的力量