논문 REVIEW

내가 보려고 정리하는 GPTuner: A Manual-Reading Database Tuning System via GPT-Guided Bayesian Optimization [VLDB 2024]

짱 센 2024. 10. 27. 00:25

* (참고) 추후에 내가 보았을 때 어떤 내용의 논문인지 기억할 수 있을 정도로만 간단히 정리하는 리뷰임.

 

데이터베이스 튜닝에도 LLM을 적용하고자 하는 논문이 슬슬 나오기 시작하는 것 같다..

해당 논문은 VLDB 24에 억셉이 된 논문이고, SIGMOD 24 에서는 데모버전으로 억셉된 논문이다.

https://arxiv.org/abs/2311.03157

 

GPTuner: A Manual-Reading Database Tuning System via GPT-Guided Bayesian Optimization

Modern database management systems (DBMS) expose hundreds of configurable knobs to control system behaviours. Determining the appropriate values for these knobs to improve DBMS performance is a long-standing problem in the database community. As there is a

arxiv.org


<Motivation>

 

해당 논문에서 얘기하는 motivation은 위와 같다.

첫번째로, 기존 ML-based method들은 여전히 튜닝하는데 너무 오랜 cost가 사용된다는 점이다.

훈련을 해야하고 많은 훈련 데이터가 필요하고.. 그에 대한 resource와 time-consuming 문제.

 

두번째는 현존하는 domain knowledge가 굉장히 많은데 활용하지 않는다는 점이다.

여기서 말하는 domain knowledge란 데이터베이스 manual script 라던가 웹페이지에 있는 다양한 정보들을 의미한다. 

 

세번째, 현재 LLM이 잘 활용이 되고 있지만 아직은 정확한 정보를 extraction하지 못한다. 이걸 해결하기 위해 본 논문에서는 LLM을 통해 얻은 다양한 정보에 대해서 cleaning 과정을 거쳐서 정확한 정보를 얻을 수 있도록 한다.

 

네번째, 데이터베이스 파라미터 중에서 special value 값을 가지는 특별한 파라미터들이 존재한다. 이 때 special value라는건 어떤걸 의미하냐면.. value 값에 의미를 가지고 있는 파라미터를 뜻한다. 그냥 continuous한 숫자가 아니라 의미를 가지고 있는.. 예를 들면 0일 땐 모든 설정을 사용하지 않는다. 라는 의미를 가지고 있는 파라미터

근데 기존 method들은 이런 파라미터에 대해서는 고려하지 않는다고 지적했다. (근데 이 문제를 지적하면서 포함하여 튜닝하겠다는 논문이 있긴함)


<Contribution>

 

contribution은 다음과 같다.

1. 현존하는 domain knowledge를 활용해서 튜닝을 진행함

2. LLM을 통해 얻은 데이터를 refine하여 structured data를 만들겠다.

2. 기존 BO를 발전시킨 Coarse-to-Fine BO를 제안한다.


<Method>

 

Overview와 함께 간단히 설명해보자면은..

  1.  첫번째는 다른 논문들과 똑같이 User로부터 DBMS의 정보, target workload에 대한 정보, 그리고 최적화하고자하는 목표 정보에 대해 제공받는다.
  2. 두번째, LLM을 통해 웹페이지나 인터넷에서 얻은 domain knowledge를 쓸어온다. 이걸 논문에서는 Tuning Lake라고 부른다.
  3. 세번째, 이렇게 얻은 데이터를 이제 refine하고 structure knowledge를 만든다. 이 때, 세 단계를 거치게 되는데...!!
  •  Data Cleaning : LLM에서 얻은 candidate tuning knowledge와 official manuscript 내용을 비교한다. 만약에 두 정보가 다르다면? 당연히 official이 맞는 정보! 그래서 LLM이 가져온 정보는 삭제해버린다.
  •  Summarizing Knowledge : 이렇게 정제한 데이터에 대해서도 우선순위를 매기게 된다. 첫번째로 믿을만한 정보는 official manuscript에서 가져온 정보. 두번째는 어떠어떠한 웹페이지에서 가져온 정보 ... 이런식으로! 
  • Check Factual : 마지막으로 이렇게 다 정제된 데이터와 맨~처음에 LLM이 가져온 정보와 fact 체크를 한다. 만약에 다르면?? 'Summaraizing Knowledge' 단계로 다시 돌아간다.

  4. 네번째, 이렇게 정리된 정보를 structured knowledge라고 하고, 이 문장들에 대해 min, max, special value 값을 뽑아        낼  수 있도록 few-shot learning을 통해 LLM을 학습한다.

 

5. 기존에는 모든 파라미터의 모~든 value range 내에서 최적화를 하는데, 이건 너무 비효율적이다 이거야.

그래서 중요한 value range에 대해서만 최적화할 수 있도록 하겠다! 

Region discard : 1차적으로 Structured Knowledge에서 얻어둔 정보를 통해 value range를 줄인다.

Tiny feasible space : 이건 나중에 BO에서 쓰이는데 최적화할 value range (=search space)를 좀 더~ 줄이는거다.

완전 컴팩트하게! 이 때 쓰이는 수식은 초록색 박스다. V는 지금 현재의 value range를 나타내고 U는 원래의 min, max 범위를 뜻한다. 베타는 이제 scaling factor처럼 범위를 더 줄일것인지 말것인지 결정하는 파라미터이다.


예를 들어 default value range가 1~100이라 치자. Region discard를 통해 30~80으로 줄였다고 하자. 

이런 상황에서 min값을 움직여서 범위를 줄이겠다고 한다면?

V는 30, U는 1.

이 때, 베타가 0에 가까울수록 범위의 min을 V에 가깝게하자 (즉 30에 가깝게 하자)

반대로 베타가 1에 가까울수록 범위를 default min인 U에 가깝게하자 

이건 BO할 때, 사용된다.


Virtual knob extesion : 이제 해당 파라미터가 normal parameter인지 아니면 special value인지 classification한다. 이 때, 해당 파라미터가 special value를 가지는 파라미터라면? 그 정보를 삽입한다.

 

6. BO는 고차원에서 최적화가 힘들기 때문에 역시나 상위 파라미터를 추출하여 최적화하는데 이 때도 LLM을 활용해서 뽑는다.

 

7. Coarse-to-Fine BO는 BO를 두 번 진행하는 것이다.

첫번째로는 위에서 설명한 Tiny feasible space에 대해서 BO의 surrogate model을 학습시킨다.

물론, 이 때 나온 output은 완전히 완벽한 값은 아니다. 왜냐하면 너무 좁은 범위에서 최적화했기 때문!

그 다음에 Fine Stage에서 한번 더 튜닝한다. 이 때 surrogate model은 앞서서 훈련해두었던 모델로 진행. 그래서 더 빨리 최적화할 수 있다.

이 때는 Region discard 단계랑 Virtual knob extension 단계를 거친 정보로 최적화한다.

 

8. 끝 !!!

 


마무리

해당 논문을 읽었을 때 든 생각은 LLM을 본격적으로 활용한 파라미터 튜닝 논문이라 되게 의미있다고 생각했다.

근데 너무 LLM에 의존하는게 아닐까.. 라는 생각이 들었음.. 근데 내가 아직 LLM 공부를 안해봐서 마음의 문이 닫혀있어서 그런걸수도,,,,

아무튼간 이제 LLM을 활용해야할 때가 오지 않았나 .. 싶다 . . .