DS와 MLE가 함께 일하는 법

1 hour ago 2

안녕하세요, 토스뱅크 Product Foundation ML Service Team, ML Engineer 김경윤입니다.1년 전, 이런 일이 있었어요. DS(Data Scientist)가 노트북에서 모델을 다 만들었습니다. 정확도도 잘 나오고, 노트북에서는 완벽하게 돌았죠. 그래서 그 코드를 서빙으로 옮기려고 받았는데, 실행이 안 됐어요. 모델이 쓰는 라이브러리랑 설정 파일이 여기저기 흩어져 있어서 "이 파일도 필요해요, 저것도요"를 며칠 동안 주고받았습니다.문제는 이게 한 번으로 끝나지 않았다는 겁니다. 새 모델을 올릴 때마다 비슷한 일이 반복됐어요.ML 모델 하나가 서비스에 올라가려면, 모델을 만들고, 그 모델을 서빙하는 과정을 거치는데요. 보통 이 작업을 두 사람이 나눠서 합니다. 모델을 만드는 DS와, 그 모델을 서비스로 굳히는 MLE(ML Engineer)예요. 그런데 진짜 어려운 건 모델 자체가 아니라, 이 두 사람이 일을 어떻게 나누느냐였어요. 어디까지가 DS 몫이고, 어디부터가 MLE 몫일까요? 누가 어디까지 할지가 흐릿하면, 같은 모델을 두고 협업이 매끄럽지 않습니다.저희 팀은 1년 동안 이 일 나누는 방식을 세 번 다시 다듬었습니다. 오늘은 그 과정을 하나씩 정리해 볼게요.왜 두 직군의 협업이 매끄럽지 않았을까요?토스뱅크는 다양한 분야에서 ML 서비스를 제공하고 있어요. 신분증 OCR 및 사후검증(관련글), 상담 음성을 텍스트로 바꾸는 STT, 문서를 읽는 OCR, 아이 얼굴 생성까지요. 서비스는 계속 늘어나는데, 새 모델을 올릴 때마다 DS와 MLE의 협업 과정이 매끄럽지 않았어요.문제의 뿌리는 하나였어요. DS가 모델링 과정에서 작성했던 코드와, MLE가 비즈니스 로직과 함께 서빙에 알맞게 재작성했던 코드 사이에 명확한 약속이 없었던 거예요. 이 약속을 어떻게 잡았느냐에 따라 협업의 질이 완전히 달라졌어요.그 과정을 세 단계(Phase)로 나눠서 볼 수 있어요. 각 단계에서 DS와 MLE가 일을 어디서 나눴는지를 같이 살펴볼게요. Phase 0: DS가 전달하면, MLE가 처음부터 다시처음엔 일을 나누는 지점이 사실상 사람과 사람 사이에 있었어요.DS는 주피터 노트북에서 모델을 학습하고, 추론(Inference, 학습된 모델로 예측을 뽑는 과정) 코드까지 노트북에 다 적어요. 그 노트북을 MLE에게 통째로 전달하면, MLE가 그걸 보고 서빙 코드를 처음부터 다시 작성했어요. 손에서 손으로 ...

Read Entire Article