A lightweight and modular Python package for handling computer vision inference (image/video) with Triton Inference Server.
Project description
⚡ TRISM Inference Client
Perform batch inference on models deployed in a Triton Inference Server using a Python client.
Introduction
TritonModel supports: - Connecting to Triton Server (gRPC or HTTP)
- Multi-input and multi-output models
- Automatic batching and data stacking
- Auto-generating
config.pbtxtbased on model metadata from Triton
Input Data Structure
The input passed to the run() function is a dict:
data = {
"input_name_1": [array1, array2, ...],
"input_name_2": [array1, array2, ...],
}
- Key: must match the input name defined on the Triton Server.
- Value: a list of tensors with the same shape (already padded but not stacked). The client will automatically stack, split into batches, and send to the server.
Example Usage
from trism_cv import TritonModel
import numpy as np
# Initialize client & run inference
model = TritonModel(model="model_name", version=1, url="# Triton server address", grpc=True)
# --- Case 1: Batched input ---
# data is a list of images with the same shape (HxWx3)
batched_data = [np.random.rand(640,640,3).astype(np.uint8)] * 3
outputs_batched = model.run({"INPUT": batched_data}, auto_config=True, batch_size=2) #batch_size default=2, can be customized
print("Batched output:", outputs_batched)
# --- Case 2: No batch ---
single_data = [np.random.rand(640, 640, 3).astype(np.float32)]
outputs_single = model.run({"INPUT": single_data}, auto_config=True, batch_size=1)
print("Single output:", outputs_single)
Output Format
The TritonModel.run() method can return 4 different formats depending
on the model:
| Output Type | Format | Notes |
|---|---|---|
| Single-output | list[np.ndarray] |
Each element = output of one input sample Length = number of input samples. |
| Multi-output | dict[str, list[np.ndarray]] |
Each key = output name Each value = list of per-sample outputs Length = number of input samples. |
Example of how to handle the output:
# Single-output
for i, sample in enumerate(outputs):
print(f"Sample {i} shape:", sample.shape)
# Multi-output
for name, samples in outputs.items():
for i, sample in enumerate(samples):
print(f"{name} - sample {i}: shape={sample.shape}")
Auto Configuration (config.pbtxt)
TritonModel can automatically generate the config.pbtxt file by
reading metadata from the Triton Server. This helps users:
- Avoid writing input/output configuration manually
- Ensure compatibility with the server's model definition
Environment Requirements
- Python >= 3.9
- opencv-python
- numpy
- tqdm
- tritonclient
- trism_cv (custom module)
Quick installation:
pip install opencv-python numpy tqdm tritonclient[grpc]
Notes
- All inputs must have the same shape for batching.
- Input keys must match those defined on Triton.
- The model must be in READY state on the server.
- Multiple batches can be processed in parallel to increase throughput.
License
GNU AGPL v3.0.
Copyright © 2025 Tien Nguyen Van. All rights reserved.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file trism_cv-0.0.3.tar.gz.
File metadata
- Download URL: trism_cv-0.0.3.tar.gz
- Upload date:
- Size: 21.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aea8accb3fb64b08a2117cc360d1c874477799e82ec82b7aac996f287260ed66
|
|
| MD5 |
a9f0466436a02a81a5832354c346a32b
|
|
| BLAKE2b-256 |
a48d9e53fd9f02e7690978a743cc9f0d752652a86168790472592e7b3bb73697
|
File details
Details for the file trism_cv-0.0.3-py3-none-any.whl.
File metadata
- Download URL: trism_cv-0.0.3-py3-none-any.whl
- Upload date:
- Size: 20.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f4a7a382ea8e33f1c8f4843ce744689e6d66e514b3ac8421336f20ba224a39ff
|
|
| MD5 |
b6e082ceba0955087540bf3cf0563d26
|
|
| BLAKE2b-256 |
cbd02399242e2e8e9d88e3980e70982e2798d16d5287bb9cf7939659d04eb561
|