728x90
반응형
High-Dimensional Bayesian Optimization with Multi-Task Learning for RocksDB
- RocksDB는 general-purpose embedded key-value store를 사용
- 본 논문에서는 10개의 파라미터를 다양한 범위로 auto-tuning해서 Throughput을 개선한다.
- 보통 optimizer들은 고차원 문제와 많은 training sample 요구를 한다.
- 이 문제를 해결하기 위해 multi-task modeling과 clustering을 통한 차원 감소를 진행한다.
- 일반적으로 최적화하는 것은 수렴 속도가 빠른 것과 다른 tuner들이 찾기 못하는 복잡한 세팅을 찾으려는 것이 목적
- but, 계산량이 많아
- 그래서 사전지식과 Bayesian Optimization loop를 사용해서 throughput을 최대화 하는 파라미터를 찾는다.
- 일반적으로 최적화하는 것은 수렴 속도가 빠른 것과 다른 tuner들이 찾기 못하는 복잡한 세팅을 찾으려는 것이 목적
1. Introduction
- RocksDB를 튜닝하는 것의 문제점
- RocksDB는 30개가 넘는 파라미터를 가지고 있어서 configuration 조합들은 사용자에게 너무 많다
- 하드웨어는 사용자가 선택한 configuration에 큰 영향을 준다.
- 각 Application은 독특한 접근 패턴을 가지고 있다.
- Auto-tuning으로 이러한 문제를 해결하려 함
- 하지만 많은 training sample이 필요한데 이 training sample들은 restart and execution을 해야 함
- 따라서 굉장히 효율적인 Bayesian Optimization(BO)를 사용. Process는 아래 그림과 같음
BO의 단점으로는 curse of dimensionality 때문에 고차원에서는 사용하기 어렵고, 계산량이 비싸다는 것이 단점이다.
- 따라서 전문가의 지식을 추가해서 이 문제를 해소하고자 한다.
- multiple target을 통한 최적화, sub-task decomposition을 통해 고차원 문제를 줄일 수 있다.
multiple target 통해 최적화 하는 것은 다양한 내부 component에 성능을 영향을 받기 때문에 이득이 있음
- 예를 들어 RocksDB에서는 write throughput은 IO stalls에 bottleneck이 있지만 지연시간을 줄여서 향상 가능
하지만 target을 늘리는 것은 계산량을 증가시키기 때문에 decomposition을 사용하도록 한다.
모든 파라미터들을 한번에 다 고려하는 것이 아닌 일부 subset으로 decompose하고 target을 최적화함
기여도는 다음과 같다.
- BO에 structural knowledge를 주입해서 수렴속도를 낮춤
- manual task decomposition을 사용해서 차원 문제를 해결함
- default보다 최대 1.45배 향상시킴
2. Background
2.2 Bayesian optimization
- Black-box function 최적화 문제를 해결하려는 효율적인 최적화 framework
- 미지의 목적 함수(Surrogate Model)을 만들고 평가를 통해 최적의 하이퍼파라미터 조합을 탐색하는 것.
- 즉 확률적인 추정을 수행하는 모델
- 이 함수로 GP, Additive Kernel, TPE, RF를 사용하도록 한다.
- Acquisition Function은 확률적 추정 결과를 바탕으로 유용한 다음 입력값 후보를 추천해 주는 함수를 지칭
3. Structured multi-task optimization
3.1 Overview
- 메커니즘을 통해 전문가의 지식을 model에 넣고, 사용하들은 main objective를 최적화할 수 있는 low-level metrics를 확인할 수 있다.
- multi-task learning을 통해 system component 간의 상호작용을 알 수 있고, 샘플에서 더 많을 것을 배워서 수렴에 필요한 관찰을 줄일 수 있다.
- 파라미터의 manual grouping을 통해 최대 차원을 줄였고 수렴 속도를 빠르게 했다.
3.2 Problem space and assumptions
GP를 사용할 때, multivariate Gaussian distribution이고, 모든 점에서 미분 가능하다.
modeling space에서 랜덤하게 선택된 500개의 독립된 실험을 수행
그 결과는 아래 그래프와 같음
3.3 Multi-task learning
3.3.1 Tasks
- RocksDB 구조의 이해를 바탕으로 3개의 추가적인 objective를 선정함.
- 이 objective들은 직접적으로 혹은 간접적으로 IOPS에 영향을 준다.
- 선정한 3개는 다음과 같다.
- WriteAmplification
- ReadBlockGetP99
- Level0Tolevel1P99
3.3.2 Intrinsic coregionalization model
이 3가지 task를 더함에 따라 GP의 kernel 함수를 변경해야 한다.
Intrinsic Coregionalization Model kernel을 사용한다.
- kx은 covariance kernel, kT는 task similarity kernel을 의미한다.
- 따라서 서로 연관성을 파악하기 좋음
- 각 output은 BO loop에서 최적화된다.
- kx은 covariance kernel, kT는 task similarity kernel을 의미한다.
task간의 지식을 공유하는 능력과 각 task 별 충분한 sample이 있으면 수렴 속도를 빠르게 할 수 있다.
수행하는 알고리즘은 다음과 같다.
- scaling하고 normalizing 한다.
- 이 것이 분포를 smooth하게 해서 더 쉽게 할 수 있도록 함
3.3.3 ICM challenges
- ICM이 뭘 제공하긴 하는데 모르겠고, 이는 확장성에 문제가 있다고 함
- 일반적으로 GP는 O(n3)인데, task가 생기면 O(Tn3)임
- 그래서 Decomposition이 필요하다.
3.4 Decomposability through clustering
3.4.1 Decomposability in RocksDB
- RocksDB의 large parameter space는 *"차원의 저주"* 와 높은 계산량을 발생시킨다.
- multi-task 방법을 사용하면 계산량을 증가시켜서 차원의 저주 문제를 일부 해소 시킨다.
- 계산량 문제를 줄이기 위해 RocksDB의 구조를 이용한다.
- final observed metric = sum of multiple internal components performance. (functional decomposability)
- 이는 차원을 줄이는 역할도 수행할 수 있다.
3.4.2 Manual clustering
- 복잡도는 차원과 연관있기 때문에 이를 줄이도록 하자.
- 500개의 random configuration trace를 이용하여, IOPS와 517 observable metric간의 correlation과 파라미터간의 correlation을 계산한다.
- 이를 통해 cluster pool을 30개로 줄였고, 그 중 전문가 지식과 독립된 실험을 통해서 그림의 구조에 도달할 수 있었다.
- parameter space를 decompose했고, 각 parameter cluster에 독립적인 GP를 사용했음
- ICM Kernel을 사용한 GP로 지식을 공유하도록 했음
3.4.3 Unsupervised clustering
- unsupervised clustering을 적용해서 이러한 cluster를 찾는다.
- pass
4. Evaluation
4.1 Setup
- IOPS를 최대화 하기 위해 10개의 RocksDB 파라미터를 튜닝한다.
- parameter의 범위는 다음 표와 같다.
4.1.1 Experiment goals
- tuner가 수렴 속도가 빠르고, IO throughput을 잘 하는 것이 중요하다.
- Decomposability를 이용하는 cluster 기반의 multi-task의 효율성을 강조할 것이다.
4.1.2 Benchmark
생략
4.1.3 Libraries
생략
4.1.4 Hardware
생략
4.1.5 Baselines
4.2 IOPS performance
- 제한된 계산량으로 IOPS를 최대화 하고 싶기 때문에 100개의 최적화 step만을 부여한다.
- MultiTask를 사용할 때 1.38 ± 0.06 만큼의 성능 향상을 보였다.
4.3 Convergence
- Multi-task와 cluster multi-task가 좀 더 빠르게 찾아냈다.
- clustered MT는 10개의 iteration만에 1.3배의 향상을 보이는 config를 찾았다.(non-cluster-based는 60개의 iter가 걸림)
- 대신 60 iter 후에는 더 좋은 것들을 찾을 수 있었지만 unstable 함
- 일반 GP보다는 GP(BoTorch)가 더 좋음
5. Related work
pass
6. Conclusion
- 이전에 tuning하는 과정은 고차원이라는 것이 문제였음.
- 따라서 alternative observable metrics와 structural decomposability를 이용해서 수렴 속도를 빠르게 하고, 고차원을 줄임
728x90
반응형