SSD Nodes Learn Hosting plans →
الأدلة Matt Connorبقلم Matt Connor

ما المواصفات الحقيقية لتشغيل مولّد صور بالذكاء الاصطناعي؟

تعرف على ما يستطيع VPS بمعالج CPU فعله، ومتطلبات SDXL الفعلية، وأوامر تثبيت ComfyUI، ومساحة القرص التي تحتاج إلى حجزها قبل الدفع.

ما يحتاجه مولّد صور بالذكاء الاصطناعي مستضاف ذاتياً فعلاً

مولّد الصور بالذكاء الاصطناعي المستضاف ذاتياً هو تطبيق ويب واحد مع ملف نموذج واحد. التطبيق هو ComfyUI، ويمكنه العمل على أي خادم Linux. أمّا النموذج فهو الذي يحدد متطلبات العتاد لديك. نقطة تحقق من فئة SDXL هي ملف واحد حجمه 6.94 GB، وتحتاج إلى وجوده في ذاكرة GPU. هذه الحقيقة وحدها تحدد الميزانية بالكامل، لذلك اقرأ سلّم العتاد أدناه قبل استئجار أي خادم.

الخلاصة الواقعية: يمكن لـ VPS يعمل بالـCPU فقط تثبيت البرنامج وتقديمه، ويمكنه توليد صور بدقة 512x512 باستخدام نموذج Stable Diffusion 1.5 أقدم خلال دقيقة أو دقيقتين لكل صورة. أمّا الخادم نفسه عند تشغيل SDXL بدقة 1024x1024، فيحتاج إلى عشر أو عشرين دقيقة لكل صورة. هذا لا يعني أن الإعداد معطّل. هذه نتيجة حسابية، ويشرح هذا الدليل أسبابها.

لماذا يحدد حجم النموذج مواصفات الآلة

يعمل توليد الصور عبر حلقة إزالة التشويش. في عملية توليد من 30 خطوة، يشغّل النظام مزيل التشويش، وهو UNet الخاص بـSDXL، على الصورة 30 مرة، وتقرأ كل تمريرة جميع أوزان UNet. يعمل مشفّرا النص مرة واحدة قبل الحلقة، وتفك VAE الترميز مرة واحدة بعدها، لذلك لا يدخلان في تكلفة كل خطوة. يبلغ حجم أوزان UNet الخاص بـSDXL بدقة نصفية 5.14 GB، ولذلك تنقل عملية توليد من 30 خطوة، وفق هذا التبسيط، نحو 154 GB من الأوزان عبر الذاكرة قبل أن ترى الصورة، وتضيف الموترات الوسيطة حجماً أكبر إلى ذلك.

تقرأ وحدة GPU التي تحتوي على 24 GB من ذاكرة الفيديو (VRAM، وهي الذاكرة الملحومة بجانب شريحة الرسوميات) بسرعة مئات GB في الثانية، وتحتفظ بكل 6.9 GB في وقت واحد. أما VPS الذي يعتمد على CPU فيقرأ ذاكرة النظام RAM بسرعة عشرات GB في الثانية، ولا يحتوي على عتاد للمصفوفات اللازمة لعمليات الالتفاف، لذلك تعمل الحلقة نفسها بسرعة أبطأ بعشر مرات إلى مئة مرة. هذه هي حجة عرض النطاق الترددي للذاكرة نفسها التي تحكم نماذج النصوص، ومن المفيد قراءتها إلى جانب متى يستحق VPS مع GPU تكلفته فعلاً.

يختلف توليد الصور عن توليد النصوص في نقطة واحدة مهمة. يبث نموذج المحادثة الرموز، لذلك تظل الآلة البطيئة قابلة للاستخدام لأن الكلمات تظهر أثناء القراءة. أما الصورة فلا تظهر إلا عند اكتمال الخطوة الأخيرة. البطء يعني التحديق في شريط التقدم.

سُلَّم العتاد، مع أرقام فعلية

يحتوي المقطع أدناه على أرقام نموذجية لإنشاء صورة SDXL واحدة بدقة 1024x1024، مع 30 خطوة، باستخدام عيّنة Euler، وذلك اعتباراً من يوليو 2026. اعتبرها أرقاماً تقريبية من حيث الرتبة. تغيّر هذه الأرقامَ خوارزميةُ أخذ العينات وعددُ الخطوات والدقةُ التي تستخدمها.

