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

相关