runpod/worker-comfyui:5.5.0-flux1-dev 为例,介绍如何创建一个 Async Serverless Endpoint。
1. 准备容器镜像
您需要提前将运行环境打包成 Docker 镜像,并上传至镜像仓库。支持指定公共镜像仓库地址和私有镜像仓库地址(需提供镜像仓库认证凭证)。- 您可以将镜像上传至 Docker Hub,目前平台已针对该站点提供镜像预热服务。详情请参见使用镜像预热服务。
runpod/worker-comfyui:5.5.0-flux1-dev 模型镜像,在使用 worker-comfyui 镜像时,请配置 BUCKET_ENDPOINT_URL 等 对象存储 相关配置,这些配置将会保证您通过 async serverelss endpoint 产生的 图片、视频会被上传到 对象存储的 BUCKET 中;
2. 选择实例规格
目前Async Serverless Endpoint 支持以下两种 GPU 实例规格:- RTX 4090 24GB
- H100 SXM 80GB
3. 创建云存储(可选)
如果有共享存储和持久化存储的需求,可以在存储管理页面创建云存储,然后在创建实例时为容器挂载云存储。详情请参见管理云存储。4.创建 Endpoint
- 进入 Serverless GPUs 页面,选择规格,单击「创建 Endpoint」。
- 完成 Endpoint 的参数配置。
- Endpoint 名称:用于唯一标识 Endpoint,在创建job时是URL的一部分。系统会自动生成一个默认随机生产的名称,支持自定义,请优先用默认的名称。
- Worker 配置
配置项 说明 最小 Worker 数 Endpoint 最少需要保留的实例数。设置最小实例数可以帮助减少冷启动时间。如果设置为0,则服务没有请求时不会保留任何实例,这可能会导致无法快速响应后续的请求,因此对于响应时间要求较高的场景,请谨慎设置为0。 最大 Worker 数 Endpoint 最大可以扩展的实例数。当服务请求增加,触发自动扩容机制时,会增加 Worker 数,因此限制最大 Worker 数可以帮助控制成本。 空闲超时(秒) 当触发自动缩容机制而准备释放 Worker 时,在指定的时间内(即空闲超时),平台会为您保留该 Worker ,以便快速应对后续可能上涨的请求量。请注意,平台会收取这段时间对应的 Worker 费用。 最大并发数 每个 Worker 能处理的请求最大并发数,当并发数超过最大值时,会将请求调度到其他 Worker 上。如果所有 Worker 并发都被打满,则会将请求存放到队列中等待被执行。 GPUs / Worker 每个 Worker 占用的 GPU 卡数。 CUDA 版本 支持指定 CUDA 版本。 - Type
- Endpoint类型,请选择 异步(Async);
- 弹性策略
- 队列请求数策略:根据队列中的请求数调整 Worker 数量,默认每 worker 每次只能处理一个 job;此时您需要配置一个 worker 所支持的最大请求数,目前这个值只支持1。
- 镜像配置
- 镜像地址:要部署的镜像的地址。例如
runpod/worker-comfyui:5.5.0-flux1-dev。 - 镜像仓库凭证:如果指定的镜像为私有镜像,需要配置镜像仓库访问凭证才能拉取镜像。您可以在安全凭证管理页面创建凭证。
- HTTP 端口:Worker 对外开放的 HTTP 端口。
- 容器启动命令:容器启动时执行的命令。
- 镜像地址:要部署的镜像的地址。例如
- 存储配置
- 系统盘:每个 Worker 的系统盘容量大小。
- 云存储:如果要挂载云存储,请选择云存储。详情请参见管理云存储。
- 其他
- 健康检查路径:此参数暂未启用。
- 环境变量:设置服务所需的环境变量,以便在 Worker 启动时自动初始化。以腾讯云对象存储 COS 示例如下:
在使用Bashworker-comfyui这个镜像时,强烈推荐配置对象存储相关配置,将输出图片上传到对象存储的 Bucket 中;最终的图片上传效果取决于上传代码的实现;可以在handler.py中自行 使用 cos 提供的 SDK 来完成上传工作,并最终打出所需的worker-comfyui镜像,此时使用自己的镜像替换 runpod 所提供镜像即可;
- 确认费用信息,单击「一键部署」。
5.访问服务
- Serverless GPUs 页面,找到新创建的 Endpoint,确认状态已变为运行中。
- 确认 Endpoint 中至少有一个 Worker 处于运行中。
- 确认拥有对应的 API Key 用于调用鉴权,创建Endpoint的用户与 API Key 对应的用户应处于同一团队中;
5.1 通过Curl的方式来创建job 以及获取执行结果
创建Job 这里给出一个worker-comfyui worker 中实际可执行的例子,url 中的 0f43a6867e05fddd 需要替换为真实的 endpointName,此外需要将例子中的 API Key 替换为真实用户的 API Key;
请注意:Async Serverless Endpoint 所能接受最大的 job size 大小为 4MiB;
Bash
id 为 job_id:
JSON
status 接口能获取到的最大 output size 为 4MiB;所以请通过配置 S3 环境变量的方式在 handler.py 中将输出的图片或视频上传到 S3 对象存储,这种情况下 output 的大小不受限制;
请注意:Job执行结束后,执行结果在Async serverless Endpoint中最多保存 6 小时;
Bash
Bash
Bash
JSON
5.2 通过 Runpod SDK 来创建Job 及获取执行结果
Python