跳转至

《基于阿里云竞价GPU ComfyUI 私有化部署与 API 管线集成实践》

作者:王方元 | 个人技术站:wfy.wang

领域:AIGC 工作流开发 / Pipeline TD


一、 背景与架构概述

在 AIGC 数字生产与传统 CG 管线融合的场景中,依赖第三方 SaaS 平台往往面临成本不可控、API 数据流不通畅以及资产隐私泄露等问题。采用 私有化部署(Private Deployment) 是实现商业级 AI 生产与工作流集成(Workflow Integration)的必经之路。

本文记录了基于 阿里云竞价 GPU 实例T4 Ubuntu 22.04 LTS 显存长期版本) 环境下,从 Linux 操作系统底层环境配置、Python 虚拟环境隔离、PyTorch CUDA 硬件加速驱动校验,到最终成功跑通经典的 Stable Diffusion 节点工作流 的完整工程落地流程。


二、 完整环境部署与配置步骤(Linux/Ubuntu)

第 1 步:克隆 ComfyUI 项目代码

由于国内访问 GitHub 容易遇到超时或网络波动,推荐优先使用国内镜像源进行极速克隆:

# 优先选用 Gitee 国内镜像(推荐阿里云环境使用)
git clone --depth 1 https://gitee.com/mirrors_comfyanonymous/ComfyUI.git

# 备选:若网络通畅可直接使用 GitHub 官方源
# git clone https://github.com/comfyanonymous/ComfyUI.git

第 2 步:进入项目目录并校验文件

cd ComfyUI

# 确认根目录包含 requirements.txt 依赖配置文件
ls

第 3 步:切换至稳定发布版本(Release Tag)

生产环境切忌直接使用主分支(master)跑自动化,建议切到经测试的稳定版本(如 v0.28.1):

# 还原/设置远端源地址
git remote set-url origin https://github.com/comfyanonymous/ComfyUI.git

# 拉取所有分支与版本 Tag
git fetch --all --tags

# 检出稳定版 Tag
git checkout tags/v0.28.1

第 4 步:安装系统必须依赖包

解决 Ubuntu 系统下 Python 虚拟环境(venv)创建可能缺失底层支持的问题:

sudo apt update
sudo apt install -y python3.10-venv

第 5 步:创建并激活 Python 隔离虚拟环境

为避免污染全局 Python 环境或导致依赖冲突,必须在独立的虚拟环境中进行配置:

# 清理可能残留的残缺 venv
rm -rf venv

# 创建全新的 Python 虚拟环境
python3 -m venv venv

# 激活虚拟环境(激活成功后终端前缀会显式变为 (venv))
source venv/bin/activate

⚠️ 运维守则:后续每次重新打开 SSH 终端窗口,均需重新执行 cd ComfyUI && source venv/bin/activate!


第 6 步:安装 PyTorch 与 CUDA 算子支持

针对 N 卡(如 T4 / A10 显卡),统一部署带 cu118(CUDA 11.8)加速支持的 PyTorch 核心库:

pip install torch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1 --index-url https://download.pytorch.org/whl/cu118

第 7 步:安装 ComfyUI 项目 Python 依赖库

使用清华大学 PyPI 镜像源加速下载所需第三方组件:

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

第 8 步:显卡驱动与 CUDA 加速可用性校验

环境部署完成后,在 Python 交互环境中运行以下单行脚本,确保 PyTorch 能够成功识别 GPU:

python -c "import torch; print('CUDA 可用状态:', torch.cuda.is_available()); print('已识别显卡设备:', torch.cuda.get_device_name())"
  • 预期输出:CUDA 可用状态: True 且打印出具体的显卡型号(如 NVIDIA T4 或 NVIDIA A10),即代表底层 GPU 驱动与 PyTorch 环境部署完全正常!

第 9 步:下载大模型权重(Checkpoint)

切换至模型存放目录,下载基础扩散模型(以 Stable Diffusion v1.5 为例):

