环境准备

前提条件

安装步骤

  1. 安装模型仓。

    HDK、CANN、PTA、ATB Models请参考模型仓readme

  2. 安装Triton Inference Server。

    需提前安装cmake和gcc:cmake版本>=3.18;gcc版本需支持c++17。

    apt update
    apt install cmake
    apt install gcc g++
    • 下载server代码并重命名为triton_server。
      git clone https://github.com/triton-inference-server/server.git triton_server
    • 切换分支到r24.02。
      cd triton_server
      git checkout r24.02
    • 运行启动脚本。
      1. 复制以下代码并修改CACHE_DIR路径,得到一个.sh文件,本文命名为build_npu.sh。
      2. 将其放在triton_server的根目录下。
      3. 执行bash build_npu.sh(默认是全量编译,加-e可以增量编译)。
        #!/bin/bash
        
        CACHE_DIR=/home/xxx/triton_server/build
        INCREMENTAL_COMPILATION="OFF"
        build_type="Release"
        while getopts "de" opt; do
          case ${opt} in
            d)
              build_type="Debug"
              ;;
            e)
              INCREMENTAL_COMPILATION="ON"
              ;;
            \?)
              echo "Invalid option: -$OPTARG" >&2
              exit 1
              ;;
          esac
        done
        
        mkdir -p $CACHE_DIR && cd $CACHE_DIR
        
        if [ ${INCREMENTAL_COMPILATION} == "OFF" ]; then
          rm -rf *
        fi
        
        cmake -DCMAKE_BUILD_TYPE=$build_type -DCMAKE_INSTALL_PREFIX:PATH=/opt/tritonserver \
                -DTRITON_THIRD_PARTY_REPO_TAG=r24.02 \
                -DTRITON_COMMON_REPO_TAG=r24.02  \
                -DTRITON_CORE_REPO_TAG=r24.02  \
                -DTRITON_BACKEND_REPO_TAG=r24.02  \
                -DTRITON_VERSION=1.0.0 \
                -DTRITON_ENABLE_METRICS_GPU=OFF \
                -DTRITON_ENABLE_GPU=OFF \
                -DTRITON_CORE_HEADERS_ONLY=OFF \
                ..
        
        make install -j$(nproc)
    • 编译过程中如果出现报错有包没有安装,按照提示安装即可。
      apt-get install rapidjson-dev # rapidjson
      apt-get install libboost-dev # boost
      apt-get install libre2-dev # Re2
      apt-get install libb64-dev # b64
      apt-get install libnuma-dev # numa
      apt-get install patchelf # patchelf
    • 编译过程中大概率会出现grpc无法下载,导致编译失败的情况。解决如下:(以24.02为例)
      1. 手动git clone grpc代码。
        # 注:git clone前可以将curl的postBuffer设大,笔者配置为20G,按需分配,运行如下指令:
        # git config --global http.postBuffer 20971520000
        
        cd /home/xxx/triton_server/build/_deps/repo-third-party-build/grpc-repo/src
        git clone --branch v1.48.0 https://github.com/grpc/grpc.git // 使用哪个版本需要看triton_server/build/_deps/repo-third-party-src/CMakeLists.txt中grpc的git tag
        cd grpc
        git submodule update --init --recursive // 下载git子仓库
      2. 下载git子仓库时可能会有部分子仓库无法下载,需要手动进行。
        • 进入到/triton_server/build/_deps/repo-third-party-build/grpc-repo/src/grpc/third_part。
        • git clone上一步没有clone成功的子仓库,需要将boringssl的名字换成boringssl-with-bazel。
        • 执行git submodule init && git submodule update,如果都已经下载下来了,屏幕上会打印子仓的路径及节点号,比如 Submodule path 'third_party/googletest': checked out 'c9ccac7cb7345901884aabf5d1a786c。
          cd /home/xxx/triton_server/build/_deps/repo-third-party-build/grpc-repo/src/grpc/third_part
          git clone xxx // 上一步没有git clone下来的子仓
          cd ..
          git submodule init
          git submodule update
      3. 修改对应的CMakelist.txt,让其指向本地文件。
        cd /home/xxx/triton_server/build/_deps/repo-third-party-src/ 
        vim CMakeLists.txt
      4. 屏蔽对应的git源,同理,其他git源出现上述问题的时候也可以这样处理。
        ExternalProject_Add(grpc-repo
          PREFIX grpc-repo
          # GIT_REPOSITORY "https://gitee.com/Gongen/grpc.git"
          # GIT_TAG "v1.48.0"
          SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/grpc-repo/src/grpc"
          EXCLUDE_FROM_ALL ON
          CONFIGURE_COMMAND ""
          BUILD_COMMAND ""
          INSTALL_COMMAND ""
          TEST_COMMAND ""
          PATCH_COMMAND python3 ${CMAKE_CURRENT_SOURCE_DIR}/tools/install_src.py --src <SOURCE_DIR> ${INSTALL_SRC_DEST_ARG} --dest-basename=grpc_1.48.0
        )
      5. 编译过程中如果出现boost版本过低报错提示,运行如下指令安装boost-1.78即可。
        wget https://boostorg.jfrog.io/artifactory/main/release/1.78.0/source/boost_1_78_0.tar.gz --no-check-certificate
        tar xvf boost_1_78_0.tar.gz
        cd boost_1_78_0
        ./bootstrap.sh --with-python=/usr/local/bin/python3
        ./b2 install

  3. 使用以下命令安装Triton Client。

    pip install nvidia-pyindex 
    pip install tritonclient[all]

  4. 安装MindIE Backend。

    • 方法一: 使用已发布的 libtriton_mindie.so 文件。

      在 /opt/tritonserver/backends 目录下创建 mindie 目录,将 libtriton_mindie.so 放在该目录下。

    • 方法二:使用编译出来的 libtriton_mindie.so 文件。
      1. 参考样例代码中的目录结构搭建Triton_MindIE-LLM_Backend代码仓。
      2. 设置环境变量。
        export MINDIE_LLM_HOME_PATH=${mindie_dir}/latest/mindie-llm  #mindie-llm安装路径
        export TRITON_HOME_PATH=/opt/tritonserver  #tritonserver安装路径
      3. 编译,若要增量编译加上 -e。
        cd ${working_dir}/Triton_MindIE-LLM_Backend
        bash build.sh