본문 바로가기

부스트캠프 AI Tech 3기/이론 : U-stage

[Day20] AI 서비스 개발 특강 4. Full Stack ML Engineer

Full stack ML Engineer

ML Engineer

ML 기술을 이해하고 연구하고 product에 적용

 

ML Enginer은 ML researcher와 software engineer 의 사이

Deep learning의 경우 researcher과 engineer간의 경계가 모호한데, 빠르게 발전해서 연구와 product 적용이 동시에 일어났기 때문이다.

그래서 연구와 product 적용을 동시에 하는 poisition이 ML Engineer이다.

 

Full Stack Engineer

client와  server software를 구현할 수 있는 사람

Front-end는 client part, API Server와 Database를 합쳐서 back-end라고 하는 server part이다.

각 파트에서 하나이상의 기술을 할 수 있는 사람이 결국 Full stack Engineer가 될 것이다.

내가 만들고 싶은 product를 모두 혼자 만들 수 있는 능력을 갖춘 개발자로도 말할 수 있을 것이다.

 

Full stack ML Engineer

DL 논문을 이해하고, ML software로 실행해서 ML Product로 만들 수 있는 Engineer

API Server가 ML Model의 결과를 받아서 서비스를 제공하면 ML 서비스라고 할 수 있다.

혹은 개인정보가 중요해서 database에 저장하지 않을 경우에는 front-end와 연결해서 ML Model을 적용시키기도 한다.

Procs and cons of Full stack ML Engineer

장점

  • 재미
    product의 모든 과정을 내 손으로 만드는 재미
  • 빠른 프로토타이핑
    코드로 보기 보단, ML 모델을 웹으로 보여줄 수 있으면 product를 어필하기 쉽다.
    다른 개발자들과 프로토타이핑만을 위해서 협업하기는 곤란한 경우가 많다. 그래서 ML Engineer가 직접하면 좋다.
  • 기술간 시너지
    각 stack으로 나누어져 있지만, 사실은 하나의 product로 합쳐지기 때문에 연결에 대한 고려가 필요하다.
    그래서 full stack ML engineer는 연결되는 부분에 대해 잘 알 수 있다.
    그리고 연결되는 stack에 대한 이해가 각 stack을 더 잘 이해할 수 있게 도움을 준다. 예를 들어 front end를 공부하면서 back end를 더 잘 이해하게 될 수 있다.
  • 원활한 팀플레이
    다른 포지션을 기술적으로 이해하고 있기 때문에 갈등을 줄일 수 있다.
  • 성장의 다각화
    주위의 대부분의 대화가 성장의 밑거름이 될 수 있다.

단점

  • 깊이가 부족할 수 있다.
    기술들이 쏟아져나오는데, 모든 stack에 대해 공부하려다 보면 시간이 많이 들어간다.

한 분야의 전문가가 되는 것도 Full stack engineer만큼 어렵기 떄문에 full stack engineer가 되는 것은 성향의 문제이다

ML Product, Team, Engineer

ML Product

1. 요구사항 전달 2. 데이터 수집 3. ML 모델 개발 4. 실 서버 배포

순으로 진행되며 ML product가 만들어진다.

요구사항 전달

  • 서비스 기획 or 고객사 미팅
  • 요구사항과 제약사항을 상세하게 정리
  • 실생활의 문제를 ML 문제로 쪼개거나 가능한지 검증

데이터 수집

  • 아직 annotation이 없는 raw 데이터 수집
  • annotation tool 기획 및 개발
  • 일관된 annotation을 위한 annotation guide 작성

ML 모델 개발

  • 기존 연구 내재화
    baseline 확보
  • 취득한 데이터 적용
  • 모델 차원 경량화 작업

실 서버 배포

  • 엔지니어링 경량화 작업
    tensorRT 적용, 양자화 등
  • 연구용 코드 수정
    서비스에 필요없는 불필요한 코드 삭제
  • 모델 버전 관리 및 배포 자동화
    지속적 업데이트를 위한 버전 관리

ML Team

  • 프로젝트 매니저
    프로젝트 타임라인을 관리하고 조정
  • 기획자
    서비스 기획
  • 데이터 관리자
    데이터 버전 관리, 저장 총괄
  • 개발자
  • 연구자

한 직무당 한 명이 아니라, 한 명이 여러 역할을 하는 경우도 많다.

Full stack ML Engineer in ML Team

Full stack ML Engineer의 구체적인 업무

  • 실 생활의 문제를 ML 문제로 formulation
    이 요구사항을 풀 수 있는지 결정
  • raw data 수집
    웹 크롤러 개발
  • annotation tool 개발
    정답을 입력하는 작업을 수행하는 web앱 개발
    새로운 task에 대한 annotation tool을 만들 때 모델에 대한 이해가 필요하다.
  • data version 관리, data loader 개발
  • 모델 개발
    기존 연구 재현, 모델 개선, 논문 작성
  • 결과 확인을 위한 Evaluation tool/demo 개발
  • 모델 실 서버 배포

Roadmap

Full stack ML Engineer가 되는 법을 알아보자

 

각 스택에서 framewokr가 발전하면서 점점 더 interface가 쉬워지는 방향으로 발전하고 있다.

그래서 점점더 full stack ml engineer는 더 많아질 것이다.

 

  • 익숙한 언어 + 가장 적은 기능 + 가장 쉬운 framework으로 시작
  • 시작을 하고 난 후에 필요한 원론을 공부하는 것이 효율이 좋다.
  • 처음부터 잘 만들려기 보다는 빨리 완성하려고 해보기
    모든 stack에서 어떻게 하면 좋은지 안 좋은지를 신경쓰다보니 개발기간이 길어지게 된다.
  • Full stack이더라도 본인의 정체성과 전문 분야를 정해야 한다.
    특정 stack에 대해서는 중급이상의 수준을 갖기
  • 새로운 것에 대한 두려움을 없애기 위해서 반복적으로 접하기
    일부러 그것에 대한 업무를 맡거나 잘 아는 사람에게 질문하기