ONNX Runtime의 CPU 메모리(Memory) 아레나(Arena) 설정
ONNX Runtime로 CPU 추론 튜닝할 때 꼭 알아두면 좋은 “기본기 + 바로 쓰는 옵션”을 정리했다가 공유한다.
Hun Jang Nov 24, 2025
1) CPU 메모리 아레나(메모리 풀)
SessionOptions.enable_cpu_mem_arena는 기본값 True다. 아레나는 추후 사용을 위해 메모리를 선할당(풀링)해 재사용한다. 필요 시 False로 꺼도 되지만 기본은 켜짐이다. (ONNX Runtime)
- AWS의 ONNX+Triton 사례에서도 아레나를 끄면 힙 할당이 잦아져 지연시간이 증가할 수 있다고 정리했고, 테스트에서는 기본값(켜짐)을 유지했다. (Amazon Web Services, Inc.)
- 정리: 특별한 이유(메모리 상한 엄격, 공정 테스트 등)가 아니면 끄지 말 것.
2) 지연시간 분산(variance) 줄이기
- 스레드 풀 작업을 더 고르게 쪼개는 동적 코스트 모델을 켜면 E2E 지연시간 분산이 줄어드는 경우가 있다. 설정 키:
session.dynamic_block_base(양의 정수, 예: 4). 기능 설명에 “분산 감소 및 성능 향상에 도움이 될 수 있음”이라고 명시. (ONNX Runtime)
3) I/O 바인딩은 GPU/가속기에서 효과 큼
- I/O 바인딩은 입력을 디바이스에 미리 올리고 출력 버퍼를 디바이스에 선할당해 복사 비용을 줄이는 기법이다. CPU 전용이라면 이득이 거의 없고, 오히려 느려질 수 있다는 이슈 논의도 있다. (GPU/EP 사용 시 적극 고려) (ONNX Runtime)
4) 기타 바로 쓰는 스레딩 팁
intra_op_num_threads,inter_op_num_threads, 스핀 설정 등으로 CPU 활용을 세밀 조정할 수 있다. 모델/코어 수에 맞춰 실측으로 튜닝. (ONNX Runtime)
빠른 결론 (TTS/음성 파이프라인에 특히 유효)
- CPU만 쓴다면: 아레나 켜둔다(기본값) → 분산 이슈 있으면
dynamic_block_base=4시도 → 스레드 수는 실측 튜닝. (Amazon Web Services, Inc.)
- GPU/EP 쓴다면: I/O 바인딩으로 불필요한 호스트↔디바이스 복사 최소화. (ONNX Runtime)