다듬이: 텍스트 처리 파이프라인 성능 최적화 및 병렬화 실험

Source

  • Field Notes/ReturnZero/Daily Notes/Day 644. 2023-04-05.md

Summary

이 노트는 ‘다듬이’ 프로젝트의 텍스트 처리 파이프라인(토큰화, 정렬, 분할) 성능 최적화 과정과 관련 버그 해결을 기록한 개발 일지입니다. 주요 문제의식은 128 문자 제한 처리 로직의 누락, 싱글턴 패턴 사용 시 발생하는 다익몬 프로세스 자식 생성 오류, 그리고 ThreadPool과 multiprocessing.Pool의 혼합 사용 시 I/O 병목 현상과 성능 차이 분석에 있습니다. 실험 결과, splitter 작업은 병렬화 영향이 미미하며, processor와 align 작업의 병렬화 전략이 전체 처리 속도에 결정적임을 확인했습니다.

Key Points

  • 128 문자 이상 텍스트 처리 시 클라이언트 측 분할 또는 interprocessor 내 토큰 수 검사 필요성 확인
  • 싱글턴 패턴 사용 시 ‘daemonic processes are not allowed to have children’ 오류 발생 및 원인 분석
  • ThreadPool vs multiprocessing.Pool 성능 비교: I/O 병목으로 인해 mp.Pool 사용 시 processor 작업이 오히려 느려짐
  • splitter 작업은 병렬화 방식에 따른 성능 영향이 미미함 확인
  • 최적의 성능은 processor/align을 ThreadPool, splitter를 mp.Pool로 분리하거나 적절한 조합을 찾을 때 달성 가능