14× faster embeddings: how we rebuilt the ONNX path in Manticore

개요

Manticore Search는 ONNX Runtime 백엔드를 새롭게 도입하여 임베딩 처리 속도를 평균 14배 향상시켰으며, 이는 Manticore Search 27.1.5 버전부터 기본값으로 적용됩니다.

주요 내용

* 성능 개선: 기존 SentenceTransformers/Candle 경로 대비 ONNX Runtime 백엔드가 동일 하드웨어에서 평균 14배 빠른 처리 속도를 제공합니다.
* ONNX Runtime 도입: Hugging Face의 인기 임베딩 모델들이 지원하는 ONNX(Open Neural Network Exchange) 형식을 활용하여 추론 엔진을 최적화했습니다.
* 핵심 최적화 기법:
* intra_op_spinning 비활성화: ONNX Runtime의 내부 스레드 풀이 작업 간 유휴 상태에서 CPU를 낭비하는 것을 방지하여 성능을 크게 향상시켰습니다.
* 워커 내부 배치 제거: 문서 길이에 따른 패딩 오버헤드를 피하기 위해 각 추론 호출 시 하나의 문서만 처리하도록 변경했습니다.
* 동시성 처리: ONNX Runtime의 C API가 스레드 안전하다는 점을 활용하여, Linux 및 macOS 환경에서는 Mutex 없이 단일 Session 객체를 여러 스레드에서 공유하여 동시성으로 인한 경합을 줄였습니다. Windows 환경에서는 알려진 스레딩 이슈로 인해 Mutex를 사용하여 직렬화합니다.
* 데이터 로딩 최적화:
* 단일 스레드, 높은 배치 크기: 대량 데이터 로딩 시에는 단일 클라이언트 스레드에서 높은 배치 크기(32-128)를 사용하는 것이 최대 처리량에 유리합니다.
* 단일 행 삽입: 실시간 웹 요청 등 단일 행 삽입 워크로드의 경우, 낮은 지연 시간으로 인해 최적화 부담이 줄었습니다.
* API 변경 없음: 사용자에게 직접 노출되는 API 변경은 없으며, ONNX 모델을 사용하는 기존 테이블은 Manticore Search 업그레이드 후 자동으로 새 경로를 사용하게 됩니다.
* 모델 마이그레이션: 기존 테이블의 MODEL_NAME을 직접 변경할 수 없으므로, 새 컬럼 추가 및 재빌드 후 기존 컬럼 삭제 또는 데이터 덤프 및 복원 방식을 사용해야 합니다.
* 추가 개발 예정: GPU 경로 지원, Windows 환경 성능 개선, T5, causal-LM, GGUF 모델 등에 대한 ONNX 경로 지원 확장 등이 계획되어 있습니다.

시사점

새로운 ONNX Runtime 백엔드 도입은 Manticore Search의 임베딩 처리 속도를 획기적으로 개선하여 데이터 수집(ingest) 처리량을 증대시키고, 실시간 서비스 및 대규모 데이터 처리 시나리오에서 애플리케이션의 응답성을 향상시킬 수 있습니다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions