업계에 있는 사람에게 모델을 학습시키는 것이 가장 쉬운 부분이고, 그것이 서비스되거나 배포되지 못한다면 아무 소용이 없다고 들었습니다.
API를 구축하는 것만 배워도 충분할까요, 아니면 MLOps에도 집중해야 할까요?
머신러닝 엔지니어나 딥러닝 엔지니어 역할에 MLOps는 얼마나 필수적인가요?
최근에 면접 본 머신러닝 엔지니어 포지션에서는 핵심적인 머신러닝 기술 외에도 DevOps와 풀스택에 대한 지식이 있는 지원자를 원하더라고요.
그렇기도 하고 아니기도 해요. 출처: 오랜 시간 동안 과학을 프로덕션으로 옮기는 엔지니어로 일한 경험에서 나온 이야기입니다.
제 생각에 제대로 운영되는 곳이라면, 맞아요, 대부분은 정말 말도 안 되게 요구하죠.
하지만 프로덕션까지 가고 제품을 유지하기 위해 무엇이 필요한지는 알아야 해요. 최소한 뭐가 합리적인지는 판단할 수 있어야 하니까요.
제가 봤던 최고의 사례는, 결과를 재현하면서 동시에 프로덕션 시스템을 구축하는 별도의 팀이 있었던 경우였습니다.
작동하는 프로덕션 시스템 외에도 여러 가지 이점이 있었죠. 어쨌든 재현 가능성은 좋은 과학의 핵심이니까요.
문제는 아무도 그런 데 돈을 쓰려고 하지 않는다는 거예요.
그래서 결국 전체 스택을 알아야 하나 봐요.
많은 소규모 회사에서는 1~2명의 머신러닝 엔지니어가 데이터 팀 전체인 경우가 많다고 생각해요.
저희 회사에도 두 명이 있고, 모든 걸 다 합니다.
데이터 엔지니어링 작업(파이프라인 구축, 데이터 변환/ELT, 테이블 설계 등),
머신러닝 작업(모델 구축, 테스트, 학습, 데이터 준비 등),
API 구축(Lambda/컨테이너/Step Functions),
백엔드 및 인프라 구성(예: MLflow 서버, 데이터 버전 관리, OpenMetadata 등),
배포 작업 및 BI(대시보드 및 커스텀 요청 처리)까지 전부 맡고 있어요.
사실 우리가 안 쓰는 건 GitHub 액션 워크플로우랑 프론트엔드 정도뿐이에요.
이해돼요. 팀에 엔지니어가 거의 없었고, 인터뷰어는 심지어 제가 자바스크립트를 아는지도 물어봤어요!
근데 기대하는 일에 비해 급여는 정말 형편없었어요.
누가 모델 구축이 간단하다고 하나요???
데이터에 대한 깊은 이해, 적절한 모델 선택 및 적용, 하이퍼파라미터 튜닝, 커스텀 손실 함수 작성, 견고한 파이프라인 설계 등이 필요합니다.
높은 정확도를 달성하고 모델 성능을 최적화하는 것은 광범위한 실험, 디버깅, 그리고 세밀한 개선을 요구하는 작업이지, 단순히 데이터를 가져와 .fit(input, target)
으로 맞추는 문제가 아니에요.
게다가 MLOps는 데이터 과학의 범위를 훨씬 넘어섭니다.
MLflow, TensorBoard 같은 실험 추적 및 모델 모니터링 도구에 대한 숙련도는 물론이고,
Flask나 FastAPI 같은 프레임워크를 사용한 API 개발 지식도 필요하죠.
또한, 모델을 서버에 배포하고, CI/CD 파이프라인을 설정하며, 확장성을 보장하는 것도 중요한 업무입니다.
피처 파이프라인 구축, 예측 파이프라인 관리, 운영 중인 모델 모니터링(드리프트 감지 등), 재학습 워크플로우 운영도 전부 필수적인 과정이에요.
그리고 S3 같은 클라우드 기능이나 Docker, Kubernetes 같은 도구들에 대한 지식도 있어야 하죠.