参考: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.0https://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试试推理了。