자체 호스팅 AI 이미지 생성기 하드웨어 사양 가이드
Stable Diffusion 및 ComfyUI 구동에 필요한 실제 하드웨어 사양을 정리했습니다. CPU VPS의 한계와 SDXL 모델 구동을 위한 VRAM 요구 사항, 그리고 원활한 이미지 생성을 위해 반드시 확보해야 할 디스크 용량과 권장 사양을 상세히 안내합니다.
자체 호스팅 AI 이미지 생성기에 실제로 필요한 것
자체 호스팅 AI 이미지 생성기는 하나의 웹 애플리케이션과 하나의 모델 파일로 구성됩니다. 애플리케이션은 ComfyUI이며, 모든 Linux 환경에서 실행됩니다. 하드웨어 사양을 결정하는 것은 모델입니다. SDXL급 체크포인트는 6.94 GB 크기의 단일 파일이며, GPU 메모리에 상주해야 합니다. 이 사실 하나가 전체 예산을 결정하므로, 서버를 임대하기 전에 아래의 하드웨어 등급을 확인하십시오.
솔직한 요약은 다음과 같습니다. CPU 전용 VPS에서도 소프트웨어를 설치하고 서비스할 수 있으며, 구형 Stable Diffusion 1.5 모델을 사용하여 512x512 크기의 이미지를 생성할 경우 이미지당 1~2분이 소요됩니다. 동일한 환경에서 SDXL로 1024x1024 크기의 이미지를 생성하면 이미지당 10~20분이 걸립니다. 이는 설정이 잘못된 것이 아닙니다. 단순한 연산 결과이며, 이 가이드에서 그 이유를 설명합니다.
모델 크기가 장비를 결정하는 이유
이미지 생성은 디노이징 루프를 실행합니다. 30단계 렌더링은 전체 모델을 이미지에 30번 통과시키며, 각 단계마다 모든 가중치를 읽어 들입니다. SDXL은 반정밀도(half precision)에서 약 6.9 GB의 가중치를 가지므로, 30단계 렌더링을 수행하면 결과물을 보기 전까지 약 200 GB의 데이터가 메모리를 거쳐 갑니다.
24 GB의 비디오 메모리(VRAM, 그래픽 칩 옆에 납땜된 메모리)를 탑재한 GPU는 초당 수백 GB의 속도로 데이터를 읽으며, 6.9 GB 전체를 한 번에 메모리에 올릴 수 있습니다. 반면 CPU 기반 VPS는 시스템 RAM을 초당 수십 GB의 속도로 읽으며, 컨볼루션 연산을 위한 행렬 하드웨어가 없기 때문에 동일한 루프가 10배에서 100배가량 느리게 실행됩니다. 이는 텍스트 모델을 결정짓는 메모리 대역폭 논리와 동일하며, GPU가 포함된 VPS가 비용 효율적인 경우와 함께 읽어볼 가치가 있습니다.
이미지 생성은 텍스트 생성과 한 가지 중요한 차이점이 있습니다. 챗 모델은 토큰을 스트리밍 방식으로 출력하므로, 읽는 동안 단어가 나타나기 때문에 느린 장비에서도 어느 정도 사용이 가능합니다. 하지만 이미지는 마지막 단계가 완료되어야만 나타납니다. 즉, 느린 장비에서는 진행률 표시줄만 계속 바라봐야 한다는 뜻입니다.
실제 수치로 보는 하드웨어 사다리
아래 블록은 2026년 7월 기준, 1024x1024 해상도, 30 스텝, Euler 샘플러를 사용한 SDXL 이미지 1장 생성 시의 일반적인 수치를 담고 있습니다. 이 수치는 대략적인 규모로 이해하십시오. 샘플러, 스텝 수, 해상도에 따라 결과는 달라집니다.
The data behind this chart
[
{
"label": "8 vCPU VPS, no GPU",
"seconds_per_image": 780
},
{
"label": "8GB VRAM GPU",
"seconds_per_image": 32
},
{
"label": "12GB VRAM GPU",
"seconds_per_image": 18
},
{
"label": "24GB VRAM GPU",
"seconds_per_image": 9
}
]CPU 행은 780 초로, 약 13분이 소요됩니다. 24 GB 카드는 9 초가 걸립니다. 이것이 바로 여러분이 비용을 지불하여 얻게 되는 성능 격차입니다.
사다리는 다음과 같이 읽으십시오. VRAM이 8 GB 미만인 경우에도 ComfyUI가 자동으로 레이어를 시스템 RAM으로 오프로드하기 때문에 SDXL은 여전히 실행되며, 1 GB의 메모리만으로도 카드를 구동할 수 있습니다. 오프로드는 매 스텝마다 시간을 소모하므로, 6 GB 카드는 30초보다는 1분에 가까운 생성 시간을 보입니다. 8 GB에서는 베이스 모델이 적재되어 쾌적한 렌더링이 가능합니다. 12 GB에서는 오프로드 없이 체크포인트와 함께 ControlNet 한두 개를 동시에 올릴 수 있습니다. 24 GB에서는 SDXL과 리파이너, 업스케일링을 하나의 워크플로우에서 실행할 수 있으며, 생성보다 훨씬 많은 메모리가 필요한 LoRA 어댑터 학습을 시작할 수 있습니다.
CPU VPS로 가능한 작업과 불가능한 작업
CPU VPS는 기대 이상의 성능을 낼 수 있지만, 마케팅 문구만큼 만능은 아닙니다. 그 경계를 명확히 이해해야 합니다.
CPU VPS에서도 ComfyUI를 설치하고, 웹 인터페이스를 제공하며, 모델 라이브러리를 관리하고, 큐를 처리하며, GPU 없이 이미지를 생성할 수 있습니다. 8개의 최신 vCPU와 16 GB RAM 환경에서 Stable Diffusion 1.5 모델을 512x512 해상도, 20 스텝으로 실행할 경우 이미지당 약 60에서 150초가 소요됩니다. 밤새 실행하는 배치 작업이나 큐 뒤에서 처리하는 저용량 이미지 엔드포인트라면 충분히 실용적인 수준입니다.
하지만 CPU VPS로 대화형 작업은 불가능합니다. 프롬프트를 수정하며 반복 작업(iteration)을 하려면 한 시간에 20번 정도 렌더링해야 하는데, 이미지당 13분씩 걸리면 한 시간에 4번밖에 처리할 수 없습니다. 또한 학습(training)도 불가능합니다. CPU에서 LoRA 파인튜닝을 수행하면 시간이 아닌 며칠 단위로 측정되므로, 사실상 불가능한 작업으로 간주해야 합니다.
CPU 전용 환경의 메모리 규칙은 GPU 환경과 다릅니다. 가중치가 시스템 RAM에 로드되므로 모델 크기에 작업 공간을 더한 용량이 필요합니다. SDXL은 약 16 GB, SD 1.5는 약 8 GB의 RAM이 필요합니다. 4 GB 사양의 서버에서 ComfyUI를 실행하면 첫 번째 렌더링 도중 out-of-memory killer에 의해 프로세스가 강제 종료됩니다. 이때 Python traceback 없이 프로세스가 사라지는 현상이 Killed의 dmesg 로그에 기록됩니다.
GPU 머신에 ComfyUI 설치하기
다음은 업스트림 명령어입니다. NVIDIA 드라이버가 이미 설치된 깨끗한 Ubuntu 24.04 환경에서 시작하십시오. 이후 발생하는 모든 오류는 이 확인 절차 없이는 동일하게 보일 수 있으므로, 먼저 드라이버를 확인해야 합니다.
nvidia-smi이 명령은 그래픽 카드 정보와 CUDA 버전이 포함된 표를 출력해야 합니다. command not found 또는 NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver가 출력된다면 드라이버가 없거나 업그레이드 후 커널 모듈이 로드되지 않은 상태입니다. ComfyUI가 자동으로 CPU 모드로 전환되어 소프트웨어 탓으로 오해할 수 있으므로, 계속 진행하기 전에 이 문제를 먼저 해결하십시오.
sudo apt update
sudo apt install -y git python3-venv python3-pip wget
git clone https://github.com/comfyanonymous/ComfyUI.git
cd ComfyUI
python3 -m venv venv
. venv/bin/activate
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu130
pip install -r requirements.txt가상 환경은 선택 사항이 아닙니다. PyTorch는 방대한 의존성 트리를 불러오며, 다른 서비스가 실행 중인 시스템에 전역으로 설치하면 해당 서비스가 손상될 수 있습니다. 다음 단계로 넘어가기 전에 PyTorch가 그래픽 카드를 인식하는지 확인하십시오.
python -c "import torch; print(torch.cuda.is_available(), torch.cuda.get_device_name(0))"True과 함께 그래픽 카드 이름이 출력되면 스택이 정상적으로 작동하는 것입니다. False가 출력된다면 설치된 휠이 드라이버와 일치하지 않는 것이며, 보통 CPU 전용 torch 휠이 캐시되어 있을 때 발생합니다. 위의 index URL을 사용하여 다시 설치하십시오.
모델 확보 및 디스크 계획
ComfyUI는 기본적으로 가중치 파일을 포함하지 않습니다. 체크포인트는 models/checkpoints에, VAE 파일은 models/vae에, LoRA 어댑터는 models/loras에 저장합니다.
cd ~/ComfyUI/models/checkpoints
wget https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors항상 .ckpt보다는 .safetensors을 사용하십시오. .ckpt 파일은 피클(pickled)된 파이썬 객체이며, 이를 로드하면 파일을 생성한 사람의 코드가 실행됩니다. safetensors 형식은 텐서 데이터만 포함하므로 악의적인 파일이 임의의 코드를 실행할 수 없습니다.
사람들이 흔히 간과하는 비용은 저장 공간입니다. SDXL 기본 체크포인트 하나는 6.94 GB입니다. 리파이너(refiner)는 6 GB를 추가로 차지합니다. ControlNet 모델 하나는 1.4에서 2.5 GB, 업스케일러는 60에서 350 MB, LoRA는 20에서 400 MB 정도입니다. 이 작업을 즐기는 사용자라면 일주일 안에 두세 개의 기본 모델을 추가로 다운로드하게 됩니다. 원활한 설치를 위해 100 GB의 디스크 공간을 확보하고, 출력 디렉터리도 모니터링하십시오. 1024x1024 PNG 파일은 하나당 1에서 2 MB를 차지하며, 무인 배치 작업은 작은 디스크를 순식간에 채워버립니다. models/과 output/는 용량 확장이 가능한 볼륨에 배치하고, 워크플로우 JSON 파일은 객체 스토리지로의 암호화된 증분 백업과 같은 방법으로 백업하십시오. 가중치 파일은 다시 다운로드할 수 있지만, 직접 튜닝한 워크플로우는 그렇지 않습니다.
실행 및 안전한 접속
cd ~/ComfyUI
. venv/bin/activate
python main.py --listen 127.0.0.1 --port 8188ComfyUI는 8188 포트에서 실행됩니다. CPU 전용 서버라면 --cpu 플래그를 추가하십시오. 이 플래그는 CUDA 장치가 없을 때 발생하는 오류를 방지하고 CPU 경로를 강제로 사용하게 합니다.
0.0.0.0가 아닌 127.0.0.1에 바인딩하십시오. ComfyUI에는 로그인 화면이나 사용자 계정 기능이 없습니다. 해당 포트에 접근할 수 있는 모든 사용자는 작업을 대기열에 추가하고, 생성된 모든 이미지를 읽을 수 있으며, 커스텀 노드를 설치할 수 있습니다. 이는 서버에서 임의의 코드를 실행할 수 있음을 의미합니다. 대신 노트북에서 SSH 터널을 통해 접속하십시오.
ssh -N -L 8188:127.0.0.1:8188 you@your-server그다음 로컬에서 http://127.0.0.1:8188을 여십시오. 다중 사용자 접근이 반드시 필요하다면, 인증 기능이 포함된 리버스 프록시를 앞단에 배치하고 애플리케이션은 localhost에 바인딩된 상태를 유지하십시오. 이러한 논리는 인증 기능이 없는 모든 자가 호스팅 서비스에 동일하게 적용되며, 이는 VPS에서의 Docker Compose 배포 시 표준적인 방식입니다.
systemd를 사용하여 서비스 유지하기
SSH 세션이 종료될 때 함께 중단되는 렌더 큐는 서비스라고 할 수 없습니다. /etc/systemd/system/comfyui.service을 작성하십시오.
[Unit]
Description=ComfyUI
After=network-online.target
[Service]
User=comfy
WorkingDirectory=/home/comfy/ComfyUI
ExecStart=/home/comfy/ComfyUI/venv/bin/python main.py --listen 127.0.0.1 --port 8188
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable --now comfyui
systemctl status comfyuiactive (running)과 To see the GUI go to: http://127.0.0.1:8188라는 로그 줄이 나타나면 서비스가 정상적으로 실행 중인 것입니다. systemd는 사용자의 셸 프로필을 실행하지 않으며 activate도 발생하지 않으므로, ExecStart에서 가상 환경 내부의 인터프리터를 직접 지정해야 한다는 점에 유의하십시오.
예산에 따른 실용적인 권장 사항
이미지 생성을 시도하고 싶지만 속도보다 비용이 중요하다면, 16 GB RAM을 갖춘 CPU VPS를 선택하십시오. 여기서 512x512 해상도로 SD 1.5를 실행하면 이미지당 1~2분 정도가 소요됩니다. 이것이 가장 현실적인 입문 방법이며, GPU가 탑재된 장비보다 비용이 훨씬 저렴합니다. 또한 향후 방향을 결정하는 동안 모델 라이브러리와 워크플로우를 호스팅하기에 적합한 환경입니다.
매일 프롬프트를 수정하며 반복 작업한다면, GPU 클라우드에서 최소 12 GB VRAM을 갖춘 GPU를 시간 단위로 대여하고 작업이 끝나면 즉시 종료하십시오. 이미지 생성은 간헐적으로 발생하는 작업이므로, 사용하지 않는 GPU를 월 단위로 결제하는 것은 과도한 지출의 가장 흔한 원인입니다. 체크포인트는 저렴한 블록 스토리지에 보관하고 필요할 때 마운트하여 사용하십시오.
다른 사람에게 서비스를 제공하거나 LoRA 어댑터를 학습시켜야 한다면, 24 GB VRAM이 필요하며 상시 가동되는 장비가 있어야 합니다. 이 단계에 이르면 해당 장비는 Ollama를 이용한 LLM 셀프 호스팅에서 설명한 것처럼 로컬 언어 모델을 구동하여 장비 유지 비용을 충분히 충당할 수 있습니다.
어떤 사양을 선택하든, 공개된 수치를 맹신하기 전에 자신의 장비에서 직접 측정하십시오. 동일한 프롬프트를 5번 대기열에 넣고 ComfyUI 콘솔에 출력되는 초당 반복 횟수(seconds-per-iteration)를 확인하십시오. 그 수치가 귀하의 실제 장비 성능 지표입니다.
FAQ
GPU 없이 Stable Diffusion을 실행할 수 있습니까?
네. ComfyUI는 python main.py --cpu 환경에서 실행할 수 있으며 그래픽 카드 없이도 실제 이미지를 생성합니다. 8개의 최신 vCPU를 사용하는 경우, Stable Diffusion 1.5(512x512 해상도)는 이미지당 약 60~150초, SDXL(1024x1024 해상도)은 10~20분 정도 소요됩니다. 이 방식은 야간 배치 작업이나 요청량이 적은 엔드포인트에는 적합합니다. 프롬프트를 반복적으로 수정하며 작업하기에는 부적합하며, 모델 학습은 불가능합니다.
SDXL을 실행하려면 VRAM이 얼마나 필요합니까?
8 GB VRAM이면 1024x1024 해상도에서 SDXL을 원활하게 실행할 수 있습니다. 그보다 적은 경우 ComfyUI가 자동으로 레이어를 시스템 RAM으로 오프로드하여 약 1 GB VRAM 환경에서도 작동하지만, 오프로드된 단계마다 처리 시간이 늘어납니다. 12 GB VRAM이면 체크포인트와 함께 ControlNet을 동시에 올릴 수 있으며, 24 GB VRAM은 베이스 모델, 리파이너, 업스케일링을 하나의 워크플로우에서 처리할 수 있는 용량으로 LoRA 어댑터 학습을 위한 실질적인 최소 사양입니다.
모델을 저장하려면 디스크 공간이 얼마나 필요합니까?
SDXL 베이스 체크포인트 파일 하나만 6.94 GB이며, 리파이너 모델은 약 6 GB를 추가로 차지합니다. ControlNet 모델은 개당 1.4~2.5 GB, LoRA 어댑터는 20~400 MB, 업스케일러는 최대 350 MB입니다. 몇 가지 베이스 모델을 포함한 기본 설치 환경을 위해 100 GB 정도의 공간을 확보하십시오. 1024x1024 PNG 파일은 개당 1~2 MB를 차지하므로 출력 디렉터리 용량도 별도로 관리해야 합니다.
ComfyUI를 공용 인터넷에 노출해도 안전합니까?
아니요. ComfyUI에는 어떠한 인증 기능도 없으며, 커스텀 노드 시스템을 통해 인터페이스에서 파이썬 코드를 설치하고 실행할 수 있습니다. 따라서 포트를 개방하는 것은 서버에서 원격 코드 실행을 허용하는 것과 같습니다. 127.0.0.1에 바인딩하고 ssh -N -L 8188:127.0.0.1:8188 you@your-server를 사용하여 SSH 터널을 통해 접속하십시오. 여러 명이 접근해야 한다면 앞단에 인증 기능을 갖춘 리버스 프록시를 배치해야 합니다.
오류 메시지 없이 렌더링이 종료되는 이유는 무엇입니까?
파이썬 트레이스백 없이 dmesg에서 Killed와 함께 프로세스가 사라지는 현상은 ComfyUI의 버그가 아니라 리눅스의 OOM(Out-of-Memory) 킬러가 작동한 것입니다. CPU 전용 서버에서는 모델 가중치가 시스템 RAM에 상주하므로, SDXL은 약 16 GB, SD 1.5는 약 8 GB의 RAM과 추가 작업 공간이 필요합니다. RAM을 증설하거나 스왑 메모리를 추가하십시오. 혹은 더 작은 모델을 사용하거나 해상도를 낮추어야 합니다.