阿里云国际站代理商:人工智能平台 PAI-AI视频生成-ComfyUI部署

ComfyUI是基于Stable Diffusion的节点式AIGC工具,用于短视频内容生成和动画制作。EAS支持场景化部署ComfyUI服务。

开始之前

重要限制与注意事项

部署前必读:了解以下关键限制,以避免资源浪费和常见错误。

  • 部署资源:推荐使用GU30、A10或T4卡型,其中ml.gu7i.c16m60.1-gu30性价比高。

    重要

    每个 EAS 实例仅运行一个 ComfyUI 进程,仅支持单张 GPU(单机单卡或多机单卡),不支持多卡并行推理。请勿选择多卡 GPU 规格(如 2*A10 等),这会造成资源浪费且无法提升单任务的性能。

  • 水平扩展方式:如需提升并发处理能力,请使用API版并增加副本数量,而非选择多卡规格。

  • 存储准备:如需使用自定义模型、安装自定义节点或通过API调用,必须提前创建OSS存储空间或NAS文件系统。详见对象存储OSS快速入门。

    EAS 不支持通过 ComfyUI 管理器或 Git Clone 等方式从网络直接安装自定义节点(插件)。所有自定义内容都必须通过挂载存储的方式上传。

选择部署版本

根据使用场景选择合适的版本:

部署版本

适用场景

调用方式

主要特点

计费模式

部署版本

适用场景

调用方式

主要特点

计费模式

标准版

单用户开发和测试

  • WebUI

  • API调用(同步,支持在线调试)

  • 并发能力有限

  • 建议部署单实例

如果使用公共资源部署,实例拉起资源即开始按时长计费,即使无调用。

API版

生产环境高并发

API调用(异步)

  • 基于EAS队列服务

  • 需要额外CPU资源

  • 支持负载均衡

集群版WebUI

多用户团队和教学

WebUI

  • 用户环境隔离

  • GPU资源共享

  • 资源消耗较高

原理参见集群版服务原理介绍

更多计费详情请参见模型在线服务(EAS)计费说明。

说明

此处API调用的同步与异步取决于是否使用EAS的队列服务:

  • 同步调用:直接请求推理实例,不使用EAS的队列服务;

  • 异步调用:使用EAS的队列服务,向输入队列发送请求,以订阅的方式获得结果推送。

由于ComfyUI本身具有异步队列系统,即使发起同步调用,实际也是异步执行的。发送请求后,系统返回一个Prompt ID,您需要用该ID轮询获取推理结果。

部署服务

标准版、集群版、API版:可使用场景化模型部署(操作简单)或者自定义模型部署(支持更多功能)。

方式一:场景化模型部署(推荐)
方式二:自定义模型部署

通过WebUI使用

重要

标准版和集群版支持通过WebUI使用。

进入Web界面

单击目标服务名称进入概览页面,在右上角单击Web应用

如页面长时间无法打开,请参见刷新页面时间过长或页面卡死。

使用模板工作流

