通过函数计算部署ComfyUI以实现一个AIGC图像生成系统

方案概览

ComfyUI是一款基于节点工作流稳定扩散算法的全新WebUI。如果您需要高质量的图像生成功能,建议您使用函数计算提供的ComfyUI模型,也可以自定义ComfyUI模型、安装插件以满足定制化创作需求。函数计算基于Serverless应用中心开发“ComfyUI应用模板”,简化开发者的部署流程。同时可以充分利用函数计算按需付费,弹性伸缩等优势,高效地为用户提供基于ComfyUI模型的绘画生成服务。

免费产品模板-流程图 (2)

本方案的技术架构包括以下基础设施和云服务:

  • 函数计算:用于提供ComfyUI模型的应用服务。

  • 文件存储 NAS:用于存放预训练的ComfyUI模型和生成的图片。

  • 专有网络 VPC:用于配置专有网络,方便函数计算访问文件存储 NAS

部署准备

开始部署前,请按以下指引完成账号申请、账号充值。

准备账号

  1. 如果您还没有阿里云账号,请访问阿里云账号注册页面,根据页面提示完成注册。阿里云账号是您使用云资源的付费实体,因此是部署方案的必要前提。

  2. 为了节省成本,建议您根据情况领取新客户试用套餐,函数计算使用额度详情请参见试用额度

入门:部署ComfyUI

  1. 登录函数计算3.0控制台,在左侧导航栏,单击应用

    当左上角显示函数计算 FC 3.0时,表示当前控制台为3.0控制台。

    重要

    ComfyUI模型的应用只在函数计算 FC 3.0支持,如果您登录的是函数计算 2.0的控制台,请点击右上角的体验函数计算 3.0进行切换。

    image

    image

  2. 在应用页面,点击创建应用,选择通过模板创建应用,在人工智能页签找到流程式 AI 图片生成 ComfyUI光标移至该卡片,然后单击立即创建

    image

  3. 在创建应用页面,设置以下配置项,然后单击创建应用

    重点配置项说明如下,如果您没有特殊要求,其余配置项保持默认值即可。

    配置项名称

    说明

    示例值

    角色名

    创建应用所需的权限。首次创建应用的用户,需要单击前往授权配置角色权限。

    image

    image.png

    AliyunFCServerlessDevsRole

    地域

    地域选择可以选择距离自己较近的区域,目前支持华东1(杭州)、华东2(上海)。

    由于当前模板涉及GitHub以及HuggingFace等网站的访问,国内部分地域可能无法直接使用。

    华东1(杭州)

    内置模型

    选择内置风格。

    黏土风格

  4. 在弹出的对话框,仔细阅读应用创建提醒信息,勾选涉及的计费项和我已经了解上面的内容,并同意上述描述,然后单击同意并继续部署

    image

  5. 等待约1分钟,部署状态变为部署成功,表示应用部署成功,并生成访问域名。单击访问域名后的链接,开始体验ComfyUI图片生成。

    重要
    • 请注意保护域名的安全,不要泄露给其他人,以防产生额外费用。

    • ***.devsapp.net域名是CNCF SandBox项目Serverless Devs社区所提供,仅供学习和测试使用,不可用于任何生产使用;社区会对该域名进行不定期地拨测,并在域名下发30天后进行回收,强烈建议您绑定自定义域名以获得更好的使用体验,详细请见配置自定义域名

    image

  6. 首次打开ComfyUI,遇到无法访问此网站情况,无需刷新等待10 秒即可进入。

    说明

    这里等待10秒主要是函数计算基于Serverless应用中心开发ComfyUI应用模板有冷启动。冷启动是指在函数调用链路中的代码下载、启动函数实例、进程初始化及代码初始化等环节。如果您希望消除冷启动带来的影响,可以配置预留实例,详情请参考配置预留实例

    image.png

  7. ComfyUI提供默认工作流,点击Queue Prompt,测试制作自己的第一张图。第一次生成因为存在冷启动可能需要几分钟,后续出图会快很多。

    说明

    第一张图耗时更长是需要加载模型到内存。Queue Size表示正在等待出图的个数。请您在看到Queue Size:1之后,耐心等待出图。下图中箭头所指的绿框表示当前工作流执行所处的位置,您可以通过观察绿框的移动查看工作流的执行进度。

    image

    您可以自己定义提示词,点击Queue Prompt,生成绘画,右键点击生成的绘画选择Save Image进行保存,如图所示。

    • 正向提示词Spring, flowers, willows, little birds, distant green mountains, a boy is climbing up to the mountains, smiles, Pictrue highlight, rich details

    • 反向提示词loli,nsfw, logo, test, badhandv4, EasyNegative, mutated hands and fingers, poorly drawn face, extra limb, missing limb, disconnected limbs, malformed hands, ugly

    image

