11# 학습 전용 이미지 (scripts/train_qlora.py)
22# GPU 필수. QLoRA SFT, wandb.
3+ # 모델: 빌드 시 /opt에 다운로드, 기동 시 /workspace 없으면 복사 후 train_qlora 실행.
34#
45# 빌드: docker build -f Dockerfile.train-llm -t tasteam-train-llm .
5- # 실행: docker run --gpus all \
6- # -v $(pwd)/distill_pipeline_output:/app/distill_pipeline_output \
7- # --env-file .env tasteam-train-llm --labeled-path /app/distill_pipeline_output/labeled/xxx/train_labeled.json --output-dir /app/distill_pipeline_output
86#
9- # 환경변수: WANDB_API_KEY, HF_HOME 등
7+ # 로컬 실행:
8+ # docker run --gpus all \
9+ # -v $(pwd)/distill_pipeline_output:/app/distill_pipeline_output \
10+ # --env-file .env tasteam-train-llm \
11+ # --labeled-path /app/distill_pipeline_output/labeled/YYYYMMDD_HHMMSS/train_labeled.json \
12+ # --output-dir /app/distill_pipeline_output
13+ #
14+ # RunPod Pod (Network Volume, 학습 결과 저장):
15+ # -v /path/to/network/volume:/workspace \
16+ # -e HF_HOME=/workspace/hf-cache -e HF_HUB_CACHE=/workspace/hf-cache \
17+ # tasteam-train-llm \
18+ # --labeled-path /workspace/distill_pipeline_output/labeled/YYYYMMDD_HHMMSS/train_labeled.json \
19+ # --output-dir /workspace/distill_pipeline_output
20+ # (adapter → /workspace/distill_pipeline_output/runs/YYYYMMDD_HHMMSS/adapter)
21+ #
22+ # 환경변수: WANDB_API_KEY, HF_HOME(선택), HF_HUB_CACHE(선택)
23+
24+ FROM runpod/pytorch:2.4.0-py3.11-cuda12.4.1-devel-ubuntu22.04
1025
11- FROM pytorch/pytorch:2.1.0-cuda12.1-cudnn8-runtime
26+ ENV MODEL_NAME=/workspace/llm-models/Qwen/Qwen2.5-0.5B-Instruct
27+ ENV HF_MODEL_ID=Qwen/Qwen2.5-0.5B-Instruct
28+ # 이미지 내 모델 경로 (빌드 시 채워짐. 기동 시 /workspace 없으면 여기서 복사)
29+ ENV MODEL_IMAGE_PATH=/opt/llm-models/Qwen/Qwen2.5-0.5B-Instruct
30+
31+ RUN pip install -q huggingface_hub && \
32+ python3 -c "from huggingface_hub import snapshot_download; snapshot_download('Qwen/Qwen2.5-0.5B-Instruct', local_dir='/opt/llm-models/Qwen/Qwen2.5-0.5B-Instruct', local_dir_use_symlinks=False)"
33+
34+ COPY scripts/runpod_pod_entrypoint_05b.sh /entrypoint.sh
35+ RUN chmod +x /entrypoint.sh
1236
1337ENV PYTHONUNBUFFERED=1
1438ENV PYTHONDONTWRITEBYTECODE=1
@@ -19,14 +43,11 @@ COPY requirements.train-llm.txt /app/
1943RUN pip install --no-cache-dir --upgrade pip && \
2044 pip install --no-cache-dir -r requirements.train-llm.txt
2145
46+ # train_qlora.py 단독 사용. src/ import 시 COPY 추가 필요.
2247COPY scripts/train_qlora.py /app/scripts/
2348
2449ENV PYTHONPATH=/app
2550
26- ENTRYPOINT ["python", "scripts/train_qlora.py"]
27- CMD ["--help"]
28-
29- # docker build -f Dockerfile.train-llm -t tasteam-train-llm .
30- # docker run --gpus all -v $(pwd)/distill_pipeline_output:/app/distill_pipeline_output --env-file .env tasteam-train-llm \
31- # --labeled-path /app/distill_pipeline_output/labeled/xxx/train_labeled.json \
32- # --output-dir /app/distill_pipeline_output
51+ ENTRYPOINT ["/entrypoint.sh"]
52+ # 기본: /workspace (RunPod 네트워크 볼륨). 로컬 실행 시 --output-dir /app/distill_pipeline_output 오버라이드.
53+ CMD ["--output-dir", "/workspace/distill_pipeline_output"]
0 commit comments