우분투가 설치된 노트북(메모리 64GB, GeForce RTX 4060 8GB)에서 파이썬으로 로컬 이미지 생성 환경을 구축하고, 터미널 대화형 스크립트(image_gen_cli.py)를 실행하기까지의 전 과정을 정리한 문서입니다.
.
이해를 돕기위해 유튜브 영상을 추가했습니다.
.
1. 테스트 시스템 사항
이 가이드는 다음 환경을 기준으로 작성되었습니다.
- Ubuntu 24.04
- NVIDIA GeForce RTX 4060 (VRAM 8GB)
- 시스템 메모리: 64GB
- 디스크 여유 공간: 20GB 이상 (SDXL 모델 약 7GB + 수정판 VAE 약 0.3GB + 캐시)
SDXL은 FP16 기준 약 7GB로 8GB VRAM에 온전히 들어가는 모델입니다. 시스템 메모리가 넉넉하므로 CPU 오프로딩을 함께 사용하면 LoRA나 고해상도 작업에서도 여유가 생깁니다.
.
2. NVIDIA 드라이버 확인
먼저 NVIDIA 드라이버가 정상 동작하는지 확인합니다.
| nvidia-smi |
.
GPU 이름(GeForce RTX 4060)과 드라이버 버전, CUDA 버전이 표시되면 정상입니다. 명령을 찾을 수 없다는 오류가 나오면 드라이버를 먼저 설치합니다.
| sudo ubuntu-drivers autoinstall sudo reboot |
.
재부팅 후 nvidia-smi를 다시 실행해 확인합니다. CUDA Toolkit을 별도로 설치할 필요는 없습니다. PyTorch가 자체적으로 CUDA 런타임을 포함해서 배포되기 때문에 드라이버만 있으면 됩니다.
.
3. 기본 개발 환경 구축 (Visual Studio Code + Miniconda)
Visual Studio Code와 Miniconda 설치, 가상환경 생성과 Visual Studio Code 연동은 아래 글을 따라 진행합니다. (Claude Code 설치 부분은 이 작업과 무관하므로 건너뛰어도 됩니다)
.
우분투 Python 개발 환경: Visual Studio Code + Miniconda + Claude Code 설치 가이드
.
이미지 생성 전용으로 imagegen 가상 환경을 만듭니다.
| conda create -n imagegen python=3.11 -y conda activate imagegen |
.
4. PyTorch (CUDA 빌드) 설치
리눅스에서는 기본 설치 명령으로 CUDA 지원 빌드가 설치됩니다.
| pip install torch |
.
특정 CUDA 버전 빌드가 필요한 경우에는 PyTorch 공식 사이트에서 환경에 맞는 설치 명령을 확인합니다.
참고: 기본 명령으로 CUDA 빌드가 설치되는 것은 리눅스 한정입니다. 윈도우에서는 pip install torch가 CPU 빌드를 설치하므로, 윈도우 사용자는 반드시 공식 사이트 선택기에서 CUDA 버전을 골라 안내되는 명령으로 설치해야 합니다.
.
설치 후 GPU 인식을 확인합니다.
| python -c "import torch; ok=torch.cuda.is_available(); print(ok, torch.cuda.get_device_name(0) if ok else 'GPU 미인식')" |
.
그래픽 카드 이름이 출력되면 성공입니다. “GPU 미인식”이 나오면 드라이버 문제이거나 CPU 빌드가 설치된 것이므로, pip uninstall torch 로 삭제한 후, 공식 홈페이지에서 확인하여 다시 설치해보세요.
.
5. diffusers 및 관련 패키지 설치
| pip install diffusers transformers accelerate |
- diffusers: Stable Diffusion 계열 모델의 파이프라인 라이브러리
- transformers: 텍스트 인코더(CLIP 등) 로딩에 필요
- accelerate: CPU 오프로딩(enable_model_cpu_offload)에 필요
.
6. 스크립트 배치
이 문서 마지막의 전체 코드를 image_gen_cli.py 라는 이름으로 작업 폴더에 저장합니다.
보여주기 편하도록 터미널에서 진행했습니다.
| mkdir -p ~/imagegen cd ~/imagegen |
.
문서 마지막의 전체 코드를 image_gen_cli.py 파일에 붙여넣고 Ctrl +S를 눌러 저장합니다..
| code image_gen_cli.py |
.
7. 실행
| python image_gen_cli.py |
.
최초 실행 시
Hugging Face에서 SDXL 모델(약 7GB)과 수정판 VAE(약 0.3GB)를 자동으로 다운로드합니다. 네트워크 속도에 따라 수 분에서 수십 분이 걸릴 수 있으며, 모델은 ~/.cache/huggingface/ 에 저장되어 이후 실행부터는 다운로드 없이 바로 로딩됩니다.
.
다운로드시 다음처럼 HF_TOKEN을 설정하면 더 빨리 다운로드 받을 수 있다는 메시지가 보입니다. 블로그 글 작성시엔 그냥 했더니 다운로드 속도가 느렸습니다.
| Please set a HF_TOKEN to enable higher rate limits and faster downloads. |
.
사용 방법
SDXL은 영어 프롬프트에서 품질이 좋으므로, 프롬프트는 클로드 웹(claude.ai)에서 생성해 사용합니다.
- 클로드 웹에 만들고 싶은 이미지를 한국어로 설명하고, SDXL용 영어 프롬프트를 요청합니다.
- 요청 예: 나무 도마 위에 놓인 갓 만든 김밥을 스튜디오 음식 사진 느낌으로 찍은 이미지를 만들려고 해. SDXL용 영어 프롬프트를 한 줄로 만들어줘.
- 응답 예: freshly made gimbap slices on a wooden cutting board, glossy seaweed and colorful fillings, professional studio food photography, softbox lighting, shallow depth of field, 85mm macro lens, clean minimal background, appetizing, ultra detailed, 8k
- 스크립트의 프롬프트 > 입력창에 클로드가 생성한 영어 프롬프트를 붙여넣습니다.
- 생성이 끝나면 저장 경로가 출력됩니다. 기본 저장 위치는 ./outputs/image_날짜시각.png 입니다.
- 결과가 마음에 들지 않으면 클로드에 "더 밝게", "배경을 단순하게" 같은 수정 요청을 해서 프롬프트를 다듬은 뒤 다시 붙여넣습니다.
- q를 입력하면 종료됩니다.
.
터미널에서 eog 프로그램을 사용하여 결과이미지를 간단히 확인해볼 수 있습니다. 디폴트로 1024 X 1024 이미지가 생성됩니다.
| eog /home/webnautes/imagegen/outputs/image_20260721_185355.png |
.

