首页 > 其他分享 >零门槛AI 绘图:教你为客户定制 ComfyUI Serverless API 应用

零门槛AI 绘图:教你为客户定制 ComfyUI Serverless API 应用

时间:2024-07-31 16:54:23浏览次数:9  
标签:Serverless updated last AI ComfyUI value start max images

作者:鸥弋、筱姜

2023年下半年,ComfyUI 以其快速、流畅的图像生成能力,结合多样的自定义节点,迅速在创作者中流行起来。ComfyUI 的亮点就是能够批量化生成图像,一键加载大量工作流,让用户可以轻松实现人像生成、背景替换、风格迁移和图像动画化等功能。越来越多的企业及个人开发者希望借助 ComfyUI 能力进行 AI 绘画领域创业或者业务上新,获得高流量及商业价值,但使用原生的 ComfyUI 仍然存在一些问题:

1.显卡资源昂贵且难以购买:GPU 卡池管理技术门槛高:高性能的 GPU 资源不仅价格昂贵,而且往往难以大规模采购。此外,GPU 卡池的有效管理和维护需要复杂的技术支持,也带来了额外的挑战。
2.难以应对高并发:原生的 ComfyUI 出图需要排队,并发处理能力有限。在面对高并发场景时,尤其是并发请求具有大的波动性时,资源配置难以精确预测,从而可能导致系统错误和业务中断。
3.门槛高,难以对外透出:ComfyUI 拥有一定的门槛,对于普通的创作者而言几乎无法使用,需要对其进行二次包装才能让更多用户享受到 AI 的便捷。

为了帮助用户高效率、低成本应对企业级复杂场景,以下介绍 ComfyUI API Serverless 版解决方案,通过使用该方案,用户可以充分利用 ComfyUI + Serverless 技术优势快速开发上线 AI 绘画应用,期待为广大开发者 AI 绘画创业及变现提供思路。
相关文章:AI 绘画平台难开发,难变现?试试 Stable Diffusion API Serverless 版解决方案

阿里云X优酷联名发起的「Creat@AI江湖创作大赛」使用本文章中的解决方案,基于函数计算FC 一键部署 AI 绘图平台,1分钟实现 “破次元壁合照”、5分钟实现 Stable Diffusion、ComfyUI 部署,生成以“少年江湖“为主题的画作赢万元奖金。
活动链接:https://developer.aliyun.com/plan/create/snbm
截屏2024-07-30 14.12.49.png

方案优势

在以往的活动中,我们也面临了很多非技术相关的用户期望享受 AI 的魅力。结合实际需要我们给出了 Serverless 化的 ComfyUI 实践案例,解决了上述问题。

  • 部署简单:提供基础 ComfyUI 镜像,不需要修改时一键即可拉起出图,需要修改时也只需要修改 ComfyUI 镜像地址即可
  • 弹性 GPU:函数计算提供了 GPU 弹性的能力,根据实际请求控制实例个数,有突发流量时自动弹新实例承接请求,完全不需要增加额外的关注
  • 按量付费:函数计算的按量实例为毫秒级粒度的计费策略,用多久就收多少钱,确保每分钱都花在刀刃上
  • ComfyUI Serverless 化改造:对原本不适应 Serverless 弹性能力的 ComfyUI 改造,使其可以支持异步、并发、弹性等各种 Serverless 能力
  • 前后端联动:活动开源了一个支持自定义参数,并且并发出图的前端页面,可直接提供给客户使用

应用场景

ComfyUI 提供了非常高的自由度和灵活性,支持定制化工作流,并且可以重复使用,批量出图,特别适用于需要创意图像生成场景:

  • 艺术创作与设计:艺术家和设计师可以利用 ComfyUI 生成独特的艺术作品,包括概念艺术、插画、海报设计等。通过 ComfyUI,他们可以根据自己的创意想法生成初步的图像草稿,然后再进一步细化和完善。
  • 内容制作与营销:在社交媒体、广告和营销领域,ComfyUI 可用于快速生成符合品牌风格的视觉素材,用于社交媒体内容、广告横幅、海报等
  • 游戏开发:游戏开发者可能利用 ComfyUI 自动生成游戏内的景观或建筑物的纹理,减少手工制作这些元素所需的时间和成本。
  • 视觉特效与影视后期:电影和电视行业的视觉特效团队可以使用 ComfyUI 来辅助创建逼真的背景、特殊效果或修复旧影片中的画面缺陷。

通过 API 接口调用 ComfyUI 解决方案

常规的 ComfyUI 出图的流程大致如下

  • 调用 /prompt 接口,发起出图任务
  • 通过 WebSocket 获取出图进度

由于在 Serverless 场景下,无请求的时候实例会被冻结,因此 WebSocket 请求是必须要存在的,且需要保持连接到出图完成。

在并发请求数比较大的情况下,我们往往期望可以利用 Serverless 的弹性,动态创建多个函数实例处理出图任务。但由于 ComfyUI 本身是“有状态”的,难以确保出图的请求和获取状态的请求固定打到同一个实例上,这可能会导致接口的调用不符合预期。