رسم بيانيOne SDXL image, 1024x1024, 30 steps (typical, July 2026)
البيانات وراء هذا الرسم البياني
[
  {
    "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 ثانية. هذا هو الفارق الذي تدفع مقابله.

اقرأ السلم بهذه الطريقة. يعمل SDXL حتى مع أقل من 8 GB من VRAM، لأن ComfyUI يدير VRAM وذاكرة النظام معاً، ويفرّغ أوزان النموذج تلقائياً. اعتباراً من أكتوبر 2026، يحدد ملف README الخاص بالمشروع الحد الأدنى عند 4 GB من VRAM و8 GB من ذاكرة النظام، باستخدام بث الأوزان غير المتزامن. يضيف التفريغ وقتاً في كل خطوة، لذلك تقترب بطاقة 6 GB من دقيقة لكل صورة، لا من 30 ثانية. عند 8 GB يلائم النموذج الأساسي الذاكرة ويصبح التصيير مريحاً. عند 12 GB يمكنك الاحتفاظ بـ ControlNet واحد أو اثنين إلى جانب نقطة التحقق دون تفريغ الأوزان. عند 24 GB يمكنك تشغيل SDXL مع أداة التنقيح ورفع الدقة ضمن سير عمل واحد، وتدريب محوّلات LoRA مع توفر مساحة إضافية. لا يتطلب التدريب هذا القدر من الذاكرة: يذكر دليل تدريب SDXL الخاص بمدرّب kohya-ss sd-scripts إمكانية إجراء تدريب LoRA باستخدام 8 GB من ذاكرة GPU، مع التوصية بـ10 GB. ولتحقيق ذلك، يطلب الدليل تدريب U-Net فقط، وتفعيل gradient checkpointing، وتخزين مخرجات text encoder وlatents مؤقتاً، واستخدام محسن 8-bit أو Adafactor، وخفض قيمة LoRA dim إلى 4 إلى 8 على بطاقة 8 GB. أما دليل LoRA الخاص بواجهة kohya_ss GUI، التي تغلف تلك السكربتات، فهو أكثر تحفظاً؛ إذ يوصي باستخدام GPU بذاكرة لا تقل عن 12 GB لتدريب LoRA.

ما الذي يستطيع CPU VPS فعله وما الذي لا يستطيع فعله

يستطيع فعل أكثر مما يتوقعه الناس، وأقل مما توحي به العبارات التسويقية. حدّد هذا الفرق بدقة.

يمكن لـCPU VPS تثبيت ComfyUI، وتقديم واجهة الويب، وتخزين مكتبة النماذج، وتشغيل قائمة الانتظار، وإنشاء الصور من دون وجود GPU على الإطلاق. عند استخدام Stable Diffusion 1.5 بدقة 512x512 و20 خطوة، توقّع نحو 60 إلى 150 ثانية للصورة على 8 vCPUs حديثة مع 16 GB من RAM. هذا مناسب فعلاً لمهمة دفعية تعمل طوال الليل، أو لنقطة نهاية منخفضة الحجم لإنشاء الصور خلف قائمة انتظار.

لا يمكن لـCPU VPS توفير تجربة عمل تفاعلية. تعني تجربة الأوامر وإنشاء النتائج 20 عملية توليد في الساعة، لكنك ستحصل على 4 فقط إذا استغرقت كل عملية 13 دقيقة. ولا يستطيع أيضاً إجراء التدريب. يستغرق ضبط LoRA الدقيق على CPU أياماً لا ساعات، لذلك تعامل معه على أنه غير متاح.

تختلف قاعدة الذاكرة عند استخدام CPU فقط عن قاعدة GPU. تُحمَّل أوزان النموذج في RAM النظام، لذلك تحتاج إلى حجم النموذج بالإضافة إلى مساحة العمل: نحو 16 GB من RAM لـSDXL، ونحو 8 GB لـSD 1.5. سيبدأ ComfyUI على جهاز بسعة 4 GB، ثم يوقفه قاتل نفاد الذاكرة أثناء عملية التوليد الأولى، ويظهر ذلك على شكل اختفاء العملية مع Killed في dmesg ومن دون Python traceback.

تثبيت ComfyUI على جهاز مزوّد بوحدة GPU

هذه هي الأوامر الأصلية من المشروع. ابدأ بتثبيت نظيف لـ Ubuntu 24.04، مع تثبيت NVIDIA driver مسبقاً. تحقّق من برنامج التشغيل أولاً، لأن كل حالات الفشل اللاحقة ستبدو متشابهة من دون هذا التحقق.

nvidia-smi

يجب أن يعرض هذا الأمر جدولاً يتضمن بطاقتك وإصدار CUDA. يشير command not found أو NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver إلى أن برنامج التشغيل مفقود أو أن وحدة kernel لم تُحمَّل بعد الترقية. أصلح ذلك قبل المتابعة، لأن 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 أن wheel التي ثبّتها لا تتوافق مع برنامج التشغيل، غالباً لأن wheel خاصة بـCPU فقط من torch كانت مخزّنة مؤقتاً مسبقاً. أعد التثبيت باستخدام index URL أعلاه.

احصل على نموذج، وخطط لمساحة القرص

لا يأتي ComfyUI محملاً بأي أوزان (weights). ضع ملفات الـ checkpoints في 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

فضّل دائماً استخدام .safetensors على .ckpt. ملف .ckpt هو كائن Python مُعالج بـ pickle، وتحميله يؤدي إلى تنفيذ تعليمات برمجية من الشخص الذي أنشأه. أما صيغة safetensors فهي تحتوي على tensors فقط، لذا لا يمكن لملف ضار تنفيذ أي شيء.

التخزين هو التكلفة التي يغفل عنها المستخدمون. يبلغ حجم ملف الـ checkpoint الأساسي لـ SDXL حوالي 6.94 GB. ويضيف الـ refiner حوالي 6 GB أخرى. يتراوح حجم نموذج SDXL ControlNet من 320 MB لنموذج Canny الصغير إلى 2.5 GB للنموذج الكامل بدقة نصفية (half precision). قد يكون حجم أداة الـ upscaler صغيراً: فنموذج Real-ESRGAN x4plus القياسي يبلغ 67 MB، ونموذج الأنمي الخاص به 17.9 MB، ونموذج فيديو الأنمي 2.5 MB. يتراوح حجم الـ LoRA من عشرات الميجابايتات إلى 787 MB لمحولات Hyper-SDXL من ByteDance. أي شخص يستمتع بهذا سيقوم بتحميل نموذج أساسي ثانٍ وثالث في غضون أسبوع. خصص 100 GB من مساحة القرص لتثبيت عملي، وراقب دليل المخرجات (outputs) أيضاً: ملفات PNG بدقة 1024x1024 يتراوح حجمها بين 1 إلى 2 MB لكل ملف، ويمكن لعملية دفعية (batch) غير مراقبة أن تملأ قرصاً صغيراً بهدوء. ضع models/ و output/ على وحدة تخزين (volume) يمكنك توسيعها، وقم بنسخ ملفات الـ workflow بصيغة JSON احتياطياً باستخدام شيء مثل نسخ احتياطي تزايدي مشفر إلى تخزين كائني. الأوزان يمكن إعادة تحميلها، أما الـ workflows التي قمت بضبطها فلا يمكن استعادتها.

شغّله، ثم صِل إليه بأمان

cd ~/ComfyUI
. venv/bin/activate
python main.py --listen 127.0.0.1 --port 8188

يعمل ComfyUI على المنفذ 8188. على جهاز يعمل بوحدة CPU فقط، أضف --cpu، فهذا يجبره على استخدام مسار CPU بدلاً من الفشل بسبب عدم وجود جهاز CUDA.

اربطه بالعنوان 127.0.0.1، وليس 0.0.0.0. أصبح لدى ComfyUI حسابات، لكن لا يحمي أيٌّ منها خادمك. تسجيل الدخول من Settings، ضمن قسم User، يسجّلك إلى حساب Comfy، ويعمل من خلال تثبيت محلي: تذكر وثائق Comfy تسجيل الدخول باستخدام البريد الإلكتروني وGoogle وGitHub ومفتاح API. وتصف الوثائق هذا الحساب بأنه وسيلة وصولك إلى partner nodes واشتراكات Comfy Cloud، ولا تعرضه كوسيلة لحماية خادمك بكلمة مرور. يفعّل الخيار --multi-user التخزين المنفصل لكل مستخدم فقط: اعتباراً من أكتوبر 2026، يستخلص الخادم اسم المستخدم من رأس طلب comfy-user ولا يتحقق من أي كلمة مرور. يمكن لأي جهة تصل إلى المنفذ وضع مهام في قائمة الانتظار، وقراءة كل صورة أنشأتها، وكذلك تثبيت custom nodes إذا شغّلته باستخدام --enable-manager، وهذا يعني تنفيذ تعليمات برمجية عشوائية على خادمك. صِل إليه من حاسوبك المحمول عبر نفق SSH بدلاً من ذلك.

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

ثم افتح http://127.0.0.1:8188 محلياً. إذا كنت تحتاج إلى وصول حقيقي لعدة مستخدمين، ضع reverse proxy مع المصادقة أمامه، وأبقِ التطبيق مرتبطاً بـ localhost. ينطبق المنطق نفسه على أي خدمة مستضافة ذاتياً ولا تتطلب مصادقة، وهذا هو النمط القياسي في عمليات النشر باستخدام Docker Compose على VPS.

شغِّله باستمرار عبر systemd

قائمة انتظار التصيير التي تتوقف عند إغلاق جلسة SSH ليست خدمة. شغّلها كمستخدم comfy بلا تسجيل دخول، وليس كمستخدمك: فالعُقد المخصّصة هي شيفرة، ولا ينبغي لهذه الشيفرة أن تعمل بصلاحية الوصول إلى مجلدك المنزلي. أنشئ المستخدم وانقل التثبيت إلى مجلده المنزلي:

sudo useradd --system --create-home --home-dir /home/comfy --shell /usr/sbin/nologin comfy
sudo mv ~/ComfyUI /home/comfy/
sudo chown -R comfy:comfy /home/comfy/ComfyUI

تستمر البيئة الافتراضية في العمل بعد النقل، لأن الوحدة تستدعي python مباشرةً. ثم اكتب /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) وظهور سطر سجل يقرأ To see the GUI go to: http://127.0.0.1:8188 أن الخدمة تعمل. لاحظ أن ExecStart يسمّي المفسّر داخل البيئة الافتراضية مباشرةً، لأن systemd لا يشغّل ملف تعريف الصدفة لديك، ولذلك لا يحدث activate.

التوصية العملية حسب الميزانية

إذا كنت تريد تجربة توليد الصور وكانت التكلفة أهم من السرعة، فاختر VPS يعمل بوحدة CPU وذاكرة RAM بسعة 16 GB، وشغّل SD 1.5 بدقة 512x512، وتقبّل أن يستغرق توليد كل صورة دقيقة أو دقيقتين. هذه هي نقطة الدخول الواقعية، وتكلفتها جزءاً من تكلفة أي جهاز مزود بوحدة GPU. كما أنها المكان المناسب لاستضافة مكتبة النماذج وسير العمل بينما تحدد احتياجاتك.

إذا كنت تعدّل المطالبات يومياً، فاستأجر GPU بذاكرة VRAM لا تقل عن 12 GB بالساعة من مزود سحابي لوحدات GPU، وأوقفه عندما تتوقف عن استخدامه. توليد الصور عمل متقطع، واستمرار احتساب رسوم GPU غير مستخدمة شهرياً هو أكثر أسباب الإنفاق الزائد شيوعاً في هذه الحالة. احتفظ بنقاط التحقق على تخزين كتلي منخفض التكلفة، واربطه بالجهاز.

إذا كنت توفر الخدمة لأشخاص آخرين، أو تدرب محولات LoRA بانتظام، فخطط لاستخدام VRAM بسعة 24 GB وجهاز تحتفظ به. يذكر دليل SDXL في sd-scripts إمكانية تدريب LoRA باستخدام 8 GB، مع التوصية بـ10 GB، عند استخدام إعدادات توفير الذاكرة. ويطلب دليل LoRA الخاص بواجهة kohya_ss GUI سعة لا تقل عن 12 GB. أما قيمة 24 GB في دليل sd-scripts، فهي مخصصة للضبط الدقيق الكامل لـSDXL بحجم دفعة يساوي 1، لذلك تغطي بطاقة بسعة 24 GB أعمال LoRA، وتبقي الضبط الدقيق الكامل ضمن نطاق الإمكانية. عند هذه النقطة، يحقق الجهاز نفسه عادةً فائدته أيضاً عبر تشغيل نموذج لغة محلي، وهو الإعداد الموضح في استضافة نموذج LLM ذاتياً باستخدام Ollama.

أيّاً كان المستوى الذي تختاره، قِس أداء جهازك بنفسك قبل الاعتماد على أي رقم منشور. ضع المطالبة نفسها في قائمة الانتظار 5 مرات، واقرأ قيمة الثواني لكل تكرار التي يطبعها ComfyUI في وحدة التحكم. هذه القيمة تحدد موقعك الفعلي على سلم الأداء.

FAQ

هل يمكنني تشغيل Stable Diffusion من دون GPU؟

نعم. يعمل ComfyUI باستخدام python main.py --cpu وينشئ صوراً فعلية من دون وجود بطاقة رسومات. توقّع نحو 60 إلى 150 ثانية لكل صورة عند استخدام Stable Diffusion 1.5 بدقة 512x512، ومن 10 إلى 20 دقيقة عند استخدام SDXL بدقة 1024x1024، على 8 vCPUs حديثة. يناسب ذلك المعالجة الدفعية الليلية ونقاط النهاية منخفضة الحجم. لكنه لا يناسب تكرار تعديل المطالبات، كما أن التدريب غير عملي تماماً.

ما مقدار VRAM الذي أحتاج إليه لتشغيل SDXL؟

تُشغّل سعة 8 GB ‏SDXL باستقرار عند دقة 1024x1024. عند استخدام سعة أقل، ينقل ComfyUI أوزان النموذج إلى RAM النظام تلقائياً، ويستمر في العمل. حتى أكتوبر 2026، يذكر ملف README الخاص به أن الحد الأدنى هو 4 GB من VRAM بالإضافة إلى 8 GB من RAM النظام، وتستغرق كل خطوة منقولة وقتاً إضافياً. تتيح لك سعة 12 GB إبقاء ControlNet إلى جانب checkpoint، بينما تغطي سعة 24 GB النموذج الأساسي وrefiner ورفع الدقة ضمن workflow واحد. يذكر دليل kohya-ss sd-scripts إمكانية تدريب SDXL LoRA باستخدام 8 GB، مع التوصية بـ10 GB، إذا استخدمت إعدادات توفير الذاكرة، بينما يطلب دليل LoRA في واجهة kohya_ss GUI ما لا يقل عن 12 GB. يحتاج الضبط الدقيق الكامل لـSDXL إلى 24 GB عند batch size يساوي 1.

ما مقدار مساحة القرص التي تحتاج إليها النماذج؟

يبلغ حجم checkpoint الأساسي لـSDXL وحده 6.94 GB، ويضيف refiner نحو 6 GB أخرى. يتراوح حجم نماذج SDXL ControlNet بين 320 MB و2.5 GB لكل نموذج عند استخدام half precision، ويتراوح حجم محولات LoRA من عشرات الميغابايت إلى 787 MB، بينما يتراوح حجم أدوات رفع الدقة Real-ESRGAN بين 2.5 MB و67 MB. خصص 100 GB لتثبيت عملي يحتوي على بضعة نماذج أساسية، وراقب مجلد المخرجات بشكل منفصل، لأن ملفات PNG بدقة 1024x1024 يتراوح حجمها بين 1 و2 MB لكل ملف.

هل من الآمن تعريض ComfyUI للإنترنت العام؟

لا. يعمل تسجيل الدخول إلى حساب Comfy ضمن إعدادات ComfyUI من تثبيت محلي، لكنه يمنحك الوصول إلى partner nodes والاشتراكات السحابية في Comfy، ولا تعرض وثائق Comfy أي شيء منه بوصفه حماية لخادمك. يفصل الخيار --multi-user مساحة التخزين لكل مستخدم فقط، من دون التحقق من أي كلمة مرور. عند تفعيل ComfyUI-Manager، تثبّت الواجهة custom nodes، وهي شيفرة Python تعمل على خادمك، ولذلك يعني فتح المنفذ تنفيذ شيفرة عن بُعد. اربطه بـ127.0.0.1، والوصول إليه عبر نفق SSH باستخدام ssh -N -L 8188:127.0.0.1:8188 you@your-server، وضع reverse proxy يتطلب المصادقة أمامه إذا احتاج أكثر من شخص إلى الوصول.

لماذا أُوقِف render الذي أنشأته من دون ظهور رسالة خطأ؟

اختفاء العملية مع ظهور Killed في dmesg ومن دون Python traceback يعني أن Linux out-of-memory killer هو الذي أوقفها، وليس وجود خطأ في ComfyUI. على خادم يعمل دون GPU، تبقى الأوزان في RAM النظام، ولذلك يحتاج SDXL إلى نحو 16 GB ويحتاج SD 1.5 إلى نحو 8 GB، بالإضافة إلى مساحة العمل. أضف RAM، أو أضف swap، أو استخدم نموذجاً أصغر ودقة أقل.

هل كان هذا المقال مفيدًا؟