본문 바로가기

부스트캠프 AI Tech/[Week8] 특강

[Week8] 특강 [Day2]

1. Full Stack ML Engineer

 

1) Full stack ML Engineer란?

1-1) ML Engineer란?

  • Machine learning (Deep learning) 기술을 이해하고, 연구하고, Product 를 만드는 Engineer 
  • Deep learning 의 급부상으로 Product 에 Deep learning 을 적용하고자 하는 수요 발생 
  • 전통적인 기술의 경우 Research 영역과 Engineering 영역이 구분되지만, Deep learning 의 경우 폭발적 발전속도로 인해 그 경계가 모호함 (연구와 동시에 Product 에 적용)

 

1-2) Full stack engineer란?

  • Full stack engineer 란 표현은 각 포지션의 개발자들에게 달갑지 않은 표현일 수도 있다고 생각 (소개할 때 조심하자!)
  • Full stack engineer 은 상태가 아니라 방향성이라고 생각.
  • 모든 Stack을 잘 다루려는 방향으로 가고있다면 Full stack engineer
  • 기준을 세우자면 내가 만들고 싶은 Product를 시간만 있다면 모두 혼자 만들수 있는 개발자

 

1-3) Full stack ML Engineer란?

ML Service
Edge device

 

2) ML product, ML Team, ML Engineer

2-1) ML Product

  • 보통 ML Product는 이런 과정을 통해 만들어 짐

 

  • 고객의 요구사항을 수집하는 단계


  • Modle을 훈련/평가할 데이터를 취득하는 단계



  • Machine learning 모델을 개발하는 단계


  • 서비스 서버에 적용하는 단계


2-2) ML Team

  • 일반적 ML Team 구성

 

  • 이렇게 되기도 함

2-3) Full stack ML Engineer in ML Team

Job 1. 실 생활 문제를 ML 문제를 Formulation

  • 고객 / 서비스 의 요구사항은 실 생활 문제!
  • Machine learning 모델이 해결 가능한 형태로 문제를 쪼개는 작업 / 가능한지 판단하는 작업
  • 기존 연구에 대한 폭 넓은 이해와 최신 연구의 수준을 파악하고 있어야 함

 

Job 2. Raw Data 수집

  • 웹에서 학습데이터를 모아야 하는 경우도 있음 
  • Web Crawler (Scraper) 개발해서 데이터 수집 (저작권 주의)

 

Job 3. Annotation tool 개발

  • 수집/제공 받은 데이터의 정답을 입력하는 작업을 수행하는 web application 개발
  • 작업 속도와 정확성을 고려한 UI 디자인이 필요
  • 다수의 Annotator 들이 Client 를 통해 동시에 서버로 접속. Annotation 작업을 수행.
  • 새로운 Task 에 대한 Annotation tool 기획시 모델에 대한 이해가 필요할 수 있었음
    Annotation Tool

 

Job 4. Data version 관리 및 loader 개발

  • 쌓인 데이터의 Version 관리
  • Database 에 있는 데이터를 Model 로 Load 하기위한 Loader package 개발


Job 5. Model 개발 및 논문 작성

  • 기존 연구 조사 및 재현 (재현 성능은 Public benchmark 데이터로 검증)
  • 수집된 서비스 데이터 적용
  • 모델 개선 작업 + 아이디어 적용 → 논문 작성

 

Job 6. Evaluation tool 혹은 Demo 개발

  • 모델의 Prediction 결과를 채점하는 Web application 개발
  • OCR 프로젝트 중 혼자 사용하려고 개발 (정/오답 케이스 분석) → 이후 팀에서 모두 사용.
  • 모두 사용하다보니 모델 특성 파악을 위한 요구사항 발생 → 반영하다보니 모델 발전의 경쟁력이 됨


Job 7. 모델 실 서버 배포

  • 연구용 코드를 Production server 에서 사용 가능하도록 정리하는 작업
  • File server 에 코드 + Weight 파일 압축해서 Version 관리
  • Production server 에서는 Python worker 에게 MQ를 통해 job 을 전달

 

3) Roadmap

 

3-1) Stackshare

 

3-2) 어떻게 시작해야 할까?

  • 쉽다고 할 수는 없음
  • 하지만 점점 더 Full stack ML Engineer가 많아 질 것이라 생각. 제가 방향성이라고 생각했던 이유는?
  • 각 스택에서 점점더 framework 의 발전이 점점 더 interface 가 쉬워지는 방향으로 발전
  • 특정 스택이 쉽다는 것은 아님. 하지만 초~중급수준의 구현을 하는것이 점점 쉬워질 것

 

3-3) 엄두해야할 점

  • 시작이 반이다? → 시작이 80% 다
  • 모든 Stack이 공통적으로 시작이 가장 어렵습니다.
  • 익숙한 언어 + 가장 적은 기능 + 가장 쉬운 Framework 로 시작하세요.
  • 하나를 배우고 나면 나머지를 배우는 것은 훨씬 쉽다! Google + Stackoverflow 의 도움으로 쭉쭉!
  • 시작의 허들을 넘은 뒤, 필요에 의해 원론을 공부하세요.
  • 처음부터 너무 잘 만들려고 하지 말것. 최대한 빨리 완성할것
  • 많은 개발자들이 Full stack 으로 개발하다보면 가장 중요한 "완성" 이라는 가치에 도달하지 못하는 이유
  • 모든 stack의 안티 패턴을 모두 신경써서 개발하다가 포기하기보다는 완성에 집중하세요
  • Full stack 개발의 매력은 “완성" 에서 오는 “재미" 입니다.
  • 완성된 코드에 기능을 더 하다보면 자연스레 리팩토링의 중요성에 대해 알게 됩니다.
  • 재미를 느끼고 반복적으로 완성하다보면 실력이 늘게 됩니다.
  • ML Engineer 라면, 하나의 논문을 구현하고, Demo page 를 만들어 보는것 추천

'부스트캠프 AI Tech > [Week8] 특강' 카테고리의 다른 글

[Week8] 특강 [Day2]  (0) 2021.09.24