Gradio Agents & MCP 黑客松
获奖者Gradio Agents & MCP 黑客松
获奖者Hugging Face Spaces 现在提供了一个名为 ZeroGPU 的新硬件选项。ZeroGPU 是一个“无服务器”的 Spaces 集群,允许 Gradio 应用程序免费在 A100 GPU 上运行。这类 Spaces 是使用 Python Gradio 客户端构建新应用程序的绝佳基础,但您需要注意避免 ZeroGPU 的速率限制。
ZeroGPU Spaces 受速率限制,以确保单个用户不会占用所有可用 GPU。此限制由 Hugging Face Hub 基础设施添加到所有传入 Spaces 请求的特殊令牌控制。此令牌是一个名为 X-IP-Token
的请求头,其值取决于向 ZeroGPU space 发出请求的用户。
假设您想创建一个 Space(Space A),它以编程方式使用一个 ZeroGPU Space(Space B)。如果简单地通过 Python 客户端从 Space A 调用 Space B,将很快耗尽您的速率限制,因为所有对 ZeroGPU Space 的请求都将具有相同的令牌。因此,为了避免这种情况,我们需要在使用 Space A 的用户调用 Space B 之前,提取该用户的令牌。
具体操作方法将在以下部分解释。
当用户在文本框中按下回车键时,我们将从传入请求的 X-IP-Token
头部中提取其令牌。在构建 Gradio 客户端时,我们将使用此头部。以下假设的文本到图像应用程序展示了如何实现这一点。
import gradio as gr
from gradio_client import Client
def text_to_image(prompt, request: gr.Request):
x_ip_token = request.headers['x-ip-token']
client = Client("hysts/SDXL", headers={"x-ip-token": x_ip_token})
img = client.predict(prompt, api_name="/predict")
return img
with gr.Blocks() as demo:
image = gr.Image()
prompt = gr.Textbox(max_lines=1)
prompt.submit(text_to_image, [prompt], [image])
demo.launch()