NSML:
머신러닝 플랫폼 서비스하기
& 모델 튜닝 자동화하기
김민규, 김진웅
NSML
Contents
NSML: Machine Learning as a Service
CHOPT: 하이퍼파라미터 튜닝 자동화하기
NSML:
Machine Learning as a Service
머신러닝
What I think I do What I actually do
머신러닝
What really happens
Dependency Hell
협업 및 재실험이 어려움
github에서 받은 코드는 돌아가지도 않는다
힘들게 라이브러리 설치했더니, 버전이 다르다고 한다
MLaaS (Machine Learning as a Service)
MLaaS 목표는 최고의 모델을 만들어서 서비스하기
NSML을 통해서 진입장벽을 없애고, 협업과 경쟁이 가능해짐으로써 좋은 모델
학습부터 모델 서비스까지 쉽다
MLaaS:
진입장벽 없애기
나만의 머신러닝 모델 만들기
Mnist예제
다운받기
실행 성공!GPU 셋업파이썬 설치
텐서플로우
설치
…
 가장 쉬운 머신러닝 모델 학습하는데 필요한 단계가 많음
나만의 머신러닝 모델 만들기 (w/ NSML)
 지저분한 환경 세팅은 nsml통해서 처리
 커맨드 한 줄로 머신러닝 모델 학습 가능
Mnist예제
다운받기
실행 성공!
Almost-Zero Dependency
Containerized ML
 리눅스 컨테이너를 이용한 빠르고 정확한 환경 세팅
 컨테이너 이미지를 통해 reproduce 할 수 있다
Engineering issue
Scalability Stability
Linux Container
Modularization
Fault-tolerance
Monitoring
Security
Authentication / Authorization
Isolation
MLaaS:
Cluster sharing
공유지의 비극
Install
Cluster sharing via container
Container를 통해 버전에 상관없이 서버 공유가 가능하다.
On demand로 관리하는 자원 할당 시스템을 통해 자원을 효율적으로
사용한다
-> 실제 연구원들에게 적용해보자
NSML is in service now!
사용자 별 다양한 목적 지원
 data preprocessing
 state-of-the-art 구현
 새로운 아이디어 실험
 모델 최적화
 모델 서비스
NSML로 인한 변화
 전체 자원 utilization 증가
 궁극적으로, ML연구 속도가 빨라졌다
MLaaS:
Hackathon
Naver AI Hackathon 2018
 영화 리뷰 평점 예측 / 지식인 질문 유사도 예측의 두 문제로 진행
 영화 리뷰 평점: 문장으로 된 영화 리뷰를 보고 점수 예측
 지식인 질문 유사도: 두 지식인 질문이 같은 질문인지 아닌지 판별
 총 250+명 참여
 한 달 동안 총 3라운드로 진행 (Online 2라운드, Offline 1라운드)
Leaderboard
 같은 데이터, 같은 태스크에 대해
서 어떤 모델이 좋은 성능을 내는
지 평가하는 UI
 실시간 업데이트
현장 사진
시스템 안정성
MLaaS:
Competition to service
문서의 회전 각도 예측
 주어진 문서의 기울어진 각도 예측
 OCR엔진에서 사용하는 데이터 preprocessing에 적용 가능한 모델이 필요
45도
최종 결과
 99.8% 정확도를 보이는 모델 학습
 내부에서 data preprocessing에 사용할 수 있는 수준의 모델 학습
최종 결과
키보드 오타교정
 키보드 입력 시퀀스를 받아, 오타 여부 판단 및 교정하는 문제
 Naver SmartBoard에 탑재할 수 있는 수준의 모델이 필요