cd models/checkpoints
wget https://hf-mirror.com/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors

第 10 步:启动 ComfyUI 服务(开放公网监听)

返回项目根目录,以指定端口与公网 IP 监听模式启动服务:

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

📌 安全组提示:部署完成后,需登录阿里云控制台,在对应 ECS 实例的安全组规则(Inbound Rules)中添加允许放行 8188 端口 的 TCP 入站规则,即可通过浏览器访问 http://<服务器公网IP>:8188/。


三、 核心工作流节点解构(Workflow Breakdown)

在成功部署并进入 ComfyUI WEB 界面后,我们成功搭建并跑通了基础的文生图(Text-to-Image)节点网络。其底层图形逻辑与 Nuke / Houdini / Katana 等标准 CG 节点的计算数据流一致:

[ Load Checkpoint ] 
   ├── (MODEL) ─────────────> [ KSampler ] <───────────── (LATENT) ── [ EmptyLatentImage ]
   ├── (CLIP) ──> [ CLIP Text ] (正向/反向 Prompt)
   └── (VAE)  ───────────────────────────────> [ VAE Decode ] ──> [ Save Image ]

1. 核心节点功能拆解:

  1. Load Checkpoint(模型加载器):读取 .safetensors 大模型文件,向工作流输出 MODEL(扩散神经网络)、CLIP(文本编码模块)和 VAE(图像编解码模块)。
  2. CLIP Text Encode(CLIP 文本编码器):连接双 CLIP 输入,分别写入正向提示词(Positive Prompt)与负向提示词(Negative Prompt),将自然语言转换为潜空间特征向量。
  3. EmptyLatentImage(空潜像节点):定义生成的初始 Latent 噪声张量尺寸(例如 $512 \times 512$)。
  4. KSampler(K 采样器):工作流的核心算子,接收降噪步数(Steps)、CFG 引导系数、采样器算法(Sampler Name)及随机种子(Seed),在 Latent 空间中完成去噪计算。
  5. VAE Decode(VAE 解码器):将 KSampler 输出的潜空间数据反演解码为像素级 RGB 图像。
  6. Save Image(保存图像):将渲染好的图像落盘并预览。

四、 总结与管线扩展方向

通过本次部署,我们打通了云端 GPU 算力实例、Linux 系统环境、PyTorch CUDA 驱动及 ComfyUI WEB/API 服务的全链路。

后续 Pipeline 扩展方向:

  • 云端存储与算力分离:挂载云硬盘或 NAS 服务,实现模型资产与计算节点的解耦,降低竞价实例被回收时的资产丢失风险。

  • API 自动化集成:导出工作流为 JSON 格式,编写 Python 自动化脚本,与 Maya / Nuke / 追光/红鲤类 CG 生产管线进行端到端数据对接。

实际踩坑:

V100 的 Volta 架构(sm_70)在 PyTorch 2.0+ 及较新的 CUDA 版本(如 CUDA 12.x)下,默认已经关闭或不再原生支持 FlashAttention-2 和部分新算子! 运行 FLUX / 混元 (HunyuanVideo) / ComfyUI 新节点:V100 会直接报错(如 CUDA error: no kernel image is available for execution on the device),因为新算子只支持 Ampere(A10/A100,sm_80)或 Ada/Hopper 架构。

T4 的情况:T4(sm_75)同样不支持 FlashAttention-2,跑大模型和视频模型性能极差

不建议使用旧一代的 Volta/Turing 架构显卡(如 V100、T4)。由于 PyTorch 2.x 及现代扩散模型(如 FLUX、HunyuanVideo)深度依赖 FlashAttention-2 及 fp8/bf16 算子优化,V100/T4 在 CUDA 12+ 环境下易出现算子不兼容或性能大幅衰减。建议优先选用 Ampere 架构(如 NVIDIA A10 24G / A100)或 Ada 架构算子卡