Gradio gr.Workflow: 可视化 AI 流水线编排
Hugging Face 推出了 gr.Workflow,这是集成在 Gradio 中的一项新功能,它将 AI 流水线从隐藏的 Python 脚本转变为可视化的、交互式的界面。通过将流水线表示为由类型化节点组成的图,gr.Workflow 允许开发者实时查看中间结果,并将整个图部署为用户界面和一组 REST API 端点。
使用 gr.Workflow 进行可视化流水线编排
gr.Workflow 将 AI 流水线本身视为界面。开发者不再依赖 print-debugging 来跟踪通过多个 Python 步骤的数据流,而是可以将流水线描述为一个图,其中每个节点都是可运行的,并且每个中间结果都可以在拖放式画布上可见。
核心架构
一个工作流由三种主要的节点类型组成:
- References: 这些作为工作流的输入。
- Operators: 这些是执行工作的函数步骤。一个 Operator 可以是自定义的 Python 函数、通过 Hugging Face Inference Providers 托管的模型、另一个 Gradio Space,或者来自 Hub 数据集的一行。
- Subjects: 这些作为工作流的输出。
这些节点通过类型化端口连接,确保数据在流经图的过程中保持一致性。
关键能力与模式
gr.Workflow 支持多种复杂的 AI 编排模式,包括并行执行和混合基础设施部署。
并行执行 (Fan-out)
“Fan-out”模式允许单个输入同时馈送给多个 Operator 节点。例如,一个提示词可以触发多个并行进程:通过 FLUX 生成基础图像、为该图像创建两种不同的风格化重构,以及使用 LLM 生成画廊标题,所有这些都在并行发生。
混合基础设施
工作流可以在单个图中混合搭配不同的计算源:
- Inference Providers: 节点可以通过 Hugging Face Inference Providers 调用外部模型。
- External Spaces: 节点可以调用其他现有的 Gradio Spaces。
- Local GPU Execution: 通过使用
@spaces.GPU装饰一个绑定函数,开发者可以直接在 Space 中使用 ZeroGPU 运行模型,ZeroGPU 会为该特定调用动态分配并释放 GPU 资源。
自动 API 生成
每个 gr.Workflow 都会自动转换为一个 API。图中的每个输出 (Subject) 都会被分配一个以其标签命名的 REST 端点,从而允许通过代码触发流水线而无需使用 UI。
程序化访问
开发者可以使用 gradio_client Python 库或通过 curl 发送纯 HTTP 请求来与这些端点进行交互。例如,一个具有 /word_count 端点的 workflow 如下所示:
from gradio_client import Client
client = Client("ysharma/gr-workflow-multi-endpoint-API")
print(client.predict("hello there friend", api_name="/word_count"))
实现与部署
部署工作流被设计为通过一个命令即可部署到 Hugging Face Spaces 的过程。在 Python 中最简单的实现仅需几行代码:
import gradio as gr
def your_function(text: str) -> str:
pass
gr.Workflow(bind=[your_function]).launch()
Sources
相关
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch