SSD Nodes Learn 8GB RAM — $66/năm
Hướng dẫn Matt ConnorBởi Matt Connor · Cập nhật ngày 2026-08-01

Self-host AI tạo ảnh: cần máy và GPU nào?

Biết rõ phần cứng để tự host AI tạo ảnh: CPU VPS mất 1–2 phút với SD 1.5, nhưng SDXL 1024px mất 10–20 phút; kèm cài ComfyUI và dự toán disk.

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à chạy được trên mọi máy Linux. Model quyết định phần cứng bạn cần. Một checkpoint cấp SDXL là một file duy nhất có dung lượng 6.94 GB và cần nằm trong GPU memory. 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 chính xác: VPS chỉ có CPU vẫn có thể cài và chạy phần mềm, đồng thời tạo ảnh 512x512 bằng model Stable Diffusion 1.5 cũ với thời gian khoảng một đến hai phút mỗi ảnh. Cùng máy đó, khi chạy SDXL ở 1024x1024, sẽ mất từ mười đến hai mươi phút mỗi ảnh. Đây không phải là cấu hình bị lỗi. Đó là vấn đề tính toán, và hướng dẫn này sẽ giải thích.

Vì kích thước model quyết định loại máy

Tạo ảnh chạy một vòng lặp khử nhiễu. Một lần render 30 bước truyền toàn bộ model qua ảnh 30 lần, và mỗi bước đọc mọi weight. SDXL ở 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, phần memory được hàn cạnh chip đồ họa) đọc với 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 với tốc độ hàng chục gigabyte mỗi giây và không có phần cứng ma trận cho các phép tích chập, nên cùng vòng lặp đó chạy chậm hơn từ 1 đến 2 bậc độ lớn. Đây cũng là lập luận về memory bandwidth chi phối các text model, và bạn nên đọc 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 cho cảm giác có thể sử dụng được vì các từ xuất hiện trong khi 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à bạn phải nhìn chằm chằm vào progress bar.

Bậc phần cứng, với số liệu thực tế

Khối bên dưới chứa các số liệu điển hình cho một ảnh SDXL ở 1024x1024, 30 bước, sampler Euler, tính đến tháng 7 năm 2026. Hãy xem đây là các mức độ lớn. Sampler, số bước và độ phân giải bạn dùng sẽ làm các giá trị này thay đổi.

ChartOne SDXL image, 1024x1024, 30 steps (typical, July 2026)
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ảng theo cách sau. Khi 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ể sử dụng card chỉ với 1 GB. Offload làm tăng thời gian ở mỗi bước, nên card 6 GB thường mất gần một phút cho mỗi ảnh hơn là gần ba mươi giây. Ở mức 8 GB, model cơ sở vừa đủ chỗ và quá trình render diễn ra ổn định. Ở mức 12 GB, bạn có thể giữ một hoặc hai ControlNet cùng với checkpoint mà không cần offload. Ở mức 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 các adapter LoRA, vốn cần nhiều memory hơn đáng kể so với việc generate ảnh.

VPS CPU có thể làm gì và không thể làm gì

Nó có thể làm được nhiều hơn mọi người nghĩ và ít hơn quảng cáo tuyên bố. Cần xác định rõ giới hạn này.

VPS CPU có thể cài ComfyUI, phục vụ giao diện web, lưu thư viện model, chạy hàng đợi và tạo ảnh hoàn toàn không cần GPU. Với Stable Diffusion 1.5 ở độ phân giải 512x512 và 20 bước, thời gian tạo mỗi ảnh trên 8 vCPU hiện đại với 16 GB RAM thường khoảng 60 đến 150 giây. Với job chạy qua đêm hoặc endpoint tạo ảnh lưu lượng thấp đặt sau một hàng đợi, mức 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 một giờ, nhưng nếu mỗi lần mất 13 phút thì bạn chỉ có 4 ảnh. VPS CPU cũng không thể dùng để train. Fine-tuning LoRA trên CPU được tính bằng ngày, không phải giờ, nên hãy xem như không khả dụng.

Quy tắc về bộ nhớ khi chỉ dùng CPU khác với quy tắc trên GPU. Weights được nạp vào RAM hệ thống, vì vậy bạn cần dung lượng cho model cộng với không gian làm việc: 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 dừng giữa lần render đầu tiên. Khi đó process biến mất cùng với Killed trong dmesg và không có Python traceback.

Cài đặt ComfyUI trên máy có GPU

Đây là các lệnh từ upstream. Bắt đầu với bản cài Ubuntu 24.04 sạch, trong đó NVIDIA driver đã được cài sẵn. Kiểm tra driver trước, vì nếu bỏ qua bước này thì mọi lỗi về sau đều trông giống nhau.

nvidia-smi

Lệ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 chưa được nạp sau khi nâng cấp. Hãy xử lý vấn đề đó 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ẽ tưởng phần mềm bị lỗi.

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

Virtual environment không phải là khuyến nghị tùy chọn. PyTorch kéo theo một dependency tree lớn. Cài đặt nó trên toàn hệ thống của một máy đang chạy các dịch vụ khác có thể làm hỏng các dịch vụ đó. Kiểm tra để chắc chắn PyTorch nhận được 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à 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. Cài đặt lại bằng index URL ở trên.

Tải model và lập kế hoạch dung lượng đĩa

ComfyUI không đi 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.safetensors

Luôn ưu tiên .safetensors thay cho .ckpt. File .ckpt là một Python object được pickle; khi load file, mã từ người tạo file sẽ được thực thi. Định dạng safetensors chỉ chứa tensor, nên file độc hại không thể chạy mã.