为了让 ComfyUI 更加适配 Serverless 模式,需要针对 ComfyUI 进行一定的改造。
参考 fc-comfyui/src/images/agent 的代码,在 ComfyUI 镜像里内置 agent 程序,负责转换 ComfyUI 请求并且拉起 ComfyUI。
截屏2024-07-30 13.59.35.png

注意!
我们提供的代码仅用于运营活动使用,作为 Serverless 方式调用的实践参考。
功能未经过严格测试,请根据实际的业务需要开发或调整相关的代码,并构建 ComfyUI 镜像。

目前提供的 Agent 能力介绍

开启 Agent 能力,需要增加环境变量

  • USE_AGENT1

当通过 Agent 的 API 调用时,建议您调整单实例并发度为 1 ~ 5,确保并发请求尽量使用单独的实例,提高出图效率

数据类型

出图 Prompt

与 ComfyUI 在 Dev Mode 导出的文件一致

type TPromptNode struct {
	Inputs    map[string]any `json:"inputs"`
	ClassType string         `json:"class_type"`
	Meta      map[string]any `json:"_meta"`
}

type TPrompt map[string]TPromptNode

LoadImage 节点的参数做了特殊处理,如果内容为 base64 或 http 地址,会自动将对应的文件上传,并转换为 ComfyUI 可识别的形式

进度

// key 为 node id 的 map 对象
type TProgress map[string]TProgressNode

type TProgressNode struct {
	Max         int                  `json:"max"` // 进度的最大值
	Value       int                  `json:"value"` // 当前进度
	Start       int64                `json:"start"` // 开始时间
	LastUpdated int64                `json:"last_updated"` // 最后一次更新时间
	Images      []TProgressNodeImage `json:"images"` // 当前节点输出的图片信息(路径)
	Results     []string             `json:"results,omitempty"` // 当前节点输出的图片 base64
}

接口

出图请求(HTTP 同步)

路径:/api/run
Body:json 格式的 prompt 数据
返回值:最后一次的进度(包含图片信息)

当需要异步请求时,需要增加 X-Fc-Invocation-Typetask-id,前者告知 FC 异步形式调用,后者用于记录当前任务的唯一 id,方便后续获取状态

