논문 요약 — Panda: Performance debugging for databases using LLM agents

Whoemoon Jang
취미로 논문 읽는 그룹
9 min readApr 9, 2024

--

Vikramank Singh, Kapil Eknath Vaidya, Vinayshekhar Bannihatti Kumar, Sopan Khosla, Murali Narayanaswamy, Rashmi Gangadharaiah, & Tim Kraska (2024). Panda: Performance debugging for databases using LLM agents. In CIDR 2024.

DB 퍼포먼스 저하 해결같은 태스크는 숙련된 DBA의 전문적인 이론과 경험, 그리고 운영상의 히스토리에 대한 어느정도의 이해가 필요하다. 이러한 작업에서 chatgpt 등의 제너럴한 pre-trained llm에 해당 문제의 해결책을 질의할 경우, 많은 경우 기술적으로 틀린 것은 아니지만, 두루뭉술하거나 일반론 수준의 답변을 내놓기 때문에 실제 문제 해결하는 데 도움이 안되는 경우가 많다. 이 논문에서는 DB에 퍼포먼스 저하 문제가 생겼을 경우 보다 유용하고 상황의 맥락에 맞는 답변을 제시하는 LLM 시스템인 Panda를 구축해보고, 그것을 구성하는 컴포넌트와, 성능에 관해서 설명하고 있다.

기존 DB 퍼포먼스 저하 디버깅을 자동화하기 위해서는 메트릭과 로그를 통해서 원인을 식별하고, 필요한 튜닝 포인트를 조절하는 복잡한 모델을 구축해야 하는 반면 LLM은 자연어 문답을 통해 쉽게 디버깅 포인트에 다가가는 도구가 될 수 있다. 그러나 gpt-4 등의 pre-trained LLM을 db 퍼포먼스 트러블 슈팅에 바로 적용했을 경우 한계점은 크게 두 가지이다.

  • db의 유스케이스와 상황에 따라 크게 달라지는 고맥락 작업
  • 구조화되어 있지 않은 로그, 트러블슈팅 문서, db 메트릭 등의 여러 포맷의 데이터를 다루는 멀티 모달을 요하는 점

위 그림은 같은 질의에 대한 gpt-4와 panda의 응답을 비교한 것이다. gpt는 어느 상황에나 맞는 보편적인 어드바이스를 제공하고 있지만 숙련된 DBE라면 이미 잘 알고 있을 것이기 때문에 gpt의 응답은 가치가 없다고 할 수 있다. 로보틱스 등과 같은 다른 도메인에서도 이런 문제는 똑같이 존재한다.

외부의 맥락을 프롬프트로 전달하기 위해서 관련된 외부 문서를 찾는 검색 기능을 LLM과 결합한 기법인 Retreval Augmented Generation(RAG)이 등장했지만 여전히 메트릭 등의 멀티모달 데이터를 RAG로 전달하는 것은 쉬운 일은 아니다.

실제 상황에서 llm이 적절한 맥락을 파악하고 유용한 해답을 내놓기 위해서 필요한 조건으로 이 논문은 아래 4가지를 제시하고 있다.

  • Grounding: 자연어로 되어 있는 유저의 질의에 대해서 적절한 로그, 과거 티켓, 트러블슈팅 문서, 메트릭 등을 제시할 수 있어야 한다
  • verification: 생성된 응답을 확인하고 유저가 확인할 수 있는 출처를 달아야 한다
  • affordance: 생성된 지시가 실행가능할 것일 경우, 시스템은 그 결과를 예측하고 알릴 수 있어야 한다
  • Feedback: 유저에게 피드백을 받고, 다음 응답 생성에 활용할 수 있어야 한다

아키텍쳐

위 속성을 만족시키기 위해 panda의 아키텍쳐는 아래와 같이 5 가지 컴포넌트로 구성되어 있다. 모든 메커니즘은 자연어 인터페이스를 기반으로 작동한다.

QVA

먼저 유저가 던지는 질의는 QVA를 통과하게 된다. QVA는 질의가 panda의 목적인 DB 퍼포먼스 디버깅과 관계 있는지 여부를 판단하고, 관계 없다고 생각되면 요청을 거부한다. 단순히 응답을 거부하는 것으로 끝나지 않고 AWS 서비스 문서를 검색하고 질의와 관계있는 문서를 제시한다. 문서 검색에는 RAG를 사용한다. 유저 질의의 벡터 값을 트러블슈팅 문서의 벡터와 비교하여, 문턱값을 넘는 가장 높은 점수를 가진 문서를 제시해준다.

Grounding

Grounding mechanism에서는 관계 있는 문서와 telemetry-2-text를 통해 contextual information을 모아 프롬프트를 보강한다. panda는 컨텍스트를 크게 global과 local, 두가지로 나눈다. global은 트러블 슈팅 문서와 히스토리 티켓 등 모든 케이스가 공통으로 사용하는 컨텍스트이다. Local context는 해당 db의 메트릭과 로그 등 케이스에 한정된 컨텍스트이다.