최종 결과
 실제로 사용 가능한 수준의 모델 생성
 Naver SmartBoard (http://keyboard.naver.com/)에 탑재
MLaaS:
모델 서비스하기
모델 서비스 파이프라인 (AS-IS)
 NSML에서 모델 학습은 끝냈는데, 다시 서버 구축을 새로 해야한다
 혹시 더 좋은 모델을 나중에 발견하면? -> 2번부터 다시 해야 한다
데이터 수집 모델 학습
모델
다운로드
서비스용
서버 구축
Application
연결
모델 서비스 파이프라인 (w/ NSML)
 서버 구축까지 NSML에서 대신해주며, 사용자는 앱만 만들면 된다
 혹시 더 좋은 모델을 나중에 발견하면? -> 단순히 NSML에 저장되어 있는
모델 이름만 변경하면 새로 구축 끝
데이터 수집 모델 학습
모델
다운로드
서비스용
서버 구축
Application
연결
Engineering issues
Scalability Stability
Scale in/out
Batch Scheduler
백업 DB
Monitoring
모델 튜닝 자동화하기
최고의 튜닝 방법?
- GSD Optimization
최고의 튜닝 방법?
- Graduate Student Descent (GSD) Optimization
최고의 튜닝 방법?
- Graduate Student Descent (GSD) Optimization
최고의 튜닝 방법?
최근 기법들
- Population Based Training (Deepmind, 2017)
- Hyperband (CMU, UW, Google, 2016)
- BOHB (University of Freiburg, 2018)
- 그 외 다수 …
다 좋은데...
언제 구현하고, 언제 적용하지…?
어느 최적화 기법이 제일 좋은지 어떻게 알지..?
모델, 알고리즘 연구하기에도 시간이 없는데 ...
CHOPT를 이용해 하이퍼파라미터
“쉽고” “빠르게” 튜닝 하기
“쉽게”
스크립트?
= 남에게 맡기는 것
최근 논문 구현?
Third-party library?
가장 쉬운 방식이란?
CHOPT agent (Graduate Student)
- 사용자를 대신해 configuration file을 토대로 하이퍼파라미터를 튜닝!
(Graduate Student)
Configuration File
- Dictionary-based file
what to tune ?
how to tune ?
Select best hyperparameters
Select best hyperparameters
Show best hyperparameters
“빠르게”
How to make it fast?
사실…
최적의 하이퍼파라미터를 찾는건 튜닝 메소드에 의존적
자원 몰아주기 !
Under-utilization
: CHOPT session 에게 자원 추가 할당 !
Over-utilization
: nsml 세션이 자원 요구시 반납 !
GPU(%)
3.5 배 빠르게 최적화 !
“진짜 되나요?”
네. 됩니다.
- 저자들이 피땀흘려 얻은 결과를, 쉽고 빠르게 갱신 할 수 있습니다!
● Image Classification with CIFAR-100[1]
● Reasoning-QA with SQuAD 1.1[2]
One “More” Thing ...
Fine Tuning
- Expanding : 하이퍼파라미터를 하나씩 추가해 나가며 최적화 하는 방식
- Shrinking : 하이퍼파라미터의 범위를 점차 좁혀나가며 최적화 하는 방식
Fine Tuning (Expanding)
- 하이퍼파라미터를 하나씩 추가해 나가며 최적화 하는 방식
Fine Tuning (Expanding)
- 하이퍼파라미터를 하나씩 추가해 나가며 최적화 하는 방식
Fine Tuning (Shrinking)
- 하이퍼파라미터의 범위를 점차 좁혀나가며 최적화 하는 방식
range를 좁힌 후 rerun!
CHOPT demo.
Publication
● CHOPT : Automated Hyperparameter Optimization
Framework for Cloud-Based Machine Learning
Platforms
○ Cloud-based Hyperparameter OPTimization (CHOPT)
○ https://arxiv.org/abs/1810.03527
We are Hiring!!
Domains
•Speech Recognition
•Speech Synthesis
•Computer Vision
•Natural Language
•NSML / AutoML
•Finance AI
•App/Web Services
Positions
•Research Scientist
•Research Engineer
•SW Engineer
•Android / iOS Engineer
•Backend Engineer
•Data Engineer
•UI/UX Engineer
•Internship Member
•Global Residency
clova-jobs@navercorp.com
Q & A
질문은 Slido에 남겨주세요.
sli.do
#deview
TRACK 2

[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기