brunch

You can make anything
by writing

C.S.Lewis

by Chris송호연 Mar 02. 2020

MLOps 1. 실험 관리

AI 혁신 속도는 모델 학습에서 배포까지 걸리는 속도에 비례한다

AI 혁신 속도는 모델 학습에서 배포까지 걸리는 속도에 비례한다


단순하지만 정말 중요하고 중요한 말이다. 

만약 여러분의 회사가 AI를 연구하고 있고 투자하고 있다면, AI Production 혹은 MLOps는 아무리 강조해도 지나치지 않는다.


우리는 이 질문을 끊임없이 해야한다. 


우리의 AI 연구프로세스가 과연 효율적인가?


이유를 먼저 말하자면,

- AI Researcher와 AI Engineer의 인건비가 엄청 비싸다

- AI 연구 혁신의 속도는 실험의 횟수에 비례한다

- AI 연구 효율은 AI 실험 자동화로 극적으로 높일 수 있다


만약에 AI 연구실에 박사급 연구원이 3명이 있다고 할때, 10의 아웃풋을 낸다고 하자.

하지만 AI Engineer가 MLOps 환경을 제대로 갖추어만 준다면, 충분히 그 아웃풋을 100을 넘어 300까지 효율성을 올릴 수가 있다. 최고의 엔지니어와 AI 연구원을 구하기 힘든 세상에서, 이렇게 효율적인 기술을 마다할 기업은 없을 것이다.


시장에선 MLOps에 대한 수요가 높지만, 아직 참고할만한 자료가 많지 않다.

MLOps는 여러가지 구성요소로 이루어져있다. 한 번에 다 커버할 수 없으니 하나씩 다루어보도록 하겠다.


우선 시작하기 전에 이 시리즈를 위해 만들어 두었던 오픈소스 링크를 공유하겠다. 

https://github.com/chris-chris/mlops-example

Github 을 많이 눌러주시면 힘내서 다음 글을 연재하도록 하겠다. 



첫 번째로 다루어볼 기술은 실험 관리다.


MLOps의 시작은 실험 관리(Experiment Management)로부터 시작된다.




아주 단순하다. 내가 한 실험의 기록을 자동으로 잘 정리해두는 것이다. 너무나도 당연한 말이지만, 귀찮아서 잘 안하고 있는 연구원들이나 학생분들이 많다. 실험 노트를 엑셀로 만들어 각 실험의 하이퍼파라미터와 loss값을 정리해두고, 그걸 컴퓨터에만 저장해두고 있거나, Google Docs의 Spreadsheet을 활용해서 실험의 기록을 관리하곤 한다. 만약 여러분이 이렇게 실험을 관리하고 있다면, 


당장 이렇게 비효율적인 연구 프로세스를 그만두기를 권한다.


시간은 제일 소중한 자원이다


오늘 소개할 실험 관리를 자동화하기 위해서 Rocket Science가 필요하지는 않다. 실은 아주 아주 간단하다. 여러분이 방법만 알고 있다면, 실험 관리 자동화를 하는데 몇 시간이면 충분하다. 나는 유료 솔루션이든 오픈소스든 팀의 생산성을 높일 수만 있다면 모든 가능성을 열어두고 적극적으로 도입하는 편이다. 


우리의 시간은 가장 소중하기 때문이다. 


실험 관리 자동화를 위한 Cloud 솔루션과 On-premise 오픈소스 한 가지씩 소개하도록 하겠다. 

장사하는 거 같아서 메이저 클라우드 플랫폼의 솔루션들은 소개하지 않도록 하겠다. (GCP, AWS, Azure)


1) Scared

https://github.com/IDSIA/sacred

On-premise로 쉽게 쓰기 좋은 오픈소스다. 

MongoDB를 띄워야 사용이 가능하다. 스타트업에서 많은 곳에서 쓰고 있는 것으로 알고 있다. 


아래와 같이 단순하게 decorator를 붙이면 학습의 하이퍼파라미터와 실험 결과가 MongoDB에 저장된다. 

그리고 omniboard라는 오픈소스로 해당 데이터를 시각화할 수 있다.


2) Weights & Bias

실험 관리 도구가 상당히 잘 만들어져 있다. 

https://www.wandb.com/

따로 MongoDB를 세팅할 필요 없이 Cloud 기반으로 만들어져있다. 정말 잘 만들어져 있는 실험 관리 솔루션이다. 그림 몇개로 간단히 설명한 후에 소개 영상을 첨부하겠다.


실험 코드에 약간의 수정을 하고 나면 이렇게 예쁜 플롯을 웹사이트에서 확인할 수 있다. 심지어 이미지와 영상도 중간에 찍어볼 수 있게 만들어두었다. GAN이나 영상 관련 딥러닝 실험에서는 상당히 유용하다. 


이렇게 실험의 결과를 너무 이쁘게 plot해준다.


사실 가장 눈에 띄는 기능 중에는 Hyperparameter Importance 지표를 측정해준다. 하이퍼 파라미터와 metric 간의 상관관계도 찍어준다.

소개 영상

https://youtu.be/0BU58W85KqU



두 가지 모두 생각보다 도입하는 게 어렵지 않다. 튜토리얼을 한번 따라해보고, 여러분의 학습 코드에 적용해보자. 그럼, 여러분이 지금껏 보지 못했던 것을 보게 될 것이다.


이렇게 아름다운 자료와 잘 정리된 자료로 보스에게 보고한다면,
여러분은 똑똑한 학생 혹은 연구자로 기억될 것이다.


여러분의 시간을 아끼는 방법을 항상 생각하자. 

우리가 일하는 분야는 IT 업계이고, 자동화로 엄청난 성과를 낸 곳이다. 


자동화는 아름다운 일이다. 


나는 최고의 엔지니어들이 자신의 생산성을 몇 십배 이상 올리는 비결이 바로 자동화에 있다고 믿는다.

자동화는 여러분이 불필요하게 고생할 시간을 줄여준다. 

그 남는 시간에 여러분이 좋아하는 책을 읽거나, 데이트를 하거나, 운동을 할 수 있다.


그럼, 그 다음 MLOps 주제에서 이어서 이야기하도록 하겠다. 

다음 글을 원하신다면 Github Star ㅋㅋㅋ

https://github.com/chris-chris/mlops-example


MLOps에 관련해서 찍었던 Youtube 영상이 있어서 같이 공유한다.

https://www.youtube.com/watch?v=ZfLdURY0qCs

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari