LLM-NER: LoRA+ Fine-Tuning으로 Named Entity Recognition 성능 향상
LLM-NER: Advancing Named Entity Recognition with LoRA+ Fine-Tuned Large Language Models
TL;DR Highlight
LoRA+로 LLM을 파인튜닝해서 NER(개체명 인식) 성능을 끌어올리는 방법론 논문.
Who Should Read
텍스트에서 인물명, 기관명, 날짜 등을 자동 추출하는 NER 파이프라인을 구축 중인 NLP 개발자. 특히 적은 리소스로 LLM을 파인튜닝해 정보 추출 성능을 높이려는 ML 엔지니어.
Core Mechanics
- LoRA+(LoRA의 개선 버전, 학습률을 레이어별로 다르게 설정해 수렴 속도를 높인 기법)를 NER 태스크에 적용해 기존 LoRA 대비 더 나은 파인튜닝 효율을 달성
- LLM을 NER용으로 파인튜닝할 때 전통적인 BERT 계열 모델을 능가하는 성능을 목표로 설계
- NER 특화 instruction 포맷으로 학습 데이터를 구성해 LLM이 엔티티 타입을 정확히 구분하도록 유도
- 파라미터 효율적 파인튜닝(PEFT) 방식이라 전체 모델 가중치를 업데이트하지 않아도 되므로 GPU 메모리 부담이 적음
- CoNLL-2003 등 표준 NER 벤치마크 데이터셋으로 검증
Evidence
- 논문 제목 기준 LoRA+ 파인튜닝이 기존 NER 베이스라인 대비 F1 스코어 개선을 주장 (구체적 수치는 본문 참조 필요)
- PEFT 방식 적용으로 전체 파라미터 대비 1~5% 수준의 파라미터만 학습해 메모리 효율 확보
- CoNLL-2003 등 표준 벤치마크에서 BERT 계열 모델과 비교 실험 수행
How to Apply
- CoNLL 포맷의 NER 데이터셋을 instruction-tuning 형식(예: '다음 문장에서 인물명, 기관명, 장소명을 추출하세요')으로 변환한 뒤 LoRA+ 설정으로 파인튜닝하면 된다.
- Hugging Face PEFT 라이브러리에서 LoRAConfig의 learning_rate를 레이어별로 다르게 설정하는 LoRA+ 방식으로 바꾸면 기존 LoRA 파인튜닝 코드를 거의 그대로 재사용할 수 있다.
- 도메인 특화 NER(의료, 법률, 금융)이 필요한 경우, 도메인 말뭉치로 같은 방식으로 파인튜닝하면 범용 모델보다 높은 정밀도를 기대할 수 있다.
Code Example
snippet
from peft import LoraConfig, get_peft_model
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "meta-llama/Llama-2-7b-hf" # 또는 다른 LLM
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name, load_in_8bit=True, device_map="auto")
# LoRA+ 스타일: lora_alpha를 높여 학습률 보정 효과
lora_config = LoraConfig(
r=16,
lora_alpha=32,
target_modules=["q_proj", "v_proj"],
lora_dropout=0.05,
bias="none",
task_type="CAUSAL_LM"
)
model = get_peft_model(model, lora_config)
model.print_trainable_parameters()
# 출력 예: trainable params: 4,194,304 || all params: 6,742,609,920 || trainable%: 0.062
# NER용 instruction 포맷 예시
ner_prompt = """아래 문장에서 개체명을 추출하세요. 형식: [TYPE: entity]
문장: Apple의 CEO Tim Cook이 서울에서 발표를 진행했다.
답변:"""
# 기대 출력: [ORG: Apple] [PER: Tim Cook] [LOC: 서울]Terminology
NERNamed Entity Recognition의 약자. 텍스트에서 인물명, 기관명, 날짜 등 의미 있는 고유 명사를 자동으로 찾아내는 기술. 뉴스에서 '삼성전자'를 회사명으로, '이재용'을 인물명으로 태깅하는 것.
LoRA모델 전체를 다시 학습하지 않고 작은 행렬(어댑터)만 추가해 학습하는 파인튜닝 기법. 원본 모델은 그대로 두고 얇은 필터만 씌우는 것과 비슷.
LoRA+LoRA의 개선판. A 행렬과 B 행렬에 서로 다른 학습률을 적용해 더 빠르고 안정적으로 수렴하도록 개선된 방식.
PEFTParameter-Efficient Fine-Tuning의 약자. 수십억 개 파라미터 중 극히 일부만 학습해 적은 GPU 메모리로도 파인튜닝이 가능하게 하는 방법들의 총칭.
F1 스코어정밀도(맞다고 한 것 중 실제로 맞은 비율)와 재현율(실제 정답 중 맞힌 비율)을 합산한 지표. NER에서 엔티티를 얼마나 정확하게 잘 찾았는지 평가할 때 씀.
instruction-tuningLLM에게 '이런 지시를 하면 이렇게 답해라'는 예제를 수천 개 보여주며 학습시키는 방식. 챗GPT가 질문에 잘 답하게 된 것도 이 방식 덕분.