Workflow1111 使用 Gradio Workflow 重建 AUTOMATIC1111 功能
TL;DR
Workflow1111 是一个 Gradio Workflow,使用 73 个节点和十一个媒体管道重现了 AUTOMATIC1111 的 stable-diffusion-webui 的核心功能集,使任何人都能通过浏览器运行文本到图像、图像修复、放大、视频生成等操作,而无需拥有 GPU。
Workflow1111 是什么
Workflow1111 是一个单一的 gr.Workflow 画布,将 十一个不同的媒体管道 拼接在一起。该图包含 七十三个节点,分为四种操作符类型(fn、model、space、dataset)。每个节点封装了一个函数、通过 InferenceClient 访问的 Hugging Face 模型、另一个 Gradio Space 或数据集的一行。结果是一个模块化、基于浏览器的 UI,与 AUTOMATIC1111 的 stable-diffusion-webui 的标签页和扩展功能相匹配。
"你可以通过使用你的 Hugging Face 账户登录或提供访问令牌来运行这些管道中的任意一个。登录后,模型调用将使用你自己的配额。" – Hugging Face 博客
核心管道及其实现
文本到图像
- 复现了 txt2img 标签页,包含负向提示、步骤、CFG、种子、宽度、高度和检查点选择的控制。
- 提示通过一个
fn节点传递,该节点添加风格预设并清理文本,然后一个model节点通过推理提供程序调用所选的扩散检查点。 - 一个后处理
fn节点将生成参数写入 PNG 元数据,以便后续检索。
高分辨率修复
- 实现了 AUTOMATIC1111 的放大后精炼工作流,采用两个节点的分支路径。
- 文本到图像管道的输出馈入一个 FLUX.1-Kontext
model节点,并附带精炼指令("增强细节和微纹理,保持构图完全一致")。
图像到图像
- 重用相同的 Kontext 节点:上传图像,描述期望的编辑,即可获得编辑后的结果。
LLM 生成的提示
- 将一个粗略提示发送到一个 Qwen3-4B
model节点。 - 一个下游
fn节点将 LLM 响应格式化为最多四十个标签的列表,可输入到任何扩散模型节点中。
图像到提示(Interrogate)
- 使用 Qwen2.5-VL-7B-Instruct 生成输入图像的文本描述。
- 同时,一个 ViT-base-patch16-224 分类器返回标签概率。
- 并行执行意味着两个结果的可用时间大致相当于一次模型调用的时间。
检测到图像修复掩码
- 一个 DETR-ResNet-50 检测器识别对象(例如人、狗、自行车、汽车)并生成边界框。
- 一个分支在图像上绘制边界框;另一个分支将边界框转换为二值掩码,用于后续图像修复。
- 检测在远程运行;绘制和掩码创建在本地使用 Pillow/NumPy 完成。
提示矩阵
- 一个
fn节点通过四个后缀扩展基础提示,创建四个并行的文本到图像节点。 - 一个最终节点将四个结果拼接成一张联系表。
- 不需要循环操作符;并行节点同时运行。
放大与背景移除
- 两种放大路径:本地 Lanczos 重采样(
fn节点)和外部 AuraSR ×4 Space(space节点)。 - 背景移除调用 BRIA RMBG-2.0 Space,将模型与主画布隔离。
标注器(ControlNet 风格的预处理器)
- Canny、线稿、草图、亮度深度和海报化均作为纯 NumPy
fn节点实现。 - 36 个操作符节点中有 32 个是
fn节点,其中 22 个完全在进程中运行,无需网络调用,使画布的大部分功能可在离线状态下保持可用。
PNG 元数据
- 复现了 AUTOMATIC1111 的 PNG 元数据存储:一个后处理节点将参数写入 PNG 的
parameters块;一个专用管道读取回这些参数(提示、负向提示、步骤、CFG、种子、尺寸、模型)。
图像到视频
- PNG 元数据节点还馈入一个 Wan 2.2 I2V A14B
model节点,用于动画化图像(例如,一只睡觉的狐狸醒来)。 - 单次上传可驱动多个下游管道。
在你自己的 GPU 上运行
- 默认情况下,所有
model和space调用都通过推理提供程序或外部 Space 使用远程硬件,因此无需本地 GPU 即可运行该工作流。 - 任何
fn节点都可以替换为本地加载的模型。博客提到了 FastVideo/fastvideo-fasth3-preview,它在 ZeroGPU 分配上运行一个精简的 MiniMax-H3 模型。 - 示例绑定语法:
@spaces.GPU(duration=get_duration, size=GPU_SIZE) def _generate(prompt_embeds, text_token_tags, height, width, num_frames, seed): ... gr.Workflow(bind={"generate": _generate, "status": status}).launch() - ZeroGPU 会自动为函数调用分配 GPU 并在之后释放;
gr.Workflow对分配情况完全不知情。
每个输出都是自动 REST API
- 每个输出节点都会变成一个类型化端点(例如
/image、/edited_image、/generated_prompt)。 - 示例客户端调用:
from gradio_client import Client client = Client("ysharma/Workflow1111", oauth_token="hf_...") image, params, hires = client.predict( "a red fox in a snowy pine forest", "", "Cinematic", "enhance fine detail", api_name="/image" ) - 端点也与模型上下文协议(MCP)兼容,使 AI 助手(Claude Code、Cursor 等)能够直接调用它们。
与 ComfyUI 的比较
| 特性 | Workflow1111(Gradio) | ComfyUI |
|---|---|---|
| 硬件抽象 | 节点可指向远程推理提供程序、Spaces 或数据集;无需本地 GPU。 | 主要本地 GPU 执行;外部调用需要自定义脚本。 |
| 自动 API 生成 | 每个输出节点自动成为 REST 端点,无需手动路由。 | 无内置 API 生成;开发者必须自行暴露端点。 |
| 基于 OAuth 的多用户访问 | 用户通过 Hugging Face 账户登录;使用情况计入其配额。 | 通常是单用户桌面应用程序。 |
| 混合模态图 | 扩散、LLM、VLM、检测、视频模型共存于一个画布。 | 支持多种模型类型,但集成通常需要自定义节点。 |
| 自定义逻辑 | 简单的 Python fn 节点允许在画布上运行任意代码。 |
自定义节点需要编写 C++/Python 扩展。 |
博客总结认为,Gradio Workflow 提供了以浏览器为中心、无需安装的体验,其功能广度可与 ComfyUI 相媲美,同时还具备远程执行和自动 API 的能力。
开始构建你自己的工作流
- 创建一个最小工作流:
import gradio as gr def your_function(text: str) -> str: return text.upper() gr.Workflow(bind=[your_function]).launch() - 使用
bind=参数绑定额外的函数、模型或 Spaces。 - 使用
edges=参数连接节点,或在画布上交互式连接。 - 使用
gradio deploy部署,将项目发布到 Hugging Face Spaces。 - 从公共 Space 复制 Workflow1111,删除或替换节点,并尝试新的管道。
有关完整架构详情,请参阅官方 Gradio Workflow 指南。
为何它很重要
- 证明了复杂的多模型 UI 堆栈可以在没有本地 GPU 的情况下构建,降低了创作者和研究人员的门槛。
- 提供统一的、自动生成的 API 表面,使将生成式管道集成到更大系统或 AI 助手中变得轻而易举。
- 将 Gradio Workflow 定位为 ComfyUI 等仅限桌面的节点编辑器的直接、云优先竞争对手,扩展了快速原型设计和部署的生态系统。
欢迎复制该 Space,重新混搭管道,并在 X 上分享你的创作,@gradio 标签。