用ComfyUI自制黏土风格滤镜

为了让您更直观的感受ComfyUI强大的绘图能力,我们提供了预置的工作流文件、内置大模型和Lora模型,让您基于函数计算轻松部署ComfyUI应用,快速生成各类风格滤镜的图片。本文以黏土风格滤镜为例介绍相关的操作步骤。

  1. 下载预置的工作流文件workflow.json。打开ComfyUI,点击Load按钮,选择并导入已经下载好的workflow.json文件。

    说明

    ComfyUI的工作流可以保存为一个JSON文件,方便您保存和分享工作流的配置,但您不需要关心JSON文件的具体内容。建议您下载别人配置好的工作流JSON文件,在ComfyUI页面加载,快速体验和使用已有工作流。建议您访问ComfyUI示例查看ComfyUI官方提供的一些工作流示例。

    image

  2. 在图片区Load Image对话框选择choose file to upload导入需要制成“黏土风格”的原图。

    说明

    如果找不到该选项,可以滚动鼠标滑轮将模型放大。

    image

  3. 选择好原图,点击右侧Queue Prompt等待图片生成

    image

  4. 因为ComfyUI基于Serverless函数计算产品部署,因此生成第一张图的时候需要冷启动时间,第一张图生成需要等待30秒,后续每张图生成时间为2-5秒。

    经过实测,人物肖像表现会更好。建议您用人物照片进行测试。

    image

进阶:通过文件存储NAS保存生成的图片

当前已实现通过函数计算部署ComfyUI并生成图片的功能。如果您需要将生成的绘画进行保存、下载等操作,则需要使用阿里云提供的存储服务,这里以文件存储NAS为例,下面介绍具体的操作方法。

绑定文件管理NAS。通过函数计算控制台的网络配置,绑定专有网络、交换机。若无相关资源,需要先创建。

  1. 进入到函数控制台。

    环境详情页面,选择资源信息下的函数名称进入。

    image

  2. 在配置NAS文件存储之前,您需要为函数配置VPC网络访问能力。

    函数详情页签,选择配置页签,在左侧导航栏,单击网络,然后进行编辑,配置完成后点击部署

    • 自动配置

      如果您未创建过专有网络 VPC,可以选择自动配置函数计算将自动为您部署所有配置。

    • 自定义配置

      如果您之前创建过VPC,并且希望继续进行挂载,可以选择自定义配置,然后依次选择专用网络交换机安全组信息,这些信息需要和NAS文件系统专有网络交换机信息保持一致。

      重点配置项说明如下,如果您没有特殊要求,其余配置项保持默认值即可。

      配置项名称

      示例值

      允许访问VPC

      配置方式

      自定义配置

      专有网络

      选择您已有的VPCxxxx

      交换机

      选择您已有的交换机xxxx

      安全组

      选择您已有的安全组xxxx

      image

  3. 函数详情页签,点击配置,点击存储,点击NAS 文件系统编辑,进行NAS挂载设置。

    • 自动配置

      如果您未创建过NAS,可以选择自动配置函数计算将自动为您部署所有配置,点击部署。部署完成后请再次点击编辑,将函数本地目录设置为/mnt/auto,输入完成点击部署

    • 自定义配置

      进行NAS挂载设置,依次选择NAS 文件系统挂载点数据传输方式远端目录可以为任意路径,函数本地目录请填写/mnt/auto。如果您曾经在当前NAS中使用过Stable Diffusion应用,可以考虑将远端目录设置为/fc-stable-diffusion-plus。输入完成点击部署

      大模型对文件 IO 要求较高,建议创建通用性能型 NAS 实例,NAS会根据存储的文件大小进行计费,不同规格的 NAS 计费单价不一致,请参考计费概述

      image

  4. 函数详情页签,点击实例,再点登录实例进入ComfyUI终端。

    函数计算支持登入运行中的函数实例,建议您在终端中执行需要的操作(如手动安装自定义节点、依赖等)。

    重要

    在Serverless环境下,您的所有改动都不会真正保存,您需要将改动的文件放置在NAS中以持久化。

    image

  5. 创建NAS浏览器应用,便于像访问本地文件系统一样访问NAS文件系统。

    1. 登录NAS控制台

    2. 选择文件系统列表,选择目标文件系统ID/名称。在目标文件系统的操作列,单击image.png图标>浏览器。如果您未创建过NAS浏览器应用,请按照提示进行部署,部署完成后即可开始使用NAS浏览器。

      image.jpeg

    3. 点击浏览器会在函数计算应用面板创建对应应用,点击目标应用进入,您可以在环境详情页签点击访问域名进行文件管理。

      image

    4. 借助文件存储NAS的文件浏览器功能,您可以方便地进行云上文件管理。

      image

  6. 通过NAS浏览器,您可以在<远端挂载目录>/comfyui/output路径中查看或下载ComfyUI生成的图片。

    image

