Proxy server for triton gRPC server that inferences embedding model in Rust
21
stars
157
commits
Rust
primary language
Aug 10, 2024
updated
Proxy server for triton gRPC server that inferences embedding model in Rust.
tritonclient dependency.BAAI/bge-m3 is used for an example../model_repository/embedding/1/model.onnx.
config.pbtxt properly.max_batch_size is limited to 256 due to OOM. You can change this value to fit your environment.python3 convert.py
./model_repository) in docker-compose.yml.make run-docker-compose
export RUSTFLAGS="-C target-cpu=native"
make server
make build-docker
docker run --gpus all --rm --ipc=host --shm-size=8g --ulimit memlock=-1 --ulimit stack=67108864 -p8000:8000 -p8001:8001 -p8002:8002 -v$(pwd)triton-grpc-proxy-rs/model_repository:/models nvcr.io/nvidia/tritonserver:24.07-py3 bash -c "LD_PRELOAD=/usr/lib/$(uname -m)-linux-gnu/libtcmalloc.so.4:${LD_PRELOAD} && pip install transformers tokenizers && tritonserver --model-repository=/models"
text (String) in this case.http://localhost:8080/explorer/parse configuration from the env variables.
SERVER_PORT: proxy server port. default 8080.
TRITON_SERVER_URL: triton inference gRPC server url. default http://triton-server.
TRITON_SERVER_GRPC_PORT: triton inference gRPC server port. default 8001.
MODEL_VERSION: model version. default 1.
MODEL_NAME: model name. default model.
INPUT_NAME: input name. default text.
OUTPUT_NAME: output name. default embedding.
EMBEDDING_SIZE: size of the embedding. default 1024.
/healthcurl -i http://127.0.0.1:8080/health
HTTP/1.1 200 OK
content-length: 2
date: Sun, 08 Oct 2023 06:33:53 GMT
ok
get prometheus metrics
/metricscurl -i http://127.0.0.1:8080/metrics
/v1/embedding[{'query': 'input'}, ... ]curl -H "Content-type:application/json" -X POST http://127.0.0.1:8080/v1/embedding -d "[{\"query\": \"asdf\"}, {\"query\": \"asdf asdf\"}, {\"query\": \"asdf asdf asdf\"}, {\"query\": \"asdf asdf asdf asdf\"}]"
[{'embedding': '1024 f32 vector'}, ...][{"embedding": [-0.8067292,-0.004603,-0.24123234,0.59398544,-0.5583446,...]}, ...]
24-07-py3
BAAI/bge-m3 w/ fp32[{'query': 'asdf' * 126}] * batch_size (asdf * 126 == 255 tokens)| batch size | model (p90) | processing (p90) |
|---|---|---|
| 8 | 1428.20 ms | 0.044 ms |
| 16 | 2915.01 ms | 0.051 ms |
| 32 | 5626.15 ms | 0.055 ms |
/metrics endpoint to get prometheus metricsDockerfile and docker-compose to easily deploy the serversenvtokenizer part from triton server into proxy-server157 commits
Rust
69.2%
Python
22.2%
Dockerfile
4.2%
Makefile
2.9%
Shell
1.5%
Proxy server for triton gRPC server that inferences embedding model in Rust
21
stars
157
commits
Rust
primary language
Aug 10, 2024
updated
Proxy server for triton gRPC server that inferences embedding model in Rust.
tritonclient dependency.BAAI/bge-m3 is used for an example../model_repository/embedding/1/model.onnx.
config.pbtxt properly.max_batch_size is limited to 256 due to OOM. You can change this value to fit your environment.python3 convert.py
./model_repository) in docker-compose.yml.make run-docker-compose
export RUSTFLAGS="-C target-cpu=native"
make server
make build-docker
docker run --gpus all --rm --ipc=host --shm-size=8g --ulimit memlock=-1 --ulimit stack=67108864 -p8000:8000 -p8001:8001 -p8002:8002 -v$(pwd)triton-grpc-proxy-rs/model_repository:/models nvcr.io/nvidia/tritonserver:24.07-py3 bash -c "LD_PRELOAD=/usr/lib/$(uname -m)-linux-gnu/libtcmalloc.so.4:${LD_PRELOAD} && pip install transformers tokenizers && tritonserver --model-repository=/models"
text (String) in this case.http://localhost:8080/explorer/parse configuration from the env variables.
SERVER_PORT: proxy server port. default 8080.
TRITON_SERVER_URL: triton inference gRPC server url. default http://triton-server.
TRITON_SERVER_GRPC_PORT: triton inference gRPC server port. default 8001.
MODEL_VERSION: model version. default 1.
MODEL_NAME: model name. default model.
INPUT_NAME: input name. default text.
OUTPUT_NAME: output name. default embedding.
EMBEDDING_SIZE: size of the embedding. default 1024.
/healthcurl -i http://127.0.0.1:8080/health
HTTP/1.1 200 OK
content-length: 2
date: Sun, 08 Oct 2023 06:33:53 GMT
ok
get prometheus metrics
/metricscurl -i http://127.0.0.1:8080/metrics
/v1/embedding[{'query': 'input'}, ... ]curl -H "Content-type:application/json" -X POST http://127.0.0.1:8080/v1/embedding -d "[{\"query\": \"asdf\"}, {\"query\": \"asdf asdf\"}, {\"query\": \"asdf asdf asdf\"}, {\"query\": \"asdf asdf asdf asdf\"}]"
[{'embedding': '1024 f32 vector'}, ...][{"embedding": [-0.8067292,-0.004603,-0.24123234,0.59398544,-0.5583446,...]}, ...]
24-07-py3
BAAI/bge-m3 w/ fp32[{'query': 'asdf' * 126}] * batch_size (asdf * 126 == 255 tokens)| batch size | model (p90) | processing (p90) |
|---|---|---|
| 8 | 1428.20 ms | 0.044 ms |
| 16 | 2915.01 ms | 0.051 ms |
| 32 | 5626.15 ms | 0.055 ms |
/metrics endpoint to get prometheus metricsDockerfile and docker-compose to easily deploy the serversenvtokenizer part from triton server into proxy-server157 commits
Rust
69.2%
Python
22.2%
Dockerfile
4.2%
Makefile
2.9%
Shell
1.5%