EVA Vision Release Notes
v2.0.2 (June 12, 2026)
- compatibility: 이 버전은 EVA App v3.0.0 이상을 대상으로 합니다.
Improvements
- 서버 사이드 앙상블 예측 추가:
/predictions/ensemble을 추가하고, 모델별 threshold, vote 기반 탐지 집계, current-model 결과 리포팅을 지원합니다. - ROI 전용 탐지 동작 추가: 설정된 interest area 안에 있는 box만 응답으로 반환하여 downstream VLM 플로우가 영역 관련 탐지만 받도록 개선했습니다.
- EVA App 동기화 플로우 개선:
POST /sync를 camera count, health snapshot, dynamic worker scaling의 source of truth로 사용하도록 변경했습니다. - Proxy 모듈 구조 개편: proxy를 route module, Pydantic schema, TorchServe service, health service, camera registry, scaling policy module로 분리하고, 기존 import 호환을 위한 wrapper는 유지했습니다.
- Background health checker 및 probe 추가: FastAPI, TorchServe inference/management endpoint, model worker readiness, optional inference probe, accelerator detection, system resource threshold 기반으로 최신 health state를 추적합니다.
- Dynamic worker scaling policy 추가: camera count 기반 worker scaling, 모델별 resource profile, min/max worker constraint, optional GPU memory validation을 도입했습니다.
- CUDA MPS 배포 지원 추가:
GPU_MPS_ENABLED, MPS pipe/log directory 처리,run.sh의 daemon start/stop, MPS 환경용 Helm values 및 volume mount를 추가했습니다. - MIG GPU 배포 지원 추가: MIG resource name, GPU count, CUDA visible devices를 설정할 수 있는 Helm 구성을 추가했습니다.
- MMGDino 및 LLMDet 추론 최적화: fixed image preprocessing bucket, GPU-side image preparation, cached text feature, compiled model submodule을 적용해 반복 zero-shot inference 성능을 개선했습니다.
Bug Fixes
- 사용 불가능한 모델로 ensemble fallback되는 문제 수정: TorchServe에 등록되지 않았거나 READY worker가 없는 모델을 ensemble 후보에서 제외하도록 수정했습니다.
- Ensemble prediction의 non-serving model 처리 수정: Ensemble request를 보내기 전에 TorchServe management 상태를 확인해 unavailable model 때문에 prediction flow가 실패하지 않도록 했습니다.
- MIG metric 권한 오류 처리 수정: MIG memory/utilization metric을 조회할 수 없는 경우 resource failure로 처리하지 않고 optional data 누락으로 다루도록 개선했습니다.
- MIG UUID 처리 수정: MIG partition 환경에서 GPU discovery가 올바르게 동작하도록 visible MIG UUID를 사용합니다.
- MIG utilization metric 누락 처리 수정: utilization field가 없어도 resource schema나 health response가 실패하지 않도록 허용했습니다.
- Sync 중 minimum worker 유지 문제 수정: EVA App sync가 camera count를 갱신할 때 설정된 minimum worker count가 유지되도록 수정했습니다.
- SYNC API request field 이름 수정: Sync request format의
id를eva_id로 변경했습니다. - RT-DETRV2 person target labeling 수정: RT-DETRV2의 person-only detection label이 일관되게 처리되도록 수정했습니다.
- Long-running sync/scaling timeout 수정: 긴 worker operation을 처리할 수 있도록 timeout을 90초에서 3600초로 늘렸습니다.
- Helm boolean 처리 수정: 명시적인
false값이 빈 값과 동일하게 처리되지 않고 올바르게 render되도록 수정했습니다.
v1.3.5 (May 12, 2026)
- 호환성: 이 버전은 EVA App v2.7.0 이상을 필요로 합니다.
개선 사항
- TorchServe 로그 프로파일 설정 기능 추가: 개발 환경에서는 모델 및 메트릭 전체 가시성을 유지하고, 운영 환경에서는 모델 로그 출력량을 경고/오류 수준으로 줄일 수 있도록 개발용 및 운영용 Log4j2 프로파일을 분리하여 추가했습니다.
- 모델 로그 관찰성 개선: TorchServe MODEL_LOG 출력에 Python 로거 및 모델명 메타데이터를 추가하여 관리자가 각 model.log 항목을 생성한 핸들러를 식별할 수 있도록 했습니다.
- 지연 시간 분석을 위한 접근 및 메트릭 가시성 유지: HTTP 지연 시간을 TorchServe HandlerTime, 큐, 시스템 메트릭과 비교할 수 있도록 두 로그 프로파일 모두에서 ACCESS_LOG, TS_METRICS, MODEL_METRICS를 유지합니다.
- 서비스 시작 시 로그 프로파일 지원 추가: run.sh에
--log-profile dev|prod옵션을 추가하고, 기본값은 개발 로깅으로 설정했으며, 운영 환경 Docker 시작 인수, 로그별 보존 정리, 더 안전한 셸 실행 동작을 포함합니다. - 프로파일별 프록시 로깅 조정: 시작 시점에 프록시 INFO 로그 샘플링을 제어할 수 있도록 하여, 개발 환경에서는 전체 INFO 로깅을, 운영 환경에서는 샘플링된 INFO 로깅을 적용합니다.
- RT-DETR V2 고속 프로세서 명시적 사용: 프로세서 폴백 모호성을 방지하기 위해
use_fast=True옵션으로 RTDetrImageProcessorFast를 명시적으로 로드합니다.
버그 수정
- TorchServe 핸들러 로그 출처 표기 수정: TorchServe가 캡처하기 전에 Python 워커 로그 레코드를 재포맷하여, model.log가 모든 핸들러 출력을 추적 불가능한 MODEL_LOG 스트림으로 합치는 문제를 해결했습니다.
- IG 프로세서 디바이스 배치 수정: IG 프로세서 호출 시
device=self.device를 전달하여 임베딩 및 추론 흐름에서 생성된 텐서가 핸들러 디바이스와 일치하도록 수정했습니 다. - TorchServe pynvml 경고 반복 출력 수정: TorchServe 시스템 메트릭 pynvml 사용 중단 FutureWarning이 errors.log를 반복적으로 오염시키지 않도록 억제했습니다.
- 로깅 유틸리티의 아카이브/런타임 패키징 수정: handlers 디렉터리는 핸들러 파일만 포함하도록 유지하면서, eva_ts/utils의 공유 로깅 유틸리티를 모델 아카이브 추가 파일에 포함시켰습니다.
v1.3.4 (May 6, 2026)
- 호환성: 이 버전은 EVA App v2.7.0 이상이 필요합니다.
개선 사항
- IG 추론 런타임 최적화: IG embedding 및 inference 경로를 재사용 가능한 core module로 리팩터링하고, eager fallback을 포함한
torch.compile(dynamic=True)및 CUDAbfloat16실행을 적용해 serving 효율을 개선했습니다. - IG API 검증 및 문서 강화: IG inference payload에 대한 proxy-side validation을 추가하고, scenario threshold와 interest zone을 포함한
get_embedding/inferencerequest-response format을 문서화했습니다. - 기본 serving worker 설정 조정: 더 가벼운 기본 runtime profile을 위해
OmDet및MMGDino의 기본 worker 수를 2에서 1로 줄였습니다.
버그 수정
- IG 런타임 패키징 및 유틸리티 로딩 수정: TorchServe에서 IG runtime dependency가 올바르게 resolve되도록 새 IG utility module을 model archive flow에 포함하고 interest-zone utility import 방식을 개선했습니다.
- IG box conversion 호환성 수정: compile 및 runtime compatibility 문제를 방지하기 위해 IG hot path의
torchvision.ops.box_convert사용을 Torch-native conversion helper로 대체했습니다.
v1.3.3 (April 30, 2026)
- 호환성: 이 버전은 EVA App v2.7.0 이상이 필요합니다.
개선 사항
- Helm 기반 TorchServe 설정 흐름 정리: Helm ConfigMap의 config.properties.template를 /app/eva_ts/config.properties.template 경로에 마운트하여, 배포된 템플릿을 기반으로 런타임 설정 파일이 생성되도록 정리했습니다.
- Helm의 모델 및 워커 설정을 런타임에 반영: Helm values.yaml에 설정한 로드 모델, 워커 수, 배치 크기, 배치 지연 시간이 생성된 config.properties에 반영되도록 개선했습니다.
- TorchServe 런타임 제어 옵션 추가: Helm에서 렌더링되는 TorchServe 설정 템플릿에 number_of_netty_threads와 worker_retry_timeout_sec 항목을 추가했습니다.
- Kubernetes 서비스 기본 값 개선: 기본 서비스 타입을 NodePort에서 ClusterIP로 변경하고, 서비스 타입이 NodePort일 때만 nodePort가 렌더링되도록 수정했습니다.
- 기본 서빙 리소스 및 모델 파라미터 조정: 더 안정적인 런타임 구성을 위해 기본 메모리 request/limit을 32Gi로 상향하고, 일부 모델의 워커 수를 1로 조정했으며, RT-DETRV2의 배치 설정을 변경했습니다.
버그 수정
- Helm values 설정이 TorchServe 런타임 설정에 반영되지 않던 문제 수정: 배포된 설정 파일 경로와 런타임 설정 생성 흐름이 맞지 않아 Helm values.yaml의 모델 및 워커 설정이 무시될 수 있던 문제를 해결했습니다.
- RT-DETRV2의 동적 입력에 대한 torch.compile 동작 수정: 다양한 입력 크기를 더 안정적으로 지원할 수 있도록 RT-DETRV2 컴파일 시 dynamic=True 옵션을 적용했습니다.
- IG 모델 아카이브 의존성 누락 수정: 런타임에서 interest-zone 로직을 사용할 수 있도록 IG 모델 아카이브 설정에 interest_zone.py를 포함했습니다.
v1.3.2 (April 14, 2026)
- 호환성: 이 버전은 EVA App v2.7.0 이상이 필요합니다.