Gradio gr.Workflow: Visual AI Pipeline Orchestration
Hugging Face 推出了 gr.Workflow,這是 Gradio 的一項新功能,可將 AI 流水線從隱藏的 Python 腳本轉變為視覺化、互動式的介面。透過將流水線表示為由具備型別的節點組成的圖形,gr.Workflow 讓開發者能夠即時查看中間結果,並將整個圖形部署為使用者介面以及一組 REST API 端點。
Visual Pipeline Orchestration with gr.Workflow
gr.Workflow 將 AI 流水線視為介面本身。開發者不再需要依賴 print-debugging 來追蹤多個 Python 步驟中的數據流,而是可以將其流水線描述為一個圖形,其中每個節點都是可執行的,且每個中間結果都可以在拖放式畫布上清晰可見。
Core Architecture
一個工作流由三種主要的節點型別組成:
- References: 這些作為工作流的輸入。
- Operators: 這些是執行工作的功能性步驟。Operator 可以是自定義的 Python 函數、透過 Hugging Face Inference Providers 託管的模型、另一個 Gradio Space,或是 Hub dataset 中的一列數據。
- Subjects: 這些作為工作流的輸出。
這些節點透過具備型別的連接埠(ports)進行連接,確保數據在流經圖形時的一致性。
Key Capabilities and Patterns
gr.Workflow 支援多種複雜的 AI 編排模式,包括並行執行與混合基礎設施部署。
Parallel Execution (Fan-out)
「Fan-out」模式允許單一輸入同時饋送給多個 operator 節點。例如,單一提示詞可以觸發多個並行程序:透過 FLUX 生成基礎圖像,接著對該圖像進行兩種不同風格的重新構思,並使用 LLM 生成畫廊標題,所有這些過程都在並行中進行。
Hybrid Infrastructure
工作流可以在單一圖形中混合搭配不同的運算資源:
- Inference Providers: 節點可以透過 Hugging Face Inference Providers 呼叫外部模型。
- External Spaces: 節點可以呼叫其他現有的 Gradio Spaces。
- Local GPU Execution: 透過使用
@spaces.GPU裝飾一個綁定的函數,開發者可以直接在 Space 中使用 ZeroGPU 執行模型,ZeroGPU 會為該特定呼叫動態分配並釋放 GPU 資源。
Automatic API Generation
每個 gr.Workflow 都會自動轉換為 API。圖形中的每個輸出(subject)都會被分配一個以其標籤命名的 REST 端點,讓流水線可以透過程式碼觸發,而無需使用 UI。
Programmatic Access
開發者可以使用 gradio_client Python 函式庫或透過 curl 發送純 HTTP 請求來與這些端點進行互動。例如,一個具有 /word_count 端點的工作流可以如下所示進行呼叫:
from gradio_client import Client
client = Client("ysharma/gr-workflow-multi-endpoint-API")
print(client.predict("hello there friend", api_name="/word_count"))
Implementation and Deployment
部署工作流被設計為一個指令即可完成部署至 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