[스테이블 디퓨전] RuntimeError: CUDA out of memory
스테이블 디퓨전을 쓰면서 가장 기분 나쁜 메시지중 하나인 RuntimeError: CUDA out of memory 오류!
메모리가 부족하다니 ㅠ,ㅠ
내 컴의 사양이 엄청난데도 RuntimeError: CUDA out of memory는 종종 나온다 제길~
이미지 생성 작업 중에, 할당 가능한 그래픽카드 잔여 메모리(VRAM)이 부족하여 오류가 발생할 수 있다.
이는 그래픽카드 장치의 총 VRAM이 부족한 경우일 수도 있으며, 선택한 모델의 용량이 크기 때문에 잔여 VRAM 용량이 한정된 경우도 있다.
또한, 생성하려는 이미지의 해상도가 클 경우에도 VRAM 사용량이 많아진다.
“작업 관리자”를 열고 “성능” 탭에서 GPU 0을 선택하면 “전용 GPU 메모리”를 통해 현재 남아 있는 메모리 용량을 확인할 수 있다.
해결 방법
그래픽카드 장치의 총 메모리가 낮은 경우 스테이블 디퓨전 실행 배치파일(webui-user.bat)의 COMMANDLINE_ARGS에 –lowvram 옵션을 추가한다.
set COMMANDLINE_ARGS= –lowvram –autolaunch
아래 내용은 AUTOMATIC1111의 web ui 공식 설명
VRAM이 낮은 GPU에 대한 최적화.
이렇게 하면 4GB 메모리가 있는 비디오 카드에서 512×512 이미지를 생성할 수 있습니다.
–lowvram는 유저 basujindal 의 최적화 아이디어를 재구현한 것 입니다.
모델은 모듈들로 분리되며, GPU 메모리에는 하나의 모듈만 보관됩니다.
다른 모듈을 실행해야 하는 경우 이전 모듈이 GPU 메모리에서 제거됩니다.
이 최적화의 특성으로 인해 처리가 느리게 실행됩니다.
RTX 3090에서 일반 작업에 비해 약 10배 더 느립니다.
–medvram는 동일한 배치(batch)에서 조건부 및 무조건 노이즈 제거 처리를 하지 않음으로써 VRAM 사용량을 크게 줄이는 또 다른 최적화입니다.