- Helm Chart Version:
2.1.0
- compatibility: This version targets EVA App v3.0.0 and above.
Features
- Added integrated embedding API: Introduced an embedding API provided by a single TorchServe handler. It loads a subset of configurable models from a single worker, supports both dense and multi-vector output with
inputs-based requests (text / image / image+text, 1~4 items) and JSON envelope responses ({model, output, dim, data:[{index, embedding, num_tokens}]}), and provides JSON/NPZ content negotiation based on the Accept header.
- Added embedding models: Added
DINOv2Small, E5EmbeddingSmall and multimodal models Qwen3VLEmbed2B (dense 2048-d) and ColQwen3 (late-interaction multi-vector, AWQ 4-bit).
- Packaging enabled embedding assets into a unified MAR: Archives only model directories selected with
EMBEDDING_ENABLED_MODELS, maintains model-specific structure, validates model names, and supports model selection with Docker build arguments.
- Added vehicle detection and appearance tracking pipeline: Added vehicle-specific RT-DETRV2 handler returning per-object
vehicle N detections, FastAPI appearance tracking endpoint with state-in/state-out orchestration, serialization of per-camera tracking requests, and captured timestamp / frame delta propagation.
- Camera state manager (CSM) implementation: Added a camera state manager to coordinate camera-specific states throughout the tracking pipeline.
- Startup probe added: A startup probe has been added for environments where worker initialization is slow.
Performance Enhancements
- Embedding and IG warmup extension: Warms up each activated model to a unified embedding endpoint, adds IG
get_embedding warmup using a valid image and bounding box, detects IG empty responses as failures, and treats non-2xx responses as failures while using a model-specific warmup payload.
- LLMDet image input resolution and number of visual tokens optimized: By resizing and padding the input to
576x960 (multiple of 32 pixels) instead of 800x1344, image area was reduced by approximately 51.8% and pixel/token workload by approximately 48%. Based on COCO TorchServe batch size 1, latency decreased from 4703.33 ms to 3850.39 ms, improving by 852.94 ms (approximately 18.1%), AP·AP50·AP75 each improved by 0.002, and AR@100 remained the same.
- LLMDet Text token padding optimization: We have improved the tokenized text length by first measuring it and then selecting the minimum required bucket among
32, 64, 128, and 256 to avoid padding all targets to the maximum length of the model. Targets exceeding 256 tokens are treated as clear validation errors.
Bug Fixes
- MMGDino/LLMDet text attention mask parity recovery: Text attention mask processing has been modified to ensure that the zero-shot inference behavior of MMGDino and LLMDet is correctly recovered.
- Initialize Qwen3-VL rope_deltas per request: Initialize cached
rope_deltas before and after each encode to ensure that requests with different batch sizes do not corrupt or crash the next request, and switched Qwen3-VL / ColQwen3 to attn_implementation="eager" for consistent embedding.
- Disable OmDet's Hugging Face Hub kernel: Before Transformers import, set
USE_HUB_KERNELS=NO and export offline defaults to avoid attempting to download the hub kernel in closed network deployments.
- Exposing a single TorchServe embedding handler class: Moved
EmbeddingResult to the adapters module, leaving only UnifiedEmbeddingHandler in the handler module to prevent TorchServe custom service entry-point detection failure.
- Fixing
EMBEDDING_MODEL_ROOT in container image: Fixed embedding model resolution issue by fixing model root in runtime image, and applied archive-root fallback when external root is not available.