25

학습 트러블슈팅: 10가지 에러와 해결법

QLoRA 학습 실행

학습 목표

학습 중 발생하는 주요 에러를 빠르게 해결할 수 있다 에러 메시지에서 원인을 파악하는 방법을 안다

학습 트러블슈팅 TOP 10

1. CUDA Out of Memory

에러: RuntimeError: CUDA out of memory

해결 순서:
1. batch_size 줄이기 (4 -> 2 -> 1)
2. max_seq_length 줄이기 (1024 -> 512)
3. gradient_accumulation 올리기 (4 -> 8)
4. gradient_checkpointing=True 설정
5. torch.cuda.empty_cache() 호출
6. 더 작은 모델 사용

2. NaN Loss

에러: Loss = NaN

해결:
1. learning_rate 낮추기 (2e-4 -> 5e-5)
2. warmup_ratio 올리기 (0.03 -> 0.1)
3. max_grad_norm=0.3 설정
4. bf16 대신 fp16 사용 (또는 fp32)
5. 데이터에 비정상 값 있는지 확인

3. Loss가 안 줄어듦

증상: 1000 스텝 후에도 Loss가 2.5 이상

해결:
1. learning_rate 올리기 (2e-4 -> 5e-4)
2. LoRA r 올리기 (8 -> 16 -> 32)
3. target_modules에 MLP 추가
4. 데이터 형식 확인 (프롬프트 템플릿 적용됐는지)
5. pad_token 설정 확인

4. Tokenizer 관련 에러

에러: ValueError: Asking to pad but the tokenizer does not have a pad token

해결:
tokenizer.pad_token = tokenizer.eos_token
tokenizer.padding_side = "right"

5. 모델 로드 에러

에러: OSError: model.safetensors not found

해결:
1. 모델 이름 정확히 확인
2. HuggingFace 로그인: huggingface-cli login
3. 접근 권한 확인 (Llama는 Meta 승인 필요)
4. trust_remote_code=True 추가

6. W&B 연결 에러

에러: wandb.errors.CommError

해결:
1. wandb login 재실행
2. 오프라인 모드: WANDB_MODE=offline
3. report_to="none" 으로 비활성화

7. 학습이 너무 느림

예상: 1시간, 실제: 6시간

해결:
1. packing=True 설정 (짧은 샘플 합치기, 30-50% 빨라짐)
2. Unsloth 사용 (2x 속도)
3. bf16=True 확인
4. torch.compile() 사용 (PyTorch 2.0+)

8. 체크포인트에서 재개 실패

에러: checkpoint directory not found

해결:
trainer.train(resume_from_checkpoint="./output/checkpoint-500")
# 정확한 체크포인트 경로 지정 필요

9. 과적합 징후

징후: Train Loss 0.1, Eval Loss 1.5 (Gap > 1.0)

해결:
1. Early Stopping 사용:
   from transformers import EarlyStoppingCallback
   callbacks=[EarlyStoppingCallback(early_stopping_patience=3)]
2. weight_decay 올리기
3. 데이터 증강
4. LoRA dropout 올리기

10. 학습 후 답변 품질 저하

증상: 파인튜닝 전보다 일반 질문 답변이 나빠짐

원인: 파국적 망각 (Catastrophic Forgetting)

해결:
1. 에포크 수 줄이기 (3 -> 1-2)
2. learning_rate 낮추기
3. LoRA r 줄이기
4. 일반 지식 데이터 10-20% 혼합 학습
   (원래 학습 데이터에 일반 Q&A 추가)
AI로 학습하기 — 꿀팁
🤖QLoRA 학습 에러 10종 대응표AI 학습 팁

학습 중 CUDA OOM, NaN Loss, tokenizer 오류 등 10가지 에러에 대한 원인-해결 대응표를 미리 만들어 두면 실습 막힘 없이 진행할 수 있습니다.

QLoRA 학습 실행 중 발생하는 주요 에러 10가지를 다음 형식의 마크다운 표로 만들어줘: 에러 키워드(오류 메시지 핵심 문구) / 원인 / 즉각 해결 방법(명령어 또는 코드 변경) / 재발 방지 팁. 반드시 포함할 에러: CUDA out of memory, NaN loss at step 0, tokenizer does not have a padding token, bitsandbytes not found, RuntimeError: Expected all tensors to be on the same device, 그래디언트 폭발(gradient norm 급등). 각 해결법은 복붙 가능한 형태로 작성해줘.
이 팁이 도움이 됐나요?
핵심 포인트
  • OOM: batch_size 줄이기 -> seq_length 줄이기 -> checkpointing
  • NaN Loss: LR 낮추기 -> warmup 늘리기 -> grad_clip
  • Loss 안 줄어듦: LR/r 올리기 -> target_modules 확장
  • 과적합: early stopping -> weight_decay -> 데이터 증강
  • 파국적 망각: 에포크/LR/r 줄이기 -> 일반 데이터 혼합