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.
Показать команды
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.
Этот блок можно копировать целиком и использовать как базовый быстрый старт.
Показать команды
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.
Если сервера ещё нет — перейдите к доступным конфигурациям по кнопке ниже.