-
LoRA 기반 LLaMA 파인튜닝 실습 가이드기술과 산업/AI 2025. 5. 22. 13:06728x90
이 글은 LoRA를 활용해 LLaMA 기반 언어 모델을 효율적으로 파인튜닝하는 실습 가이드입니다. Hugging Face peft 라이브러리를 중심으로 코드를 제공하며, 실전에서 바로 활용 가능한 구조로 구성했습니다.
실습 목표
- LLaMA 기반 모델에 LoRA를 적용
- 텍스트 생성 태스크로 파인튜닝 진행
- peft 라이브러리를 이용한 구조적 학습
1단계. 환경 준비
pip install transformers accelerate datasets peft bitsandbytes
⚠️ bitsandbytes는 GPU 환경에서만 작동합니다. CPU-only 환경에서는 학습이 불가합니다.
2단계. 모델 및 토크나이저 로드
from transformers import AutoTokenizer, AutoModelForCausalLM base_model_id = "decapoda-research/llama-7b-hf" # 또는 Hugging Face Hub에서 접근 가능한 모델 tokenizer = AutoTokenizer.from_pretrained(base_model_id) model = AutoModelForCausalLM.from_pretrained( base_model_id, load_in_8bit=True, # 메모리 최적화 device_map="auto" )
로컬에서 LLaMA를 사용하려면 권한이 필요하며, Hugging Face에 신청 후 transformers-cli login으로 토큰 인증을 받아야 합니다. 권한이 없는 경우 TinyLLaMA나 OpenLLaMA 대체 가능.
3단계. LoRA 구성 및 적용
from peft import LoraConfig, get_peft_model, TaskType lora_config = LoraConfig( r=8, lora_alpha=16, target_modules=["q_proj", "v_proj"], # LLaMA 구조에 맞는 계층 lora_dropout=0.05, bias="none", task_type=TaskType.CAUSAL_LM ) model = get_peft_model(model, lora_config) model.print_trainable_parameters()
출력 예시:
trainable params: 2,359,296 || all params: 6,738,290,688 || trainable%: 0.03%
4단계. 학습 데이터셋 불러오기
from datasets import load_dataset dataset = load_dataset("Abirate/english_quotes") # 간단한 예제용 데이터셋
데이터 포맷 확인:
print(dataset["train"][0])
5단계. 데이터 전처리
def tokenize_function(example): return tokenizer( example["quote"], padding="max_length", truncation=True, max_length=128 ) tokenized_dataset = dataset.map(tokenize_function, batched=True)
6단계. Trainer 구성 및 파인튜닝
from transformers import TrainingArguments, Trainer training_args = TrainingArguments( output_dir="./lora-llama", per_device_train_batch_size=4, gradient_accumulation_steps=2, num_train_epochs=3, save_steps=100, logging_dir="./logs", fp16=True, save_total_limit=1 ) trainer = Trainer( model=model, args=training_args, train_dataset=tokenized_dataset["train"] ) trainer.train()
7단계. 모델 저장 및 추론
# LoRA 가중치만 저장 model.save_pretrained("./lora-llama-adapter") tokenizer.save_pretrained("./lora-llama-adapter")
추론 예시:
input_ids = tokenizer("The future of AI is", return_tensors="pt").input_ids.cuda() outputs = model.generate(input_ids, max_new_tokens=50) print(tokenizer.decode(outputs[0], skip_special_tokens=True))
예상 학습 시간 및 리소스
- GPU 필요: 최소 A100 또는 T4 이상 권장
- 메모리 사용량: LoRA 덕분에 VRAM 16~24GB로 가능 (8bit + Adapter만 학습)
- 학습 시간: 데이터셋 크기, 에폭 수에 따라 수십 분~수 시간
728x90'기술과 산업 > AI' 카테고리의 다른 글
LLM 학습 시리즈 2화 – LLM을 똑똑하게 만드는 법: 감독학습(SFT)과 그 한계 (0) 2025.05.23 LLM 학습 시리즈 1화 – LLM 학습의 시작: 사전학습(Pretraining)이란 무엇인가? (5) 2025.05.22 LoRA 실무 적용 가이드 – Hugging Face 기반 활용법과 주의사항 (1) 2025.05.22 LoRA 거대 언어 모델을 가볍게 학습시키는 마법 같은 방법 (0) 2025.05.22 Gradio 실전 시리즈 8화 – 업로드, 다운로드, 저장 경로 완벽 정리 (2) 2025.05.21