콘텐츠로 이동

7. 비용, 문제 해결, 완료 기준

이 장은 순서대로 읽지 않아도 됩니다. 머신을 켜기 전에는 7.1절을 읽고 예산을 추정하고, 오류를 만나면 7.2절을 찾아보고, 모든 작업을 마쳤으면 7.3절로 점검하십시오.

7.1 먼저 속도를 측정하고 비용을 추정하기

먼저 제공업체의 시간당 가격, 스토리지 요금, 인스턴스 중지 후의 과금 규칙을 확인한 다음 이번 실험의 예산을 정합니다. 아래 계산은 시간당 US$0.74라는 가정 가격을 사용합니다. 실제 가격은 인스턴스를 만들 때 제시되는 금액을 따릅니다.

GPU 费用 = 小时单价 × 开机计费时长
总成本 = GPU 费用 + 存储 + 其他服务 + 数据制作/审核投入
训练时间估算 ≈ 预热后每个 optimizer step 耗时 × 预计更新步数

(풀어 쓰면: GPU 비용 = 시간당 가격 × 과금되는 실행 시간, 총비용 = GPU 비용 + 스토리지 + 기타 서비스 + 데이터 작성/검토 노력, 예상 학습 시간 ≈ 워밍업 이후 옵티마이저 스텝당 시간 × 예상 업데이트 스텝 수.)

메인 경로(환경 구성, 다운로드, 1 epoch 학습, 병합, 배포, 부하 테스트)는 머신 시간으로 2~3시간 정도로 예상되며, 6장의 비교 실험과 검토까지 더하면 10~20시간이 걸릴 수 있습니다. 예시 가격으로는 각각 약 US$1.5~2.2와 US$7.4~14.8입니다. 실제로는 설정, 전송, 유휴, 스토리지 비용도 고려해야 합니다.

노트북의 training-complete.json(CLI에서는 metrics-step-N.json)에는 학습 시간과 최대 allocated/reserved VRAM이 기록됩니다. PyTorch의 통계는 다른 프로세스나 드라이버 오버헤드 전체를 포함하지 않으므로 nvidia-smi와 청구서로 교차 확인하십시오. 측정된 시간으로 예산을 갱신합니다.

7.2 문제 해결 표

증상 먼저 확인할 것 하지 말아야 할 것
CUDA를 사용할 수 없음 호스트, 드라이버, Torch wheel, 현재 가상 환경 Mac에 CUDA를 몇 번이고 재설치하기
Python 모듈이 없음 Python 경로, 활성화된 환경, 설치 결과 여러 환경에서 라이브러리를 마구 업그레이드하기
토크나이저는 되는데 모델이 실패함 토크나이저만 내려받았는지, 가중치가 온전한지 무조건 VRAM 부족이라고 단정하기
길이 제한 초과 팩트, 이력, 타깃의 토큰 길이 참조 답변을 몰래 잘라 내기
loss는 낮은데 결과가 나쁨 타깃 누출, 유사 중복, 실제로 로드된 어댑터 epoch만 늘리기
loss가 줄지 않음 마스크, 학습 가능한 파라미터, 학습률, 데이터 곧바로 GPU 바꾸기
thinking/역할 마커를 출력함 모델 변형, 템플릿, 학습 타깃, 정지 토큰 백엔드에서 특수 텍스트를 무작정 제거하기
반복함/멈추지 않음 EOS 감독, 중복 데이터, 과적합, 출력 한도 반복 문장만 걸러 내기
OOM 다른 프로세스, 길이, 배치, KV 캐시, 양자화 RAM을 VRAM과 같은 것으로 여기기
재개가 거부됨 데이터/코드/환경/모델이 바뀌었는지 매니페스트 검사 우회하기
이야기를 더 지어냄 허구를 사실처럼 썼는지, 정직한 응답 샘플이 빠졌는지 재미 점수로 사실 오류 덮기
병합 후 품질 저하 리비전, 양자화되지 않은 기본 모델, 템플릿, 정밀도 NF4/BF16 차이를 전부 LoRA 탓으로 돌리기
API 타임아웃 서비스 상태, 모델 로딩, 컨텍스트, 동시성, 로그 끝없이 재시도하기
API가 400을 반환함 입력 + max_tokens가 --max-model-len을 넘는지, model 이름이 /v1/models와 일치하는지 같은 요청을 계속 재시도하기
부하 테스트 중 지연 급증 동시성이 --max-num-seqs를 넘는지, KV 캐시가 가득 찼는지(/metrics와 로그 확인) 대기열은 보지 않고 평균만 보기
vLLM이 시작되지 않음 추론 환경, 드라이버, 모델 디렉터리, 다른 프로세스가 GPU를 쓰고 있는지 학습 환경의 의존성 덮어쓰기

7.3 최종 학습 체크리스트

  • 이 프로젝트가 왜 SFT+QLoRA를 쓰는지 설명할 수 있다.
  • 샘플 하나의 전체 컨텍스트와 실제 감독 타깃을 보여 줄 수 있다.
  • 1 epoch 학습을 마치고, loss 곡선을 읽을 수 있으며, 완료 기록을 확인하고 어댑터를 저장한 뒤 다시 로드했다.
  • 학습 중 VRAM의 구성 요소를 말할 수 있고 nvidia-smi 수치와 대조할 수 있다.
  • 4.6절의 소표본 과적합 연습과 체크포인트 재개 연습을 마쳤다.
  • 1 epoch 학습과 rank 비교 1회를 마치고, 검토 가능한 체크리스트를 저장했다.
  • 학습 중 성능, 검증 결과, 고정 후 테스트 결과를 구분할 수 있다.
  • 개선, 퇴보, 또는 "불확실"을 보고하고 근거의 한계를 설명할 수 있다.
  • 병합하고, 내보내고, vLLM을 시작하고, 멀티턴 호출과 스트리밍 호출을 할 수 있다.
  • KV 캐시 용량을 추정해 vLLM 시작 로그와 비교할 수 있고, --gpu-memory-utilization, --max-model-len, --max-num-seqs를 설명할 수 있다.
  • 어댑터를 마운트해 같은 서비스에서 기본 모델과 LoRA를 비교하고, 병합 배포와 비교한 장단점을 설명할 수 있다.
  • 여러 동시성 수준에서 부하 테스트를 실행해 TTFT, TPOT, 처리량 표를 채웠고, 처리량과 지연 시간의 트레이드오프를 설명할 수 있다.

프롬프트 베이스라인 대비 LoRA의 개선 또는 퇴보를 기록하고, 다른 사람이 다시 확인할 수 있도록 데이터와 출력을 함께 첨부하십시오.