建立 triton inference server custom minimal backend

Triton Inference Server 介紹 Slide

Prefab

minimal backend 是 triton inference server 在 custom backend 教學中的最小範例

示範了四個最基本要實作的 function 都不做事但完成的示範,所以 input tensor 也會直接傳出 as output tensor

環境準備

sudo apt-get install rapidjson-dev

build

git clone https://github.com/triton-inference-server/backend.git
cd backend/examples/backends/minimal/
mkdir build &&  cd build
cmake -DCMAKE_INSTALL_PREFIX:PATH=`pwd`/install
make install

libtriton_minimal.so 需要被放到
Triton Inference Server 的 backend 資料夾位置
/opt/tritonserver/backends/minimal/

intergration & execution

用以下 command 可以直接把 triton inference server 叫起來

docker run --rm -it \
--gpus=all \
  -p 8000:8000 \
  -p 8001:8001 \
  -p 8002:8002 \
-v $(pwd)/backend-repository/minimal:/opt/tritonserver/backends/minimal \
-v $(pwd)/model-repos:/models \
nvcr.io/nvidia/tritonserver:24.12-py3 \
tritonserver \
--model-repository=/models

其中 model-repos 要放 examples/model_repos/minimal_models 底下的 batching 跟 nonbatching 兩個 model

教學裡的 minimal_client 因為沒有 tritonclient 的 package 所以無法使用,繞過的做法就是直接下 request

input.json file

{
  "inputs": [
    {
      "name": "IN0",
      "shape": [4],
      "datatype": "INT32",
      "data": [1, 2, 3, 4]
    }
  ],
  "outputs": [
    {
      "name": "OUT0"
    }
  ]
}

用以下指令可以把 input.json 作為 input 送到 server 要求 request

curl -X POST -H "Content-Type: application/json" -d @input.json http://localhost:8000/v2/models/nonbatching/infer

可以獲得以下結果