리뷰/논문 리뷰

[Paper Review] Fine-Tuning and Prompt Optimization: Two Great Steps that Work Better Together

백악기작은펭귄 2024. 10. 26.
반응형
TL;DR
스탠퍼드 연구진은 복잡한 다단계 NLP 작업에서 모듈형 언어 모델 파이프라인의 최적화를 위해 'BetterTogether' 알고리즘을 제안했다. 이 알고리즘은 프롬프트 최적화(Prompt Optimization)와 가중치 조정(Fine-Tuning)을 번갈아 수행하여 멀티턴 QA, 수학문제 해결, 테이블 데이터 분류 태스크에서 최대 78%의 성능 향상을 달성했다. BFRS와 LoRA 기법을 활용해 프롬프트 예시를 최적화하고 모델을 미세 조정함으로써, 제한된 학습 데이터에서도 높은 정확도의 NLP 시스템 구축이 가능해졌다.

Fine-Tuning and Prompt Optimization: Two Great Steps that Work Better Together

자연어 처리(NLP) 분야에서 언어 모델(Language Model, LM)은 인간의 언어 이해와 생성 능력을 크게 향상시켜 왔다. 그러나 복잡한 다단계 작업에서는 단일 모델보다는 여러 LM 모듈을 결합해 모듈형 파이프라인을 구성하는 방식이 더 적합하다. Stanford의 연구진은 Soylu, D. et al., 2024에서 이러한 모듈형 LM 파이프라인을 최적화하기 위해 BetterTogether라는 새로운 알고리즘을 제안했다.

 

이 논문은 LM의 가중치 조정(Fine-Tuning)프롬프트 최적화(Prompt Optimization)를 번갈아 수행함으로써 성능을 극대화하는 전략을 소개하며, 이를 다양한 실험을 통해 검증했다.

 

연구 배경

현대 NLP 시스템에서는 복잡한 문제를 해결하기 위해 Retrieval Augmented Generation(RAG)과 같은 복합 모듈 파이프라인이 널리 사용되고 있다. RAG는 크게 Retrieval 모듈Generation 모듈의 두 가지 모듈로 구성되며, 각 모듈은 특정 작업에 특화된 별도의 언어 모델을 활용하여 정보를 검색하고 답변을 생성한다.

 

이러한 구조는 높은 유연성을 제공하지만, 중간 라벨이나 학습 신호가 부족해 전체 파이프라인의 종단 간 최적화(end-to-end optimization)가 어렵다는 단점이 있다. 각 모듈이 독립적으로 작동하는 특성상, 개별 모듈이 최적화되지 않을 경우 전체 시스템 성능이 저하될 가능성이 존재한다. 이에 연구진은 이러한 문제를 해결하고자, 가중치 조정과 프롬프트 최적화를 결합해 모듈형 LM 파이프라인의 성능을 극대화하는 BetterTogether 알고리즘을 제안했다.

 

BetterTogether의 Pseudo Code

 

BetterTogether는 프롬프트 최적화와 가중치 조정을 번갈아 수행함으로써 파이프라인 전반에 걸친 성능 향상을 목표로 한다.

 

BetterTogether 알고리즘의 세부 절차

BetterTogether 알고리즘은 프롬프트와 가중치 최적화를 교대로 수행함으로써 최종 성능을 극대화하는 구조를 가진다. 각 단계를 자세히 설명하면 다음과 같다.

 

1. 프롬프트 최적화 (Optimize Prompts)

BetterTogether 알고리즘의 첫 번째 단계는 각 모듈에 맞는 최적의 few-shot 예시 조합을 선택하여 프롬프트 템플릿을 최적화하는 것이다. 이 과정은 각 모듈에 특화된 예시 조합을 통해 모델이 주어진 작업을 보다 정확하고 효율적으로 수행할 수 있도록 돕는다. 초기 프롬프트 최적화에는 DSPy 라이브러리의 BootstrapFewShot Random Search(BFRS) 알고리즘이 사용된다. BFRS는 학습 데이터 내의 질문-답변 페어를 활용하여 최적의 few-shot 예시 조합을 자동으로 탐색하는 방법이다.

 

BFRS는 먼저 데이터를 훈련 세트검증 세트로 나누어 작업을 시작한다. 훈련 세트로부터 다양한 질문-답변 페어를 랜덤으로 선택하여 조합함으로써 few-shot 예시 조합을 만들고, 검증 세트를 통해 각 조합이 얼마나 효과적인지를 평가한다. 이를 통해, 훈련 세트에서 생성된 예시 조합이 검증 세트의 다양한 질문에 대해 얼마나 일관되게 높은 성능을 보이는지를 검토할 수 있다.

 

