Triton 推理服务器 Jetson 和 JetPack 支持#

JetPack 5.0 的 Triton 版本在发行说明中附加的 tar 文件中提供。

Triton on Jetson Diagram

JetPack 上的 Triton 推理服务器支持包括

JetPack 5.0 上的限制

  • Onnx Runtime 后端不支持 OpenVino 和 TensorRT 执行提供程序。CUDA 执行提供程序处于 Beta 阶段。

  • Python 后端不支持 GPU 张量和 Async BLS。

  • 不支持 CUDA IPC(共享内存)。但是,支持系统共享内存。

  • 不支持 GPU 指标、GCS 存储、S3 存储和 Azure 存储。

在 JetPack 上,尽管支持 HTTP/REST 和 GRPC 推理协议,但对于边缘用例,建议直接C API 集成

您可以从 Triton 推理服务器发布页面“Jetson JetPack 支持”部分下载 Jetson 的 .tgz 文件。

.tgz 文件包含 Triton 服务器可执行文件和共享库,以及 C++ 和 Python 客户端库和示例。

安装和使用#

Triton 的构建依赖项#

在构建 Triton 服务器之前,必须安装以下依赖项

apt-get update && \
        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 \
            pkg-config \
            libopenblas-dev \
            libarchive-dev \
            zlib1g-dev \
            python3 \
            python3-dev \
            python3-pip

必须安装额外的 Onnx Runtime 依赖项才能构建 Onnx Runtime 后端

pip3 install --upgrade flake8 flatbuffers patchelf==0.17.2

必须安装额外的 PyTorch 依赖项才能构建(和运行)PyTorch 后端

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

除了这些 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

在构建 Triton 客户端库/示例之前,必须安装以下依赖项

apt-get install -y --no-install-recommends \
            curl \
            jq

pip3 install --upgrade wheel setuptools cython && \
    pip3 install --upgrade grpcio-tools "numpy<2" attrdict pillow

注意:OpenCV 4.2.0 作为 JetPack 的一部分安装。它是客户端构建的依赖项之一。

注意:在 Jetson 上构建 Triton 时,您将需要最新版本的 cmake。我们建议使用 cmake 3.25.2。以下是将您的 cmake 版本升级到 3.25.2 的脚本。

apt remove cmake
# Using CMAKE installation instruction from:: https://apt.kitware.com/
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 的运行时依赖项#

在运行 Triton 服务器之前,必须安装以下运行时依赖项

apt-get update && \
        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

在运行 Triton 客户端之前,必须安装以下运行时依赖项

apt-get update && \
        apt-get install -y --no-install-recommends \
        curl \
        jq

pip3 install --upgrade wheel setuptools && \
    pip3 install --upgrade grpcio-tools "numpy<2" attrdict pillow

PyTorch 运行时依赖项与上面列出的构建依赖项相同。

用法#

注意:PyTorch 后端依赖于 libomp.so,它不会自动加载。如果在 Triton 中使用 PyTorch 后端,您需要设置 LD_LIBRARY_PATH 以允许 libomp.so 在启动 Triton 之前根据需要加载。

LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib/llvm-8/lib"

注意:在 Jetson 上,必须使用 --backend-directory 标志显式指定后端目录。从 23.04 开始,Triton 不再支持 TensorFlow 1.x。如果您想在 23.04 之前的 Triton 版本中使用 TensorFlow 1.x,则需要版本字符串才能使用 TensorFlow 1.x。

tritonserver --model-repository=/path/to/model_repo --backend-directory=/path/to/tritonserver/backends \
             --backend-config=tensorflow,version=2

注意:Jetson 上支持 perf_analyzer,而 model_analyzer 目前不适用于 Jetson。要为 C API 执行 perf_analyzer,请使用 CLI 标志 --service-kind=triton_c_api

perf_analyzer -m graphdef_int32_int32_int32 --service-kind=triton_c_api \
    --triton-server-directory=/opt/tritonserver \
    --model-repository=/workspace/qa/L0_perf_analyzer_capi/models

请参阅这些示例,它们演示了如何在 Jetson 上使用 Triton 推理服务器。