#AI

DS와 MLE가 함께 일하는 법

DS와 MLE가 함께 일하는 법
01

Summary

며칠씩 걸리던 모델 서빙 배포를 단 '하루' 만에 끝낸 토스뱅크의 협업 비결

노트북 코드에서 완벽한 추상화 계약과 모노레포로 나아간 DS와 MLE의 3단계 협업 진화기

토스뱅크 ML 서비스 팀이 데이터 사이언티스트(DS)와 머신러닝 엔지니어(MLE) 간의 협업 갈등을 해결하고 생산성을 극대화한 여정을 다룹니다. 주피터 노트북 파일 직접 전달의 한계에서 시작해 공통 패키지 추상화 설계, uv 기반 모노레포, 그리고 AI 코딩 스타일 통합 팩까지 단계별로 진화한 과정을 생생하게 풀어냅니다.

  • 01단순 Hand-off 방식에서 벗어나 추상 클래스를 기반으로 한 인터페이스 계약 중심 협업 구축
  • 02전처리-추론-후처리 전 단계를 규격화하여 로깅, 추적, 메트릭 수집을 공통 영역에서 자동 처리
  • 03모노레포와 Rust 기반 Python 패키지 도구 'uv'의 워크스페이스 기능을 이용해 빌드 타임 3~5배 최적화
  • 04AI 코딩 보조 도구 사용으로 인한 불일치 문제를 해결하는 컨벤션 도구 'pfmls-stylepack' 가드레일 도입

RECOMMENDATION

ML 모델 이관 과정에서 환경 불일치와 모호한 R&R로 배포 주기가 지연되는 팀, 혹은 파편화된 AI 작성 코드로 인해 리뷰 피로도가 높은 MLOps 엔지니어 및 테크 리더에게 강력 추천합니다.

The Problem

데이터 사이언티스트(DS)가 개발한 모델을 머신러닝 엔지니어(MLE)가 서빙 환경으로 이관하는 과정에서 환경 차이와 불명확한 역할 분담으로 소통 비용이 증가했습니다. 또한, 각 모델의 실행 구조가 다르고 AI 기반 코드 작성 스타일마저 제각각이어서 일관된 유지보수가 어려웠습니다.

The Solution

전처리, 추론, 후처리 과정을 규격화한 공통 추상 클래스 기반의 패키지를 정의하여 협업을 코드 계약 형태로 전환하고, 'uv' 모노레포를 통해 이를 관리했습니다. 추가적으로 AI 도구 도입으로 다양해진 스타일의 격차를 좁히기 위해 'pfmls-stylepack' 규칙 모음을 적용하여 컨벤션을 자동 정렬했습니다.

The Result

이전 작업에 수일씩 소요되던 과정을 단 하루 만에 완료(첫 커밋부터 배포까지 당일 완료)할 수 있도록 단축시켰습니다. 더불어 패키지 매니저를 기존 'poetry'에서 'uv' 워크스페이스로 전면 전환하며 빌드 속도를 기존 대비 3~5배 개선했습니다.

Trade-off

공통 인터페이스를 고치면 이에 의존하는 모노레포 내 모든 모델이 영향을 받아 고도의 주의와 추가 영향도 평가가 요구됩니다. 또한 모델 수가 점차 누적되면서 장기적으로 저장소가 무거워져 지속적인 경량화 및 툴링 최적화 노력이 동반되어야 합니다.

03

Key Concepts

Concept · 01

추상 클래스 (Abstract Class)

상속받는 여러 하위 클래스가 특정 인터페이스나 핵심 구조적 기능을 반드시 상속 및 구현하도록 규칙을 정의해 두는 설계 기법입니다.

  • 'commons-ml-model' 라이브러리에 모델 전처리, 추론, 후처리 인터페이스를 약속으로 지정하는 데 적용했습니다.
  • DS가 세부 처리를 구현하면 이와 동시에 로깅 및 관측 메트릭 수집 기능이 공통 부모 단에서 매끄럽게 호출되도록 설계했습니다.
Concept · 02

모노레포 (Monorepo)

여러 라이브러리나 앱 등 독립적으로 구분되는 프로젝트 소스 코드를 단일 저장소 내에서 유기적으로 조율하며 개발하는 아키텍처 모델입니다.

  • 다양한 서비스의 ML 모델 패키지들을 여러 레포지토리로 쪼개지 않고 하나의 통합 환경 내에서 일괄 버전 관리하도록 구성했습니다.
  • 공통 규격과 여러 모델의 구성을 한 번의 PR로 편리하게 함께 수정하고 지속적 통합(CI) 가치를 고유화할 수 있게 되었습니다.
Concept · 03

uv 패키지 매니저

Rust 기반으로 개발되어 신속함을 무기로 앞세운 최신 Python 패키지 인스톨러 겸 대규모 워크스페이스 관리 도구입니다.

  • 점차 확장되던 토스뱅크 ML 모노레포 환경에서 배포 빌드 시 병목을 일으키던 'poetry'의 대체 수단으로 도입되었습니다.
  • 워크스페이스 캐싱과 고도화된 타겟 패키징 속도를 바탕으로 모노레포의 총합 배포 속도를 기존보다 최고 5배 수준으로 단축했습니다.