각 조합을 평가하기 위해 BFRS는 우선 훈련 세트 내에서 다양한 질문-답변 예시 조합을 만들어낸다. 이러한 조합들은 해당 모듈의 프롬프트에 포함될 few-shot 샘플의 후보로서 생성된 것이다. 예시 조합은 모델이 검증 세트 내 질문에 대해 답변을 생성할 때 사용하는 프롬프트로 설정되며, 모델의 답변 정확도를 바탕으로 조합의 성능을 평가한다. 이를 통해 각 예시 조합이 검증 세트의 모든 질문에서 얼마나 일관되게 좋은 성능을 내는지를 측정한다.

 

평가 결과, 성능이 가장 뛰어난 few-shot 예시 조합이 최종적으로 선택되며, 이 조합이 프롬프트 템플릿의 최적화된 예시로 사용된다. 이렇게 선택된 조합은 프롬프트 내에 포함되어, 모델이 더 높은 성능을 발휘할 수 있도록 한다.

 

BFRS(BootstrapFewShot Random Search)란?

BFRS는 학습 데이터가 부족한 상황에서도 모델이 주어진 작업을 이해하고 수행할 수 있도록 다양한 few-shot 예시 조합을 샘플링하여 최적의 조합을 찾는다. 이를 통해 모델의 few-shot 학습 성능을 극대화할 수 있으며, 특히 다단계 작업이나 복잡한 문제에서 일관된 성능을 유지하는 데 효과적이다.

 

2. 가중치 조정 (Fine-Tune Weights)

BetterTogether 알고리즘의 두 번째 단계인 가중치 조정(Fine-Tune Weights) 단계에서는 먼저 프롬프트 최적화 단계에서 BFRS가 생성한 few-shot 예시를 바탕으로 학습 데이터를 수집한다. 이 학습 데이터는 각 모듈이 프롬프트를 바탕으로 생성한 입력-출력 쌍을 포함하며, 모델이 주어진 작업을 보다 잘 수행하도록 돕는 역할을 한다. 이렇게 수집된 데이터는 프롬프트 최적화 과정에서 BFRS가 검증한 고품질 예시 조합을 바탕으로 수집된 데이터이기 때문에, 이러한 데이터는 가중치 조정을 위한 효과적이고 신뢰성 있는 학습 자료로 활용될 수 있다.

 

이후 모델의 가중치를 조정하는 방식으로 Low-Rank Adaptation(LoRA)을 사용한다. LoRA는 모델 파라미터를 효율적으로 조정할 수 있는 기법으로, 특히 큰 언어 모델을 fine-tuning할 때 사용된다. LoRA 방식은 모델의 파라미터를 모두 조정하는 대신, 일부 중요한 파라미터를 중심으로 미세 조정함으로써 학습 효율성을 높인다. 이 방식 덕분에 대규모 모델의 전체 파라미터를 조정할 때 발생하는 높은 연산 비용을 줄이면서도 모델이 학습 데이터에 최적화되도록 조정할 수 있다.

 

마지막으로, 이렇게 수집된 학습 데이터는 각 모듈에 맞추어 개별적으로 적용된다. 이를 통해 각 모듈은 주어진 작업의 맥락에 따라 특화된 방식으로 fine-tuning되며, 모든 모듈이 동일한 방식으로 학습되는 대신, 각 모듈이 맡은 작업의 특성에 맞게 가중치가 조정된다. 예를 들어, 질문을 분석하는 모듈은 질문 분석에 특화된 학습 데이터를 통해, 정보 검색 모듈은 검색된 정보에서 핵심 내용을 정확히 추출할 수 있도록 최적화된 학습 데이터를 통해 개별적으로 학습된다. 이렇게 조정된 모델은 각 모듈이 개별 작업에서 최상의 성능을 발휘하게 하여 파이프라인 전체에서 요구되는 작업을 보다 정확하게 수행할 수 있도록 하며, 모듈 간의 성능 일관성도 함께 높아진다.

 

3. 프롬프트 재최적화 (Re-Optimize Prompts)

가중치 조정이 완료된 후, 프롬프트 재최적화 (Re-Optimize Prompts) 단계에서는 가중치 조정 이후에 모델 성능이 향상된 점을 반영하여 프롬프트 템플릿을 다시 세밀하게 조정하는 작업이 이루어진다. BetterTogether 알고리즘은 초기 프롬프트 최적화 단계에서 가장 적합한 few-shot 예시 조합을 선택했지만, 가중치 조정 후 모델의 성능이 개선됨에 따라 이 프롬프트가 최적의 성능을 발휘하지 못할 가능성이 있다. 따라서 재최적화 단계에서는 가중치 조정 이후의 모델 출력을 평가하여 초기 예시 조합을 필요한 부분에서 수정하고 조정한다.

 