.
모델은 실행 중 한 번만 로딩되며 이후, 프롬프트를 바꿔가며 연속으로 생성할 수 있습니다.
.
실행 옵션
| 옵션 | 기본값 | 설명 |
| --outdir | outputs | 이미지 저장 폴더 |
| --steps | 25 | 추론 스텝 수 (품질↔속도 조절) |
| --width | 1024 | 이미지 너비 |
| --height | 1024 | 이미지 높이 |
| --seed | 랜덤 | 시드 고정 (같은 프롬프트로 같은 결과 재현) |
| --no-offload | 꺼짐 | CPU 오프로딩 비활성화 (VRAM에 전부 올려 속도 우선) |
.
사용 예:
| # 속도 우선 (SDXL은 8GB에 들어가므로 가능) python image_gen_cli.py --no-offload # 결과 재현용 시드 고정 python image_gen_cli.py --seed 42 # 해상도를 낮춰 빠르게 시안 확인 python image_gen_cli.py --steps 20 --width 768 --height 768 |
.
8. 문제 해결
CUDA를 사용할 수 없다는 메시지가 나올 때
- nvidia-smi로 드라이버 동작을 확인합니다.
- 4단계의 GPU 인식 확인 명령을 실행해 PyTorch CUDA 빌드가 설치됐는지 확인합니다.
VRAM 부족(OOM)이 발생할 때
스크립트는 OOM 발생 시 종료되지 않고 안내 메시지 후 다음 입력을 받습니다.
| --no-offload 옵션을 빼고 기본(오프로딩 켜짐)으로 실행합니다. 해상도를 낮춥니다. 예: --width 768 --height 768 다른 GPU 사용 프로그램(브라우저의 하드웨어 가속 등)을 종료합니다. |
모델 다운로드가 중단됐을 때
다시 실행하면 이어받기가 됩니다. 반복 실패 시 ~/.cache/huggingface/hub 아래 해당 모델 폴더를 삭제하고 재시도합니다.
.
9. 전체 코드 (image_gen_cli.py)
| #!/usr/bin/env python3 """ 대화형 로컬 이미지 생성 CLI (SDXL, RTX 4060 8GB + 램 64GB 기준) 사용법: pip install torch # CUDA 지원 빌드 (리눅스 기본) pip install diffusers transformers accelerate python image_gen_cli.py # 기본 (SDXL, 오프로딩 사용) python image_gen_cli.py --no-offload # VRAM에 전부 올려 속도 우선 python image_gen_cli.py --steps 30 --width 1024 --height 1024 프롬프트를 입력하면 이미지를 생성하고 저장 경로를 출력합니다. q 입력 시 종료. 모델은 최초 1회만 로딩됩니다. """ import argparse import datetime import pathlib import sys import torch def load_pipeline(use_offload: bool): """SDXL 파이프라인 로딩. 최초 실행 시 모델(~7GB)을 다운로드합니다.""" from diffusers import AutoencoderKL, StableDiffusionXLPipeline print("모델 로딩 중... (최초 실행 시 다운로드에 시간이 걸립니다)") # 기본 VAE는 FP16에서 수치 오류가 있어 디코딩 시 FP32 업캐스팅(+약 1GB VRAM)이 # 발생하므로, FP16에서도 안정적으로 동작하는 수정판 VAE로 교체 vae = AutoencoderKL.from_pretrained( "madebyollin/sdxl-vae-fp16-fix", torch_dtype=torch.float16, ) pipe = StableDiffusionXLPipeline.from_pretrained( "stabilityai/stable-diffusion-xl-base-1.0", vae=vae, torch_dtype=torch.float16, variant="fp16", ) if use_offload: # 미사용 컴포넌트를 시스템 램으로 내려 VRAM 절약 (램 64GB 활용) pipe.enable_model_cpu_offload() else: pipe.to("cuda") pipe.enable_vae_tiling() # 고해상도 VAE 단계 OOM 방지 print("모델 로딩 완료.\n") return pipe def make_output_path(out_dir: pathlib.Path) -> pathlib.Path: out_dir.mkdir(parents=True, exist_ok=True) stamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S") return out_dir / f"image_{stamp}.png" def main(): parser = argparse.ArgumentParser(description="대화형 SDXL 이미지 생성기") parser.add_argument("--outdir", default="outputs", help="이미지 저장 폴더 (기본: ./outputs)") parser.add_argument("--steps", type=int, default=25, help="추론 스텝 수 (기본: 25)") parser.add_argument("--width", type=int, default=1024, help="이미지 너비 (기본: 1024)") parser.add_argument("--height", type=int, default=1024, help="이미지 높이 (기본: 1024)") parser.add_argument("--seed", type=int, default=None, help="시드 고정 (재현용, 생략 시 랜덤)") parser.add_argument("--no-offload", action="store_true", help="CPU 오프로딩 비활성화 (VRAM 여유 시 속도 향상)") args = parser.parse_args() if not torch.cuda.is_available(): sys.exit("CUDA를 사용할 수 없습니다. NVIDIA 드라이버와 PyTorch CUDA 빌드를 확인하세요.") out_dir = pathlib.Path(args.outdir).resolve() pipe = load_pipeline(use_offload=not args.no_offload) print("클로드 웹(claude.ai)에서 생성한 영어 프롬프트를 붙여넣어주세요.") print("종료: q 입력\n") while True: try: prompt = input("프롬프트 > ").strip() except (EOFError, KeyboardInterrupt): print("\n종료합니다.") break if not prompt: continue # 붙여넣기 시 딸려온 빈 줄 등은 무시하고 다시 입력 대기 if prompt.lower() == "q": print("종료합니다.") break generator = None if args.seed is not None: generator = torch.Generator(device="cuda").manual_seed(args.seed) print("생성 중...") try: image = pipe( prompt=prompt, num_inference_steps=args.steps, guidance_scale=7.0, width=args.width, height=args.height,우분투가 설치된 노트북(메모리 64GB, GeForce RTX 4060 8GB)에서 파이썬으로 로컬 이미지 생성 환경을 구축하고, 터미널 대화형 스크립트(image_gen_cli.py)를 실행하기까지의 전 과정을 정리한 문서입니다. . 테스트 시스템 사항 이 가이드는 다음 환경을 기준으로 작성되었습니다. Ubuntu 24.04 NVIDIA GeForce RTX 4060 (VRAM 8GB) 시스템 메모리: 64GB 디스크 여유 공간: 20GB 이상 (SDXL 모델 약 7GB + 수정판 VAE 약 0.3GB + 캐시) SDXL은 FP16 기준 약 7GB로 8GB VRAM에 온전히 들어가는 모델입니다. 시스템 메모리가 넉넉하므로 CPU 오프로딩을 함께 사용하면 LoRA나 고해상도 작업에서도 여유가 생깁니다. . NVIDIA 드라이버 확인 먼저 NVIDIA 드라이버가 정상 동작하는지 확인합니다. nvidia-smi . GPU 이름(GeForce RTX 4060)과 드라이버 버전, CUDA 버전이 표시되면 정상입니다. 명령을 찾을 수 없다는 오류가 나오면 드라이버를 먼저 설치합니다. sudo ubuntu-drivers autoinstall sudo reboot . 재부팅 후 nvidia-smi를 다시 실행해 확인합니다. CUDA Toolkit을 별도로 설치할 필요는 없습니다. PyTorch가 자체적으로 CUDA 런타임을 포함해서 배포되기 때문에 드라이버만 있으면 됩니다. . 기본 개발 환경 구축 (Visual Studio Code + Miniconda) Visual Studio Code와 Miniconda 설치, 가상환경 생성과 Visual Studio Code 연동은 아래 글을 따라 진행합니다. (Claude Code 설치 부분은 이 작업과 무관하므로 건너뛰어도 됩니다) . 우분투 Python 개발 환경: Visual Studio Code + Miniconda + Claude Code 설치 가이드 https://webnautes.com/%ec%9a%b0%eb%b6%84%ed%88%ac-python-%ea%b0%9c%eb%b0%9c-%ed%99%98%ea%b2%bd-visual-studio-code-miniconda-claude-code-%ec%84%a4%ec%b9%98-%ea%b0%80%ec%9d%b4%eb%93%9c/ . 이미지 생성 전용으로 imagegen 가상 환경을 만듭니다. conda create -n imagegen python=3.11 -y conda activate imagegen . PyTorch (CUDA 빌드) 설치 리눅스에서는 기본 설치 명령으로 CUDA 지원 빌드가 설치됩니다. pip install torch . 특정 CUDA 버전 빌드가 필요한 경우에는 PyTorch 공식 사이트에서 환경에 맞는 설치 명령을 확인합니다. 참고: 기본 명령으로 CUDA 빌드가 설치되는 것은 리눅스 한정입니다. 윈도우에서는 pip install torch가 CPU 빌드를 설치하므로, 윈도우 사용자는 반드시 공식 사이트 선택기에서 CUDA 버전을 골라 안내되는 명령으로 설치해야 합니다. . 설치 후 GPU 인식을 확인합니다. python -c "import torch; ok=torch.cuda.is_available(); print(ok, torch.cuda.get_device_name(0) if ok else 'GPU 미인식')" . 그래픽 카드 이름이 출력되면 성공입니다. “GPU 미인식”이 나오면 드라이버 문제이거나 CPU 빌드가 설치된 것이므로, pip uninstall torch 로 삭제한 후, 공식 홈페이지에서 확인하여 다시 설치해보세요. . diffusers 및 관련 패키지 설치 pip install diffusers transformers accelerate diffusers: Stable Diffusion 계열 모델의 파이프라인 라이브러리 transformers: 텍스트 인코더(CLIP 등) 로딩에 필요 accelerate: CPU 오프로딩(enable_model_cpu_offload)에 필요 . 스크립트 배치 이 문서 마지막의 전체 코드를 image_gen_cli.py 라는 이름으로 작업 폴더에 저장합니다. 보여주기 편하도록 터미널에서 진행했습니다. mkdir -p ~/imagegen cd ~/imagegen . 문서 마지막의 전체 코드를 image_gen_cli.py 파일에 붙여넣고 Ctrl +S를 눌러 저장합니다.. code image_gen_cli.py . 실행 python image_gen_cli.py . 최초 실행 시 Hugging Face에서 SDXL 모델(약 7GB)과 수정판 VAE(약 0.3GB)를 자동으로 다운로드합니다. 네트워크 속도에 따라 수 분에서 수십 분이 걸릴 수 있으며, 모델은 ~/.cache/huggingface/ 에 저장되어 이후 실행부터는 다운로드 없이 바로 로딩됩니다. . 다운로드시 다음처럼 HF_TOKEN을 설정하면 더 빨리 다운로드 받을 수 있다는 메시지가 보입니다. 블로그 글 작성시엔 그냥 했더니 다운로드 속도가 느렸습니다. Please set a HF_TOKEN to enable higher rate limits and faster downloads. . 사용 방법 SDXL은 영어 프롬프트에서 품질이 좋으므로, 프롬프트는 클로드 웹(claude.ai)에서 생성해 사용합니다. 클로드 웹에 만들고 싶은 이미지를 한국어로 설명하고, SDXL용 영어 프롬프트를 요청합니다. 요청 예: 나무 도마 위에 놓인 갓 만든 김밥을 스튜디오 음식 사진 느낌으로 찍은 이미지를 만들려고 해. SDXL용 영어 프롬프트를 한 줄로 만들어줘. 응답 예: freshly made gimbap slices on a wooden cutting board, glossy seaweed and colorful fillings, professional studio food photography, softbox lighting, shallow depth of field, 85mm macro lens, clean minimal background, appetizing, ultra detailed, 8k 스크립트의 프롬프트 > 입력창에 클로드가 생성한 영어 프롬프트를 붙여넣습니다. 생성이 끝나면 저장 경로가 출력됩니다. 기본 저장 위치는 ./outputs/image_날짜시각.png 입니다. 결과가 마음에 들지 않으면 클로드에 "더 밝게", "배경을 단순하게" 같은 수정 요청을 해서 프롬프트를 다듬은 뒤 다시 붙여넣습니다. q를 입력하면 종료됩니다. . 터미널에서 eog 프로그램을 사용하여 결과이미지를 간단히 확인해볼 수 있습니다. 디폴트로 1024 X 1024 이미지가 생성됩니다. eog /home/webnautes/imagegen/outputs/image_20260721_185355.png . . 모델은 실행 중 한 번만 로딩되며 이후, 프롬프트를 바꿔가며 연속으로 생성할 수 있습니다. . 실행 옵션 옵션 기본값 설명 --outdir outputs 이미지 저장 폴더 --steps 25 추론 스텝 수 (품질↔속도 조절) --width 1024 이미지 너비 --height 1024 이미지 높이 --seed 랜덤 시드 고정 (같은 프롬프트로 같은 결과 재현) --no-offload 꺼짐 CPU 오프로딩 비활성화 (VRAM에 전부 올려 속도 우선) . 사용 예: 속도 우선 (SDXL은 8GB에 들어가므로 가능) python image_gen_cli.py --no-offload 결과 재현용 시드 고정 python image_gen_cli.py --seed 42 해상도를 낮춰 빠르게 시안 확인 python image_gen_cli.py --steps 20 --width 768 --height 768 . 문제 해결 CUDA를 사용할 수 없다는 메시지가 나올 때 nvidia-smi로 드라이버 동작을 확인합니다. 4단계의 GPU 인식 확인 명령을 실행해 PyTorch CUDA 빌드가 설치됐는지 확인합니다. VRAM 부족(OOM)이 발생할 때 스크립트는 OOM 발생 시 종료되지 않고 안내 메시지 후 다음 입력을 받습니다. --no-offload 옵션을 빼고 기본(오프로딩 켜짐)으로 실행합니다. 해상도를 낮춥니다. 예: --width 768 --height 768 다른 GPU 사용 프로그램(브라우저의 하드웨어 가속 등)을 종료합니다. 모델 다운로드가 중단됐을 때 다시 실행하면 이어받기가 됩니다. 반복 실패 시 ~/.cache/huggingface/hub 아래 해당 모델 폴더를 삭제하고 재시도합니다. . 전체 코드 (image_gen_cli.py) !/usr/bin/env python3 """ 대화형 로컬 이미지 생성 CLI (SDXL, RTX 4060 8GB + 램 64GB 기준) 사용법: pip install torch # CUDA 지원 빌드 (리눅스 기본) pip install diffusers transformers accelerate python image_gen_cli.py # 기본 (SDXL, 오프로딩 사용) python image_gen_cli.py --no-offload # VRAM에 전부 올려 속도 우선 python image_gen_cli.py --steps 30 --width 1024 --height 1024 프롬프트를 입력하면 이미지를 생성하고 저장 경로를 출력합니다. q 입력 시 종료. 모델은 최초 1회만 로딩됩니다. """ import argparse import datetime import pathlib import sys import torch def load_pipeline(use_offload: bool): """SDXL 파이프라인 로딩. 최초 실행 시 모델(~7GB)을 다운로드합니다.""" from diffusers import AutoencoderKL, StableDiffusionXLPipeline print("모델 로딩 중... (최초 실행 시 다운로드에 시간이 걸립니다)") # 기본 VAE는 FP16에서 수치 오류가 있어 디코딩 시 FP32 업캐스팅(+약 1GB VRAM)이 # 발생하므로, FP16에서도 안정적으로 동작하는 수정판 VAE로 교체 vae = AutoencoderKL.from_pretrained( "madebyollin/sdxl-vae-fp16-fix", torch_dtype=torch.float16, ) pipe = StableDiffusionXLPipeline.from_pretrained( "stabilityai/stable-diffusion-xl-base-1.0", vae=vae, torch_dtype=torch.float16, variant="fp16", ) if use_offload: # 미사용 컴포넌트를 시스템 램으로 내려 VRAM 절약 (램 64GB 활용) pipe.enable_model_cpu_offload() else: pipe.to("cuda") pipe.enable_vae_tiling() # 고해상도 VAE 단계 OOM 방지 print("모델 로딩 완료.\n") return pipedef make_output_path(out_dir: pathlib.Path) -> pathlib.Path: out_dir.mkdir(parents=True, exist_ok=True) stamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S") return out_dir / f"image_{stamp}.png" def main(): parser = argparse.ArgumentParser(description="대화형 SDXL 이미지 생성기") parser.add_argument("--outdir", default="outputs", help="이미지 저장 폴더 (기본: ./outputs)") parser.add_argument("--steps", type=int, default=25, help="추론 스텝 수 (기본: 25)") parser.add_argument("--width", type=int, default=1024, help="이미지 너비 (기본: 1024)") parser.add_argument("--height", type=int, default=1024, help="이미지 높이 (기본: 1024)") parser.add_argument("--seed", type=int, default=None, help="시드 고정 (재현용, 생략 시 랜덤)") parser.add_argument("--no-offload", action="store_true", help="CPU 오프로딩 비활성화 (VRAM 여유 시 속도 향상)") args = parser.parse_args() if not torch.cuda.is_available(): sys.exit("CUDA를 사용할 수 없습니다. NVIDIA 드라이버와 PyTorch CUDA 빌드를 확인하세요.") out_dir = pathlib.Path(args.outdir).resolve() pipe = load_pipeline(use_offload=not args.no_offload) print("클로드 웹(claude.ai)에서 생성한 영어 프롬프트를 붙여넣어주세요.") print("종료: q 입력\n") while True: try: prompt = input("프롬프트 > ").strip() except (EOFError, KeyboardInterrupt): print("\n종료합니다.") break if not prompt: continue # 붙여넣기 시 딸려온 빈 줄 등은 무시하고 다시 입력 대기 if prompt.lower() == "q": print("종료합니다.") break generator = None if args.seed is not None: generator = torch.Generator(device="cuda").manual_seed(args.seed) print("생성 중...") try: image = pipe( prompt=prompt, num_inference_steps=args.steps, guidance_scale=7.0, width=args.width, height=args.height, generator=generator, ).images[0] except torch.cuda.OutOfMemoryError: torch.cuda.empty_cache() print("VRAM 부족(OOM)이 발생했습니다. --no-offload 옵션을 빼고 실행하거나 " "해상도를 낮춰보세요. (예: --width 768 --height 768)") continue path = make_output_path(out_dir) image.save(path) print(f"저장 완료: {path}\n")if name == "main": main() generator=generator, ).images[0] except torch.cuda.OutOfMemoryError: torch.cuda.empty_cache() print("VRAM 부족(OOM)이 발생했습니다. --no-offload 옵션을 빼고 실행하거나 " "해상도를 낮춰보세요. (예: --width 768 --height 768)") continue path = make_output_path(out_dir) image.save(path) print(f"저장 완료: {path}\n") if __name__ == "__main__": main() |