06. 막힐 때 대처법 (Troubleshooting)#
📚 학습 목표: 흔한 문제를 혼자 해결할 수 있게
🎯 사용법: 문제 생기면 목차에서 유사한 것 찾아 점프
목차#
환경 설정 문제#
데이터 준비 문제#
학습 문제#
- T1. Gemma 4 다운로드 실패
- T2. HuggingFace 403 에러
- T3. Out of Memory (OOM)
- T4. Loss가 감소 안 함
- T5. Loss NaN
- T6. 학습이 너무 느림
- T7. Overfitting
- T8. 학습 중단 후 재개
배포 문제#
성능/운영 문제#
E1. make setup 에러#
증상#
원인#
- Python 버전 맞지 않음
- pip 버전 오래됨
해결#
# Python 버전 확인
python3 --version
# Python 3.10+ 여야 함. 아니면 업그레이드
# pip 업그레이드
python3 -m pip install --upgrade pip
# 다시 시도
make setup
E2. make setup-mlx 실패#
증상#
원인#
Intel Mac에서 실행 중
해결#
MLX는 Intel Mac에서 설치 불가. Apple Silicon(M1/M2/M3/M4)에서 실행해야 함.
맥미니 M4에서 실행했는데도 에러면:
# 아키텍처 확인
uname -m
# "arm64"가 나와야 함. "x86_64"면 Rosetta 환경
# Rosetta 터미널 닫고 네이티브 arm64 터미널 열기
# 또는 새 터미널에서:
arch -arm64 bash
make setup-mlx
E3. llama.cpp 빌드 실패#
증상#
해결#
# Xcode CLI tools 설치
xcode-select --install
# cmake 업그레이드
brew upgrade cmake
# 재빌드
cd ~/llama.cpp
rm -rf build
cmake -B build -DGGML_METAL=ON
cmake --build build --config Release -j
E4. Ollama 설치/실행 문제#
증상 A: ollama: command not found#
증상 B: Error: could not connect to ollama server#
# 서비스 상태 확인
brew services list | grep ollama
# 재시작
brew services restart ollama
# 또는 수동 실행
ollama serve &
증상 C: 모델 목록이 안 나옴#
# 로그 확인
tail -f ~/.ollama/logs/server.log
# 완전 재설치
brew services stop ollama
brew uninstall ollama
brew install ollama
brew services start ollama
D1. 더미 데이터 생성 실패#
증상#
해결#
# 프로젝트 루트인지 확인
pwd
# → .../mediconsol-llm 여야 함
# 파일 있는지
ls scripts/00_generate_dummy.py
# 실행 권한
chmod +x scripts/*.sh
D2. make data 에러#
증상 A: data/raw/ 디렉토리 없음#
증상 B: JSON decode error at line X#
데이터 파일이 손상됨. 해당 줄 확인:
# 몇 번째 줄이 문제인지
sed -n '5p' data/raw/01_nursing/data.jsonl
# Python으로 검증
python3 -c "
import json
with open('data/raw/01_nursing/data.jsonl') as f:
for i, line in enumerate(f, 1):
try:
json.loads(line)
except Exception as e:
print(f'Line {i}: {e}')
"
D3. JSONL 포맷 에러#
올바른 포맷#
JSON Lines: 한 줄에 하나의 JSON 객체
자주 하는 실수#
❌ 여러 줄 JSON (일반 JSON):
❌ 배열로 감쌈:
✅ 올바른 JSONL:
T1. Gemma 4 다운로드 실패#
증상#
해결#
-
HuggingFace 로그인 확인:
-
라이선스 동의:
- https://huggingface.co/google/gemma-4-E4B-it
-
"Acknowledge license" 클릭
-
토큰 재발급:
T2. HuggingFace 403 에러#
증상#
해결#
# 토큰 권한 확인
# HuggingFace 웹사이트 → Settings → Tokens
# "Read" 권한 있는지 확인
# 모델 페이지에서 라이선스 동의 재확인
# https://huggingface.co/google/gemma-4-E4B-it
# 토큰 재설정
huggingface-cli logout
huggingface-cli login
T3. Out of Memory (OOM)#
증상#
또는 맥미니가 심하게 느려지고 Swap 사용량 급증
원인#
- 24GB 중 학습이 15GB+ 사용, 시스템이 남은 메모리로 부족
해결 순서#
- 다른 앱 전부 닫기 (Chrome 특히 메모리 많이 씀)
-
배치 사이즈 줄이기:
-
더 작은 모델로:
-
LoRA layers 줄이기:
T4. Loss가 감소 안 함#
증상#
원인 1: Learning Rate 너무 낮음#
원인 2: 데이터 품질#
# 데이터 샘플 확인
head -3 data/processed/train.jsonl | python3 -m json.tool
# 카테고리 분포
python3 -c "
import json
from collections import Counter
cats = []
with open('data/processed/train.jsonl') as f:
for line in f:
cats.append(json.loads(line).get('category', 'unknown'))
print(Counter(cats))
"
원인 3: 한국어 토크나이저 문제#
Gemma 4는 한국어 지원하지만, 간호 전문 용어가 여러 토큰으로 쪼개질 수 있음. 정상.
T5. Loss NaN#
증상#
해결#
- 즉시 Ctrl+C
-
Learning Rate 대폭 감소:
-
그래디언트 클리핑 추가 (스크립트 수정):
-
데이터 이상치 확인: 극단적으로 긴 텍스트(>4096 토큰) 있는지
T6. 학습이 너무 느림#
증상#
- 1시간 지났는데 Iter 50도 안 감
- It/sec 0.3 이하
해결#
# 1. 다른 앱 확인
top -o mem
# Chrome, Slack, Docker 등 닫기
# 2. 전원 어댑터 연결 확인
pmset -g
# "AC Power" 나와야 함
# 3. 절전 모드 해제
sudo pmset -a powernap 0
sudo pmset -a sleep 0 # 학습 중만
# 4. Swap 사용량
sysctl vm.swapusage
# Swap used > 2GB면 문제
T7. Overfitting#
증상#
해결#
방법 1: 체크포인트 롤백
# 가장 좋았던 체크포인트 찾기
ls outputs/mlx_adapter/*_adapters.safetensors
# 해당 체크포인트를 최종 어댑터로
cp outputs/mlx_adapter/0000300_adapters.safetensors \
outputs/mlx_adapter/adapters.safetensors
방법 2: 다음 학습 시 개선
방법 3: 일반 데이터 섞기
T8. 학습 중단 후 재개#
증상#
학습 중 실수로 Ctrl+C, 전원 꺼짐 등
해결#
이미 체크포인트가 저장되어 있으면 이어서 학습 가능:
# 마지막 체크포인트 확인
ls -lt outputs/mlx_adapter/*_adapters.safetensors | head -1
# 재개
python3 -m mlx_lm.lora \
--model outputs/mlx_base_4bit \
--train \
--data data/processed/mlx \
--adapter-path outputs/mlx_adapter \
--resume-adapter-file outputs/mlx_adapter/adapters.safetensors \
--iters 300 # 추가로 돌릴 iter
B1. Fuse 실패#
증상#
해결#
증상#
해결#
# 수동 실행
python3 -m mlx_lm.fuse \
--model outputs/mlx_base_4bit \
--adapter-path outputs/mlx_adapter \
--save-path outputs/merged \
--de-quantize \
--hf-path google/gemma-4-E4B-it
B2. GGUF 변환 실패#
증상#
해결#
llama.cpp를 최신으로:
cd ~/llama.cpp
git pull
cmake --build build --config Release -j
# 재시도
cd ~/projects/mediconsol-llm
make convert
증상 (메모리 부족)#
해결#
B3. Ollama 등록 실패#
증상#
해결#
# Modelfile 직접 확인
cat Modelfile
# 수동으로 등록
ollama create mediconsol-v1 -f Modelfile
# 로그 확인
tail -f ~/.ollama/logs/server.log
증상#
해결#
B4. 답변이 이상함#
증상 A: 프롬프트를 그대로 반복#
원인: 학습이 충분하지 않음
해결: iter 늘리거나 데이터 추가
증상 B: 횡설수설#
원인: - 데이터 포맷 문제 - 학습 실패 (loss NaN 후) - 토크나이저 오류
해결: 1. 학습 로그 다시 확인 2. 데이터 재검증 3. 처음부터 재학습
증상 C: "Sorry I don't know"만 반복#
원인: 거부 응답 데이터가 너무 많음
해결: 데이터에서 거부 응답 비율 확인 (10% 미만이어야)
P1. 추론이 느림#
증상#
- 답변 생성이 30초 이상 걸림
- 첫 토큰까지 10초
원인#
- 첫 요청: 모델 로딩 (정상, 한 번만)
- 지속적으로 느림: 문제
해결#
# Ollama 로그 확인
tail -f ~/.ollama/logs/server.log
# GPU 사용 확인 (Metal)
# Activity Monitor → 창 → GPU 히스토리
# Q4_K_M 사용 중인지 확인
ollama show mediconsol-v1
# QUANTIZATION: Q4_K_M 이어야 함
# 더 작은 양자화 시도 (품질 감소)
# Q3_K_M → 더 빠름, 품질 약간 낮음
P2. 답변이 영어로 나옴#
증상#
원인#
- 시스템 프롬프트에 영어 포함
- 학습 데이터에 영어 응답 섞임
해결#
-
Modelfile 확인:
-
데이터 확인:
-
명시적 시스템 프롬프트:
P3. 할루시네이션#
증상#
원인#
- 학습 데이터에 해당 정보 없거나 부정확
- 모델이 "그럴듯한 답변"을 생성
해결#
- Bad case 기록:
-
문제 질문과 틀린 답변을
bad_cases.md에 저장 -
정답 데이터 추가:
-
data/raw/03_medical_terms/에 해당 정보 정확하게 추가 -
재학습:
-
다음 버전에 반영
-
단기 대응: 프롬프트에 "확실하지 않으면 '의료진에게 확인' 이라고 답하세요" 추가
P4. 이전 버전으로 롤백#
즉시 롤백#
# 현재 버전 확인
ollama list
# 이전 버전을 latest로
ollama cp mediconsol-v1:1.0.0 mediconsol-v1:latest
# 문제 있는 버전 삭제 (선택)
ollama rm mediconsol-v1:1.1.0
Harness 메타데이터 업데이트#
Harness 프로젝트의 llm_metadata.current_version을 이전 값으로 되돌리기.
EVAL_REPORT 업데이트#
롤백 사유를 EVAL_REPORT.md 에 기록:
🆘 여기에 없는 문제라면#
1. Claude Code에게 물어보기#
2. 로그 수집#
# 학습 로그
cat outputs/training.log | tail -100
# Ollama 로그
tail -100 ~/.ollama/logs/server.log
# 시스템 로그
log show --last 1h --predicate 'processImagePath CONTAINS "mlx"' 2>&1 | tail -50
3. GitHub Issues 확인#
✅ 자가 체크#
- 에러 메시지를 보고 대충 어디 문제인지 감 잡음
- 환경/데이터/학습/배포/운영 5개 카테고리 구분 가능
- OOM, NaN, Overfitting 세 가지 증상 즉시 대응 가능
- 롤백 절차 알고 있음
다음 단계#
기본기가 준비되었습니다. 이제 실전 데이터 수집으로 갑니다.
다음 문서: 07_DATA_COLLECTION.md - 진짜 데이터 모으기
💡 핵심 요약#
에러 났다 → 메시지 읽기 → 이 문서 목차 → 유사한 것 찾기
그래도 모름 → Claude Code에게 로그와 함께 질문
OOM → 앱 닫기, batch_size 감소
NaN → 즉시 중단, LR 감소
롤백 →ollama cp mediconsol-v1:1.0.0 mediconsol-v1:latest