Self-hosted AI image generator চালাতে আসল hardware কত লাগে
Stable Diffusion নিজে চালাতে CPU VPS-এ কী সম্ভব, SDXL-এর 6.94 GB checkpoint ও VRAM কেন দরকার, এবং ComfyUI install ও disk budget কী হবে জানুন।
একটি self-hosted AI image generator-এর আসলে যা প্রয়োজন
একটি self-hosted AI image generator হলো একটি web app এবং একটি model file। app-টি হলো ComfyUI, এবং এটি যেকোনো Linux box-এ চলে। আপনার hardware নির্ধারণ করে model। SDXL-class checkpoint একটি 6.94 GB file, এবং এটি GPU memory-তে থাকা প্রয়োজন। এই একটি বিষয়ই সম্পূর্ণ budget নির্ধারণ করে। তাই কোনো কিছু rent করার আগে নিচের hardware ladder পড়ুন।
সারাংশটি পরিষ্কার: CPU-only VPS software install ও serve করতে পারে। এটি পুরোনো Stable Diffusion 1.5 model ব্যবহার করে 512x512 মাপের image প্রতি এক বা দুই মিনিটে generate করতে পারে। একই box-এ 1024x1024 মাপের SDXL চালালে প্রতি image তৈরি করতে দশ থেকে বিশ মিনিট লাগে। এটি কোনো নষ্ট setup নয়। এটি গণনার ফল। এই guide-এ এর ব্যাখ্যা দেওয়া হয়েছে।
মডেলের আকার কেন মেশিন নির্ধারণ করে
ছবি তৈরি একটি denoising loop চালায়। 30-step render ছবিটির ওপর সম্পূর্ণ model 30 বার চালায়, এবং প্রতিটি ধাপে প্রতিটি weight পড়ে। Half precision-এ SDXL-এর weight-এর আকার প্রায় 6.9 GB। তাই ছবি দেখার আগে 30-step render মেমরির মধ্য দিয়ে প্রায় 200 GB ডেটা স্থানান্তর করে।
24 GB video memory (VRAM), অর্থাৎ graphics chip-এর পাশে স্থায়ীভাবে সংযুক্ত মেমরি থাকা GPU প্রতি সেকেন্ডে শত শত gigabyte গতিতে পড়ে এবং একসঙ্গে পুরো 6.9 GB ধরে রাখতে পারে। CPU VPS প্রতি সেকেন্ডে কয়েক দশ gigabyte গতিতে system RAM পড়ে। Convolution-এর জন্য এতে matrix hardware নেই। তাই একই loop এক থেকে দুই order of magnitude ধীরগতিতে চলে। Text model-এর ক্ষেত্রেও একই memory-bandwidth যুক্তি প্রযোজ্য। এ বিষয়ে কখন GPU-সহ VPS-এর খরচ সত্যিই সার্থক নিবন্ধটির সঙ্গে এটি পড়া উপযোগী।
Text generation-এর তুলনায় image generation-এর একটি গুরুত্বপূর্ণ পার্থক্য আছে। Chat model token stream করে। তাই ধীর মেশিনেও ব্যবহারযোগ্য মনে হয়, কারণ পড়ার সময় শব্দ দেখা যায়। Image কেবল শেষ step শেষ হলে দেখা যায়। ধীরগতি মানে progress bar-এর দিকে তাকিয়ে থাকা।
বাস্তব সংখ্যাসহ হার্ডওয়্যার ধাপ
নিচের ব্লকে 2026 সালের July মাসে 1024x1024 আকারের, 30 ধাপের, Euler sampler ব্যবহার করে একটি SDXL image-এর সাধারণ পরিসংখ্যান দেওয়া হয়েছে। এগুলোকে আনুমানিক মাত্রার হিসাব হিসেবে বিবেচনা করুন। আপনার sampler, ধাপের সংখ্যা এবং resolution অনুযায়ী মানগুলো পরিবর্তিত হবে।
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 seconds দেখানো হয়েছে, যা প্রায় তেরো মিনিট। 24 GB card-এ সময় লাগে 9 seconds। আপনি যে পার্থক্যের জন্য অর্থ ব্যয় করছেন, সেটিই এই ব্যবধান।
এই ধাপগুলো এভাবে পড়ুন। 8 GB VRAM-এর কম হলেও SDXL চলে, কারণ ComfyUI স্বয়ংক্রিয়ভাবে layer-গুলো system RAM-এ offload করে এবং মাত্র 1 GB-এর card-ও ব্যবহার করতে পারে। প্রতিটি ধাপে offloading-এর কারণে সময় লাগে। তাই 6 GB card-এ প্রতি image-এর সময় ত্রিশ seconds-এর চেয়ে প্রায় এক মিনিটের কাছাকাছি হয়। 8 GB-এ base model ফিট করে এবং render স্বচ্ছন্দে চলে। 12 GB-এ offloading ছাড়াই checkpoint-এর সঙ্গে একটি বা দুটি ControlNet রাখা যায়। 24 GB-এ একই workflow-তে SDXL, refiner এবং upscaling চালানো যায়। এ ছাড়া LoRA adapter training শুরু করা যায়, যার জন্য generation-এর তুলনায় অনেক বেশি memory প্রয়োজন।
CPU VPS কী করতে পারে এবং কী করতে পারে না
এটি অনেকের প্রত্যাশার চেয়ে বেশি কাজ করতে পারে, আবার বিপণনের দাবির চেয়ে কমও করতে পারে। সীমারেখাটি নির্দিষ্টভাবে বুঝুন।
CPU VPS-এ ComfyUI ইনস্টল করা, ওয়েব ইন্টারফেস চালু রাখা, আপনার মডেল লাইব্রেরি সংরক্ষণ করা, queue চালানো এবং কোনো GPU ছাড়াই ছবি তৈরি করা যায়। Stable Diffusion 1.5, 512x512 এবং 20 steps ব্যবহার করলে 16 GB RAM-সহ 8টি আধুনিক vCPU-তে প্রতি ছবিতে আনুমানিক 60 থেকে 150 সেকেন্ড সময় লাগবে। রাতভর চলা batch job অথবা queue-এর পেছনে থাকা কম-ট্রাফিকের image endpoint-এর জন্য এটি যথেষ্ট কার্যকর।
CPU VPS-এ interactive কাজ করা যায় না। Prompt iteration-এ এক ঘণ্টায় 20টি render দরকার হয়, কিন্তু প্রতি render-এ 13 মিনিট লাগলে আপনি 4টি পাবেন। এটি training-ও চালাতে পারে না। CPU-তে LoRA fine-tuning-এর সময় ঘণ্টায় নয়, দিনে হিসাব করতে হয়। তাই এটিকে ব্যবহারযোগ্য বিকল্প হিসেবে ধরবেন না।
শুধু CPU ব্যবহারের ক্ষেত্রে memory-এর নিয়ম GPU ব্যবহারের নিয়ম থেকে আলাদা। Weights system RAM-এ লোড হয়। তাই মডেলের আকারের পাশাপাশি কাজের জন্য অতিরিক্ত memory দরকার: SDXL-এর জন্য প্রায় 16 GB RAM এবং SD 1.5-এর জন্য প্রায় 8 GB RAM। 4 GB-এর server-এ ComfyUI চালু হবে, কিন্তু প্রথম render শেষ হওয়ার আগেই out-of-memory killer এটিকে বন্ধ করে দেবে। তখন Killed-সহ process-টি dmesg-এ কোনো Python traceback ছাড়াই অদৃশ্য হয়ে যাবে।
GPU মেশিনে ComfyUI ইনস্টল করুন
এগুলো upstream কমান্ড। NVIDIA driver আগে থেকেই ইনস্টল করা একটি পরিষ্কার Ubuntu 24.04 ইনস্টলেশন থেকে শুরু করুন। প্রথমে driver যাচাই করুন, কারণ এই পরীক্ষা না করলে পরবর্তী প্রতিটি ব্যর্থতা একই রকম দেখাবে।
nvidia-smiএটি আপনার card এবং একটি CUDA version-সহ একটি table দেখাবে। command not found অথবা NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver দেখা গেলে driver অনুপস্থিত, অথবা upgrade-এর পরে kernel module load হয়নি। এগিয়ে যাওয়ার আগে এটি ঠিক করুন। অন্যথায় ComfyUI নীরবে CPU-তে কাজ করবে এবং আপনি software-কে দোষ দেবেন।
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 ব্যবহার করা ঐচ্ছিক পরামর্শ নয়। PyTorch অনেক dependency ইনস্টল করে। অন্য কাজ চালানো একটি মেশিনে এটি system-wide ইনস্টল করলে সেই অন্য কাজটি নষ্ট হতে পারে। আরও এগোনোর আগে PyTorch card শনাক্ত করতে পারছে কি না যাচাই করুন।
python -c "import torch; print(torch.cuda.is_available(), torch.cuda.get_device_name(0))"True এবং আপনার card-এর নাম দেখা গেলে stack কাজ করছে। False দেখা গেলে ইনস্টল করা wheel driver-এর সঙ্গে মেলে না। সাধারণত এর কারণ হলো CPU-only torch wheel আগে থেকেই cache করা ছিল। উপরের index URL ব্যবহার করে পুনরায় ইনস্টল করুন।
একটি মডেল সংগ্রহ করুন এবং ডিস্কের জন্য পরিকল্পনা করুন
ComfyUI-এর সঙ্গে কোনো weights থাকে না। Checkpoint রাখুন models/checkpoints-এ, VAE ফাইল রাখুন models/vae-এ এবং LoRA adapter রাখুন 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সবসময় .safetensors ব্যবহার করুন, .ckpt নয়। .ckpt ফাইল হলো একটি pickled Python object। এটি লোড করলে যে ব্যক্তি এটি তৈরি করেছে, তার code কার্যকর হয়। safetensors format-এ শুধু tensors থাকে। তাই একটি ক্ষতিকর ফাইল কোনো code চালাতে পারে না।
Storage-এর খরচ অনেকেই হিসাব করেন না। একটি SDXL base checkpoint-এর আকার 6.94 GB। refiner-এর জন্য আরও 6 GB লাগে। একটি ControlNet model-এর আকার 1.4 থেকে 2.5 GB, একটি upscaler-এর আকার 60 থেকে 350 MB এবং একটি LoRA-এর আকার 20 থেকে 400 MB হতে পারে। যারা নিয়মিত এটি ব্যবহার করেন, তারা এক সপ্তাহের মধ্যেই দ্বিতীয় ও তৃতীয় base model ডাউনলোড করেন। কার্যকর installation-এর জন্য 100 GB disk বরাদ্দ রাখুন। outputs directory-ও নজরে রাখুন। 1024x1024 PNG ফাইলের আকার প্রতিটি 1 থেকে 2 MB। unattended batch অল্প সময়েই একটি ছোট disk ভরে দিতে পারে। models/ এবং output/ এমন একটি volume-এ রাখুন, যার আকার পরে বাড়ানো যায়। আপনার workflow JSON ফাইলের backup object storage-এ encrypted incremental backup-এর মতো পদ্ধতিতে রাখুন। weights আবার ডাউনলোড করা যায়। আপনি যে workflows সূক্ষ্মভাবে সমন্বয় করেছেন, সেগুলো পুনরায় তৈরি করা যায় না।
চালান এবং নিরাপদে অ্যাক্সেস করুন
cd ~/ComfyUI
. venv/bin/activate
python main.py --listen 127.0.0.1 --port 8188ComfyUI পোর্ট 8188-এ সেবা প্রদান করে। শুধু CPU-যুক্ত সিস্টেমে --cpu যোগ করুন। এটি অনুপস্থিত CUDA ডিভাইসের কারণে ব্যর্থ না হয়ে CPU path ব্যবহার করতে বাধ্য করে।
0.0.0.0-এ নয়, 127.0.0.1-এ bind করুন। ComfyUI-তে login screen বা user account নেই। যে কেউ এই পোর্টে পৌঁছাতে পারলে job queue করতে, আপনার তৈরি করা প্রতিটি image পড়তে এবং custom node ইনস্টল করতে পারে। এর মাধ্যমে আপনার server-এ arbitrary code execution সম্ভব। এর পরিবর্তে আপনার laptop থেকে SSH tunnel ব্যবহার করে এতে পৌঁছান।
ssh -N -L 8188:127.0.0.1:8188 you@your-serverএরপর locally http://127.0.0.1:8188 খুলুন। প্রকৃত multi-user access প্রয়োজন হলে এর সামনে authentication-সহ একটি reverse proxy রাখুন এবং app-টিকে localhost-এ bound রাখুন। যেকোনো unauthenticated self-hosted service-এর ক্ষেত্রেও একই যুক্তি প্রযোজ্য। এটি VPS-এ Docker Compose deployment-এর standard pattern।
systemd-এর অধীনে চালু রাখুন
SSH সেশন বন্ধ হলে যে render queue বন্ধ হয়ে যায়, সেটি কোনো service নয়। /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 লেখা একটি log line দেখালে বুঝবেন এটি চালু আছে। মনে রাখবেন, ExecStart virtual environment-এর ভেতরের interpreter-কে সরাসরি নির্দিষ্ট করে, কারণ systemd আপনার shell profile চালায় না এবং activate কখনও ঘটে না।
বাজেট অনুযায়ী ব্যবহারিক সুপারিশ
আপনি যদি image generation পরীক্ষা করতে চান এবং গতির চেয়ে খরচ বেশি গুরুত্বপূর্ণ হয়, তাহলে 16 GB RAM-সহ একটি CPU VPS নিন, SD 1.5 512x512-এ চালান এবং প্রতিটি image তৈরি হতে এক বা দুই মিনিট সময় লাগবে—এটি মেনে নিন। এটি শুরু করার বাস্তবসম্মত উপায়। GPU-যুক্ত যেকোনো ব্যবস্থার তুলনায় এর খরচও অনেক কম। সিদ্ধান্ত নেওয়ার সময় model library এবং workflow host করার জন্যও এটি উপযুক্ত।
আপনি যদি প্রতিদিন prompt নিয়ে পরীক্ষা করেন, তাহলে GPU cloud থেকে প্রতি ঘণ্টার হিসাবে কমপক্ষে 12 GB VRAM-সহ একটি GPU ভাড়া নিন এবং কাজ শেষ হলে সেটি বন্ধ করে দিন। Image generation সাধারণত নির্দিষ্ট সময়ে বেশি সম্পদ ব্যবহার করে। অলস GPU-এর মাসিক বিল এখানে অতিরিক্ত খরচের সবচেয়ে সাধারণ কারণ। Checkpoint-গুলো সস্তা block storage-এ রাখুন এবং সেগুলো mount করুন।
আপনি যদি অন্যদের জন্য সেবা দেন বা LoRA adapter train করেন, তাহলে 24 GB VRAM এবং স্থায়ীভাবে চালু রাখা যায় এমন একটি machine প্রয়োজন। এই পর্যায়ে একই box-এ সাধারণত local language model চালালেও খরচ সার্থক হয়। Ollama দিয়ে নিজে LLM host করা-এ এই setup বর্ণনা করা হয়েছে।
আপনি যে স্তরই বেছে নিন, প্রকাশিত কোনো পরিসংখ্যান বিশ্বাস করার আগে নিজের machine-এর কর্মক্ষমতা মাপুন। একই prompt পাঁচবার queue করুন এবং ComfyUI তার console-এ যে seconds-per-iteration দেখায়, তা পড়ুন। ওই সংখ্যাটিই আপনার প্রকৃত স্তর নির্দেশ করে।
FAQ
GPU ছাড়া কি Stable Diffusion চালানো যায়?
হ্যাঁ। ComfyUI python main.py --cpu ব্যবহার করে চলে এবং কোনো graphics card না থাকলেও বাস্তব ছবি তৈরি করে। 8টি আধুনিক vCPU-তে Stable Diffusion 1.5-এর জন্য 512x512 আকারের প্রতি ছবিতে প্রায় 60 থেকে 150 সেকেন্ড এবং 1024x1024 আকারে SDXL-এর জন্য 10 থেকে 20 মিনিট সময় লাগতে পারে। রাতভর batch এবং কম-পরিমাণের endpoint-এর জন্য এটি কার্যকর। Prompt বারবার পরিবর্তন করে পরীক্ষা করার জন্য এটি উপযুক্ত নয়, এবং training সম্পূর্ণরূপে বাস্তবসম্মত নয়।
SDXL-এর জন্য কত VRAM প্রয়োজন?
1024x1024 আকারে SDXL স্বাচ্ছন্দ্যে চালাতে 8 GB VRAM যথেষ্ট। এর কম হলে ComfyUI স্বয়ংক্রিয়ভাবে layer-গুলো system RAM-এ offload করে এবং প্রায় 1 GB VRAM পর্যন্তও কাজ করে। তবে offload করা প্রতিটি ধাপে অতিরিক্ত সময় লাগে। 12 GB VRAM থাকলে checkpoint-এর পাশাপাশি একটি ControlNet রাখা যায়। 24 GB VRAM থাকলে একই workflow-তে base, refiner এবং upscaling রাখা যায়। LoRA adapter training-এর জন্য এটিই ব্যবহারিক ন্যূনতম পরিমাণ।
Model-গুলোর জন্য কত disk space প্রয়োজন?
শুধু SDXL base checkpoint-এর আকার 6.94 GB, আর refiner আরও প্রায় 6 GB যোগ করে। প্রতিটি ControlNet model-এর আকার 1.4 থেকে 2.5 GB, LoRA adapter-এর আকার 20 থেকে 400 MB, এবং upscaler-এর আকার সর্বোচ্চ 350 MB। কয়েকটি base model-সহ কার্যকর installation-এর জন্য 100 GB বরাদ্দ করুন। Output directory আলাদাভাবে পর্যবেক্ষণ করুন, কারণ 1024x1024 PNG file-এর প্রতিটির আকার 1 থেকে 2 MB হতে পারে।
Public internet-এ ComfyUI উন্মুক্ত করা কি নিরাপদ?
না। ComfyUI-তে কোনো ধরনের authentication নেই। এর custom-node system interface থেকে Python code install করে চালায়। তাই উন্মুক্ত port আপনার server-এ remote code execution-এর সুযোগ তৈরি করে। এটিকে 127.0.0.1-এ bind করুন, ssh -N -L 8188:127.0.0.1:8188 you@your-server ব্যবহার করে SSH tunnel-এর মাধ্যমে access করুন, এবং একাধিক ব্যক্তির access প্রয়োজন হলে এর সামনে authentication-সমর্থিত reverse proxy বসান।
কোনো error message ছাড়াই আমার render কেন বন্ধ হয়ে গেল?
dmesg-এ Killed সহ process অদৃশ্য হয়ে যাওয়া এবং কোনো Python traceback না থাকা Linux-এর out-of-memory killer-এর লক্ষণ, ComfyUI-এর bug নয়। CPU-only server-এ weights system RAM-এ থাকে। তাই SDXL-এর জন্য প্রায় 16 GB এবং SD 1.5-এর জন্য প্রায় 8 GB RAM প্রয়োজন, এর সঙ্গে working space অতিরিক্ত লাগে। RAM বাড়ান, swap যোগ করুন, অথবা ছোট model এবং কম resolution ব্যবহার করুন।