ComfyUI为常见任务提供预置模板。

  1. ComfyUI不同镜像版本中的模板有差别,若无示例模板,可选择其他模板使用。也可以加载本地文件系统中的工作流使用。

    image

    1. 工作流加载成功后,如遇到报错缺少模型,可忽视(建议勾选不再显示此消息)。

    2. 由于路径变更,直接运行工作流可能会出现以下报错。

      image.png

      请先在Load models here区域重新选择模型wan2.1_vace_14B_fp16.safetensorsWan21_CausVid_14B_T2V_lora_rank32.safetensors

      image

    3. 工作流运行成功后,会在Save Video区域,展示生成的视频。image

    使用自定义模型和节点

    1. 确认服务已配置存储挂载。如使用自定义部署,需在运行命令中增加参数--data-dir挂载目录,详情见方式二:自定义模型部署。

      服务部署成功后,系统会自动在已挂载的OSS或NAS存储空间中创建如下目录结构。

      data-oss/
      ├── custom_nodes/     # 存放节点文件(ComfyUI插件)
      ├── models/           # 存放模型文件
      ├── input/
      ├── output/
      ├── unet/
      └── temp/
    2. 上传模型或节点文件。以OSS为例,可控制台上传文件到OSS。对于大文件,请参见如何上传大文件到OSS?。

      • 模型文件上传:根据模型使用节点的源项目库使用说明,将模型上传至models下的对应子目录。例如:

        • Checkpoint加载器:模型上传至models/checkpoints

        • 风格模型加载器:模型上传至models/styles

      • 节点文件上传:推荐您将自定义节点上传至挂载存储的custom_nodes目录。

    3. 加载新内容。

      • 模型:单击PaiCustom>加载新模型,如仍然找不到模型,单击重启进程,重启成功后,刷新浏览器页面。

      • 节点:直接单击重启进程。重启成功后,刷新浏览器页面。

    导出工作流

    在WebUI中调试好工作流后,将工作流保存为一个JSON文件,用于后续的API调用。

    image

    API调用

    API调用概述

    通过API调用ComfyUI服务,可将其集成到您的应用中实现自动化内容生成。核心流程:提交工作流JSON → 获取任务ID → 用任务ID获取生成结果。

    重要

    标准版服务仅支持同步调用,并且提供在线调试。

    API版服务仅支持异步调用,且仅支持api_prompt路径。

    关键准备工作:ComfyUI的API请求体取决于工作流配置。请先在WebUI页面设置并导出工作流的JSON文件。

    结果下载:生成的图片或视频存储在挂载的output目录中,API调用的结果返回的是文件名和子目录名。对于OSS,需自行拼接完整的文件路径进行下载,请参见使用阿里云SDK下载OSS文件。

    准备API请求体

    根据调用方式的不同,请求体格式有所差异:

    • 同步调用:请求体需要将工作流JSON文件内容包装在”prompt”键值下面。

    • 异步调用:请求体就是工作流JSON文件内容。

    因为上述Wan VACE Text to Video的工作流运行比较耗时,为方便测试提供以下工作流(运行一次需要约3分钟)。

    同步调用

    同步调用直接向EAS服务实例发送请求,适合开发测试和低并发场景。

    在线调试:

    在线调试可在控制台直接测试API调用,无需编写代码,适合快速验证工作流配置。

    模型在线服务 (EAS)页面,单击目标服务操作列下的在线调试,进入在线调试页面。

    发送POST请求,获取Prompt ID。

    1. 在调试页面的在线调试请求参数区域的Body处填写已准备好的请求体。并在请求URL文本编辑框中添加/promptimage

    2. 单击发送请求,即可在调试信息区域查看返回结果,示例如下。
      image

    发送GET请求,根据Prompt ID获取推理结果。

    1. 在线调试请求参数区域中,将请求方法修改为GET,并在文本框中配置/history/<prompt id>,示例如下。image

      其中<prompt id>需要替换为步骤1获取的Prompt ID。

    2. 单击发送请求,即可获取推理结果。

      您可以在挂载存储的output目录中,查看生成的推理结果。

      异步调用

      异步调用适用于生产环境高并发场景,基于EAS队列服务实现负载均衡。提交请求后立即返回,通过订阅结果队列获取生成结果。

      重要

      异步调用仅支持api_prompt路径,其task_id参数是标识请求和结果的关键标志,请给每个请求分配一个唯一的值,以对应后面的队列结果。请求路径如下:

      {service_url}/api_prompt?task_id={需分配唯一值}

      查看调用信息。

      推理服务页签,单击目标服务名称进入概览页面,在基本信息区域单击查看调用信息。在调用信息对话框的异步调用页签,查看服务访问地址和Token。

      image

      下文使用<EAS_ENDPOINT>指代公网输入调用地址(如果调用端与EAS处于同一VPC,可使用VPC输入调用地址),<EAS_TOKEN>指代Token
      发送请求。
      订阅结果。

      部署问题

      Q:服务一直显示等待中或者ComfyUI无法出图

      通常是资源规格不够的原因。请检查服务镜像和资源规格配置是否正确,资源规格推荐使用GU30、A10或T4卡型,其中ml.gu7i.c16m60.1-gu30性价比高。

      模型与节点问题

      Q:WebUI显示“缺少模型”错误

      问题描述:报错如下:

      image.png

      解决方案:此报错可以忽略。PAI部署的ComfyUI此检查无效,请以运行时的报错为准。

      建议勾选不再显示此消息,或者通过设置关闭模型校验。

      image

      Q:上传了新模型但找不到

      解决方案:

      1. 单击PaiCustom,选择加载新模型
        image

      2. 如不可见,单击重启进程
        image

      Q:模型加载器显示undefined

      首先确认模型的目录位置是否正确,这依赖于模型加载器的要求。

      如在部署后上传模型,请重启服务。

      Q:找不到节点

      • 新安装的节点,需重启服务。

      • 节点未安装,请参见使用第三方模型和安装节点(ComfyUI插件)。

      Q:ComfyUI 管理器下载模型或安装节点失败

      在EAS部署的ComfyUI中,不建议使用ComfyUI管理器。管理器需从GitHub等外网下载模型或插件代码,容易因网络问题失败。

      建议您将模型或节点文件上传到服务挂载的存储上,详情请参见使用第三方模型和安装节点(ComfyUI插件)。

      Q:如何查看当前可用的模型文件和节点(ComfyUI插件)列表

      • 模型文件:在相应模型加载节点查看。例如在Checkpoint加载器的下拉列表中查看当前可用的模型文件。

      • 节点:右键单击WebUI页面,在快捷菜单中单击添加节点,查看所有已安装的ComfyUI插件。

      运行异常

      Q:页面卡死或加载页面时间过长

      • 刷新页面,清理浏览器缓存或使用无痕/隐私模式访问。

      • 如挂载了存储,删除input/output/temp/文件夹中的文件。

      • 尝试重启服务。

      Q:工作流跑一半,进程重启了

      如果实例日志里面有run.sh: line 54: 531285 Killed python -u main_run.py "$@",那就是内存oom了,内存oom之后,进程会自动重启。

      Q:RuntimeError: CUDA error: out of memory

      显存超了,如果是图像模型就降低图像的分辨率或者batch size;视频模型降低一下帧数/分辨率。

      Q:API调用报错:url not found 或404 page not found?

      1. 检查API端点URL是否完整。同步调用需拼接/prompt路径。

      其他

      Q:xFormer的加速效果

      xFormers是基于Transformer的开源加速工具,能够有效缩短图片和视频生成时长,节省显存使用。

      ComfyUI镜像部署默认已开启xFormers加速。加速效果跟工作流的大小相关,针对GPU调用的内容尤其是使用NVIDIA显卡的提升比较明显。

      查看调用信息。

      推理服务页签,单击目标服务名称进入概览页面,在基本信息区域单击查看调用信息。在调用信息对话框的异步调用页签,查看服务访问地址和Token。

      image

      下文使用<EAS_ENDPOINT>指代公网输入调用地址(如果调用端与EAS处于同一VPC,可使用VPC输入调用地址),<EAS_TOKEN>指代Token

     

    发送POST请求,获取Prompt ID。

    1. 在调试页面的在线调试请求参数区域的Body处填写已准备好的请求体。并在请求URL文本编辑框中添加/promptimage

    2. 单击发送请求,即可在调试信息区域查看返回结果,示例如下。image

      选择一个模板(如Wan VACE 文生视频

      说明

相关新闻

联系我们

联系我们

电报:@yunshuguoji

邮件:yunshuguoji@outlook.com

工作时间:早上8:00-晚上11:00

认准电报
认准电报
分享本页
返回顶部