지난 글에서 머신러닝 애자일 과정에서 MLOps라는 직군이 생겼다는 것을 말했었다.

이번 글에서는 MLOps 직군이 무엇인지 알아보자.

MLOps란?
ML모델 빌드, 배포, 모니터링 등 전체 프로세스를 자동화하는 직군

MLOps가 왜 필요한가?

  • DATA Drift(시간이 지남에 따라 데이터가 썩음)로 인한 모델 성능 저하를 막아야 됨.
    • ML 모델에서 가장 중요한 것은 훈련 데이터
    • 시간이 지나면서 훈련에 사용한 데이터와 실제 환경의 데이터가 다르게 변화함.
      • 검색엔진의 중요한 지표 CTR(검색어 당 클릭 수)을 KPI로 뒀을때에 1년간 아무 훈련도 안한 ML을 확인한 결과 CTR이 30% 떨어진것을 확인할 수 있었음.
      • 이를 Data drift라고 부르며 이를 모니터링 하는 것이 중요.
    • 즉 주기적으로 ML 모델을 다시 빌딩해주는 일이 필요함.
      • 모델이라는 것도 생명체처럼 점점 성능이 저하되기 때문에 주기적으로 리빌딩 해줘야 됨. 리빌딩을 자주할 수 록 전체과정을 자동화 하는것을 필요로 함. 이를 MLOps라는 직군이 맡아서 진행

****

MLOps vs DevOps

  • DevOps가 하는 일

개발자가 만든 코드를 시스템에 반영하는 프로세스(CI/CD 형태로 직접 코딩하지는 않음)

용어설명

CI : 개발자가 코드를 바꾸었을때 자동으로 바뀐 코드를 기반으로 모든 테스트를 진행. 테스트가 문제없이 끝나면 배포하기 쉬운 패키지화.

CD : CI의 진화형태. 제대로 빌딩 된 CI가 있는 경우 결과로 나온 패키지를 프로덕션 서버에 배포하는 것.

CI/CD 업무 예시

개발자로부터 구매버튼을 빨간색으로 바꾸는 코드를 받았다.

코드베이스에 기입된 코드(신규)를 바탕으로 테스트를 진행 후 실패없이 성공한다면 실제 프로덕션에 구매버튼이 빨간색으로 바꾸게 하면 된다.

과거에는 여러 테스트를 특정 주에 모아서 진행했다면, 현재는 위와 같은 테스트를 하루에도 수십개씩 진행하며 빠른 사이클을 돌림.

업무 사이클 : [코드를 가지고 테스트→배포가능한 패키지 만듦→서버에 배포→제대로 동작하는지 모니터링]

  • 시스템이 제대로 동작하는지 모니터링 그리고 이슈 감지시 escalation 프로세스를 수행(내부적으로 소통) On - call 프로세스개발을 직접하지는 않지만 서비스의 안정성을 위해 굉장히 중요한 직군(경험이 많아야 됨)

MLOps가 하는 일

  • 앞의 DevOps가 하는 일과 동일. 차이점은 개발자 코드가 아니라 ML 모델이 대상이 됨.
  • 모델을 계속적으로 빌딩하고 배포하고 성능을 모니터링
    • ML모델 빌딩과 프로덕션 배포를 자동화할 수 있을까? -> 계속적인 모델 빌딩(CT)과 배포!
  • 모델 서빙 환경과 모델의 성능 저하를 모니터링하고 필요시 escalation(내부적 소통) 진행
    • Latency의 중요성 - 속도저하
    • Data drift 측정

****

MLOps 엔지니어가 알아야하는 기술

  • 데이터 엔지니어가 알아야 하는 기술
    • 파이썬,스칼라,자바
    • 데이터 파이프라인과 데이터 웨어하우스
  • DevOps 엔지니어가 알아야 하는 기술
    • CI/CD, 서비스 모니터링
    • 컨테이너 기술(K8S, 도커)
    • 클라우드
    • Infrastructure As Code
  • 머신러닝 관련 경험 지식
    • 머신러닝 모델 빌딩과 배포
    • ML 모델 빌딩 프레임웍 경험
      • SageMaker, Kubeflow, MLflow

0개의 댓글