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

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

说明

本文介绍如何通过函数计算部署ComfyUI应用并使用其完成出图、自定义节点等操作,如果您想使用函数计算Function AI提供的新版图像生成应用,请参见创建ComfyUI项目

方案概览

image

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

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

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

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

准备工作

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

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

  2. 首次使用函数计算的用户,建议您领取新客户试用额度

入门:部署ComfyUI

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

    重要

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

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

    image

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

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

    配置项名称

    说明

    示例值

    角色名

    默认选择角色AliyunFCServerlessDevsRole,首次创建应用的用户,需要根据界面提示,单击前往授权跳转至快速授权页面,完成授权并创建该角色。

    AliyunFCServerlessDevsRole

    地域

    选择创建应用的地域,建议您选择距离自己较近的地域。

    由于当前模板涉及GitHub以及HuggingFace等网站的访问,国内部分地域可能无法直接使用,此时,您可以切换到海外地域然后进行重试。

    华东1(杭州)

    内置模型

    选择内置风格。

    黏土风格

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

    等待约1分钟,部署状态变为部署成功,并生成访问域名。

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

    • ***.devsapp.net域名是CNCF SandBox项目Serverless Devs社区所提供,仅供学习和测试使用,不可用于任何生产使用。社区会对该域名进行不定期拨测,并在域名下发1天后进行回收,建议您及时为应用绑定自定义域名,以获得更好的使用体验。

    • 如果应用未绑定自定义域名,且部署的时间超过1天,应用将无法正常访问,此时需要重新部署一次应用,应用域名即可正常访问。

  5. 单击生成的访问域名链接,打开ComfyUI界面,开始体验ComfyUI图片生成。

    说明

    首次打开ComfyUI,遇到无法访问此网站情况,无需刷新等待10 秒即可进入。这里等待10秒主要是函数计算基于Serverless应用中心开发ComfyUI应用模板有冷启动。冷启动是指在函数调用链路中的代码下载、启动函数实例、进程初始化及代码初始化等环节。如果您希望消除冷启动带来的影响,可以使用极速模式,设置启动快照提前锁定资源,详情请参见配置启动快照

  6. 自定义提示词,单击Queue Prompt,使用默认工作流,测试制作自己的第一张图。

    image

    说明
    • 由于首次出图需要加载模型到内存,因此需要耗时几分钟,后续出图时间将大幅降低。

    • Queue Size表示正在等待出图的个数。请您在看到Queue Size:1之后,耐心等待出图。

    • ComfyUI工作流执行过程中,当前处理节点会实时高亮绿色边框,您可以通过观察绿框的移动追踪图像生成进度(如上图图示③)。

    您可以同时自定义正向提示词和反向提示词,示例如下。

    • 正向提示词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

进阶:用ComfyUI自制黏土风格滤镜

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

  1. 下载预置的工作流文件workflow.json。在ComfyUI界面,单击右下角的Load,选择并导入已经下载好的workflow.json文件。

    说明

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

  2. 在图片区Load Image节点,单击choose file to upload导入需要制成“黏土风格”的原图。

    image

  3. 单击右侧Queue Prompt等待图片生成

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

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

    image

更多操作

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

当前已实现通过函数计算部署ComfyUI并生成图片的功能。如果您需要将生成的图片进行保存和统一管理,您可以为函数绑定文件存储 NAS

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

  2. 在目标应用详情页面,选择环境详情页签,在资源信息区域,单击ComfyUI应用的函数名称进入函数配置页面。

    image

  3. 函数详情页签,选择配置页签,单击高级配置右侧的编辑。在高级配置面板的网络区域配置函数的VPC访问能力,然后在存储区域开启挂载NAS文件系统,完成后单击部署

    具体操作,请参见配置网络配置NAS文件系统

    重要
    • NAS挂载点的VPC和交换机必须与函数配置的VPC和交换机一致。

    • NAS挂载点的函数本地目录必须配置为/mnt/auto/mnt/auto的子目录。

    image

    image

  4. 使用NAS可视化浏览器应用,直接通过浏览器管理已挂载NAS文件系统中的文件。具体操作,请参见使用函数计算快速搭建可视化NAS浏览器应用

    针对华东1(杭州)和华东2(上海)地域,您无需搭建上述函数计算的可视化NAS浏览器应用,直接在NAS控制台,找到目标文件系统,在操作列,选择image > 浏览器,即可完成NAS可视化浏览器应用的创建。

  5. 通过NAS可视化界面,您可以在<远端挂载目录>/comfyui/output路径中查看或下载ComfyUI生成的图片。

    image

ComfyUI中安装自定义节点

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

重要
  • 安装过程中请不要关闭页面。安装完成后,需要单击restart,然后刷新页面。

  • 安装过程中可能会访问Github、HuggingFace等境外网站,由于网络问题可能会导致访问较慢或失败,您可以使用国内镜像加速下载。

  1. ComfyUI界面,依次单击Manager > Install Custom Nodes

    说明

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

  2. 在节点列表,搜索找到需要安装的节点AIGODLIKE-COMFYUI-TRANSLATION,然后单击Install

    image.jpeg

  3. 安装完成后,单击右下角的image图标,在弹出的对话框,您可以找到AGLTranslation-language选项,此时,可以将语言设置为中文。

    image

  4. 加速依赖下载。

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

    如果该目录下无pip.conf文件,请手动创建,同时确保文件路径严格保持为/mnt/auto/comfyui/root/.pip/pip.conf

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

    方式二:通过NAS可视化浏览器界面手动创建并编辑。

    pip.conf示例如下:

    [global]
    index-url = http://mirrors.aliyun.com/pypi/simple/
    [install]
    trusted-host = https://mirrors.aliyun.com
  5. (可选)解决缺失节点的问题。

    导入第三方的工作流,可能会遇到节点不存在的报错the folllowing node types were not found,可以依次单击Manager > Install Missing Custom Nodes安装缺失的节点。部分节点升级后,可能仍然提示未安装,可参考ComfyUI Guides的相关讨论解决。

说明

您也可以选择登录实例进入ComfyUI终端,在终端下手动安装自定义节点和依赖等。在函数详情页面,选择实例,单击目标实例右侧的登录实例进入ComfyUI终端。

加载ComfyUI工作流文件

您可以通过自定义工作流文件以满足您实际业务场景下的个性化需求。为了让您能够快速体验ComfyUI不同工作流带来的全新体验,本文以预置的JSON文件controlnet.json为例,具体操作如下。

  1. ComfyUI界面,单击右下角的Load,选择并导入已经下载好的controlnet.json文件。

    说明

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

  2. 单击右侧Queue Prompt等待图片生成

    image.jpeg

    如果报错提示Value not in list,表示ComfyUI无法找到模型名称。您可以在Load Checkpoint节点中重新选择模型,例如Anime天空之境SDXL.safetensors,然后单击Queue Prompt重新出图。

资源清理

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

  • 删除ComfyUI使用的函数

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

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

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

      image

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

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

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

    3. 在弹出的对话框,删除挂载点,然后单击删除删除文件管理系统。