[re:Invent 2019 워크샵] Optimizing your machine learning models on Amazon SageMaker #reinvent
안녕하세요! 클래스메소드 주식회사 의 김태우입니다!
오늘 Andy Jassy 의 키노트 세션에서 머신러닝 관련 신 서비스 발표가 정말 미친듯이 쏟아져 나온 덕분에, 사람들의 관심이 머신러닝 쪽으로 많이 돌아서게 된 것 같습니다. 관련 세션도 새롭게 많이 등장하기도 했는데요, 대학 졸업한지 그래도 꽤 지난 저이지만, 대학시절 때 수강신청할때의 느낌처럼 파박!! 파바바박! 얼른 클릭해버려서 저도 워크샵에 참여할 수 있게 되었습니다ㅎㅎ
아니나 다를까 워크샵 세션 시작하자마자 진행하시는 분이 "축하합니다! 여러분들은 다른 사람들보다 더 빨리 클릭하기 게임의 승리자들이시군요!" 라는 조크를 던지며 시작하더군요ㅎㅎ 정말 치열했습니다....!
목차
워크샵 URL
금일 키노트 세션에서 무수히 많은 SageMaker 의 새로운 기능들이 출시되었기 때문에 기존의 워크샵 내용은 이제 옛것이 되어버렸지만, 금일 진행했던 세션의 워크샵은 그중에서도 AutoML 과 관련한 SageMaker AutoPilot 을 실습해볼 수 있는 내용으로 구성되어 있습니다.
README 의 내용을 그대로 따라하시면서 Lab1 ~ Lab3 까지 진행하시면 됩니다. 참고로 ml.t3.medium 가격은 버지니아 리젼 기준, 한시간당 $0.0582 라서 전혀 부담없이 실습을 진행하실 수 있습니다. 머신러닝이라 학습에 시간이 조금 걸리긴 하지만 총 다해서 2~5시간 안에 다 끝내실 수 있을 것으로 생각됩니다. 중간에 이해가 안되는 부분이 있어도 그냥 일단 쭉 진행하고 전체적인 흐름을 이해한다음에 deep dive 하시는걸 추천드립니다.
혹시 Jupyter 에 익숙하지 않으신 분들이 있으시다면 튜토리얼 가볍게 한번 읽어보시고 시작하시는 걸 추천드립니다. 구글링해서 제일 위에 나오는 튜토리얼 링크입니다.
저는 끝까지 진행해보았는데요, 특별히 에러가 난다거나 하는 부분 전혀 없이 깔끔히 진행할 수 있었습니다!
워크샵 시작전에 알려준 꿀팁 및 지식 정리
Tactics to find the optimal set of hyperparameters
하이퍼 파라미터를 정할때 크게 아래와 같은 4가지 방법으로 나뉘게 됩니다.
- Manual Search
- Grid Search
- Random Search
- Hyperparameter Optimization
Manual Search
I know what I'm doing
의 케이스죠ㅎㅎ 거의 마무리단계가 아니면 사용하지 않는 것 같습니다. (저는 멍청해서 대학원 다닐때 반년정도 이랬던것 같지만요;;ㅋ;;;;)
Grid Search
X marks the spot
의 케이스네요. 구간을 정해놓고 하이퍼 파라이터 튜닝을 하는 경우인데요, 느리고 비싸서 그닥 추천하지는 않습니다.
Random Search
Spary and pray
특이하게도 랜덤하게 찾는게 Grid 방식보다 더 잘 찾아지고 속도도 빠르다고 합니디. 관련된 논문도 꽤나 유명했었죠. Random Search for Hyper-Parameter Optimization
근데.. 결국엔 이것도 랜덤이라 더 좋은 방법을 찾은 결과!! 바로 아래의 방법이 있네요
Hyperparameter Optimization
use ML to predict hyperparameters
머신러닝 알고리즘 돌리려고 했더니 하이퍼 파라미터를 추정하기 위한 머신러닝이라니?!?! 라고 생각할 수 있겠지만, 네, 이게 사실상 현시점에서는 업계표준입니다. Amazon SageMaker 의 공식 도큐멘트에도 설명이 있으니 읽어보시는 것을 추천합니다. Gaussian Process Regression and Bayesian Optimization
Tips
1. Use the bayesian strategy for better, faster, cheaper results
많은 고객들이 random search 를 베이스라인으로 삼으면서, bayesian 방법이 얼마나 더 효과적인가를 검증하는데 사용한다고 합니다. 즉, 그만큼 bayesian 이 좋다는거니 그냥 처음부터 쓰라는거죠!
2. Don't run too many jobs in parallel
인스턴스 limit (리젼당 소프트리밋이긴 하지만 20개) 에 걸리기도 쉽고 bayesian 의 특성상 "이전에 갖고 있는 데이터" 를 활용해야 효과적인건데, 동시에 병렬처리를 돌려버리면 bayesian 방법으로 효과를 보기 어렵겠죠.
3. Don't run too many jobs
Bayesian 은 일반적으로 랜덤서치보다 10배 더 적은, 그러니까 10% 도 안되는 job 을 실행시켜도 충분히 좋은 결과를 빠르게 얻을 수가 있습니다. 또한, 너무 job 을 많이 돌리면 코스트도 비싸지겠죠.. ㅎㅎㅎ 중요하죠 코스트....
AutoML with Amazon SageMaker Autopilot
오늘 발표된 SageMaker Autopilot 은 아래의 4가지 AutoML 이 목표로하는 feature 를 모두 지원합니다.
- Problem identification
- Algorithm selection
- Data preprocessing
- Hyperparameter tuning
또한 Autopilot 은 블랙박스 모델이 아닌 화이트박스 모델이기에, 모델이 어떻게 생성되는지도 확인할 수 있을 뿐더러, 직접 모델에 변형을 가하는것도 가능합니다. 현시점에서 (런칭한 직후시점) Autopilot 은 아래의 알고리즘을 지원합니다.
- Linear Learner
- Factorization Machines
- K-NN
- XGBoost
딥러닝은 지원을 안해주네요ㅎㅎ 근데 곧 지원하기 위해서 열심히 개발중이라고 하니 금방 지원되지 않을까 싶습니다!
SageMaker 이용시 비용 줄이기 꿀팁!!
네, 이부분 정말 중요하고 간단한 부분인데 많은 분들이 잘 모르시는 것 같아서, 혹은 생각하지 못하시는 것 같아서 공유합니다. SageMaker 의 경우에는, Training 과 Inference(혹은 Test) 를 위한 인스턴스를 분리해서 사용하는데, Inference 의 경우에는 대다수의 경우에 HA 등을 당연히 고려해야하겠지만, Training 은 일회성으로 끝나는 경우가 많기때문에 Spot Instance 를 사용하면 학습에 사용되는 비용을 획기적으로 절감할 수 있습니다.
앞으로 SageMaker 로 학습할때는 꼭!!! Spot Instance 로 비용 절약ㅎㅎㅎ
마치며
SageMaker Autopilot 말고도 SageMaker Studio, SageMaker Experiment, SageMaker Debugger 등등 오늘 정말 SageMaker 의 대변신이 발표된 날이었는데요, SageMaker 를 평소에 잘 사용하지 않고 있다가 re:Invent 다가와서야 몇번 만져본게 전부인 저로서는 상당히 충격적이었습니다. 겨우 대략 어떤 기능들이 있는지 겉핥기 끝났다고 생각하자마자 서비스가 쏟아져나오네요ㅎㅎㅎㅎ AWS 참 매력적입니다!ㅎㅎㅎ
SageMaker 는 앞으로 딥러닝/머신러닝/데이터분석/데이터과학자들에게는 사실상 defacto 가 될 듯 싶습니다. 본 워크샵의 내용, 상당히 괜찮았어서 정말 강추입니다. 꼭 한번 진행해보세요!
이상, 컨설팅부의 김태우였습니다~~~!