챗봇 프로젝트에서 가장 먼저, 그리고 가장 오래 고민하게 되는 결정이 NLU(자연어 이해) 엔진을 뭘로 쓸지입니다.
저희도 이 결정을 내리기까지 두 달 가까이 걸렸어요.
오픈소스 엔진과 상용 서비스를 각각 파일럿으로 붙여보면서 비교했는데, 이 과정에서 정리한 선택 기준을 공유해봅니다.
처음엔 단순하게 "어떤 엔진이 의도(intent) 분류를 더 정확히 하는가"만 비교하려고 했습니다.
그런데 막상 테스트를 해보니, 정확도는 학습 데이터의 양과 질에 크게 좌우되어서 엔진 자체의 우열보다 저희가 얼마나 좋은 학습 데이터를 준비했는지가 더 중요한 변수였어요.
오픈소스 엔진에 저희가 직접 정성껏 라벨링한 데이터 800건을 넣었을 때가, 상용 엔진에 대충 만든 데이터 300건을 넣었을 때보다 정확도가 더 높게 나왔습니다.
그래서 "정확도 비교"라는 최초의 질문 자체를 "우리가 각 엔진에 얼마나 투자할 수 있는가"로 바꿔서 다시 접근했어요.
오픈소스 엔진
오픈소스 NLU 엔진(대표적으로 Rasa 같은 프레임워크)을 검토했을 때, 가장 큰 장점은 데이터가 외부로 나가지 않는다는 점과 커스터마이징의 자유도였습니다.
저희 서비스 특성상 민감한 상담 내용이 오갈 수 있어서, 데이터를 외부 클라우드로 보내지 않아도 된다는 게 법무팀 검토에서도 긍정적으로 작용했어요.
다만 이 자유도에는 대가가 있었습니다.
서버 인프라를 직접 구축하고 운영해야 했고, 모델 학습과 재학습을 자동화하는 파이프라인도 저희가 직접 만들어야 했어요.
초기 구축에 개발자 두 명이 약 6주를 투입했고, 이후에도 의도가 추가될 때마다 재학습과 배포를 신경 써야 하는 운영 부담이 계속 있었습니다.
비용 면에서는 라이선스 비용이 없다는 점이 매력적이었지만, 인프라 비용과 인건비를 합쳐서 총소유비용(TCO)으로 계산해보니 예상보다 절감 효과가 크지 않았어요.
저희가 계산했을 때, 월 문의량 5만 건 기준으로 오픈소스 방식의 총 운영 비용이 상용 서비스 중간 요금제와 큰 차이가 없었습니다.
다만 이 비용은 트래픽이 늘어날수록 상용 서비스보다 유리해지는 구조였기 때문에, 장기적으로 문의량이 크게 늘 것으로 예상된다면 오픈소스 쪽이 유리해지는 시점이 온다는 것도 확인했어요.
상용 서비스
상용 NLU 서비스는 반대로 초기 구축 속도가 확실히 빨랐습니다.
계정을 만들고 며칠 안에 기본적인 의도 분류 데모를 돌려볼 수 있었고, 학습 데이터를 넣는 인터페이스도 훨씬 직관적이었어요.
CS팀 담당자가 개발자 도움 없이 새로운 의도를 추가하고 학습시킬 수 있다는 점도 실무적으로 큰 장점이었습니다.
단점은 예상대로 비용과 데이터 종속성이었어요.
문의량이 늘어날수록 비용이 선형적으로 늘어나는 구조라, 저희가 3개월 파일럿을 돌리는 동안에도 이미 예상 견적보다 20% 이상 초과된 청구서를 받은 적이 있습니다.
알고 보니 사용자가 같은 질문을 여러 번 다르게 표현해서 물어보는 케이스가 예상보다 많았고, 이게 다 API 호출로 잡히면서 비용이 늘어난 거였어요.
또 학습된 모델과 데이터가 특정 벤더의 플랫폼 안에 묶이기 때문에, 나중에 다른 서비스로 옮기려면 데이터를 처음부터 다시 정리해야 하는 벤더 종속성 문제도 고려해야 했습니다.
여러 차례 비교 끝에, 저희는 다음 네 가지 질문으로 판단 기준을 정리했습니다.
- 첫째, 민감한 데이터를 다루는가 - 그렇다면 오픈소스 쪽에 가중치를 둡니다.
- 둘째, 팀 안에 NLU 파이프라인을 직접 운영할 개발 리소스가 있는가 - 없다면 상용 서비스가 현실적입니다.
- 셋째, 예상 문의량이 빠르게 늘어날 것인가 - 그렇다면 장기적으로 오픈소스가 유리해지는 시점을 계산해봐야 합니다.
- 넷째, 초기 출시 속도가 얼마나 중요한가 - 급하게 시장에 내놔야 한다면 상용 서비스로 먼저 시작하고, 안정화된 후 오픈소스로 전환하는 것도 방법입니다.
저희는 결국 초기에는 상용 서비스로 빠르게 런칭하고, 문의량과 데이터가 어느 정도 쌓인 뒤 오픈소스 기반으로 전환하는 단계적 전략을 택했습니다.
이렇게 결정한 이유는, 초반에 어떤 의도 분류가 실제로 필요한지조차 확신이 없는 상태에서 오픈소스 인프라부터 구축하는 건 리스크가 크다고 판단했기 때문이에요.
상용 서비스로 6개월 정도 운영하면서 실제 의도 분포와 학습 데이터를 축적하고, 그 데이터를 기반으로 오픈소스 엔진으로 이전하는 계획을 세웠습니다.
이 과정을 거치면서 느낀 건, NLU 엔진 선택은 "한 번 정하면 끝"인 결정이 아니라 서비스 성장 단계에 맞춰 다시 검토해야 하는 결정이라는 점이었습니다.
초기에 상용 서비스를 고른 게 실수가 아니라, 그 시점에 맞는 합리적인 선택이었고 지금은 다음 단계로 넘어갈 시점이 된 것뿐이라고 생각해요.
챗봇 도입을 고민하는 팀이 있다면, 엔진 자체의 스펙 비교표보다 먼저 "우리 팀이 지금 감당할 수 있는 운영 부담이 어디까지인가"를 먼저 정리해보라고 권하고 싶습니다.
저희도 다음 단계 전환을 준비하면서, 이 결정 과정을 다시 한번 복기해서 공유할 기회가 있을 것 같습니다.
'AI > AI Technology' 카테고리의 다른 글
| AI 모델 성능과 사용자 경험, 균형 잡기 (0) | 2021.04.05 |
|---|