서론
LLM은 인간과 유사한 자연어 처리 능력을 가지지만, 특정 도메인이나 작업에 최적화된 성능을 발휘하기 위해서는 추가적인 학습이 필요합니다.
이때 사용되는 기법이 SFT(Supervised Fine-Tuning)입니다. SFT는 방대한 양의 테스트 데이터를 기반으로 비지도 학습된 Base LLM이 가지는 언어 이해 능력을 특정 작업에 활용할 수 있도록 특화시켜 줍니다.
SFT를 통해 모델을 처음부터 학습시키는 것보다 훨씬 적은 데이터와 계산 자원으로도 만족할 만한 결과를 얻을 수 있습니다. 특히 gpt와 같은 LLM의 경우, 전체 데이터를 사용하여야 재학습하는 것은 계산적으로 비효율적이기 때문에 fine-tuning 기법은 매우 중요합니다.
SFT의 필요성
사전 훈련된 모델은 일반적인 언어 이해와 생성 능력을 갖추고 있지만, 특정 도메인에 특화된 지식이나 특정 작업에 대한 최적화가 부족할 수 있습니다. SFT를 통해 다음과 같은 요구사항을 충족할 수 있습니다.
- 도메인 맞춤형 조정: 특정 분야(예: 의료, 법률)에서의 전문 용어나 문맥을 이해하도록 모델을 조정합니다.
- 작업 특화: 특정 자연어 처리 작업(예: 감정 분석, 질의 응답)에서 최적의 성능을 발휘하도록 모델을 조정합니다.
- 성능 향상: 일반적인 사전 훈련 모델보다 특정 작업에서 더 높은 정확도를 달성할 수 있습니다
본 글에서는 SFT의 개념과 2가지 방법으로 SFT를 LLM에 적용하는 코드 예제를 다룹니다.
SFT(Supervised Fine-Tuning)란?
SFT(Supervised Fine-Tuning)은 사전 훈련된 언어 모델을 특정 작업이나 도메인에 맞게 조정하는 과정을 의미합니다.
이 과정은 supervised learning (지도 학습) 방식을 기반으로 하며, 주어진 라벨이 붙은 데이터셋을 사용하여 모델의 성능을 세밀하게 조정합니다. SFT는 모델이 특정 작업에서 더욱 높은 성능을 발휘하도록 돕는 중요한 과정입니다.
예를 들어, Pretrained 된 LLM이 있다고 가정해봅시다. 입력으로 "I can't log into my account. What should I do?"가 주어졌을 때, 모델은 "Try to reset your password using the 'Forgot Password' option."과 같이 간단하게 응답할 수 있습니다.
이제 고객 지원 서비스용 챗봇을 구축한다고 가정해 봅시다. 위의 답변이 올바를 수는 있지만, 고객 지원 답변으로서는 적절하지 않을 수 있습니다.
고객 지원 답변은 일반적으로 더 많은 공감, 다른 형식, 추가 연락처 정보, 또는 특정 지침에 맞는 내용이 요구되며, 이럴 때 지도 학습 기반 파인튜닝(supervised fine-tuning)이 필요합니다.
지도 학습 기반 파인튜닝을 통해, 모델은 고객 지원의 요구 사항에 맞게 조정될 수 있습니다.
예를 들어, 공감과 친절을 담은 답변을 제공하도록 학습하거나, 고객 지원 가이드라인에 맞게 추가적인 정보나 포맷을 반영하도록 조정할 수 있습니다.
이렇게 하면 챗봇이 더 나은 사용자 경험을 제공하고, 고객의 요구와 기대에 부응하는 답변을 생성할 수 있게 됩니다.
검증된 훈련 예제를 제공함으로써 모델은 질문이나 프롬프트에 더 잘 응답하는 방법을 배울 수 있습니다. 위의 예시에서는 모델에게 고객 지원의 공감 표현을 가르쳤습니다.
LLM에 파인튜닝을 적용하려는 목적은 다음과 같을 수 있습니다.
- 더 나은 답변 제공: 비즈니스 지침에 맞춘 보다 적절한 답변을 제공할 수 있습니다. 이는 위에서 설명한 바와 같이, 고객 지원과 같은 특정 요구 사항에 맞는 응답을 생성하는 데 도움을 줍니다.
- 새로운 특정/비공식 데이터 제공: 공개적으로 이용 가능한 데이터가 아닌 새로운 특정 데이터나 비공식 데이터를 제공하여, LLM 모델이 귀사의 특정 지식 기반에 맞게 조정됩니다.
- 새로운(보지 못한) 프롬프트에 대한 대응: 모델이 새로운 프롬프트나 질문에 응답할 수 있도록 학습시킬 수 있습니다. 이를 통해 모델이 예측할 수 없는 새로운 입력에 대해서도 적절한 답변을 생성할 수 있게 됩니다.
SFT의 장점과 단점
장점
- 도메인 특화 성능: 모델이 특정 도메인에 맞춘 전문적인 성능을 발휘할 수 있습니다.
- 자원 효율성: 사전 훈련된 모델을 기반으로 하므로, 처음부터 모델을 학습하는 것보다 효율적입니다.
- 빠른 적응: 다양한 비즈니스 요구를 충족할 수 있습니다.
단점
- 데이터 의존성: 고품질의 라벨링된 데이터가 필요합니다.
- 과적합 위험: 특정 데이터셋에 과적합될 수 있습니다.
- 훈련 비용: 대형 모델의 SFT는 상당한 계산 자원과 시간이 소요될 수 있습니다.
SFT 코드 예제
본 글에서는 가장 간단한 형태의 SFT 코드를 예시로 제공합니다.
SFT 학습을 위해서는 2가지가 필요합니다.
1. 학습을 위한 데이터셋
2. pretrained 된 LLM
아래 예시 코드에서는 학습 데이터 셋으로 OpenOrca-KO를 model로는 gemma2-2b-it를 사용하였습니다.
from transformers import AutoModelForCausalLM, AutoTokenizer
from datasets import load_dataset
from trl import SFTConfig, SFTTrainer, DataCollatorForCompletionOnlyLM
# 데이터 셋 로드
dataset = load_dataset("kyujinpy/OpenOrca-KO", split="train")
# 모델 및 토크나이저 로드
model = AutoModelForCausalLM.from_pretrained("google/gemma-2-2b-it")
tokenizer = AutoTokenizer.from_pretrained("google/gemma-2-2b-it")
# 모델 학습을 위한 데이터 셋 포맷 정의
def formatting_prompts_func(example):
output_texts = []
for i in range(len(example['instruction'])):
text = f"### Question: {example['instruction'][i]}\n ### Answer: {example['output'][i]}"
output_texts.append(text)
return output_texts
response_template = " ### Answer:"
collator = DataCollatorForCompletionOnlyLM(response_template, tokenizer=tokenizer)
# SFTTrainer 정의
trainer = SFTTrainer(
model,
train_dataset=dataset,
args=SFTConfig(output_dir="/tmp"),
formatting_func=formatting_prompts_func,
data_collator=collator,
)
# 학습
trainer.train()
결론
SFT(Supervised Fine-Tuning)는 사전 훈련된 LLM을 특정 도메인이나 작업에 맞게 조정하는 중요한 기술입니다. 이 기법을 통해 모델은 더 적은 데이터와 계산 자원으로도 특정 작업에 최적화된 성능을 발휘할 수 있습니다.
LLM의 경우 다양한 종류의 데이터로 훈련되므로 일반적으로 필요에 따라 답변을 통제해야 합니다. SFT는 LLM을 도메인 맞춤형 조정, 작업 특화를 목표로 하며, 이를 통해 고객 지원 같은 특정 요구 사항에 부합하는 더 나은 응답을 제공할 수 있습니다.
그러나 SFT를 위해서는 고품질의 라벨링된 데이터가 필요하고, 과적합이나 훈련 비용 같은 단점도 존재합니다.
하지만 이러한 단점에도 불구하고 SFT는 LLM을 효율적인 자원 활용과 특정 작업 성능 향상에 기여하는 중요한 기법으로 자리잡고 있습니다.
Reference
'딥러닝 > LLM' 카테고리의 다른 글
[논문리뷰] How Does Quantization Affect Multilingual LLMs? (0) | 2024.08.12 |
---|---|
LLM의 다양한 SFT 기법: Full Fine-Tuning, PEFT (LoRA, QLoRA) (0) | 2024.08.06 |
Gemma 2 (9B & 27B) Evaluation vs. Open/Closed-Source LLMs (0) | 2024.08.01 |
Pretraining LLMs (0) | 2024.07.31 |
데이콘 - 도배 하자 질의 응답 처리 후기 (0) | 2024.05.05 |