Full Stack Deep Learning — Machine Learning Teams

이 글은 Full Stack Deep Learning의 네번째 코스인 Machine Learning Teams를 보고 내용을 정리한 글입니다. 내용의 사진은 모두 발표 슬라이드를 가져왔습니다. 잘못 이해했거나, 의역이나 오타가 있을 수 있습니다. 제보해주시면 감사하겠습니다 🙏

Overview

ML 팀을 운영하는건 왜 힘들까? ML팀은 다른 팀을 관리할 때와는 다르다. 기술개발팀을 이끄는게 어렵기도 하지만, ML 팀은 더한 복잡도를 갖고있다.

  • ML 능력자들은 비싸고 희소하다.
  • ML 팀은 다양한 역할을 한다.
  • ML 프로젝트는 불명확한 일정과 높은 불확실성을 갖고있다.
  • 이 분야는 빠르게 변화하고, ML은 기술 부채를 가진 고금리 신용카드이다.
  • 경영진들은 종종 ML을 이해하지 못한다. 이게 왜 중요하고 어디에 쓰일지?

Roles

ML팀 내에는 어떤 서로다른 역할들이 존재하고, 각각은 어떤 역량을 필요로할까?

Image for post
Image for post
크게 6가지 역할로 나뉜다.
Image for post
Image for post
각각의 필요한 역량

세로축은 표기가 안되어있는데 엔지니어링 역량을 의미한다.

  • ML 엔지니어는 ML역량과 엔지니어링 역량을 모두 필요로하는 역할이다.
  • ML 연구가는 ML 전문가, 컴퓨터과학이나 통계학 석박사나 industrial fellowship program(산학연계 프로그램..? 같은듯)를 수료한 사람이다.

Team Structure

조직 내에 ML 팀을 어떻게 구성할까? 이것에 관한 일치된 이견은 아직 없다. 여기서는 조직의 성숙도에 따른 가장 좋은 사례들을 소개한다. 여기서는 ML Organization이라는 산을 오른다고 할 때, 각 조직은 어느정도에 있는지로 나타낸다.

Nascent/Ad-Hoc ML

Image for post
Image for post

낮은 단계의 조직, 외부에서 보기에는 딱히 ML을 하고있는 것 같지 않다. 중소 규모의 사업을 하고있거나, 기술이 덜 발단한 대기업인 경우이다. 유능한 ML인재를 데려오기가 힘들다.

ML R&D

Image for post
Image for post

ML R&D 조직은조직 내에서 ML R&D에 집중한다. 큰그림을 보고 장기적 사업에 우선한다. 양질의 데이터를 얻기가 힘들고, 실제 사업적 가치로 전환되기가 매우 어렵다. 그래서 보통 투자액은 미미하다.

Business and Product embedded ML Teams

Image for post
Image for post

특정 제품 팀이나 사업부가 소프트웨어 또는 데이터분석 인재와 함께 머신러닝 전문가로 구성된 경우다. 머신러닝이 발전이 비즈니스 가치를 이끈다. 아이디어 반복과 제품 개선 사이에는 엄격한 피드백 주기가 있다. 하지만 이는 탑급 인재들을 고용하기 매우 힘들고 데이터과 계산 리소스에 접근하는게 지연될 수 있다. 장기간 프로젝트를 정당화하기가 힘들다.

Independent Machine Learning Organization

Image for post
Image for post

별도의 ML만을 위한 독립된 조직을 갖는 경우이다. ML 엔지니어와 연구가들이 직접 고객이 사용하는 제품을 만든다. 장기간 연구를 수행하고 출간하기도 한다. 밀집된 인재들이 최고의 실무자들을 고용하고 훈련시킬 수 있게 해준다. 수석 리더들은 데이터와 컴퓨팅 리소스를 통합할 수 있고, 조직은 ML 개발관련 툴링, 실습, 문화에 투자할 수 있다. 단점은 사용자들이 구매한 머신러닝의 이점과 사용법에 대해 교육받아야 하기 때문에 다양한 비즈니스 라인으로의 모델 handoff가 어렵다는 것이다.

ML First Organization

Image for post
Image for post

최상의 조직은 CEO가 직접 투자하는 ML-First 조직이다. ML조직은 장기 프로젝트와 도전적인 일들을 한다. 최고의 데이터 접근 환경을 갖고, 최상급 인재가 채용되기에 매력을 느끼고, 배포 절차가 간편하다(제품 팀이 ML을 충분히 이해하고있기 때문). 하지만 모든 곳에 머신러닝 사고를 내장하는건 문화적으로 힘들기에 실제로 존재하기는 어렵다.

Image for post
Image for post
정리하면 이렇다

