Gradio 代理与 MCP 黑客马拉松

获奖者
Gradio logo
  1. 附加功能
  2. 批量函数

批量函数

Gradio 支持传递 批量 函数。批量函数就是接受输入列表并返回预测列表的函数。

例如,这是一个批量函数,它接受两个输入列表(一个单词列表和一个整数列表),并返回一个修剪后的单词列表作为输出

import time

def trim_words(words, lens):
    trimmed_words = []
    time.sleep(5)
    for w, l in zip(words, lens):
        trimmed_words.append(w[:int(l)])
    return [trimmed_words]

使用批量函数的优点是,如果你启用队列,Gradio 服务器可以自动将传入请求进行批量处理并并行处理它们,这可能会加快你的演示速度。以下是 Gradio 代码示例(请注意 batch=Truemax_batch_size=16

使用 gr.Interface

demo = gr.Interface(
    fn=trim_words, 
    inputs=["textbox", "number"], 
    outputs=["output"],
    batch=True, 
    max_batch_size=16
)

demo.launch()

使用 gr.Blocks

import gradio as gr

with gr.Blocks() as demo:
    with gr.Row():
        word = gr.Textbox(label="word")
        leng = gr.Number(label="leng")
        output = gr.Textbox(label="Output")
    with gr.Row():
        run = gr.Button()

    event = run.click(trim_words, [word, leng], output, batch=True, max_batch_size=16)

demo.launch()

在上面的示例中,16 个请求可以并行处理(总推理时间为 5 秒),而不是每个请求单独处理(总推理时间为 80 秒)。许多 Hugging Face transformersdiffusers 模型与 Gradio 的批量模式配合得非常好:这里有一个使用 diffusers 批量生成图像的示例演示