CHOPT 논문 정리
https://arxiv.org/abs/1810.03527
NSML에 적용된 hyperparameter optimization framework 에 대한 논문으로, 해당 논문에 대한 번역 및 요약임.
많은 하이퍼파라미터 최적화 방법들이 제한된 컴퓨팅 리소스를 가정하고 성능 향상에 주로 포커스를 둔다.
해당 논문에서는 다양한 HyperOpt 최적화 알고리즘을 지원하면서 공유 컴퓨팅 리소스를 효율적으로 활용할 수 있는 새로운 클라우드 기반 HyperOpt 프레임워크를 제안한다.
사용자가 쉽게 최적화 과정을 제어하고 반복적인 분석 절차로 통찰력을 쌓을 수 있는 편리한 웹 기반 사용자 인터페이스, 시각화 및 분석 도구를 포함한다. 또한 해당 프레임워크는 모든 클라우드 플랫폼과 통합되므로 conventioanl한 딥 러닝 프레임워크의 효율성을 증가시킨다. 이미지 인식이나 질의 응답같은 task를 CHOPT로 보여주면서, 해당 프레임워크가 이전의 work에 경쟁력 있는 하이퍼파라미터 구성을 발견할 수 있음을 증명한다.
1. INTRODUCTION
딥러닝의 capabilities는 더 많은 모듈형 구조와 향상된 최적한 방법으로 확장되었다. 하이퍼파라미터의 수가 증가하였고, 이는 연구자들이 모델 최적화를 하는 데 있어 많은 낭비를 일으킨다.
이 문제를 해결하기 위해 몇 가지 하이퍼 파라미터 최적화 방법이 제안되었는데, 이러한 방법들은 강한 최종 성과, 병렬 처리, 컴퓨팅 리소스 효율성 측면에서 성능을 크게 향상시키는 early stopping, 그리고 최적화 시간 등과 같은 많은 장점을 가지고 있다. 하지만 그러한 방법을 이용하기위해서 사용자는 자신의 시스템이나 코드로 구현해야하며, 소스코드가 제공되어도 구현에 상당한 시간과 노력이 필요하다.
최근, HyperOpt 프레임워크가 제안되고 있지만, 이 프레임워크들은 하이퍼 파라미터 최적화 방법과 분석 도구를 제공하지만, 컴퓨팅 리소스 관리는 고려하지 않는다.
해당 논문에서는 효율적인 HyperOpt 프레임워크 CHOPT는 최신 하이퍼파라미터 최적화 알고리즘을 지원하며
Stop-and-Go approach 를 기반으로 유연한 컴퓨팅 환경에 있어 리소스 사용을 효율적으로 개선한다.
본 저작의 주요 contribution은 다음과 같다.
- 하이퍼파라미터 최적화 방법을 호스트하는 자동화된 HyperOpt 프레임워크를 개발한다. 이전 논문에서 보고된 결과와 비교했을 때 경쟁력있는 하이퍼파라미터를 찾을 수 있다.
- early stopping 문제를 해결하고 공유 shared-cluster 자원의 활용률을 극대화하기위해 Stop-and-Go approach를 제안한다.
- 구현된 분석 시각화 툴을 소개하고, 예시를 통해 하이퍼파라미터 fine tuning을 use case를 단계별로 보여준다.
2. RELATED WORK
2.1 Hyperparameter Optimization
2.3 NSML
3. CHOPT : CLOUD-BASED HYPERPARAMETER OPTIMIZATION
3.1 Design goal & Requirements
해당 프레임워크 설계의 주요 목적은 다음과 같다.
효율적인 자원 관리 : 공유 자원을 관리하여 자원 활용을 극대화하면서, CHOPT 사용자와 비사용자 전체의 균형을 맞춤
configuration 및 코드 수정 최소화 : 하이퍼파라미터 최적화 방법을 호스팅함으로써 사용자는 구현 오버헤드 없이 쉽게 모델을 튜닝할 수 있어야함
웹 기반 분석 시각화 툴 : 많은 training sessions에 효율적이며 수백개의 training 결과 분석을 위한 파워풀한 시각화 툴
3.2 System Architecture
사용자는 CLI 또는 web interface를 통해 CHOPT session을 실행할 수 있다. CLI는 light-weight으로 session을 실행/종료 시키는 간단한 task에 적합하다. web interface는 비교적 무겁지만 많은 기능을 제공하여 training 결과를 분석하고 모니터링하는데 적합하다. CHOPT를 실행하려면, 사용자는 NSML와 호환되는 코드를 제출하고 tuning 방법/hyperparameter set 등으 세부 정보가 포함된 config 파일을 제출해야한다. 제출된 코드를 holding하는 동안, CHOPT session은 config 파일로 초기화되고, 실행되기전 CHOPT session을 저장하는 큐에 삽입된다. CHOPT session manager(Agent)가 available되면, 큐로부터의 CHOPT session이 Agent에 의해 실행된다.
3.2.1 Agent
Agent는 automl 세션의 과정을 모니터링할 뿐만 아니라 CHOPT 세션을 실행하는 모듈이다. 사용자는 해당 NSML training세션을 확인하고 분석할 수 있다. (NSML세션은 단일 training 모델이다.
컴퓨팅 자원을 관리하고 최대화하기위해 CHOPT 세션은 3가지 세션 pool을 가진다.
live pool, stop pool, dead pool
모든 실행되는 NSML 세션은 config 파일에 의해 자원 제한을 가지는 live pool 안에 있다. live pool의 NSML 세션과 함께, agent는 주기적으로 NSML 세션과 config 파일에 따른 tuning NSML 세션의 성능을 비교한다. 만약 NSML 세션이 중지되면, 이는 stop pool 이나 dead pool로 이동된다. stop pool의 NSML 세션은 재시작 가능한 반면, dead pool의 NSML 세션이 완전히 시스템에서 제거된다. automl system은 모델을 너무 많이 생성하고 시스템 저장 공간을 너무 많이 차지하기 때문이다. 따라서 사용자는 시스템이 부족하거나 복구될 때 종료된 NSML 세션이 얼만큼 stop pool로 갈지, stop pool의 NSML 세션이 얼만큼 재개될지, stop 비율을 정의할 수 있다.
3.2.2 Master Agent
Master agent는 config file에 따라 agent들 중 하나에 session을 할당한다. Master agent는 agent들 중 하나로부터 선택된다.(zookeeper’s leader election - Hunt ... , 2010)
Master agent가 실패할 경우, 어떤 agent 든 다음 master agent가 될 수 있다. 사용자가 큐에 CHOPT 세션을 제출할 때마다, master agent의 가장 중요한 역할 중 하나는 CHOPT사용자와 비사용자 사이에서 CPU와 같은 컴퓨팅 리소스를 이동시키는 것이다. 그렇지않으면 사용자는 심각한 컴퓨팅 리소스 불균형에 직면한다.
3.3 Stop-and-Go
자동화된 최적화 방법과 프레임워크들은 많은 모델들을 병렬로 학습시키므로, 많은 컴퓨팅 자원을 필요로 한다. 주의 깊게 관리되지 않는다면 이는 공유 cluster 환경의 사용자 간에 심간한 로드 불균형을 가져온다. 이 문제를 피하기 위해, 해당 frameword는 컴퓨팅 자원의 활용을 최대로하면서, CHOPT 사용자와 비사용자간의 CPU같은 available 컴퓨팅 자원을 공평하게 제어한다. Stop-and-Go는 이를 소개하는 새로운 feature이다.
이 기능의 핵심 아이디어는 master agent가 cluster의 상태에 따라 NSML과 CHOPT 세션간의 리소스 사용 가능 여부를 제어하는 것이다. 이를 통해, CHOPT 환경에서 early stopping 문제를 완화할 뿐만 아니라, 공유 cluster 환경의 활용을 극대화할 수 있다.
3.3.1 Efficient Resource Management
리소스 cluster가 충분히 활용되지 않을 때마다, master agent는 CHOPT 세션들에 더 많은 리소스를 할당하여, 그들이 빠르게 하이퍼파라미터 최적화를 끝내도록한다. 반면에, cluster가 over-utilized 되고 있으면, master agent는 CHOPT세션들로부터 GPU를 뺏어 다른 CHOPT 비사용자가 이 공유 cluster 환경에서 모델을 학습할 수 있도록한다. 이 기능은 컴퓨팅 리소스의 활용률을 극대화하고 효율적으로 모델을 학습할 수 있도록 한다.
3.3.2 Resolving Early Stopping Problem
많은 하이퍼파라미터 최적화 방법들과 프레임워크들은 가망없는 모델 학습을 조기 정지시키는 Early Stopping 이라는 기능을 가진다. 이 기능은 컴퓨팅 자원을 상당히 절약하고 동시에 연구자들이 더 많은 모델을 학습시킬 수 있도록한다.
하지만 early stopping은 높은 성능의 모델이 빨리 train될 것을 보장하지 못하므로 해로울 수 있다.
위 그림은 7 epochs 의 step size로 이 framework로 model search를 한 기록을 나타낸다. 몇 단계 후, early stop된 CHOP는 얕은 depth의 space만 search찾을 수 있다. 왜냐하면, 얕은 depth의 모델들이 다른 것보다 training 초기 단계에서 더 좋은 성능을 보여주기 때문이다. 더 중요한 것은, step 크기로 작안 수의 epoch을 설정하는 것은 CHOPT beginner로서 선택할 수 있는 첫 번째 선택사항이므로 이것을 피하기가 어렵다는 것이다.
제안된 Stop-and-Go 방법은 사용자가 위험을 피할 수 있도록 도와준다.
이 framwork에서 master agnet가 CHOPT 세션으로부터 GPU를 뺏었을 때, 해당 세션은 실행 중인 NSML 세션들을 무작위로 stop pool 과 dead pool로 분리해 이동시킨다. 만약 CHOPT 세션이 더 많은 GPU가 할당되면, 새 세션을 만드는 대신, stop pool로 부터 NSML 세션을 재개하도록 시도한다. (stop pool이 비어있으면, 새 세션을 만든다.)
잠재력이 있는, early stop된 세션을 다시 활성화하여 early stopping 문제를 피할 수 있다.
3.4 Configuration
많은 하이퍼파라미터 최적화 프레임워크들이 코드 수정을 요구하며, 이는 많은 시간이 소요된다. CHOPT는 코드 수정없이, tuning을 위한 최소한의 configuration만 요구한다.