Udacity의 MLOps 프로그램

Udacity의 MLOps 관련 강의인 Machine Learning DevOps Engineer Nanodegree를 최근에 수료했다. 수강료 할인과 좋은 기회가 있어 수강하기 시작했는데, 중간에 사정이 있어 잠시 수강을 멈췄다가 최근에야 프로젝트를 완료하면서 수료할 수 있게 되었다. MLOps에 관심이 많은 분들은 해당 강의에 대해 궁금하실 것 같아, 강의 컨텐츠와 후기를 정리해보고자 한다.

강의 컨텐츠

이 강의는 MLOps에 대한 기초를 다루고 있는 만큼, 파이썬은 물론이고 데이터사이언스와 머신러닝 프로젝트에서 자주 사용하는 라이브러리인 Pandas, Numpy, Scikit-Learn 등이 익숙한 사람들을 대상으로 한다.

1. Clean Code Principle

  • 핵심 내용
    • 지속가능한 머신러닝 프로젝트와 협업을 고려한 클린 코딩 방법론
    • 로그 남기기 (logging)
    • 테스트 코드 작성
  • 사용하는 라이브러리, 패키지, 툴, 서비스
    • AutoPEP8, PyLint, Pytest
  • 프로젝트 내용
    • 간단한 Random Forest 모델을 학습하며 logging 패키지를 사용해 로그를 남기고 테스트코드 작성하기

2. Building a Reproducible Model Workflow

  • 핵심 내용
    • MLflow 를 활용해 각 머신러닝 프로젝트의 각 태스크를 파이프라인으로 연결하기
      • EDA
      • 데이터 검증
      • 모델 개선을 위한 실험 수행
      • 최종 모델 선택 및 추론 수행
    • 각 태스크 실행 시 Hydra를 활용한 config 관리
    • Weights & Biases (W&B)를 통해 각 모델링 실험 기록 남기고, 관련 artifact 저장하기
  • 사용하는 라이브러리, 패키지, 툴, 서비스
    • Conda, MLflow, Weights & Biases, Hydra
  • 프로젝트 내용
    • Airbnb 데이터셋을 기반으로 렌트 가격 예측하는 ML 프로젝트
    • 머신러닝 파이프라인을 구성하여 효과적으로 실험을 반복수행하고, 각 실험 결과를 기록 및 저장하는 것이 핵심

3. Deploying a Scalable ML Pipeline in Production

개인적으로는 3장 “Deploying a Scalable ML Pipeline in Production"의 내용이 가장 유익하고, 프로젝트도 난이도가 있었다. 모델 전처리(+데이터 버저닝) -> 학습(+모델 버저닝) -> API 구축 -> 모델, API 테스트 -> 통합-> 배포 의 큰 사이클을 경험해볼 수 있다.

  • 핵심 내용
    • 데이터와 모델 버저닝에 대한 개념 소개
    • 머신러닝 모델 서빙의 개념. RestAPI 소개
    • 모델의 성능과 편향을 확인하는 기법 중 하나인 Data sclicing 소개
  • 사용하는 라이브러리, 패키지, 툴, 서비스
    • FastAPI, DVC, Github Actions, AWS S3, Heroku
  • 프로젝트 내용
    • 인구통계 데이터셋을 통해 개인의 소득 수준을 예측하는 ML 프로젝트
    • API 구축
    • 각기 다른 버전의 데이터셋과 모델의 기록하고 저장하기
    • Heroku에 배포하기
    • Github Actions를 통해 CI/CD 수행하기

4. ML Model Scoring and Monitoring

  • 핵심 내용
    • 데이터의 변화로 인해 발생하는 모델 드리프트(Model drift)에 대한 개념 소개
    • 지속적인 모델 성능 평가 방법론
    • 모델 성능 변화에 대한 분석 및 대처방법
  • 사용하는 라이브러리, 패키지, 툴, 서비스
    • Scikit-learn, Seaborn, Crontab, Flask
  • 프로젝트 내용
    • 기존의 모델이 학습하지 못한 새로운 데이터에 대한 모델의 모니터링과 성능 평가, 재학습을 하나의 파이프라인으로 구성
    • 주기적으로 수행할 수 있도록 스케쥴링 설정

장점

MLOps에 대한 best practice가 정립되지 않은 현재 상태에서 Machine Learning DevOps Engineer Nanodegree는 아주 좋은 입문 강의가 될 수 있다.

특히 여러가지 도구들을 프로젝트를 통해 찍먹해볼 수 있고, 실제 업무에서 어떤 용도로 사용할 수 있는지 힌트를 얻을 수 있다는 점이 긍정적인 부분이다. 특히 클린코드에 대한 중요성을 강의 도입부에서 강조하고, 반복적인 실험 과정들을 자동화 할 수 있는 방법을 소개하는 부분은 “혼자 고군분투 하는 데이터사이언티스트, 리서쳐” 분들에게 큰 도움이 될 것 같다.

단점

각 주제들이 각기 다른 강사들에 의해 구성되었기 때문에, 일관성이 다소 (아니 많이) 떨어진다. 예를 들어 3장 “머신러닝 모델 배포” 주제를 담당하는 강사는 FastAPI를 다루지만, 4장 “머신러닝 모델 운영 모니터링"의 주제를 다루는 강사는 Flask를 소개한다.

각 주제들의 컨텐츠가 하나의 통일된 프레임워크와 도구를 쓰면서 유기적으로 구성되었다면 훨씬 완성도 있는 강의가 되지 않았을까? 각기 다른 회사와 단체에서 섭외한 여러 명의 강사들이 강의를 짜집기했다는 인상을 지울 수 없다(인상이 아니라 실제로 그러하다.)

마무리하며

앞서 강의 짜집기를 단점으로 꼽았으나, 그럼에도 불구하고 현재 시중에 있는 MLOps 강의와 비교했을 때 “툴 사용 위주 짜집기"의 정도가 가장 낮고 프로젝트의 완성도가 있었다고 평가할 수 있겠다.

강의 소개에서 권장하는 수강 기간은 약 4개월이지만, 수강생의 수준에 따라 더 빠른 수료도 가능할 것 같다. Nanodegree의 수강료(3개월 선불 시 120만원대)는 다소 부담이 될 수 있으나, 짧은 시간 안에 집중해서 수료을 목표를 목표로 한다면 월결제를 하는 것이 더 이득이고, 학생 신분일 경우 큰 폭의 할인도 받을 수 있으니 추천한다.