基于ComfyUI编排文生图workflow

ComfyUI是一款开源的图形化AI工作流工具,专注于简化生成式模型(如Stable Diffusion)的开发和部署流程。其基于节点化设计,您可通过拖放模块快速搭建图像生成、文本处理等复杂流程,支持本地与云端部署。本文将介绍如何基于阿里云产品完成ComfyUI的本地安装,包括环境配置、依赖安装及基础使用等步骤。

ComfyUI简介

ComfyUI是一个功能强大且灵活的图像生成工具,通过节点工作流的方式提供了丰富的定制化选项。ComfyUI将每一步操作抽象成节点,并通过节点之间的连接形成生成图像的工作流。您可以通过拖拽和连接不同的模型、模块和参数,形成高度定制和可复用的工作流。相较于传统的Stable Diffusion WebUI,ComfyUI提供了更灵活和直观的操作方式。详细信息,请参见ComfyUI 官方文档

环境准备

  • ComfyUI支持配置--cpu参数,来基于CPU进行推理服务。但从性能角度考虑,最好创建包含GPU节点的ACK集群Pro版,且集群版本为1.22及以上,GPU节点显存需为16GB及以上。具体操作,请参见创建ACK托管集群

  • 建议GPU节点使用525及以上版本的驱动,您可以通过为GPU节点池添加标签ack.aliyun.com/nvidia-driver-version:525.105.17指定驱动版本为525.105.17。具体操作,请见通过指定版本号自定义节点GPU驱动版本

1. 准备模型数据

本文以flux1-dev模型为例,演示如何下载模型、上传模型至OSS,以及在ACK集群中创建对应的存储卷PV和存储卷声明PVC。详细信息,请参见ComfyUI支持的模型PVPVC。如需上传模型至NAS,请参见使用NAS静态存储卷

  1. 下载模型文件。

    1. 执行以下命令,安装Git。

      # 可执行yum install gitapt install git安装。
      yum install git
    2. 执行以下命令,安装Git LFS(Large File Support)插件。

      # 可执行yum install git-lfsapt install git-lfs安装。
      yum install git-lfs
    3. 执行以下命令,将ModelScope上的flux1-dev仓库克隆到本地。

      GIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/AI-ModelScope/sdxl-turbo.git
    4. 执行以下命令,进入flux1-dev目录,下载LFS管理的大文件

      cd sdxl-turbo
      git lfs pull
  2. 将下载的flux1-dev文件夹上传至OSS。

    1. 登录OSS控制台,查看并记录已创建的Bucket名称。

      如何创建Bucket,请参见创建存储空间

    2. 安装和配置ossutil,用于管理OSS资源。具体操作,请参见安装ossutil

    3. 执行以下命令,在OSS创建名为sdxl-turbo的目录。

      ossutil mkdir oss://<Your-Bucket-Name>/sdxl-turbo
    4. 执行以下命令,上传模型文件至OSS。

      ossutil cp -r ./sdxl-turbo oss://<Your-Bucket-Name>/sdxl-turbo
  3. 为目标集群配置存储卷PV和存储声明PVC。具体操作,请参见使用OSS静态存储卷

    • 以下为示例PV的配置信息:

      配置项

      说明

      存储卷类型

      OSS

      名称

      sdxl-turbo-model

      访问证书

      配置用于访问OSSAccessKey IDAccessKey Secret。

      Bucket ID

      选择已创建的OSS Bucket。

      OSS Path

      选择模型所在的路径,如/models/sdxl-turbo。

    • 以下为示例PVC的配置信息:

      配置项

      说明

      存储声明类型

      OSS

      名称

      sdxl-turbo-model

      分配模式

      选择已有存储卷

      已有存储卷

      单击选择已有存储卷链接,选择已创建的存储卷PV。

2. 配置Models部署参数

  1. 登录容器服务管理控制,在左侧导航栏选择集群列表集群列表页面,单击目标集群名称,然后在左侧导航栏,选择应用 > Helm。找到comfyui组件单击安装即可。image

  2. comfyui参数配置界面中设置相关参数。

    persistence:
      - mountPath: "/app/ComfyUI/models/checkpoints"
        annotations:
          helm.sh/resource-policy: keep
        persistentVolumeClaim:
          #设置为以上创建的PVC name
          existingClaim: "sdxl-turbo-model"
          accessModes: ReadWriteMany
          size: 20Gi
          subPath: ""

    image

3. 访问服务

  1. 登录容器服务管理控制,在左侧导航栏选择集群列表集群列表页面,单击目标集群名称,然后在左侧导航栏,选择工作负载 > 无状态无状态页面,单击选择ack-comfyui部署的命名空间,等待所有Pod就绪。

  2. 将服务转发到本地,将占用本地的8080端口,参考port-forward。

    kubectl port-forward svc/ack-comfyui 8080:8188

    命令执行成功后,输出内容如下。

    Forwarding from 127.0.0.1:8080 -> 8188
    Forwarding from [::1]:8080 -> 8188

    在本地通过浏览器访问服务http://localhost:8080。

    image.png

(可选)安装ComfyUI-Manager组件

ComfyUI-Manager是一款专为增强ComfyUI易用性设计的扩展工具。该组件提供完整的节点管理体系,支持自定义节点的安装、卸载、禁用及启用等全生命周期管理操作。其内置的中心枢纽功能集成了信息聚合模块,可一站式访问ComfyUI生态系统内的多样化资源信息

  • 登录容器服务管理控制,在左侧导航栏选择集群列表集群列表页面,单击目标集群名称,然后在左侧导航栏,选择应用 > Helm。找到comfyui组件单击安装即可。image

    说明

    当您在ComfyUI平台安装第三方扩展及自定义节点时,请务必自行甄别和评估扩展组件的安全性。由于生态系统的开放性,平台无法对第三方开发者提供的扩展功能作出安全性承诺。

  • 如果您需要通过官方扩展插件ComfyUI Manager来提高ComfyUI的易用性、高效地管理节点和工作流,您可以将values.yaml中的command字段修改为如下的启动命令。

    command:
     - /bin/sh
     - -c
    args:
     - |
       cd ComfyUI/custom_nodes && \
       git clone https://github.com/ltdrdata/ComfyUI-Manager.git && \
       cd .. && \
       python3 -u /app/ComfyUI/main.py --listen 0.0.0.0