本文通过自行构建ComfyUI + SD/FLUX镜像,基于函数计算的GPU函数能力,快速搭建一个文生图服务。
提示
函数计算Function AI已提供新版图像生成应用,诚邀您使用新版图像生成项目,详情请参见:创建ComfyUI项目。
方案概览
使用阿里云函数计算快速搭建一个文生图服务,仅需以下两步:
选择公共镜像或者构建并推送镜像。
选择一个公共的ComfyUI + SD/FLUX镜像,或者自行构建镜像后,将其推送到您在阿里云容器镜像服务中的镜像仓库。
创建GPU函数。
在阿里云函数计算上,基于上述镜像创建一个GPU 函数。函数创建成功后,系统将提供一个域名,作为对外提供服务的入口。此域名即为您的文生图服务的访问地址。
完成上述步骤后,您的文生图服务便已成功部署,用户可以通过公网或者内网访问该服务,如需通过浏览器访问函数,可为函数配置自定义域名。
步骤一:基于阿里云函数计算构建文生图服务
镜像构建与加速
公共镜像:使用已有的ComfyUI+SD/FLUX公共镜像,便捷快速。
自建镜像:根据自身需求定制镜像,优化用户体验与性能。
准备Dockerfile文件
构建镜像时,用户可以按照ComfyUI项目 README.md文档里的安装指引进行操作。由于ComfyUI依赖Python,用户可以选择一个合适的Python镜像作为基础镜像。Python镜像可以从Docker Hub等公共镜像仓库获取,以下提供一个自定义示例镜像。
# Dockerfile FROM python:3.10 # 安装系统依赖 RUN apt-get update && apt-get install -y \ git \ wget \ && rm -rf /var/lib/apt/lists/* WORKDIR /app # 克隆ComfyUI仓库 RUN git clone https://github.com/comfyanonymous/ComfyUI.git WORKDIR /app/ComfyUI #设置python 依赖包加速 RUN pip config set global.index-url https://mirrors.cloud.aliyuncs.com/pypi/simple RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple RUN pip config set install.trusted-host mirrors.cloud.aliyuncs.com # 安装PyTorch(默认NVIDIA CUDA版本,可根据需要修改) RUN pip install torch==2.5.0+cu124 torchvision==0.20.0+cu124 torchaudio==2.5.0 --index-url https://download.pytorch.org/whl/cu124 # 安装项目依赖 RUN pip install -r requirements.txt # 暴露服务端口 EXPOSE 8188 # 启动命令 CMD ["python", "main.py"]
加速镜像下载
若公共镜像仓库访问速度较慢,可通过配置Docker的registry-mirrors来提升下载速度。例如,在Linux系统中,编辑/etc/docker/daemon.json文件,添加或修改如下配置。
{ ...... "registry-mirrors": [ "https://docker.nju.edu.cn", "https://dockerproxy.com", "https://docker.mirrors.ustc.edu.cn", ...... ] }
重新加载文件并重启docker,使上一步修改生效。
systemctl daemon-reload # 重新加载配置文件。 systemctl restart docker # 重启Docker服务。
另外,您也可以将常用基础镜像存储在自己的镜像仓库,或者搭建私有的registry-mirror。
加速Python依赖包下载
按照ComfyUI项目的README.md的指引进行安装时,若Python依赖包下载缓慢,可以配置pip的
index-url
来提速,例如使用阿里云或者清华的Python镜像源。...... RUN pip config set global.index-url https://mirrors.cloud.aliyuncs.com/pypi/simple RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple RUN pip config set install.trusted-host mirrors.cloud.aliyuncs.com ......
构建镜像
docker build -t comfyui:latest .
将镜像推送到容器镜像服务
在函数计算中,创建自定义镜像函数必须使用同一账号下相同地域内阿里云镜像服务仓库中的镜像。您可以选择以下方式将镜像推送到容器镜像服务。
创建GPU函数
函数计算默认为所有GPU函数提供镜像加速功能,支持按需拉取和P2P缓存,无需额外配置。利用此功能,可快速创建大镜像容器,提升弹性能力,更多请参见创建GPU函数。但需注意:函数计算对镜像大小有限制,应尽量避免将大型模型数据包含在镜像中,以防加速镜像创建时间过长,镜像大小限制和配额申请请参见配额与使用限制。
创建函数的启动命令和监听端口,示例如下。
监听端口:8188。说明:监听端口需要和构建的镜像的端口保持一致。
启动命令:python main.py --listen 0.0.0.0
为函数配置自定义域名
阿里云函数计算为函数提供的域名主要用于API访问,如需通过ComfyUI可视化界面操作,可以为函数配置自定义域名。
在浏览器上访问配置的自定义域名打开comfyUI界面,效果如下图所示。
步骤二:模型下载与加速
模型可以从Hugging Face、魔搭、civitai等社区下载。魔搭社区中有大量的模型,还提供了很多组织的镜像,例如Black Forest Labs,如果访问Hugging Face网络受限,可选择魔搭的镜像源。
函数计算推荐用户将模型数据存储到NAS或者OSS。其中通用型 NAS 中的“性能型”实例可以达到约 600MB/s的初始带宽,而OSS 的带宽上限较高,相比 NAS 不易出现函数实例间带宽争抢现象,还可以通过开通 OSS 加速器获得更高的吞吐能力。更详细的信息,请参见AI 场景下,函数计算 GPU 实例模型存储最佳实践。
在魔搭的模型库中搜索Black Forest Labs,以下以FLUX.1-dev模型为例演示模型下载。
将下载的模型上传到OSS,需要将下载的模型放在ComfyUI/models/指定文件夹,例如
flux1-dev.safetensors
模型存放unet
文件夹,示例模型路径如下所示。文件夹名称
下载的模型
checkpoints
dreamshaperXL_lightningDPMSDE.safetensors
clip
clip_l.safetensors
t5xxl_fp8_e4m3fn.safetensors
clip_vision
clip_vision_g.safetensors
clip_vision_l.safetensors
controlnet
flux-canny-controlnet-v3.safetensors
loras
FLUX1_wukong_lora.safetensors
araminta_k_flux_koda.safetensors
unet
flux1-dev.safetensors
vae
ae.safetensors
在函数详情页面,选择配置页签,在左侧导航栏选择权限页签,为函数配置具有访问OSS权限的角色,然后在左侧导航栏选择存储页签,在OSS 对象存储区域单击编辑,在编辑面板中配置以下参数,然后单击部署。
部署完成后,登录函数实例,确认函数本地目录下模型是否挂载成功。
(可选)打开ComfyUI,默认的流水线需要一个Checkpoint加载器类型的模型,还需要在OSS的Checkpoint的文件目录下上传Checkpoint类型的模型,例如
dreamshaperXL_lightningDPMSDE.safetensors
模型。登录实例显示的路径如下图。
点击执行,查看输出图片的效果。
下载预置的工作流文件FLUX-base.json。打开ComfyUI,选择 ,导入已经下载好的FLUX-base.json文件。这个工作流使用了
t5xxl_fp8_e4m3fn.safetensors
、ae.safetensors
和flux1-dev.safetensors
模型,点击运行,效果如下图所示。
步骤三:推理加速
文生图服务的推理通常耗时数秒至数十秒,推理加速不仅能缩短响应时间,提升用户体验,还能降低资源成本。以下我们介绍两种推理加速方案:
阿里云神行工具包(DeepGPU)
什么是神行工具包(DeepGPU)也提供了对ComfyUI + SD/FLUX的推理加速能力。神行工具包是具有GPU计算服务增强能力的免费工具集,包括业务快速部署工具、GPU资源拆分工具、AI训练和推理计算优化工具以及针对热门AI模型的专门加速工具等。目前,神行工具包中的推理组件可以免费搭配阿里云函数计算,方便用户更方便、更高效地使用阿里云函数计算的GPU资源。
1. DeepGPU安装
使用DeepGPU加速ComfyUI + SD/FLUX的推理前,需要安装依赖包:
torch2.5安装
RUN pip install torch==2.5.0
deepgpu-torch安装
DeepGPU的torch模型加速包,支持FLUX.1、VAE等模型加速。
# ubuntu RUN apt-get update RUN apt-get install which curl iputils-ping -y # centos # RUN yum install which curl iputils -y #先安装torch,deepgpu-torch依赖python3.10、torch2.5.x+cu124(如需其他版本,请联系我们) RUN pip install deepgpu-torch==0.0.15+torch2.5.0cu124 -f https://aiacc-inference-public-v2.oss-cn-hangzhou.aliyuncs.com/deepgpu/deepytorch/index.html
把插件下载后,解压到custom_nodes/目录下
RUN wget https://aiacc-inference-public-v2.oss-cn-hangzhou.aliyuncs.com/deepgpu/comfyui/flux/20250102/ComfyUI-deepgpu.tar.gz RUN tar zxf ComfyUI-deepgpu.tar.gz -C /app/ComfyUI/custom_nodes RUN pip install deepgpu-comfyui==1.0.8 -f https://aiacc-inference-public-v2.oss-cn-hangzhou.aliyuncs.com/deepgpu/comfyui/index.html
2.ComfyUI源码修改(重要)
依赖的版本
x-flux-comfyui更新到github最新版;
原生LoRA支持
如果有ComfyUI原⽣LoRA模型使⽤LoraLoaderModelOnly加载LoRA模型,并且在使⽤deepgpu-torch加速的情况下,必须修改ComfyUI源码里的⼀行代码。
如果ComfyUI是v0.3.6版本以下
代码地址:
https://github.com/comfyanonymous/ComfyUI/blob/v0.3.6/comfy/sd.py#L779
在这⼀⾏添加⼀个参数
weight_inplace_update=True
。return comfy.model_patcher.ModelPatcher(model, load_device=load_device, off load_device=offload_device, weight_inplace_update=True)
如果ComfyUI是v0.3.7版本以上
代码地址:https://github.com/comfyanonymous/ComfyUI/blob/v0.3.7/comfy/sd.py#L785
在这⼀⾏添加⼀个参数
weight_inplace_update=True
。model_patcher = comfy.model_patcher.ModelPatcher(model, load_device=load_de vice, offload_device=model_management.unet_offload_device(), weight_inplace _update=True)
以下提供一个安装DeepGPU的示例镜像。
# Dockerfile FROM python:3.10 # 安装系统依赖 RUN apt-get update && apt-get install -y \ git \ wget \ && rm -rf /var/lib/apt/lists/* WORKDIR /app # 克隆ComfyUI仓库 RUN git clone https://github.com/comfyanonymous/ComfyUI.git WORKDIR /app/ComfyUI #设置python 依赖包加速 RUN pip config set global.index-url https://mirrors.cloud.aliyuncs.com/pypi/simple RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple RUN pip config set install.trusted-host mirrors.cloud.aliyuncs.com # 安装PyTorch(默认NVIDIA CUDA版本,可根据需要修改) RUN pip install torch==2.5.0+cu124 torchvision==0.20.0+cu124 torchaudio==2.5.0 --index-url https://download.pytorch.org/whl/cu124 # 安装项目依赖 RUN pip install -r requirements.txt # ubuntu RUN apt-get update RUN apt-get install which curl iputils-ping -y # centos # RUN yum install which curl iputils -y #先安装torch,deepgpu-torch依赖python3.10、torch2.5.x+cu124(如需其他版本,请联系DeepGPU team) RUN pip install deepgpu-torch==0.0.15+torch2.5.0cu124 -f https://aiacc-inference-public-v2.oss-cn-hangzhou.aliyuncs.com/deepgpu/deepytorch/index.html #把插件下载后,解压到custom_nodes/目录下 RUN wget https://aiacc-inference-public-v2.oss-cn-hangzhou.aliyuncs.com/deepgpu/comfyui/flux/20250102/ComfyUI-deepgpu.tar.gz RUN tar zxf ComfyUI-deepgpu.tar.gz -C /app/ComfyUI/custom_nodes RUN pip install deepgpu-comfyui==1.0.8 -f https://aiacc-inference-public-v2.oss-cn-hangzhou.aliyuncs.com/deepgpu/comfyui/index.html # 暴露服务端口 EXPOSE 8188 # 启动命令 CMD ["python", "main.py"]
3. 环境变量配置
在阿里云函数计算中使用DeepGPU时,需要配置特定的环境变量DEEPGPU_PUB_LS=true
和DEEPGPU_ENABLE_FLUX_LORA=true
。
4. (可选)配置GPU闲置模式
通过配置预留实例,您可以有效降低实例冷启动导致的请求延迟问题。同时,您可以配置预留实例的弹性伸缩规则如定时伸缩和水位伸缩,提高实例使用率,解决资源浪费问题。
5. DeepGPU ComfyUI插件使用方法
插件中包含4种DeepGPU类型的节点,可以在ComfyUI界面搜索框中通过输入DeepyTorch找到:
Apply DeepyTorch to disffusion model
Apply DeepyTorch to vae model
DeepTorch Sampler to replace XlabsSampler
使用指南
插入位置:针对flux将Apply DeepyTorch to disffusion model节点插入到Load Diffusion Model、或者Load Flux LoRA、或者Apply Flux IPAdapter节点后面,针对其他模型则插入到Load Checkpoint、或者LoraLoaderModelOnly节点后面。以导入为例,如下图所示。
Sampler替换:DeepTorch Sampler to replace XlabsSampler节点针对flux用于替换XLabsSampler节点。
ComfyUI TorchCompile*节点
目前有一些开源推理加速节点,包括但不仅限于:
TorchCompileModel
TorchCompileVAE
TorchCompileControlNet
TorchCompileModelFluxAdvanced
这类节点利用PyTorch的即时编译能力,通过将动态计算图转换为高效的静态代码,从而优化和加速模型执行,提升资源利用率。
当前这些节点多处于BETA或实验阶段。
TorchCompile*节点与 DeepGPU 的使用方式和性能对比
我们对比测试了ComfyUI自带的TorchCompile节点与DeepGPU节点在推理加速方面的表现,分析它们的使用方式、加速效果和适用场景,供用户参考。
模型列表
文件夹名称 | 下载的模型 |
clip | clip_l.safetensors |
t5xxl_fp8_e4m3fn.safetensors | |
clip_vision_l.safetensors | |
loras | FLUX1_wukong_lora.safetensors |
unet | flux1-dev.safetensors |
vae | ae.safetensors |
配置参数
Sampler
steps: 20
Empty Latent Image
width: 768
height: 1024
测试平台
阿里云函数计算 fc.gpu.ada.1实例。
推理加速框架场景支持矩阵 & 推理加速效果
测试结果显示,无论是TorchCompile系列节点,还是DeepGPU,均能覆盖ComfyUI + SD/FLUX的大部分使用场景,并在Flux相关场景下实现约20%-30%的推理加速。
测试Workflows
以下提供不同模型使用的推理加速的Workflows.json文件。
场景 | Workflow |
FLUX only | |
FLUX + Lora | |
FLUX + ComfyUI Lora | |
SDXL |