进阶:在ComfyUI中安装自定义节点

您可以通过自定义节点以满足您实际业务场景下的个性化需求。您可以使用ComfyUI-Manager安装所需的节点,下面以安装中文翻译插件AIGODLIKE-COMFYUI-TRANSLATION为例介绍操作方法。

重要

安装过程中请不要关闭页面。安装完成后,除去需要点击restart外,还需要刷新页面。

安装过程中可能会访问Github、HuggingFace等境外网站,由于网络问题可能会导致访问较慢或失败,您可以在网络上检索如何解决类似的问题。

  1. 点击Manager,点击Install Custom Nodes

    说明

    如果出现提示"The custom node DB is currently being updated",说明ComfyUI正在更新节点数据库。您可能需要等待1分钟左右,当数据库更新完成后,会自动跳转到节点列表。

    image.jpeg

  2. 在节点列表,搜索需要安装的节点名称:AIGODLIKE-COMFYUI-TRANSLATION,点击install。

    image.jpeg

  3. 安装完成,您可以在设置里将语言改为中文。

    image

  4. 加速依赖下载。

    使用国内 pypi 镜像加速依赖下载。编辑/mnt/auto/comfyui/root/.pip/pip.conf文件,设置镜像源为阿里云。

    方式一:在函数详情页签,点击实例,再点登录实例进入ComfyUI终端。

    方式二:借助文件存储NAS的文件浏览器功能。

    [global]
    index-url = http://mirrors.aliyun.com/pypi/simple/
    [install]
    trusted-host = https://mirrors.aliyun.com

    image

    image

  5. (可选)解决缺失节点的问题。

    导入第三方的工作流,可能会遇到节点不存在的报错,可以借助ComfyUI Manager安装缺失的节点。部分节点升级后,可能仍然提示未安装,可参考ComfyUI Guides的相关讨论解决。

    image.jpeg

    image.jpeg

进阶:加载ComfyUI工作流文件

您可以通过自定义工作流文件以满足您实际业务场景下的个性化需求。为了让您能够简单快捷地体验ComfyUI不同工作流带来的全新体验,我们提供了预置的JSON文件,具体操作如下。

  1. 下载预置的JSON文件,首先,请下载controlnet.json文件。

    导入JSON文件至ComfyUI,打开ComfyUI,点击Load按钮,选择并导入已经下载好的controlnet.json文件。

    说明

    ComfyUI的工作流可以保存为一个JSON文件,方便您保存和分享工作流的配置,但您不需要关心JSON文件的具体内容。建议您下载别人配置好的工作流JSON文件,在ComfyUI页面加载,快速体验和使用已有工作流。建议您访问ComfyUI示例查看ComfyUI官方提供的一些工作流示例。

    image

  2. 选择好原图,点击右侧Queue Prompt等待图片生成

    image

  3. 展示了使用 ControlNet 对比直接输出的差异。

    image.jpeg

  4. (可选)解决Queue Prompt时报错的问题。

    导入JSON文件后,Queue Prompt时可能会出现报错。如果报错提示Value not in list,表示ComfyUI无法找到模型名称。

    image请在对应Load节点中重新选择模型名称,然后重试Queue Prompt。

    image

    image

完成及清理

在本方案中,您部署了ComfyUI应用使用了函数计算产品,创建了函数资源,创建模型管理器使用了文件存储 NAS产品,增加了NAS挂载点。函数计算的函数不调用不会计费,文件存储 NAS只要有模型存储在NAS文件系统下,就会收费。

  • 删除ComfyUI使用的函数

    1. 登录函数计算控制台,在左侧导航栏,单击应用

    2. 在应用页面,找到目标应用,单击右侧操作列的删除应用

    3. 在弹出的对话框,勾选我已确定资源删除的风险,依旧要删除上面已选择的资源,然后单击删除应用及所选资源

      image

  • 删除模型管理器使用的NAS

    1. 登录NAS文件存储控制台,在左侧导航栏选择文件系统 > 文件系统列表

    2. 在文件系统列表,找到目标文件系统,在其右侧操作列,单击image,然后单击删除

      image

    3. 在弹出的对话框,单击移除,移除挂载点,然后单击删除

      image