MetalNode
ComfyUI, Stable Diffusion, workflows и быстрый старт

AI Recipes для GPU серверов MetalNode

Готовые команды и workflow для запуска ComfyUI, Stable Diffusion и Python diffusers на выделенных GPU серверах без шаринга.

Ubuntu 24.04 RTX 5090 / bare metal
MetalNode GPU
  • RTX 5090 bare metal
  • 1 сервер = 1 клиент
  • Полный контроль через SSH
  • Продление с сохранением данных
  • Подходит для ComfyUI, SDXL и LLM

AI Recipes

Stable Diffusion через Python + diffusers

Вариант для разработчиков: создаём venv, ставим torch cu128, diffusers и генерируем изображение через AutoPipelineForText2Image.
Python diffusers SDXL Turbo
Показать команды
cd /work
mkdir -p ai-lab
cd /work/ai-lab

apt update
apt install -y python3-venv python3-pip git wget

python3 -m venv .venv-cu128
source .venv-cu128/bin/activate

python -m pip install -U pip setuptools wheel
pip install --no-cache-dir --retries 20 --timeout 300 torch torchvision --index-url https://download.pytorch.org/whl/cu128
pip install --no-cache-dir --retries 1 --timeout 10 torchaudio --index-url https://download.pytorch.org/whl/cu128 || true
pip install diffusers transformers accelerate safetensors sentencepiece protobuf pillow

python - <<'PY'
import torch
print("torch:", torch.__version__)
print("cuda available:", torch.cuda.is_available())
print("gpu count:", torch.cuda.device_count())
if torch.cuda.is_available():
    print("gpu name:", torch.cuda.get_device_name(0))
    x = torch.randn(64, 64, device='cuda')
    y = torch.matmul(x, x)
    print("matmul ok:", y.shape, y.dtype, y.device)
PY

cat > /work/ai-lab/gen_image.py <<'PY'
import time
import torch
from diffusers import AutoPipelineForText2Image

MODEL_ID = "stabilityai/sdxl-turbo"
OUT_PATH = "/work/ai-lab/out_sdxl_turbo.png"

prompt = "a futuristic bare metal GPU server room, cinematic lighting, ultra detailed, realistic, blue neon accents"

print("Loading model:", MODEL_ID)
t0 = time.time()

pipe = AutoPipelineForText2Image.from_pretrained(
    MODEL_ID,
    torch_dtype=torch.float16,
    variant="fp16"
)
pipe = pipe.to("cuda")

print("Model loaded in %.1f sec" % (time.time() - t0))

t1 = time.time()
image = pipe(
    prompt=prompt,
    num_inference_steps=4,
    guidance_scale=0.0
).images[0]

image.save(OUT_PATH)

print("Saved:", OUT_PATH)
print("Generation time: %.1f sec" % (time.time() - t1))
PY

time python /work/ai-lab/gen_image.py
ls -lh /work/ai-lab/out_sdxl_turbo.png
Скопировано

ComfyUI One-Shot

Готовый one-shot для быстрой установки ComfyUI на серверах MetalNode. Этот блок можно копировать целиком и использовать как базовый быстрый старт.
ComfyUI One-Shot
Показать команды
set -e

echo "===== MetalNode AI Studio Base install ====="

apt update
apt install -y git python3-venv python3-pip ffmpeg curl tmux

mkdir -p /work/ai
cd /work/ai

python3 -m venv venv
source venv/bin/activate

pip install --upgrade pip

echo "Installing PyTorch CUDA 12.8..."
pip install --no-cache-dir --retries 20 --timeout 300 torch torchvision \
  --index-url https://download.pytorch.org/whl/cu128

echo "Installing torchaudio (optional)..."
pip install --no-cache-dir --retries 1 --timeout 10 torchaudio \
  --index-url https://download.pytorch.org/whl/cu128 || true

echo "Installing xFormers CUDA 12.8..."
pip install xformers \
  --index-url https://download.pytorch.org/whl/cu128

echo "Installing AI libraries..."
pip install \
  diffusers \
  transformers \
  accelerate \
  safetensors \
  huggingface_hub \
  opencv-python \
  insightface \
  onnxruntime \
  piexif \
  segment-anything

echo "Cloning ComfyUI..."
cd /work
if [ ! -d /work/ComfyUI ]; then
  git clone https://github.com/comfyanonymous/ComfyUI.git