또한 조직 설계는 아래 세가지 넓은 범주를 따른다.

  1. 소프트웨어 엔지니어 vs 연구가: 소프트웨어 구축과 통합에 대한 책임을 머신러닝팀은 어느정도까지 지는가? 팀에 소프트웨어 엔지니어링 기술이 얼마나 중요한가?
  2. 데이터 오너십: ML팀이 데이터 수집, 웨어하우싱, 라벨링, 파이프라인에 있어 얼마나 제어권을 갖는가?
  3. 모델 오너십: ML팀이 모델을 프로덕션에 배포할 책임이 있는가? 누가 모델 배포를 지속하는가?

Managing Project

어떻게 ML프로젝트를 적절하게 이끌 수 있을까? ML프로젝트를 관리하는건 정말 힘들다. 그 이유는 무엇이 쉽고 무엇이 어려운지 자세히 말하기가 힘들기 때문이다. 또한 머신러닝 프로젝트 신행은 선형적이지 않다.

Image for post
Image for post

위 한 competition그림을 보면, 처음 1주동안은 정확도가 빠르게 상승한다. 저것만 봐서는 다음 번에도 추세가 이어질 것 같지만, 3개월간의 진행을 보면 이후에 크게 꺾여서 진행이 더디다. 참여하는 팀들이 뒤로갈수록 증가했음에도 말이다.

그렇다면 어떻게 ML 팀을 매니징할 수 있을까? 우선 좋은 방법을 확률적으로 계획을 짜는 것이다.

Image for post
Image for post
Image for post
Image for post

이후 진행상황을보면서 일정을 다시조율해야한다. 그 외에 중요한 것들로는

  • 접근 방식의 포트폴리오를 시도하라 — 하나의 문제를 해결하기 위헤 여러 방법을 포트폴리오를 시도해보라는 의미인듯. 또 여럿이서 다른 모델을 시도해보며 선의의 경쟁을 하며 가장 좋은 성능인 모델을 택하되, 누가 정답을 알아냈는지보단, 정답을 얻어내는 것을 중요시 해야한다.
  • 결과 대신 Input에 따라 진행상황을 측정하라 — 누군가 2년동안 연구했지만 하나도 프로덕션에 도입되지 못했을지라도, 얼마나 시도하고 얼마나 잘 실행했는지로 평가해야한다.
  • 연구가와 엔지니어를 함께 일하도록 해라
  • 빠르게 시연하고 빠르게 성공할 수 있도록 엔드 투 엔드 파이프인을 만들어라.
  • 경영진에게 머신러닝의 타임라인은 불확실하는 것을 교육시켜라 — 예를 들어 고양이 분류 모델의 정확도를 60%에서 80%로 올렸다고 하더라도, 경영진은 이게 얼마나 대단한 성과인지, 어떤 비즈니스적인 가치를 가지는지 알 수 없다.

Hiring

어떻게 머신러닝 인재를 발굴하고, 지원자를 인터뷰하고, 머신러닝 전문가가 되는 직업을 찾을 수 있을까?

AI Talent Gap

Image for post
Image for post

미국에는 소프트웨어 개발자만 360만명이 있지만, AI에 대해 아는 사람은 저렇게나 적다. 수요는 폭발적이나 공급은 거의 없다. 때문에 이들을 고용하기 위한 경쟁이 극심하다. 여러 역할들이 있지만 여기서는 ML Engineer와 ML Researcher/Scientist에 대해 집중해서 얘기한다.

Image for post
Image for post

위 처럼 유니콘 ML Engineer(상상속에 존재하는…) Job Description을 쓰는건 잘못됬다. SOTA를 다 알고있어야 하고, 모델을 기초부터 구현할 수 있고, 수학를 잘 알고 인프라도 잘 알고, 파이프라인도 잘 알고, 배포도 잘하고, 박사학위에, 4년간의 실무,,… 말잇못;; 이런 job description을 봤냐는 질문에 꽤나 많은 사람들이 손을든다.

ML 엔지니어를 고용하는 올바른 방법

  • Software Engineering Skill을 우선하고, ML에 관심이 있고 배우고 싶은 사람.
  • 주니어에도 관심을 가져라, CS 학부에서 ML 경험을 갖고 졸업한 사람들.
  • 모든 ML 엔지니어가 DevOps를 할 필요가 없다. 무엇이 필요한지 명시해라.

ML 연구가를 고용하는 법

  • 출판물의 양보단 질을 본다
  • 중요한 문제에 대해 연구하는지 살펴보자. 많은 연구가들은 그게 왜 중요한지 잘 모른체 트렌디한 문제에 집중한다.
  • Academia 밖에서의 경험들을 보자
  • 인접한 분야에서의 인재들을 고려해보자(물리학, 통계학, 수학)
  • 박사학위가 없는 사람도 고려해보자(재능있는 학부생/석사, Google/Facebook/OpenAI Fellowship Program을 졸업한 사람, 열심히 독학하는 사람)

