핵심 요약
- 2만 1,000개의 깃 커밋 메시지를 유지보수와 신규 개발로 분류하기 위해 LLM을 썼으나 호출당 1.5초가 걸리는 속도 문제가 발생했습니다.
- 단순 단어 빈도 기반의 로지스틱 회귀 모델을 실시간 학습시켜 명백한 케이스는 로컬에서 먼저 거르고 애매한 것만 LLM에 넘기는 방식을 구현했습니다.
- 간단한 로컬 머신러닝과 LLM을 결합해 API 호출 비용과 처리 지연 시간을 대폭 줄였습니다.
요약 한 개발자가 2만 1,000개의 깃(Git) 커밋 메시지를 '유지보수(maintenance)'와 '신규 개발(new development)'로 자동 분류하는 프로젝트를 진행하면서 겪은 효율화 경험담을 공유했습니다.
처음에는 GPT 모델을 활용해 분류를 시도했습니다. 사이먼 윌리슨의 LLM CLI 도구를 Perl 스크립트에서 파이프로 호출해 커밋 메시지를 넘겨주고 결과를 받아오는 방식이었습니다. 소규모 테스트 세트에서는 사람이 직접 검증한 결과와 완벽하게 일치해 신뢰성을 확보했으나, 2만 1,000건의 커밋 전체를 처리하기에는 지연 시간(호출당 약 1.5초)이 너무 크다는 치명적인 단점이 있었습니다.
이에 글쓴이는 명백하게 분류 가능한 커밋은 빠르고 단순한 로컬 분류기로 먼저 처리하고, 판별이 어려운 애매한 경우에만 LLM에 넘기는 하이브리드 파이프라인 방식을 고안했습니다. 단어 빈도 기반(Bag of Words) 특징을 추출한 뒤, 로지스틱 회귀 모델을 스트리밍 방식으로 1개 라벨씩 경사하강법으로 실시간 학습시키는 구조입니다. 로컬 분류기가 충분한 샘플을 학습하고 예측 확률이 0.08 미만(유지보수)이거나 0.92 초과(신규 개발)로 확신도가 높을 때만 로컬 결과를 바로 채택하고, 그렇지 않거나 초기 학습 단계일 때는 LLM에 물어본 뒤 그 결과를 다시 로컬 분류기 학습에 반영하도록 설계했습니다. 이를 통해 비싼 LLM API 호출 횟수와 레이턴시를 획기적으로 줄일 수 있었습니다.
Sponsored · 광고