가중치 조정 후 모델이 생성한 새로운 출력은 이전보다 일관성과 정확도가 높아졌으므로, 이를 바탕으로 프롬프트 템플릿을 재구성할 수 있다. 가중치 조정 후의 성능에 맞춰 조정된 프롬프트는 모델이 더욱 최적화된 출력을 생성하도록 돕는 중요한 역할을 한다. 이후 검증 세트를 사용하여 조정된 프롬프트가 다양한 질문에 대해 일관된 성능을 유지하는지 평가한다. 이 과정에서 최적의 few-shot 예시 조합이 여전히 높은 성능을 발휘하는지를 확인하고, 최종적으로 조정된 프롬프트 템플릿을 전체 파이프라인에 적용하여 모델이 모든 모듈에서 일관성과 정확도를 최대로 발휘하도록 한다.

 

이 재최적화 과정을 통해 BetterTogether 알고리즘은 각 모듈이 가중치 조정 이후의 성능 향상을 충분히 반영한 프롬프트 템플릿을 갖추게 되며, 이를 통해 파이프라인의 정확성과 일관성을 한층 더 강화할 수 있다.

 

실험 설정 및 결과

연구진은 BetterTogether 알고리즘의 성능을 다중 단계 질문 응답(Multi-turn QA), 수학적 추론, 분류 작업 등의 다양한 NLP 과제에서 평가했다. 실험에는 Mistral-7b, LLaMA-2-7b, LLaMA-3-8b 등의 모델이 사용되었으며, BetterTogether 알고리즘의 효과는 다음과 같은 데이터셋을 통해 검증되었다.

  • HotPotQA: 다중 단계 추론이 요구되는 질문 응답 데이터셋으로, 모델이 여러 단계를 통해 정답을 찾도록 설계되었다.
  • GSM8K: 초등 수준의 수학 문제 데이터셋으로, 단계별 추론 능력을 평가할 수 있다.
  • Iris: 클래식한 분류 작업 데이터셋으로, 꽃의 형태적 특징을 기반으로 종을 분류한다. 테이블 형태의 데이터에서의 성능을 확인하기 위해 사용되었다.

 

Main Results

 

결과 요약:

  • BetterTogether 알고리즘은 HotPotQA, GSM8K, Iris 데이터셋에서 기존의 단일 최적화보다 최대 78%까지 성능이 향상되었다.
  • 특히, HotPotQA와 같은 복잡한 다단계 작업에서는 BetterTogether 전략이 큰 성능 향상을 보였으며, 프롬프트 최적화와 fine-tuning을 함께 수행하는 것이 fine-tuning 단일보다 효과적임을 확인했다.
  • BFRS와 LoRA의 결합은 NLP 시스템이 기존 데이터의 제한을 극복하고 다양한 과제를 더 정확하게 수행할 수 있도록 했다.

 

한계점 및 향후 과제

BetterTogether 알고리즘은 NLP 파이프라인의 성능을 극대화할 수 있는 유망한 접근법이지만, 몇 가지 한계점이 존재한다.

 

1. 다양한 작업과 모델에 대한 일반화 한계

BetterTogether가 모든 작업과 모델에서 동일한 성능 향상을 보장하지는 않는다. 예를 들어, 특정 작업에서는 프롬프트 최적화만으로도 충분한 성능을 발휘할 수 있으며, 다른 작업에서는 가중치 조정이 더 중요한 역할을 할 수 있다. 이를 해결하려면 작업별로 최적의 최적화 순서를 찾기 위한 추가 연구가 필요하다.

 

2. 컴퓨팅 자원의 높은 요구

BetterTogether는 프롬프트와 가중치 최적화를 번갈아가며 수행하기 때문에 컴퓨팅 자원과 시간 소요가 크다. 이로 인해 학습 시간이 길어질 수 있다. 논문에서는 이를 LoRA와의 결합을 통해 일부 파라미터만 미세 조정하여 효율성을 높이고자 하였으나 이로 충분한지에 대한 검증이 부족하다.

 

결론 및 기대

이 논문은 NLP 파이프라인의 가중치 조정과 프롬프트 최적화를 결합해 더 높은 성능을 달성할 수 있는 BetterTogether 알고리즘을 제안했다. 특히 BFRS는 모델에 최적의 few-shot 예시를 제공하는 데 유용하며, 내가 진행 중인 '느린학습자를 위한 쉬운글 번안 프로젝트'에서도 이 방식을 적용해 작업별 최적의 예시를 구성하는 데 큰 도움이 될 것으로 기대된다. 이를 통해 학습 데이터가 부족한 상황에서도 높은 성능을 달성할 수 있을 것이며, 보다 정교한 NLP 시스템을 구축할 수 있을 것으로 보인다.

반응형

댓글