아래 세 가지 컴포넌트로 구성되어 있다.

  • Document Retriever
  • QVA에서 사용한 것과 동일한 관련도 검색을 하여 문서를 수집한다. 트러블 슈팅 문서와 CS 티켓이 검색에 사용된다. 트러블 슈팅 문서는 도메인 전문가가 쓴 2~4 페이지 짜리 문서이며, 예상 원인, 코너 케이스, 조치 등의 섹션으로 구조화되어 있다. CS 티켓 문서는 명확한 질문과 검증된 대답으로 이뤄진 짧은 Q/A 쌍이다.
  • Feature Extractor
  • 먼저, DB에서 뽑아낼 수 있는 메트릭의 이름과 설명을 갖고, 위에서 검색된 문서를 참조해 가며 상위 K (K=3) 개의 메트릭을 선별한다. 선별된 메트릭의 데이터를 살펴보고, change point detection algorithm을 사용해 메트릭의 베이스라인과 문제 영역을 나눈다. 숙련된 DBA와 마찬가지로 각 메트릭의 계절성, 평균, p95, 상관계수등을 집계, 추출한다.
  • ’칼럼에 인덱스를 추가하시오’ 등과 같은 응답을 제시하기 위해서는 메트릭만으로는 충분치 않다. panda에서는 이상 징후가 한번이라도 있었던 모든 쿼리의 SQL문과, DB의 스키마도 확인하여 feature로 만든다.
  • Context Aggregator
  • 위에서 추출된 feature들은 json 텍스트의 형태로 저장되고 결합된다. LLM 프롬프트로 입력할 때에 구조화가 안된 텍스트에 비해서 json 포맷팅이 더 나은 성능을 보였다고 한다. (bullet point, numbered 등 다르게 구조화를 해도 비슷한 성능을 보였다고 한다.) llm의 프롬프트 사이즈는 한계가 있으므로, 문서를 여러 개의 청크로 나누고, 그 중 가장 관련성이 높은 청크 3개와 가장 문제시된 쿼리 3개만을 선별하여 프롬프트로 만든다.

Feedback

사용자의 피드백은 시스템 성능을 꾸준히 개선시키는 데 좋은 영향을 준다. panda는 유저에게 ‘도움이 됨’, ‘도움이 안됨’ 피드백을 받을 수 있도록 구현되어 있다. 피드백을 받은 질의와 응답 쌍은 벡터 스토어에 저장된다. 응답 생성을 시작하기 전에, 피드백 시스템은 해당 질의와 유사한 질의의 응답 중 도움이 된 응답과 도움이 안된 응답 각각 1~3 개를 검색해 컨텍스트에 집어넣는다. 인용 연구에 따르면 이런 few-shot in-context learning 테크닉이 응답 퀄리티를 상당히 향상시킨다고 한다.

Verification

응답을 검증하는 것은 자연어 inference 태스크로 취급되어, 같은 pre-trained LLM을 다시 사용한다. 생성된 응답(hypothesis)를 문서와 메트릭(premise)와 비교해 accept 판정이 안나올 경우 응답을 재생성한다. K번 재시도해도 여전히 accept되지 않을 경우는 응답 없이 관련 문서만을 제시한다.

응답이 통과될 경우, 근거 문서를 문장 단위로 쪼개고 그 중 가장 관련도가 높은 부분을 하이라이트해 근거로 제시한다.

Affordance

제시한 수정사항이 DB 성능에 미칠 변화를 예측하는 데 이 논문은 크게 두 가지 방법을 제시한다.

  • general (부정확함) — 검색된 문서 및 티켓에서 DB가 어떤 영향이 있었는지를 응답
  • specific — 외부 모델을 통해서 성능 변화를 예측하기 (인용된 선행 연구에서 만든 외부 모델을 예로 들었다)

panda는 주로 전자를 사용하고 있지만 일부 중요한 액션은 간단한 통계적 행동 모델을 써서 성능 지표를 예측하고, 위험한 조치(drop table, isolation level 조정 등)는 빨간 색으로 강조하는 등의 장치가 있다고 밝히고 있다. 또한 행동 모델의 범위를 조금씩 개선하는 중이라고 대답했다.

평가

gpt-3.5를 베이스 모델로 사용하여 구축한 panda를 gpt-4와 성능 비교하는 실험을 진행했다. 임베딩은 text-embedding-ada-002를 사용했다고 한다. Aws aurora postgres와 aurora mysql의 2.5K 개의 문서, 6.25M개의 토큰을 검색하였고, 최근 7일, resolution 1분의 메트릭 250 개를 사용하였다. Performance insight 유저들이 가장 자주 질문하는 50개의 항목을 쿼리로 사용하였다.

평가 방법은 DB에 어느 정도 정통하느냐에 따라 사용자를 세 군으로 나누고, 각각 신뢰성, 이해도, 유용함 면에서 1 또는 0의 점수를 주도록 하였다.

결과는 아래와 같은데, 아래 표에서 panda가 gpt-4 대비 모든 군에서 높은 성능을 보여주고 있음을 알 수 있다.

후속 연구 방향

이 논문에서는 아래와 같은 개선 가능한 후속 과제를 제시하고 있다.

  • panda는 많은 부분에서 RAG를 이용하고 있는데, 사용하고 있는 임베딩 모델과 retriever function(cosine distance)가 도메인 특화 분야에서 개선의 여지가 있다
  • 다른 형태의 모달리티 (e.g. 스크린샷, 코드 스니펫, 텍스트)를 효과적으로 처리하고 있지 못하다
  • 메트릭 데이터는 llm에서 잘 학습되고 있지 않다. panda에서는 메트릭 데이터를 읽고 자연어로 설명하는 접근이 가장 효과적인 것으로 파악하고 있고, 향후 개선이 기대된다
  • 검증과 출처 면에서 다른 LLM과 마찬가지로 개선
  • LLM은 수학 계산에 약한 모습을 보이는데, affordance 면에서 이 부분이 문제가 되고 있다. LLM이 수학 계산 등을 위해 외부 툴을 사용할 수 있도록 하는 연구가 활발히 진행되고 있지만 아직 초기 단계로, panda도 affordance 단계에서 외부 모델을 사용하는 부분이 있어 향후 개선이 기대된다

--

--