fi

cd /work/ComfyUI
source /work/ai/venv/bin/activate

pip install -r requirements.txt

echo "Installing ComfyUI Manager..."
mkdir -p custom_nodes
cd custom_nodes

[ -d ComfyUI-Manager ] || git clone https://github.com/ltdrdata/ComfyUI-Manager.git

echo "Installing useful AI nodes..."
[ -d ComfyUI-AnimateDiff-Evolved ] || git clone https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved.git
[ -d ComfyUI-Impact-Pack ] || git clone https://github.com/ltdrdata/ComfyUI-Impact-Pack.git
[ -d ComfyUI_IPAdapter_plus ] || git clone https://github.com/cubiq/ComfyUI_IPAdapter_plus.git
[ -d ComfyUI-ReActor ] || git clone https://github.com/Gourieff/ComfyUI-ReActor.git
[ -d ComfyUI_UltimateSDUpscale ] || git clone https://github.com/ssitu/ComfyUI_UltimateSDUpscale.git

cd /work/ComfyUI

echo "Creating model folders..."
mkdir -p models/checkpoints
mkdir -p models/loras
mkdir -p models/controlnet
mkdir -p models/upscale_models
mkdir -p models/clip
mkdir -p models/vae
mkdir -p models/animatediff_models

echo "Downloading SDXL Turbo checkpoint..."
source /work/ai/venv/bin/activate
if [ ! -f models/checkpoints/sdxl-turbo.safetensors ]; then
  hf download stabilityai/sdxl-turbo \
    sd_xl_turbo_1.0_fp16.safetensors \
    --local-dir models/checkpoints
  mv -f models/checkpoints/sd_xl_turbo_1.0_fp16.safetensors \
    models/checkpoints/sdxl-turbo.safetensors
fi

echo "Downloading SDXL-Lightning 4-step LoRA..."
mkdir -p models/loras/SDXL-Lightning
if [ ! -f models/loras/SDXL-Lightning/sdxl_lightning_4step_lora.safetensors ]; then
  hf download ByteDance/SDXL-Lightning \
    sdxl_lightning_4step_lora.safetensors \
    --local-dir models/loras/SDXL-Lightning
fi

echo "Creating helper scripts..."
mkdir -p /work/bin

cat > /work/bin/start-comfy.sh <<'SH'
#!/usr/bin/env bash
set -e
cd /work/ComfyUI
source /work/ai/venv/bin/activate
exec python main.py --listen --port 8188
SH
chmod +x /work/bin/start-comfy.sh

cat > /work/bin/run-comfy-tmux.sh <<'SH'
#!/usr/bin/env bash
set -e
SESSION="comfy"
if tmux has-session -t "$SESSION" 2>/dev/null; then
  echo "tmux session '$SESSION' already exists"
  exit 0
fi
tmux new-session -d -s "$SESSION" "/work/bin/start-comfy.sh"
echo "Started ComfyUI in tmux session '$SESSION'"
echo "Attach with: /work/bin/attach-comfy.sh"
SH
chmod +x /work/bin/run-comfy-tmux.sh

cat > /work/bin/attach-comfy.sh <<'SH'
#!/usr/bin/env bash
exec tmux attach -t comfy
SH
chmod +x /work/bin/attach-comfy.sh

cat > /work/bin/stop-comfy.sh <<'SH'
#!/usr/bin/env bash
tmux kill-session -t comfy 2>/dev/null || true
echo "Stopped tmux session 'comfy'"
SH
chmod +x /work/bin/stop-comfy.sh

cat > /work/bin/check-ai-stack.sh <<'SH'
#!/usr/bin/env bash
set -e
source /work/ai/venv/bin/activate
python - <<'PY'
import torch
print("torch:", torch.__version__)
print("cuda available:", torch.cuda.is_available())
print("gpu count:", torch.cuda.device_count())
if torch.cuda.is_available():
    print("gpu name:", torch.cuda.get_device_name(0))
    x = torch.randn(64, 64, device='cuda')
    y = torch.matmul(x, x)
    print("matmul ok:", y.shape, y.dtype, y.device)
PY

echo
echo "Models:"
ls -lh /work/ComfyUI/models/checkpoints || true
echo
ls -lh /work/ComfyUI/models/loras/SDXL-Lightning || true
SH
chmod +x /work/bin/check-ai-stack.sh

