Rocket Money x Hugging Face: 프로덕션에서 변동성이 큰 ML 모델 확장
Rocket Money는 레거시 정규식(regex) 시스템에서 Hugging Face의 Inference API에 호스팅된 트랜스포머 기반 머신러닝 모델로 전환하여, 앱이 월간 10억 건 이상의 거래를 처리하도록 확장하면서 사용자 유지율을 향상시켰습니다.
레거시 regex를 트랜스포머 모델로 대체
Rocket Money는 은행 거래를 분류하고 kategorize하는 거래 처리 파이프라인을 활용하는데, 이는 반복 패턴을 식별하고 비용 협상을 위한 상인을 감지하는 데 필수적입니다. 처음에는 regex 기반 정규화기와 문자열을 브랜드에 매핑하는 복잡한 의사결정 테이블에 의존했습니다. 구독 경제가 성장하고 제품 범위가 확장되면서, 지속적인 튜닝이 필요하고 충돌 및 겹침 위험 때문에 이 시스템은 지속 가능하지 않게 되었습니다.
bag-of-words 모델과 같은 unsuccessful한 전통적인 ML 솔루션을 탐색한 후, Rocket Money는 텍스트 분류를 위한 BERT 계열 모델을 사용하는 새로운 시스템을 개발했습니다. 이를 지원하기 위해 Retool을 사용하여 라벨링 큐, 골드 표준 검증 데이터셋,ドリ프트 탐지 모니터링을 위한 내부 도구를 구축했습니다.
Hugging Face와 함께 생산 과제 극복
Rocket Money는 4,000개 이상의 클래스를 가진 모델을 프로덕션으로 이동할 때 상당한 인프라 과제에 직면했습니다. 시스템은 낮은 지연 시간으로 월간 1억 건 이상의 '버스트' 트래픽을 처리하기 위해 높은 가용성과 동적 확장이 필요했습니다.
내부 MLOps 팀 구축의 오버헤드를 피하기 위해 Rocket Money는 세 가지 호스팅 옵션을 평가했습니다:
- 내부 프로토타이핑 솔루션: 수동으로 구축된 호스팅 시스템.
- AWS SageMaker: Rocket Money가 데이터 저장에 GCP를 사용하고 Google Vertex Pipelines를 훈련에 사용하기 때문에 "clunky and bug prone"이라고 판단되었습니다.
- Hugging Face Inference API: 설정의 용이성과 트래픽을 빠르게 처리할 수 있는 능력으로 선택되었습니다.
최악의 시나리오를 가정한 부하 테스트를 포함한 3개월 평가 기간 후, Rocket Money는 모델 호스팅을 위해 Hugging Face를 공식적으로 채택했습니다.
통합 및 비즈니스 영향
Rocket Money는 regex 시스템에서 트랜스포머 모델로 점진적으로 마이그레이션을 구현했습니다. 두 시스템 사이에 신규 사용자를 균등하게 나누어 A/B 테스트를 실시한 결과, ML 모델이 유료 사용자 유지율 및 참여도에서 레거시 시스템을 명확히 앞서는 것으로 나타났습니다. 이로 인해 두 달 동안 100% 사용자에게 완전 rollout이 이루어졌습니다.
확장 및 성능 최적화
트래픽이 증가함에 따라 Rocket Money는 비용을 관리하기 위해 추론 호출 전에 캐싱 레이어를 구현했습니다. 이론상 최대 캐시 비율이 93%였지만, 실제 캐시 비율은 85%를 달성하여 Inference API로 전송되는 거래의 카디널리티를 크게 줄였습니다.
두 번째 프로덕션 모델의 클래스 수 확장으로 인한 장애 및 모델 전환 중 캐싱 문제와 같은 초기 어려움에도 불구하고, 시스템은 결국 월간 10억 건 이상의 거래 처리 속도로 확장되었습니다. 이 인프라는 앱 스토어에서 #1 금융 앱으로 Rocket Money의 성장을 지원했습니다.
미래 방향 및 모델 토폴로지
Rocket Money는 클래스 및 성능 튜닝, 자동 모니터링, 모델 수명 주기 관리(예: 회사 재브랜딩 처리)에 계속 집중하고 있습니다.
모델 선택에 관해서, Rocket Money는 전문 트랜스포머 분류기가 주요 분류 작업에서 속도와 비용 측면에서 현재 Large Language Models(LLMs)를 능가한다는 것을 발견했습니다. 그러나 그들은 서비스의 'long tail'인 소규모 지역 비즈니스('mom-and-pop shops')와 같은 분야에서 LLMs를 탐색하고 있으며, 여기서 전문 분류기가 덜 효과적일 수 있습니다.