v1.2.0 (December 24, 2025)
- Compatibility: 이 버전은 EVA App v2.3.0 이상 버전이 필요합니다.
Features
- RT-DETR V2 및 VitPose 모델 추가: 인간 전용 감지 시나리오를 위해 RT-DETR V2 객체 감지와 VitPose 포즈 추정 모델을 결합한 새로운 인간 감지 모델을 도입했습니다.
- 신규 API 인터페이스 추가: EVA App v2.3.0과 호환되는 업데이트된 API 인터페이스를 구현하여 통합 기능을 강화했습니다.
- RT-DETR V2 인퍼런스 성능 최적화: RT-DETR V2 모델에 BF16(bfloat16) 정밀도 및
torch.compile 최적화를 적용하여 인퍼런스 속도를 크게 향상시키고 메모리 사용량을 줄였습니다.
Deployment
- Kubernetes 배포 지원 추가: Kubernetes 클러스터의 컨테이너화된 배포를 위한 Helm 차트 구성을 구현하여, 확장 가능하고 관리 용이한 운영 환경 배포가 가능해졌습니다.
v1.1.2 (November 14, 2025)
- Compatibility: 이 버전은 EVA App v2.2.x 버전이 필요합니다.
Internal Improvements
- 프록시 서버용 포그라운드/백그라운드 실행 모드 추가: 터미널 출력이 있는 포그라운드 모드 실행을 위한
--foreground (-f) 플래그를 도입했습니다. 운영 배포용 기본값은 nohup을 사용한 백그라운드 모드로 유지됩니다.
- 세분화된 TorchServe 로그 보기 기능: 특정 TorchServe 구성 요소의 정밀한 디버깅 및 모니터링을 위해 개별 로그 파일(
access, errors, metrics, model, warnings) 보기 명령을 구현했습니다.
- 파일 메타데이터를 포함한 강화된 로그 뷰어: access, errors, model metrics 등 모든 TorchServe 로그에 대해 파일 크기, 로테이션 상태 및 구조화된 출력을 표시합니다.
- log4j 설정을 위한 자동 절대 경로 해석 구현: 실행 컨텍스트나 작업 디렉토리에 관계없이 로그가 정상적으로 기록되도록
log4j2.xml의 상대 경로를 절대 경로로 동적 변환하는 함수를 추가했습니다.
- 배포 스크립트 디버깅 기능 강화: 설정 파일 변경 사항, TorchServe 시작 명령, 시작 중 주기적 상태 확인, 시작 실패 시 에러 로그 자동 표시 등 종합적인 디버그 출력을 추가했습니다.
- 운영 환경용 Docker 이미지 최적화: 포트 모니터링, 프로세스 관리 및 서비스 상태 확인에 필요한 필수 시스템 유틸리티(
lsof, net-tools, procps)를 설치했습니다.
- 자동 로테이션을 포함한 로그 보관 전략 구현: 로그 유형별로 차별화된 보관 정책(에러: 30일, 경고: 7일, 액세스/메트릭: 3일)을 구성하고 gzip 압축을 적용하여, 주요 데이터는 유지하면서 저장 공간 요구 사항을 90% 절감했습니다.
- 지능형 메트릭 샘플링: 인퍼런스 지연 시간 및 성능 지표를 캡처하면서 트래픽이 많은 환경에서 로그 양을 약 80% 줄이기 위해 초당 6개의 샘플링을 구현했습니다.
- 프록시 서버 로그 최적화: 높은 부하(초당 30회 이상의 요청) 상황에서 프록시 로그 양을 99% 줄이기 위해, 모든 ERROR/WARNING 로그는 보존하면서 INFO 레벨 로그에 1% 샘플링을 적용했습니다.
- 서비스 포그라운드 실행을 위한 Dockerfile 업데이트: 적절한 Docker 로그 스트리밍을 지원하고 서비스 가용성을 유지하면서 컨테이너가 종료되는 것을 방지하기 위해 CMD를
--foreground 플래그 사용으로 수정했습니다.
Bug Fixes
- CUDA 프로세서 초기화 수정: 프로세서가 CPU 대신 CUDA 장치에서 실행되도록 수정하여 CPU 사용량을 크게 줄이고 인퍼런스 성능을 개선했습니다.
- 다중 경로 패턴에 대한 설정 파일 처리 수정: 다양한 환경에서 견고한 설정을 보장하기 위해 여러 log4j 경로 형식(
file:///, file://, 상대 경로)을 처리하도록 sed 패턴을 업데이트했습니다.
- 임시 설정 파일 정리 개선: 임시 설정 파일이 쌓이는 것을 방지하기 위해 clean 명령 및 에러 처리 경로에
.properties.tmp 파일의 명시적 삭제 로직을 추가했습니다.
- log4j2.xml 설정 로드 문제 해결: 절대 경로를 포함한
vmargs=-Dlog4j.configurationFile을 사용하고 ${sys:log_location}을 직접적인 logs 경로 참조로 교체하여 경로 해석 문제를 해결했습니다.
v1.1.0 (October 16, 2025)
- Compatibility: 이 버전은 EVA App v2.2.x 버전이 필요합니다.
Features
- 객체 감지 기능 강화를 위한 신규 모델 추가: 오픈 보캐블러리(Open Vocabulary) 제로샷 객체 감지 성능 향상을 위해 OmDet-Turbo 및 LLMDet 모델을 통합했습니다.
- 유연한 모델 엔드포인트 라우팅 추가: 다양한 모델의 예측 방식을 수용하기 위해 프록시 서버가 동적인 모델별 엔드포인트(기존
predictions/Owl-v2에서 predictions/{model_name}으로 변경)를 지원하도록 업데이트했습니다.
- 종합 로그 관리 명령 도입: 서비스 모니터링 및 유지관리를 용이하게 하기 위해 새로운
logs, status, clean 명령을 추가했습니다.
logs: 줄 수 설정이 가능한 로그 보기 (예: ./run.sh logs proxy -n 100)
status: 실행 중인 서비스, 포트 상태 및 디스크 사용량 확인
clean: 오래된 로그 및 임시 파일 삭제 (예: ./run.sh clean --days 30)
Internal Improvements
- 보관 정책을 포함한 자동 로그 로테이션 구현: 모든 TorchServe 로그에 대해 15일 보관, 일 단위 로테이션, 100MB 크기 제한 및 자동
.gz 압축을 적용한 Log4j2 기반 설정을 구성했습니다.
- 서비스 정리 안정성 향상: 서비스를 중단하기 전 패턴 매칭 및 상태 확인을 통해 서비스 상태를 우아하게(gracefully) 처리하도록
stop_services() 함수를 개선했습니다.
v1.0.0 (Oct 1, 2025)
- Compatibility: 이 버전은 EVA App v2.2.x 버전이 필요합니다.
Features
- TorchServe 마이그레이션: 운영 수준의 모델 서빙과 안정성 및 확장성 향상을 위해 기존 ALO ML 프레임워크에서 TorchServe로 전환했습니다.
- 실시간 HTTP 기반 인퍼런스: 더 빠르고 효율적인 처리를 위해 파일 기반 API 통신을 실시간 HTTP 기반 엔드포인트로 교체했습니다.
- 통합 API 엔드포인트: TorchServe의 여러 포트(인퍼런스, 관리, 메트릭)를 일관된 경로의 단일 인터페이스로 통합하는 FastAPI 기반 프록시 서버를 도입했습니다.
- 최적화된 OWLv2 모델 핸들러: 배치 인퍼런스 최적화를 위해 OWLv2 모델을 제로샷 감지와 이미지 가이드 감지 전용 핸들러로 분리했습니다.
- 퓨샷(Few-shot) 학습 지원: 이미지 가이드 감지 핸들러를 통해 퓨샷 학습 기능을 추가했습니다.
Internal Improvements
- 프로젝트 아키텍처 재구조화: 유지보수성 및 확장성 개선을 위해 TorchServe 핸들러와 프록시 서버 구성 요소를 명확히 분리하여 구조를 재편성했습니다.
- 유틸리티 모듈 효율화: 코드베이스 정리 및 핸들러 간 재사용성 높이기 위해 유틸리티 모듈을 최적화했습니다.
v0.1.0 (Sep 30, 2025)
- Compatibility Notice: 이 버전은 EVA App v1.1.0 ~ 2.1.2 버전이 필요합니다.
Features
- 신규 감지 모델 추가: 오픈 보캐블러리 제로샷 객체 감지를 위해 LLMDet 및 OMDet-Turbo 모델을 통합했습니다.
- 지원 모델 목록에서 YOLOE 모델 제거: 라이선스 문제로 인해 YOLOE 모델이 지원 대상에서 제외되었습니다.
Bug Fixes
- Python 3.10 호환성 수정: 지원되는 Python 버전 전반에서 정상 작동하도록 Python 3.10과의 호환성 문제를 해결했습니다.
- 바운딩 박스(Bbox) 처리 오류 수정: 퓨샷 학습 작업 중 여러 바운딩 박스를 처리할 때 발생하던 오류를 수정했습니다.