Java-Python AI 추론 가속: 'JPyRust'로 subprocess 병목 해결 (390배 성능 향상)
Java 백엔드에서 AI 모델 호출 시 subprocess 대신 공유 메모리를 사용하여 오버헤드를 획기적으로 줄이는 구현체입니다.
요약
Java 백엔드에서 Python AI 모델을 호출할 때 발생하는 오버헤드를 줄이기 위해 JNI와 Rust, 공유 메모리를 활용한 'JPyRust' 라이브러리가 개발되었습니다. 기존의 subprocess 방식은 요청마다 프로세스 생성과 모델 로딩이 반복되어 속도가 느렸으나, JPyRust는 Python 워커를 상시 대기시키고 공유 메모리로 데이터를 전달하는 방식을 채택했습니다. YOLOv8n 모델을 기준으로 성능 테스트를 진행한 결과, 기존 subprocess 방식은 평균 약 2,330ms가 소요된 반면, JPyRust는 약 6ms를 기록하며 390배 향상된 속도를 보였습니다. 현재 이 프로젝트는 Windows, macOS, Linux 환경을 지원하며 Python 실행 환경을 자동으로 구성합니다. 다만 다중 요청 처리 시의 워커 운영 전략, 장애 복구, 다중 모델 사용 등 실무 적용을 위한 보완점은 향후 과제로 남아 있습니다.
AI가 원문을 요약한 내용으로, 부정확할 수 있습니다.
원문 제목 Show GN: JPyRust – Java에서 Python AI 모델을 subprocess 대신 공유메모리로 호출해봤습니다. (390배 향상된 속...
원문 보기 ↗