AI Toolkit CUDA Out of Memory: 모델 로드, 학습, 샘플링 중 OOM 해결하기
AI Toolkit 작업이 CUDA out of memory, OOM during training step 3 times in a row, 또는 0 bytes is free로 실패한다면, 같은 작업을 수정 없이 재실행하지 마세요.
실제로 AI Toolkit의 OOM 오류 대부분은 다음 네 곳 중 하나에서 발생합니다:
- 모델 로드 (실제 학습 시작 전)
- 처음 몇 학습 스텝
- 프리뷰 샘플링 / 베이스라인 샘플 생성
- 비디오 특화 스파이크 (프레임이 너무 많거나, 버킷이 너무 크거나, 또는 둘 다)
이 가이드는 빠른 복구 경로입니다. 어떤 OOM인지 파악하고, RunComfy AI Toolkit에서 올바른 설정을 변경하여, 더 빠르게 성공적인 재시도에 도달하세요.
빠른 수정 체크리스트 (여기서 시작)
- ✅ Training에서 Batch Size 줄이기
- ✅ Datasets에서 가장 높은 Resolution 버킷을 먼저 비활성화
- ✅ Sample에서 Width / Height / Sample Steps 줄이거나, 일시적으로 Disable Sampling 켜기
- ✅ Show Advanced 클릭하여
gradient_checkpointing: true확인 - ✅ 비디오 모델은 learning rate보다 Num Frames를 먼저 줄이기
- ✅ 매우 보수적인 설정에서도 에러가 나면, 설정 문제만이 아닌 Worker / GPU 상태 문제로 취급
1) 같은 문제인지 확인
로그에 다음과 같은 메시지가 있다면 이 가이드의 대상입니다:
CUDA out of memory
torch.OutOfMemoryError
OOM during training step 3 times in a row
Tried to allocate ...
0 bytes is free
CUBLAS_STATUS_ALLOC_FAILED
일반적인 상황:
- 작업이 스텝 1 전에 실패
- 스텝 2–10에 도달한 후 반복적으로 OOM
- 학습은 괜찮아 보이지만 샘플 생성 시 크래시
- 같은 설정이 때로는 성공, 때로는 실패
2) 먼저: 어떤 종류의 OOM인가?
A. 모델 로드 시 또는 학습 시작 전 OOM
보통 다음 중 하나를 의미합니다:
- 현재 메모리 절약 설정으로는 모델이 너무 무거움
- 프리뷰 / 베이스라인 샘플 생성이 이미 너무 비쌈
- Worker / GPU 상태가 나쁘고 클린 메모리에서 시작하지 않음
전형적인 징후:
- 의미 있는 학습 스텝 시작 전에 실패
- 모델 로드 직후 또는 첫 샘플 중 에러
- 로그에 거의 VRAM 여유 없음 또는 CUBLAS 할당 에러
B. 처음 몇 학습 스텝에서의 OOM
설정에 의한 가장 일반적인 케이스입니다.
전형적 원인:
gradient_checkpointing이 꺼져 있음- Batch Size가 너무 높음
- 가장 큰 데이터셋 버킷이 너무 야심적
- 비디오의 경우, Num Frames가 실제 메모리 스파이크
C. 샘플링 / 프리뷰 생성 시 OOM
매우 흔한 함정입니다.
학습 설정은 거의 괜찮지만 프리뷰가 너무 비쌈:
- Sample Width / Height가 너무 큼
- Sample Steps가 너무 높음
- Sample Every가 너무 빈번함
- 프리뷰 비디오 프레임이 너무 많음
D. 가끔만 OOM
보통 한계선 설정이며, 미스터리가 아닙니다.
예시:
- 작은 버킷에서는 생존하지만 가장 큰 버킷에서 크래시
- 비디오 학습에서 가장 무거운 클립에서만 실패
- 학습 코어는 맞지만 샘플 생성이 한계를 넘김
3) RunComfy AI Toolkit에서 가장 빠른 수정
Fix A — Gradient checkpointing 다시 켜기
이미지 모델 OOM에서 가장 먼저 확인할 것.
변경 위치
- 실패한 작업 열기
- Show Advanced 클릭
train:아래에서 확인:
gradient_checkpointing: true
확실하지 않으면 켜둔 채로 두세요.
Fix B — Batch Size 줄이고, 안정성을 위해 Gradient Accumulation 사용
변경 위치
- 작업 에디터 열기
- Training 패널에서:
- Batch Size 줄이기
- VRAM 피크 없이 약간 더 큰 유효 배치를 원하면 Gradient Accumulation 유지 또는 증가
안전한 재시도 규칙
- 이미지 모델: OOM이면 먼저 Batch Size = 1로
- 비디오 모델: 설정이 안정적으로 증명되지 않는 한 Batch Size = 1을 기본으로
learning rate를 첫 번째 메모리 레버로 취급하지 마세요. 보통 그렇지 않습니다.
Fix C — 가장 높은 데이터셋 버킷 먼저 제거
변경 위치
- Datasets 패널으로 이동
- Resolutions에서 가장 높은 버킷을 먼저 비활성화
안전한 롤백 순서
- 1024 / 1536 → 먼저 제거
- 안정성 확인 동안 512 / 768 유지
- 안정되면 큰 버킷을 하나씩 다시 추가
한계선 학습을 재현 가능한 학습으로 바꾸는 가장 빠른 방법 중 하나입니다.
Fix D — 프리뷰 샘플링 비용 줄이거나 일시적 비활성화
학습이 본격적으로 시작되기 전에 크래시하거나, 샘플링이 실행될 때마다 크래시하면, 먼저 프리뷰를 수정.
변경 위치
- Sample 패널 열기
다음 중 하나 이상 실행:
- Width 줄이기
- Height 줄이기
- Sample Steps 줄이기
- Sample Every 늘리기
- 검증 실행을 위해 Disable Sampling 켜기
좋은 첫 재시도
"작업이 학습할 수 있는지 증명"이 목표라면, 임시로 샘플링 없는 실행도 괜찮습니다.
안정되면 더 작은 설정으로 프리뷰를 다시 활성화.
Fix E — 비디오 모델: 무엇보다 Num Frames 먼저 줄이기
비디오 모델에서 프레임이 보통 가장 큰 메모리 레버입니다.
변경 위치
- Datasets 패널 → Num Frames
- Sample 패널 → Num Frames
비디오 학습 중 OOM이 보이면, 프레임을 먼저 줄이고, 그 다음 배치 사이즈, 그 다음 해상도.
optimizer나 LR 변경부터 시작하지 마세요.
Fix F — 모델의 저메모리 경로 사용
일부 아키텍처는 VRAM이 빠듯할 때 메모리 절약 설정으로 학습하도록 설계되었습니다.
변경 위치
- Show Advanced 클릭
model:아래에서 찾기:
low_vram: true
일부 모델에서는 올바른 저메모리 경로에 모델 특화 양자화나 텍스트 인코더 처리도 포함됩니다. 추측 대신 해당 모델 가이드를 따르세요.
4) 실패 타이밍별 빠른 진단
| 크래시 시점 | 가장 가능성 높은 원인 | 첫 변경 |
|---|---|---|
| 스텝 1 전 / 초기 샘플 중 | 프리뷰가 무겁거나, 모델 로드 부담, 또는 더러운 워커 | 샘플링 비활성화 또는 프리뷰 축소 |
| 스텝 1–10 | GC 꺼짐, 배치 너무 높음, 버킷 너무 큼 | GC 켜기, 배치 1로, 가장 큰 버킷 제거 |
| 샘플링 시에만 | 프리뷰 설정 비용이 너무 높음 | Width/Height/Sample Steps 줄이기 또는 샘플링 비활성화 |
| 때때로 발생 | 한계선 설정 | 가장 큰 버킷 / 프레임 줄이고 안정화 |
| 보수적 설정도 즉시 실패 | GPU / 워커 상태 문제 가능성 | 새 워커에서 재생성 또는 지원팀 연락 |
5) 설정 OOM과 환경 / GPU 상태 문제 구분
다음이 모두 해당되면 설정만의 문제가 아닌 것으로 취급하세요:
- Batch Size = 1
gradient_checkpointing: true- 보수적인 해상도 / 프레임
- 그래도 학습이 의미 있게 시작되기 전에 실패
- 로그에
0 bytes is free또는 CUBLAS 할당 실패
이 경우:
- 같은 재시도 반복 중단
- 가능하면 새 워커에서 새 작업 생성
- 이전에 작동하던 같은 보수적 설정이 이제 즉시 실패하면, 지원팀에 에스컬레이션
반복적인 재시도는 시간과 GPU 예산 모두를 낭비할 수 있어 중요합니다.
6) 가장 안전한 롤백 순서
이미지 모델용
gradient_checkpointing: true- Batch Size → 1
- 가장 큰 Resolution 버킷 제거
- Sample 축소 또는 비활성화
- low_vram 또는 모델의 저메모리 경로 활성화
비디오 모델용
- Num Frames 줄이기
- Batch Size → 1
- 가장 큰 Resolution 버킷 제거
- Sample 축소 또는 비활성화
- low_vram 또는 모델 특화 오프로딩 / 양자화 활성화
7) 첫 번째 성공적인 재시도 이후
안정적인 학습을 얻은 후:
- 한 번에 하나의 더 무거운 설정만 다시 추가
- 무엇을 변경했는지 기록
- 여러 고위험 설정을 동시에 재도입하지 않기
좋은 스케일업 순서:
- 동일한 안정적 메모리 설정 유지
- Steps 증가
- 더 큰 버킷 재활성화
- 더 풍부한 샘플링 재활성화
- 그때서야 더 큰 배치 또는 더 긴 비디오 테스트
한 줄 요약
AI Toolkit이 OOM을 던지면, 무작위 시행착오를 멈추세요.
gradient_checkpointing을 켜고, Batch Size를 줄이고, 가장 큰 Resolution 버킷을 제거하고, 프리뷰 샘플링을 가볍게 한 다음 재시도하세요.
관련 가이드
Ready to start training?