curl http://xxxxx/api/run -v \
	-H 'X-Fc-Invocation-Type: Async' \
  -H "task-id: abcdefg" \
 	-XPOST \
  -d '{
    "3": {
        "inputs": {
            "seed": 1586995582004891,
            "steps": 17,
            "cfg": 6,
            "sampler_name": "dpm_2",
            "scheduler": "karras",
            "denoise": 1,
            "model": [
                "33",
                0
            ],
            "positive": [
                "31",
                0
            ],
            "negative": [
                "32",
                0
            ],
            "latent_image": [
                "5",
                0
            ]
        },
        "class_type": "KSampler",
        "_meta": {
            "title": "KSampler"
        }
    },
    "4": {
        "inputs": {
            "ckpt_name": "majicMIX realistic_v7.safetensors"
        },
        "class_type": "CheckpointLoaderSimple",
        "_meta": {
            "title": "Load Checkpoint"
        }
    },
    "5": {
        "inputs": {
            "width": 1024,
            "height": 784,
            "batch_size": 1
        },
        "class_type": "EmptyLatentImage",
        "_meta": {
            "title": "Empty Latent Image"
        }
    },
    "6": {
        "inputs": {
            "text": "2 human\nhi quality,detailed",
            "clip": [
                "4",
                1
            ]
        },
        "class_type": "CLIPTextEncode",
        "_meta": {
            "title": "CLIP Text Encode (Prompt)"
        }
    },
    "8": {
        "inputs": {
            "samples": [
                "3",
                0
            ],
            "vae": [
                "4",
                2
            ]
        },
        "class_type": "VAEDecode",
        "_meta": {
            "title": "VAE Decode"
        }
    },
    "9": {
        "inputs": {
            "filename_prefix": "ComfyUI",
            "images": [
                "8",
                0
            ]
        },
        "class_type": "SaveImage",
        "_meta": {
            "title": "Save Image"
        }
    },
    "10": {
        "inputs": {
            "image": "https://serverless-tool-images.oss-cn-hangzhou.aliyuncs.com/aigc/json/couple/default.png",
            "upload": "image"
        },
        "class_type": "LoadImage",
        "_meta": {
            "title": "Load Image"
        }
    },
    "11": {
        "inputs": {
            "image": "https://serverless-tool-images.oss-cn-hangzhou.aliyuncs.com/aigc/json/couple/百里东君.png",
            "upload": "image"
        },
        "class_type": "LoadImage",
        "_meta": {
            "title": "Load Image",
            "edit": []
        }
    },
    "12": {
        "inputs": {
            "image": "https://serverless-tool-images.oss-cn-hangzhou.aliyuncs.com/aigc/json/couple/background.png",
            "upload": "image"
        },
        "class_type": "LoadImage",
        "_meta": {
            "title": "Load Image"
        }
    },
    "13": {
        "inputs": {
            "image": "https://serverless-tool-images.oss-cn-hangzhou.aliyuncs.com/aigc/json/couple/mask.png",
            "upload": "image"
        },
        "class_type": "LoadImage",
        "_meta": {
            "title": "Load Image"
        }
    },
    "15": {
        "inputs": {
            "threshold_r": 0.15,
            "threshold_g": 0.15,
            "threshold_b": 0.15,
            "remove_isolated_pixels": 0,
            "fill_holes": false,
            "image": [
                "13",
                0
            ]
        },
        "class_type": "MaskFromRGBCMYBW+",
        "_meta": {
            "title": "

标签:Serverless,updated,last,AI,ComfyUI,value,start,max,images
From: https://www.cnblogs.com/Serverless/p/18334969

相关文章

  • AI创作商业系统软件源码(SparkAi系统) AI换脸/智能体GPTs应用/AI视频生成AI绘画/文档分
    AI创作商业系统软件源码(SparkAi系统)AI换脸/智能体GPTs应用/AI视频生成AI绘画/文档分析/GPT4.0模型支持目录一、人工智能SparkAi创作系统二、功能模块介绍系统快速体验三、系统功能模块3.1AI全模型支持/插件系统AI模型提问AI智能体文档分析多模态识图理解TTS&......
  • 2024 年过半,AI 大模型在各行业的落地实践走到哪了?
    转眼之间,2024年已经过半,AI大模型的热度从去年的技术探索转向落地实践,肉眼可见的是,各行各业都纷纷在这场热潮中寻找新的业务创新点和行业增长点。“大模型的出现带来了变革,它实现了知识平权,为我们提供了技术条件,使得我们能够参与到AI的应用中来。”宁德核电人工智能实验......
  • 【转型必看】Java到AI,程序员的逆袭秘籍,转行人工智能不再是梦!
    ​随着技术的不断进步,人工智能(AI)已经成为当今科技领域最热门的话题之一。许多开发者开始考虑从传统的软件开发领域,如Java,转向人工智能领域,今天小编和大家一起来探讨Java开发者是否可以转型到人工智能,转型的优势,薪资对比,以及转型所需的知识和学习路线等。01 Java开发者能否转型......
  • docker 拉取镜像超时:error pulling image configuration: download failed after atte
    之前是正常的,今天就罢工了,可能原因是国外镜像不稳定,被针对了吧。errorpullingimageconfiguration:downloadfailedafterattempts=6:dialtcp168.143.171.189:443:i/otimeout那就改为国内镜像:1.创建/etc/docker目录(已有的跳过)sudomkdir-p/etc/docker 2.修改......
  • ComfyUI插件:ComfyUI layer style 节点(一)
    前言:学习ComfyUI是一场持久战,而ComfyUIlayerstyle是一组专为图片设计制作且集成了Photoshop功能的强大节点。该节点几乎将PhotoShop的全部功能迁移到ComfyUI,诸如提供仿照AdobePhotoshop的图层样式、提供调整颜色功能(亮度、饱和度、对比度等)、提供Mask辅助工具、提供图层合成......
  • Ubuntu升级Jenkins导致无法启动,报错Failed to start Jenkins Continuous Integration
    背景:从23年底部署jenkins后就没升过级,安装插件顺手更新后导致无法启动,服务端运行状态显示jenkinssystemd[1]:FailedtostartJenkinsContinuousIntegrationServer.无法重新启动的状态信息root@jenkins:~#sudosystemctlstatusjenkins●jenkins.service-Jenkins......
  • 当下流行的AI搜索工具测评
    行业背景:AI搜索行业依托于其强大的技术基础和广泛的应用场景,市场规模持续扩大。据中研普华产业研究院发布的《2024-2029年中国智能搜索行业市场前瞻分析及投融资战略咨询报告》分析,我国搜索引擎用户规模已达到8.41亿人,占网民整体的78.0%,显示出庞大的用户基数和市场需求。这一......
  • 由于 OpenAI API 密钥错误,无法使用 Autogen 代理的本地模型
    我正在尝试将Autogen库与本地Huggingface模型一起使用,而不是使用OpenAIAPI。但是,我遇到了一个问题,收到以下错误:OpenAIError:Theapi_keyclientoptionmustbeseteitherbypassingapi_keytotheclientorbysettingtheOPENAI_API_KEYenvironmentvariable......
  • 《关于钉钉 AI 助理智能生成算法的分析报告》
    一、算法全周期行为检查算法安全信息内容安全:需确保生成的文本和图像内容不包含违法、有害、误导或侵犯他人权益的信息。例如,避免生成涉及暴力、色情、欺诈等内容。信息源安全:严格审查输入数据的来源,防止恶意数据的混入,以保障生成结果的可靠性和合法性。信息安全监测:持续监......
  • 【AI绘画stable diffusion1.5 夏日黄花Lora模型】摄影级真人写真,逼真大片!唯美!看完被震
    前言今天小南带来了三款鲜花摄像SD1.5夏日黄花Lora模型,一起来看看能够产出什么样的大片感。模型推荐majicMIXrealistic麦橘写实_v7,权重0.65。DPM++2MKarras采样推荐。开高清修复,开adetailer修复脸部本文涉及模型、插件下载请扫描免费获取哦**触发词:**blurry,dept......