echo ""
echo "===== Install complete ====="
echo ""
echo "Start ComfyUI in background:"
echo "/work/bin/run-comfy-tmux.sh"
echo ""
echo "Attach to running session:"
echo "/work/bin/attach-comfy.sh"
echo ""
echo "Stop ComfyUI:"
echo "/work/bin/stop-comfy.sh"
echo ""
echo "Check AI stack:"
echo "/work/bin/check-ai-stack.sh"
echo ""
echo "Open via SSH tunnel:"
echo "ssh -L 8188:localhost:8188 root@SERVER -p PORT"
echo "http://localhost:8188"
echo ""
echo "Installed models:"
echo " - SDXL Turbo checkpoint"
echo " - SDXL-Lightning 4-step LoRA"
echo ""
echo "Notes:"
echo " - AnimateDiff node is installed, but motion models are NOT downloaded by default"
echo " - ReActor and Impact Pack should load because cv2/insightface/onnxruntime/piexif/segment-anything are installed"
Скопировано

GPU серверы для AI задач

MetalNode — это аренда выделенных GPU-серверов для AI задач. Один сервер работает только для одного клиента. Никакого шаринга GPU.

Stable Diffusion генерация изображений ComfyUI workflow и batch генерация Python / diffusers кастомные AI pipeline
LLM inference и тестирование моделей
Training обучение моделей
Video AI AnimateDiff / video generation

Быстрые команды и стартовые данные

SSH-туннель к ComfyUI
Для открытия интерфейса ComfyUI на локальном компьютере через SSH-туннель.
ssh -i KEY_PATH -L 8188:localhost:8188 root@IP -p PORT
Prompt для cyberpunk demo
Стартовый prompt для demo, тестов и роликов с киберпанк-сценой.
ultra realistic cyberpunk city street, dense buildings, shops on both sides of the street, neon storefront signs attached to buildings, realistic city architecture, rainy night, reflections on wet asphalt, cinematic lighting, volumetric fog, street level photography, ultra detailed, wide angle, depth of field, urban, street, photography, realistic, urban environment
Negative prompt
Помогает убрать базовые артефакты, лишние элементы и текст на изображении.
blurry, low quality, cartoon, bad anatomy, distorted, watermark, text

Готовые ComfyUI Workflows

SDXL Turbo + upscale 2048

Проверенный базовый workflow для текущего пайплайна. Его можно загрузить через Load в ComfyUI или скачать JSON и импортировать вручную.
Показать workflow JSON
{
  "id": "0c2e6660-8182-4306-9c83-6199a0a7a95f",
  "revision": 0,
  "last_node_id": 9,
  "last_link_id": 14,
  "nodes": [
    {
      "id": 2,
      "type": "CheckpointLoaderSimple",
      "widgets_values": ["sdxl-turbo.safetensors"]
    },
    {
      "id": 6,
      "type": "EmptyLatentImage",
      "widgets_values": [1024, 1024, 1]
    },
    {
      "id": 7,
      "type": "VAEDecode"
    },
    {
      "id": 9,
      "type": "ImageScale",
      "widgets_values": ["lanczos", 2048, 2048, "disabled"]
    },
    {
      "id": 8,
      "type": "SaveImage",
      "widgets_values": ["ComfyUI"]
    },
    {
      "id": 5,
      "type": "CLIPTextEncode",
      "widgets_values": ["blurry, low quality, cartoon, bad anatomy, distorted, watermark, text"]
    },
    {
      "id": 4,
      "type": "CLIPTextEncode",
      "widgets_values": ["ultra realistic cyberpunk city street, dense buildings, shops on both sides of the street, neon storefront signs attached to buildings, realistic city architecture, rainy night, reflections on wet asphalt, cinematic lighting, volumetric fog, street level photography, ultra detailed, wide angle, depth of field, urban, street, photography, realistic, urban environment"]
    },
    {
      "id": 3,
      "type": "KSampler",
      "widgets_values": [1041559043306351, "randomize", 6, 1.3, "euler_ancestral_cfg_pp", "karras", 1]
    }
  ],
  "version": 0.4
}

Как использовать AI Recipes

Выберите нужный блок: Python + diffusers, ComfyUI one-shot или workflow JSON.
Скопируйте команды и запустите их на выделенном сервере MetalNode.
Если сервера ещё нет — перейдите к доступным конфигурациям по кнопке ниже.