@ 상황 설명 : 지금껏 만든 RAG 학습용 데이터를 활용해서 파인튜닝을 수행해보자.
@ 활용 데이터 : 허깅페이스 "iamjoon/klue-mrc-ko-rag-dataset"
@ 시스템 프롬프트 : "당신은 검색 결과를 바탕으로 질문에 답변해야 합니다."
@ 데이터 확인 및 format 변환
# 데이터 type 분포
# OpenAI format으로 데이터 변환 필요
# 변환된 데이터셋 저장
@ 모델 로드 및 템플릿 적용
@ lora, sftconfig 설정
- lora_alpha: LoRA(Low-Rank Adaptation)에서 사용하는 스케일링 계수를 설정합니다. LoRA의 가중치 업데이트가 모델에 미치는 영향을 조정하는 역할을 하며, 일반적으로 학습 안정성과 관련이 있습니다.
- lora_dropout: LoRA 적용 시 드롭아웃 확률을 설정합니다. 드롭아웃은 과적합(overfitting)을 방지하기 위해 일부 뉴런을 랜덤하게 비활성화하는 정규화 기법입니다. 0.1로 설정하면 학습 중 10%의 뉴런이 비활성화.
- r: LoRA의 랭크(rank)를 설정합니다. 이는 LoRA가 학습할 저차원 공간의 크기를 결정합니다. 작은 값일수록 계산 및 메모리 효율이 높아지지만 모델의 학습 능력이 제한될 수 있습니다.
- bias: LoRA 적용 시 편향(bias) 처리 방식을 지정합니다. "none"으로 설정하면 편향이 LoRA에 의해 조정되지 않습니다. "all" 또는 "lora_only"와 같은 값으로 변경하여 편향을 조정할 수도 있습니다.
- target_modules: LoRA를 적용할 특정 모듈(레이어)의 이름을 리스트로 지정합니다. 예제에서는 "q_proj"와 "v_proj"를 지정하여, 주로 Self-Attention 메커니즘의 쿼리와 값 프로젝션 부분에 LoRA를 적용합니다.
- task_type: LoRA가 적용되는 작업 유형을 지정합니다. "CAUSAL_LM"은 Causal Language Modeling, 즉 시퀀스 생성 작업에 해당합니다. 다른 예로는 "SEQ2SEQ_LM"(시퀀스-투-시퀀스 언어 모델링) 등이 있습니다.
@ 전처리 함수
collate_fn(batch) 함수는 자연어 처리 모델 학습을 위해 데이터를 전처리하는 역할을 수행합니다. 이 함수는 배치 내의 데이터를 처리하여 모델이 사용할 수 있는 입력 형식으로 변환합니다.
먼저, 각 샘플의 메시지에서 개행 문자를 제거하고 필요한 정보만 남깁니다. 정리된 메시지로 텍스트를 구성하고 이를 토큰화하여 input_ids와 attention_mask를 생성합니다. 이후 assistant 답변 부분을 찾아 해당 범위에 레이블을 설정합니다. 이 범위를 제외한 나머지 위치는 -100으로 설정하여 손실 계산에서 제외되도록 합니다.
최종적으로, 배치 내 모든 샘플의 길이를 동일하게 맞추기 위해 패딩 작업을 수행합니다. 이 과정에서 입력 데이터에는 패딩 토큰 ID를 추가하고, 어텐션 마스크에는 0을 추가하며, 레이블에는 -100을 추가합니다. 모든 데이터는 PyTorch 텐서로 변환되어 반환됩니다.
@ 학습
...
@ 테스트 데이터 준비
@ 파인튜닝 모델 테스트
-> # 파인튜닝 모델이 gpt4o 정답(label)과 비슷한 답변(response)를 하고 있다.
@ 기본 모델 테스트
-> 기본 모델의 단점(vs 파인튜닝 모델)
1. ref 번호를 달지 않는다.
2. 답변이 명확하지 않고 장황하다.
'LLM 파인튜닝' 카테고리의 다른 글
[ai100-6T] [RAG 모델 평가1] LLM 기반 모델 평가(evaluation) (1) | 2025.08.26 |
---|---|
[한국어 데이터셋] 허깅페이스 주요 한국어 파인튜닝 데이터셋 종류 (0) | 2025.08.26 |
[ai100-4T] [RAG 학습 데이터 생성2] no aswer 질문 데이터 만들기 (0) | 2025.08.25 |
[ai100-3T] [RAG 학습 데이터 생성1] 다수의 문서를 인용하는 질문 데이터 만들기 (0) | 2025.08.24 |
[ai100-2T] [경제 뉴스 예측 파인튜닝 모델 만들기2] 허깅페이스 trl로 경제 뉴스 llama3 파인튜닝 (3) | 2025.08.15 |