Dung lượng lưu trữ là chi phí thường bị bỏ quên. Một checkpoint SDXL base có dung lượng 6.94 GB. 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 và một LoRA chiếm 20 đến 400 MB. Người dùng thường tải thêm model base thứ hai và thứ ba trong vòng một tuần. Dành 100 GB dung lượng đĩa cho một cài đặt hoạt động ổn định. Đồng thời, hãy monitor cả thư mục output: file PNG 1024x1024 có dung lượng 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àm đầy đĩa nhỏ. Đặt models/output/ trên volume có thể mở rộng. Sao lưu các file workflow JSON bằng cách như sao lưu 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 8188

ComfyUI chạy trên port 8188. Trên máy chỉ có CPU, thêm --cpu. Tùy chọn này buộc ComfyUI dùng đường dẫn CPU thay vì lỗi do không tìm thấy 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 port này đều có thể xếp hàng job, đọc mọi image bạn đã tạo và cài custom node. Việc này cho phép thực thi mã tùy ý trên server của bạn. Thay vào đó, truy cập qua SSH tunnel từ laptop của bạn.

ssh -N -L 8188:127.0.0.1:8188 you@your-server

Sau đó, mở http://127.0.0.1:8188 trên máy local. Nếu cần truy cập thực sự cho nhiều người dùng, đặt reverse proxy có authentication phía trước và giữ ứng dụng bind vào localhost. Lý do tương tự áp dụng cho mọi self-hosted service không có authentication. Đây cũng là pattern tiêu chuẩn trong các deployment Docker Compose trên VPS.

Chạy liên tục dưới systemd

Một hàng đợi render bị dừng khi phiên SSH của bạn đóng không phải là một service. Hãy viết /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.target
sudo systemctl daemon-reload
sudo systemctl enable --now comfyui
systemctl status comfyui

active (running) và một dòng log có nội dung To see the GUI go to: http://127.0.0.1:8188 cho biết service đang chạy. Lưu ý rằng ExecStart chỉ rõ trực tiếp interpreter bên trong virtual environment, vì systemd không chạy shell profile của bạn và activate không bao giờ xảy ra.

Khuyến nghị thực tế theo ngân sách

Nếu 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 ở 512x512 và chấp nhận thời gian 1 đến 2 phút cho mỗi ảnh. Đây là điểm bắt đầu thực tế và chi phí chỉ bằng một phần nhỏ so với mọi lựa chọn có GPU. Đây cũng là nơi phù hợp để lưu thư viện model và các workflow trong khi bạn đánh giá.

Nếu bạn lặp lại 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 ngừng sử dụng. Tạo ảnh là công việc theo đợt. GPU không hoạt động nhưng vẫn bị tính phí hằng tháng là nguyên nhân 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.

Nếu bạn cung cấp dịch vụ cho người khác hoặc train adapter LoRA, bạn cần 24 GB VRAM và một máy được duy trì chạy liên tục. Khi đó, cùng một máy thường có thể tiếp tục phát huy hiệu quả bằng cách chạy thêm một local language model, theo thiết lập được mô tả trong tự host LLM với 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 nào được công bố. Hãy chạy cùng một prompt 5 lần và đọc số giây trên mỗi iteration mà ComfyUI in ra trong console. Con số đó mới là 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ần GPU không?

Có. ComfyUI chạy với python main.py --cpu và tạo ảnh thực tế mà không cần card đồ họa. Với Stable Diffusion 1.5 ở độ phân giải 512x512 trên 8 vCPU hiện đại, mỗi ảnh mất khoảng 60 đến 150 giây. Với SDXL ở 1024x1024, mỗi ảnh mất khoảng 10 đến 20 phút. Cấu hình này phù hợp để chạy các batch qua đêm và các endpoint có lưu lượng thấp. Cấu hình này không phù hợp để lặp lại prompt, và hoàn toàn không đủ để training.

Tôi cần bao nhiêu VRAM cho SDXL?

8 GB đủ để chạy SDXL ở 1024x1024 một cách ổn định. Nếu ít hơn, ComfyUI sẽ tự động offload các layer sang system RAM và vẫn chạy được, xuống khoảng 1 GB VRAM. Tuy nhiên, 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. 24 GB đủ để chạy base, refiner và upscaling trong cùng một workflow, đồng thời là mức thực tế tối thiểu để training LoRA adapter.

Model cần bao nhiêu dung lượng disk?

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 1.4 đến 2.5 GB. LoRA adapter chiếm 20 đến 400 MB. Upscaler có thể chiếm đến 350 MB. Hãy dành 100 GB cho một cài đặt đang hoạt động với vài model base. Đồng thời, hãy theo dõi riêng thư mục output, vì file PNG 1024x1024 thường chiếm 1 đến 2 MB mỗi file.

Có an toàn khi đưa ComfyUI lên public internet không?

Không. ComfyUI không có bất kỳ cơ chế authentication nào. Hệ thống custom-node của nó cài đặt và chạy Python code từ giao diện. Vì vậy, một port mở đồng nghĩa với việc server của bạn có thể bị thực thi mã từ xa. 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ó nhiều hơn một người cần truy cập.

Tại 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 với 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 system RAM. Vì vậy, SDXL cần khoảng 16 GB và SD 1.5 cần khoảng 8 GB, chưa tính phần RAM cho quá trình xử lý. Hãy tăng RAM, thêm swap, hoặc chuyển sang model nhỏ hơn với độ phân giải thấp hơn.

#stable-diffusion#comfyui#ai#images#tự lưu trữ#gpu