지원자를 찾는 방법

  • 보통은: LinkedIn, 리크루터, 캠퍼스 리크루팅 등
  • arXiv나 상위 컨퍼런스를 살펴보고 당신이 좋아하는 논문의 1저자를 보자
  • 당신이 좋아하는 논문을 훌륭하게 재구현한 것을 찾아보자
  • ML연구컨퍼런스에 참여해보자(NeurIPS, ICLR, ICML)

어떻게 이들을 끌어들일까?

Image for post
Image for post

인재들이 원하는건 좌측 내용이고, 우측의 내용을 보면

  • 연구지향 프로젝트를 하고, 출간을 도와주고, 툴에 추자하고 새로운 툴을 시도해보도록 독려
  • 학습하는 문화 형성
  • 유니크한 데이터셋을 가지고있음을 알림
  • 회사의 사명과 머신러닝이 거기에 잠재적인 영향력을 갖고 있음을 알림.

면접에선 무엇을 테스트해봐야 할까?

  • 그들의 강점을 검증하라 — 연구가는 새로운 ML문제에 대한 창의적인 아이디어를 갖고있는지 확인하고, 그들의 이전 프로젝트에 대해 얼마나 사려 깊었는지도 조사해라.
  • 그들이 약한 부분이 최소요건을 충족하는지 확인해라 — 연구가는 좋은 코드를 작성할 수 있는 엔지니어링 역량과 지식을 갖고있는지 확인하고, 엔지니어는 ML 지식이 있는지 확인해라.

ML 면접에선 어떤 걸 해야하나?

Image for post
Image for post
넘나 많은것 ㅠ

이 이후 부분은 시간관계상 영상으로는 없는 것 같고, 슬라이드로만 남아있음. 간단히 정리

ML Job은 어디서 찾나요?

  • 마찬가지로 링크드인, 리크루터, 캠퍼스 리크루팅 등
  • ML 연구 학회, 혹은 바로 지원(하지만 Talent Gap을 명심)

ML Role에서 눈에 띄는 방법은?

  1. 엔지니어링 역량을 기르고(잘 알려진 기업에서 일한다던가)
  2. ML에 대한 나의 관심을 알리고(컨퍼런스 참여, 온라인 코스 수강)
  3. 내가 ML 지식이 많다는걸 보여주고(나의 연구 영역에 대한 블로그 포스팅)
  4. ML 프로젝트를 수행할 능력이 있음을 보여주고(사이드 프로젝트, 논문 구현)
  5. ML에서 창의적인 아이디어를 만들 수 있음을 증명한다(캐글 Competition, 논문 출간)

면접에서 준비해야 할 것들은?

  • 일반적인 SW 면접을 준비한다
  • 과거의 ML 프로젝트에 대한 상세한 설명을 준비한다
  • 기본적인 ML 알고리즘 동작방식을 리뷰한다(회귀, NN, 결정트리, K-Means, MLPs, ConvNets 등등)
  • 내가 지원하는 회사가 마주한 문제들을 생각하고 어떤 ML 기술이 적용될 수 있을지 고민해본다.

이후에는 예시로 질문이 나온다. 간단하게 내 생각도 적어봄.

Image for post
Image for post

왜 ResNet 아키텍쳐에서 Residual Block이 Vanishing Gradient Problem을 해결할 수 있을까요? — 여러 레이어와 활성화함수를 거치며 gradient가 0이 되버릴 수 있는데 Residual Block에서 직접 전달되는 값이 있으니까 gradient손실이 일어나도 이후 레이어에서 gradient를 받아올 수 있음.

Image for post
Image for post

Single Batch에서 학습이 불안정한데, 원인이 뭘까? 내 생각엔 LR이 높은 것 하나인 것 같다. Numerical Instability는 뭘 의미하는지 모르겠고, 나머지는 아닌듯.

Image for post
Image for post

각각의 예측 task에 알맞은 손실함수를 쓰기

  • 주택 판매가격 예측 — 평균제곱오차
  • 이미지가 포르노인지 아닌지 — 이진 크로스엔트로피
  • 이메일 카테고리 예측(개인, 홍보, 리마인드, 스팸): 카테고리컬 크로스엔트로피
  • 음성 샘플이 폰 주인인지 예측하기 — CTC Loss

실제로 ML 주도적 기업을 만들기는 정말 어렵겠다는 생각이 든다.

Written by

2020.12.8 ~ 2022.6.9 군복무중 Serving in the South Korean Military Service

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store