Tự host AI tạo ảnh cần cấu hình máy nào?
Biết VPS CPU làm được gì, SDXL cần bao nhiêu VRAM, vì sao ảnh 1024 mất 10–20 phút, cùng lệnh cài ComfyUI và dung lượng disk cần dự trù.
Một trình tạo ảnh AI tự host thực sự cần gì
Một trình tạo ảnh AI tự host gồm một web app và một file model. App là ComfyUI và có thể chạy trên mọi máy Linux. Model quyết định phần cứng bạn cần. Một checkpoint thuộc lớp SDXL là file đơn 6.94 GB và cần nằm trong bộ nhớ GPU. Yếu tố này quyết định toàn bộ ngân sách, vì vậy hãy đọc các mức phần cứng bên dưới trước khi thuê máy.
Tóm tắt thực tế: VPS chỉ có CPU vẫn có thể cài đặt và cung cấp phần mềm, đồng thời tạo ảnh ở độ phân giải 512x512 bằng model Stable Diffusion 1.5 cũ với thời gian khoảng một đến hai phút cho mỗi ảnh. Cùng máy đó khi chạy SDXL ở độ phân giải 1024x1024 sẽ mất từ mười đến hai mươi phút cho mỗi ảnh. Đây không phải là lỗi cấu hình. Đó là vấn đề tính toán, và hướng dẫn này sẽ giải thích lý do.
Kích thước model quyết định loại máy
Tạo ảnh chạy theo một vòng lặp khử nhiễu. Một lần render 30 bước đưa toàn bộ model qua ảnh 30 lần, và mỗi lần đều đọc mọi weight. SDXL ở độ chính xác half precision có khoảng 6.9 GB weight, vì vậy một lần render 30 bước truyền khoảng 200 GB dữ liệu qua memory trước khi bạn thấy ảnh.
GPU có 24 GB video memory (VRAM, loại memory được hàn ngay cạnh chip đồ họa) đọc dữ liệu ở tốc độ hàng trăm gigabyte mỗi giây và chứa toàn bộ 6.9 GB cùng lúc. CPU VPS đọc system RAM ở tốc độ hàng chục gigabyte mỗi giây và không có phần cứng xử lý ma trận cho các phép tích chập, nên cùng một vòng lặp chạy chậm hơn từ một đến hai bậc độ lớn. Đây cũng là lập luận về memory bandwidth chi phối text model, và bạn nên đọc phần này cùng với khi nào VPS có GPU thực sự đáng tiền.
Tạo ảnh khác tạo văn bản ở một điểm quan trọng. Chat model stream token, nên máy chậm vẫn có cảm giác dùng được vì các từ xuất hiện trong lúc bạn đọc. Ảnh chỉ xuất hiện khi bước cuối cùng hoàn tất. Chậm nghĩa là phải nhìn thanh tiến trình.
Bậc phần cứng, với số liệu thực tế
Khối bên dưới đưa ra các số liệu điển hình cho một ảnh SDXL ở độ phân giải 1024x1024, 30 bước, dùng Euler sampler, tính đến tháng 7 năm 2026. Hãy xem đây là các con số theo bậc độ lớn. Sampler, số bước và độ phân giải bạn dùng sẽ làm các số liệu này thay đổi.
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
}
]Dòng CPU là 780 giây, tương đương khoảng mười ba phút. Card 24 GB mất 9 giây. Đây là khoảng chênh lệch mà bạn đang trả tiền để rút ngắn.
Hãy đọc bậc phần cứng theo cách sau. Với VRAM dưới 8 GB, SDXL vẫn chạy được vì ComfyUI tự động offload các layer sang RAM hệ thống và có thể chạy trên card chỉ có 1 GB. Offload làm tăng thời gian ở mỗi bước, nên card 6 GB mất gần một phút cho mỗi ảnh hơn là gần ba mươi giây. Với 8 GB, base model vừa đủ nằm trong VRAM và quá trình render diễn ra ổn định. Với 12 GB, bạn có thể giữ một hoặc hai ControlNet cùng checkpoint mà không cần offload. Với 24 GB, bạn có thể chạy SDXL, refiner và upscaling trong cùng một workflow, đồng thời bắt đầu train LoRA adapter, vốn cần nhiều memory hơn đáng kể so với việc generate ảnh.
VPS CPU làm được gì và không làm được gì
Nó làm được nhiều hơn mọi người thường nghĩ, nhưng ít hơn những gì marketing quảng cáo. Cần xác định rõ giới hạn.
VPS CPU có thể cài ComfyUI, cung cấp web interface, lưu thư viện model, chạy queue và generate image hoàn toàn không cần GPU. Với Stable Diffusion 1.5 ở 512x512 và 20 step, thời gian mỗi image trên 8 vCPU hiện đại với 16 GB RAM thường khoảng 60 đến 150 giây. Với batch job chạy qua đêm hoặc image endpoint có lưu lượng thấp chạy sau một queue, mức hiệu năng này hoàn toàn chấp nhận được.
VPS CPU không phù hợp cho công việc tương tác. Việc lặp prompt có thể cần 20 lần render trong 1 giờ, nhưng nếu mỗi lần mất 13 phút thì bạn chỉ có 4 lần. VPS CPU cũng không phù hợp để train. LoRA fine-tuning trên CPU được tính bằng ngày, không phải giờ, nên hãy xem tính năng này là không khả dụng.
Quy tắc về memory khi chỉ dùng CPU khác với quy tắc trên GPU. Weights được load vào system RAM, nên bạn cần dung lượng của model cộng với khoảng trống để xử lý: khoảng 16 GB RAM cho SDXL và khoảng 8 GB cho SD 1.5. Máy 4 GB sẽ khởi động ComfyUI, sau đó bị out-of-memory killer kill giữa lần render đầu tiên. Khi đó process biến mất với Killed trong dmesg và không có Python traceback.
Cài ComfyUI trên máy có GPU
Đây là các lệnh từ upstream. Hãy bắt đầu với Ubuntu 24.04 mới cài, trong đó NVIDIA driver đã có sẵn. Trước tiên phải xác nhận driver, vì nếu bỏ qua bước này thì mọi lỗi ở các bước sau đều trông giống nhau.
nvidia-smiLệnh này phải in ra một bảng có card của bạn và phiên bản CUDA. command not found hoặc NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver nghĩa là driver chưa được cài hoặc kernel module không load sau khi nâng cấp. Hãy sửa lỗi đó trước khi tiếp tục, vì ComfyUI sẽ âm thầm chuyển sang chạy bằng CPU và bạn sẽ đổ lỗi cho phần mềm.
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.txtVirtual environment không phải khuyến nghị tùy chọn. PyTorch kéo theo một dependency tree lớn. Cài PyTorch trên toàn hệ thống của một máy đang chạy các dịch vụ khác là cách làm hỏng các dịch vụ đó. Hãy xác minh PyTorch có thể thấy card trước khi tiếp tục.
python -c "import torch; print(torch.cuda.is_available(), torch.cuda.get_device_name(0))"True cùng với tên card của bạn nghĩa là toàn bộ stack đang hoạt động. False nghĩa là wheel đã cài không tương thích với driver, thường do CPU-only torch wheel đã có sẵn trong cache. Hãy cài lại bằng index URL ở trên.
Tải model và lập kế hoạch dung lượng đĩa
ComfyUI không kèm weights. Đặt checkpoint trong models/checkpoints, file VAE trong models/vae và adapter LoRA trong models/loras.
cd ~/ComfyUI/models/checkpoints
wget https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensorsLuôn ưu tiên .safetensors thay cho .ckpt. File .ckpt là một Python object được pickle, và việc load file này sẽ thực thi code từ người tạo file. Định dạng safetensors chỉ chứa tensor, nên file độc hại không thể chạy code.
Dung lượng lưu trữ là khoản nhiều người quên tính. Một checkpoint SDXL base chiếm 6.94 GB. Model refiner chiếm thêm 6 GB. Một model ControlNet chiếm 1.4 đến 2.5 GB, một upscaler chiếm 60 đến 350 MB, còn một LoRA chiếm 20 đến 400 MB. Người dùng đã quen với quy trình này thường tải model base thứ hai và thứ ba trong vòng một tuần. Hãy dự trù 100 GB dung lượng đĩa cho một cài đặt hoạt động ổn định, đồng thời theo dõi cả thư mục outputs: file PNG 1024x1024 chiếm 1 đến 2 MB mỗi file, và một batch chạy không giám sát có thể âm thầm lấp đầy ổ đĩa nhỏ. Đặt models/ và output/ trên một volume có thể mở rộng, đồng thời backup các file workflow JSON bằng phương thức như backup tăng dần được mã hóa lên object storage. Có thể tải lại weights. Các workflow bạn đã tinh chỉnh thì không.
Chạy và truy cập an toàn
cd ~/ComfyUI
. venv/bin/activate
python main.py --listen 127.0.0.1 --port 8188ComfyUI chạy trên cổng 8188. Trên máy chỉ có CPU, thêm --cpu để buộc dùng đường dẫn CPU thay vì bị lỗi vì không có thiết bị CUDA.
Bind vào 127.0.0.1, không bind vào 0.0.0.0. ComfyUI không có màn hình đăng nhập và không có tài khoản người dùng. Bất kỳ ai truy cập được cổng này đều có thể xếp hàng job, đọc mọi image bạn đã tạo và cài custom node. Điều đó cho phép thực thi mã tùy ý trên server của bạn. Thay vào đó, hãy truy cập qua SSH tunnel từ laptop của bạn.
ssh -N -L 8188:127.0.0.1:8188 you@your-serverSau đó mở http://127.0.0.1:8188 trên máy cục bộ. Nếu cần cho nhiều người dùng thật sự truy cập, hãy đặt reverse proxy có authentication ở phía trước và giữ cho app bind vào localhost. Lý do tương tự cũng áp dụng cho mọi self-hosted service không có authentication. Đây là pattern tiêu chuẩn trong các triển khai Docker Compose trên VPS.
Duy trì tiến trình bằng systemd
Một render queue bị dừng khi phiên SSH đóng không phải là một service. Tạo /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) và dòng log To see the GUI go to: http://127.0.0.1:8188 cho biết tiến trình đang chạy. Lưu ý rằng ExecStart chỉ trực tiếp interpreter bên trong virtual environment, vì systemd không chạy shell profile của bạn nên activate không bao giờ xảy ra.
Khuyến nghị thực tế theo ngân sách
Nếu bạn muốn thử tạo ảnh và chi phí quan trọng hơn tốc độ, hãy chọn một CPU VPS có 16 GB RAM, chạy SD 1.5 ở độ phân giải 512x512 và chấp nhận mỗi ảnh mất một hoặc hai phút. Đây là điểm bắt đầu thực tế. Chi phí chỉ bằng một phần nhỏ so với các máy có GPU. Đây cũng là nơi phù hợp để lưu thư viện model và các workflow trong lúc bạn đánh giá.
Nếu bạn lặp lại việc chỉnh prompt hằng ngày, hãy thuê GPU có ít nhất 12 GB VRAM theo giờ từ một GPU cloud và tắt máy khi dừng sử dụng. Tạo ảnh là tác vụ có tải theo từng đợt. GPU chạy không tải nhưng vẫn bị tính phí theo tháng là cách phổ biến nhất khiến người dùng chi quá mức trong trường hợp này. Hãy lưu các checkpoint trên block storage giá rẻ và mount chúng khi cần.
Nếu bạn cung cấp dịch vụ cho người khác hoặc huấn luyện adapter LoRA, bạn cần 24 GB VRAM và một máy được duy trì liên tục. Ở mức này, cùng một máy thường có thể chạy thêm một language model cục bộ để tận dụng chi phí. Đây là setup được mô tả trong tự host LLM bằng Ollama.
Dù chọn mức nào, hãy đo trên chính máy của bạn trước khi tin vào bất kỳ số liệu được công bố nào. Hãy đưa cùng một prompt vào hàng đợi 5 lần và đọc số giây trên mỗi iteration mà ComfyUI in ra trong console. Con số đó cho biết vị trí thực tế của bạn trên thang hiệu năng.
FAQ
Tôi có thể chạy Stable Diffusion mà không có GPU không?
Có. ComfyUI chạy với python main.py --cpu và vẫn tạo được ảnh thật khi không có card đồ họa. Với 8 vCPU hiện đại, mỗi ảnh Stable Diffusion 1.5 ở độ phân giải 512x512 mất khoảng 60 đến 150 giây, còn SDXL ở 1024x1024 mất từ 10 đến 20 phút. Cấu hình này phù hợp để chạy batch qua đêm và các endpoint có lưu lượng thấp. Nó không phù hợp để lặp prompt, và hoàn toàn không đủ cho việc training.
Tôi cần bao nhiêu VRAM cho SDXL?
8 GB đủ để chạy SDXL ổn định ở 1024x1024. Nếu ít hơn, ComfyUI tự động offload các layer sang RAM hệ thống và vẫn chạy được, xuống đến khoảng 1 GB VRAM, nhưng mỗi bước offload đều làm tăng thời gian xử lý. 12 GB cho phép giữ một ControlNet cùng với checkpoint, còn 24 GB đủ cho base, refiner và upscaling trong cùng một workflow. Đây cũng là mức thực tế tối thiểu để training LoRA adapter.
Các model cần bao nhiêu dung lượng đĩa?
Riêng checkpoint SDXL base đã chiếm 6.94 GB, còn refiner cần thêm khoảng 6 GB. Mỗi model ControlNet chiếm từ 1.4 đến 2.5 GB, LoRA adapter từ 20 đến 400 MB, còn upscaler có thể chiếm đến 350 MB. Hãy dành 100 GB cho một bản cài đặt có thể sử dụng với một vài model base, và theo dõi riêng thư mục output, vì mỗi file PNG 1024x1024 thường chiếm từ 1 đến 2 MB.
Expose ComfyUI trên Internet công cộng có an toàn không?
Không. ComfyUI không có bất kỳ cơ chế authentication nào, còn hệ thống custom-node của nó có thể cài đặt và chạy Python code từ giao diện. Vì vậy, một port đang mở đồng nghĩa với khả năng remote code execution trên server của bạn. Hãy bind nó vào 127.0.0.1, truy cập qua SSH tunnel bằng ssh -N -L 8188:127.0.0.1:8188 you@your-server, và đặt một reverse proxy có authentication ở phía trước nếu có hơn một người cần truy cập.
Vì sao render của tôi bị kill mà không có thông báo lỗi?
Nếu process biến mất, có Killed trong dmesg và không có Python traceback, nguyên nhân là Linux out-of-memory killer, không phải bug của ComfyUI. Trên máy chỉ chạy bằng CPU, weights nằm trong RAM hệ thống. Vì vậy, SDXL cần khoảng 16 GB còn SD 1.5 cần khoảng 8 GB, chưa tính phần RAM làm việc. Hãy tăng RAM, thêm swap, hoặc chuyển sang model nhỏ hơn và độ phân giải thấp hơn.