LLM 课程文档

与他人共享演示

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

与他人共享演示

Ask a Question Open In Colab Open In Studio Lab

既然你已经构建了一个演示,你可能会想与他人分享它。Gradio 演示可以通过两种方式共享:使用**临时共享链接**或**在 Spaces 上永久托管**。

我们将很快介绍这两种方法。但在分享你的演示之前,你可能需要将其完善一下💅。

完善你的 Gradio 演示:

Overview of a gradio interface

要向演示添加额外内容,`Interface` 类支持一些可选参数

  • `title`:你可以为演示设置标题,它会出现在输入和输出组件的**上方**。
  • `description`:你可以为界面提供描述(文本、Markdown 或 HTML 格式),它会出现在输入和输出组件的上方和标题下方。
  • `article`:你还可以撰写一篇扩展文章(文本、Markdown 或 HTML 格式)来解释界面。如果提供,它会出现在输入和输出组件的**下方**。
  • `theme`:不喜欢默认颜色?将主题设置为 `default`、`huggingface`、`grass`、`peach` 中的一个。你还可以添加 `dark-` 前缀,例如 `dark-peach` 用于深色主题(或仅仅 `dark` 用于默认深色主题)。
  • `examples`:为了让你的演示**更容易使用**,你可以为函数提供一些示例输入。这些示例会出现在 UI 组件下方,可用于填充界面。这些示例应以嵌套列表的形式提供,其中外部列表包含样本,每个内部列表包含与每个输入组件对应的输入。
  • `live`:如果你想让你的演示“实时”,这意味着每当输入发生变化时你的模型都会重新运行,你可以设置 `live=True`。这适用于快速模型(我们将在本节末尾看到一个示例)。使用上述选项,我们得到了一个更完整的界面。运行下面的代码,你就可以与 Rick 和 Morty 聊天了。
title = "Ask Rick a Question"
description = """
The bot was trained to answer questions based on Rick and Morty dialogues. Ask Rick anything!
<img src="https://huggingface.co/spaces/course-demos/Rick_and_Morty_QA/resolve/main/rick.png" width=200px>
"""

article = "Check out [the original Rick and Morty Bot](https://huggingface.co/spaces/kingabzpro/Rick_and_Morty_Bot) that this demo is based off of."

gr.Interface(
    fn=predict,
    inputs="textbox",
    outputs="text",
    title=title,
    description=description,
    article=article,
    examples=[["What are you doing?"], ["Where should we time travel to?"]],
).launch()

使用以上选项,我们得到了一个更完整的界面。尝试下面的界面

通过临时链接分享你的演示

既然我们有了一个可用的机器学习模型演示,让我们学习如何轻松地分享我们界面的链接。通过在 `launch()` 方法中设置 `share=True`,可以轻松公开分享界面

gr.Interface(classify_image, "image", "label").launch(share=True)

这会生成一个公共的、可共享的链接,你可以发送给任何人!当你发送这个链接时,另一边的用户可以在他们的浏览器中试用这个模型,最长可达 72 小时。由于处理发生在你的设备上(只要你的设备保持开机!),你无需担心打包任何依赖项。如果你正在使用 Google Colab 笔记本,分享链接总是会自动创建。它通常看起来像这样:**XXXXX.gradio.app**。虽然链接是通过 Gradio 链接提供服务的,但我们只是你本地服务器的代理,不存储通过界面发送的任何数据。

然而,请记住,这些链接是公开可访问的,这意味着任何人都可以使用你的模型进行预测!因此,请确保不要通过你编写的函数暴露任何敏感信息,或允许在你的设备上发生任何关键更改。如果你设置 `share=False`(默认值),则只会创建一个本地链接。

在 Hugging Face Spaces 上托管你的演示

你可以将共享链接分享给同事,这很酷,但如何才能永久托管你的演示并让它在互联网上拥有自己的“空间”呢?

Hugging Face Spaces 提供了基础设施,可以**免费**在互联网上永久托管你的 Gradio 模型!Spaces 允许你创建并推送到一个(公共或私人)仓库,你的 Gradio 界面代码将存在于一个 `app.py` 文件中。阅读分步教程开始,或观看下面的示例视频。

✏️ 让我们应用它!

利用我们到目前为止所学到的知识,让我们创建本章第一节中看到的素描识别演示。让我们为界面添加一些自定义,并设置 `share=True` 以创建一个可以共享的公共链接。

我们可以从class_names.txt加载标签,并从pytorch_model.bin加载预训练的 pytorch 模型。通过链接下载这些文件,然后单击文件预览左上角的下载按钮。让我们看一下下面的代码,了解如何使用这些文件加载模型并创建 `predict()` 函数。

from pathlib import Path
import torch
import gradio as gr
from torch import nn

LABELS = Path("class_names.txt").read_text().splitlines()

model = nn.Sequential(
    nn.Conv2d(1, 32, 3, padding="same"),
    nn.ReLU(),
    nn.MaxPool2d(2),
    nn.Conv2d(32, 64, 3, padding="same"),
    nn.ReLU(),
    nn.MaxPool2d(2),
    nn.Conv2d(64, 128, 3, padding="same"),
    nn.ReLU(),
    nn.MaxPool2d(2),
    nn.Flatten(),
    nn.Linear(1152, 256),
    nn.ReLU(),
    nn.Linear(256, len(LABELS)),
)
state_dict = torch.load("pytorch_model.bin", map_location="cpu")
model.load_state_dict(state_dict, strict=False)
model.eval()


def predict(im):
    x = torch.tensor(im, dtype=torch.float32).unsqueeze(0).unsqueeze(0) / 255.0
    with torch.no_grad():
        out = model(x)
    probabilities = torch.nn.functional.softmax(out[0], dim=0)
    values, indices = torch.topk(probabilities, 5)
    return {LABELS[i]: v.item() for i, v in zip(indices, values)}

现在我们有了一个 `predict()` 函数。下一步是定义并启动我们的 gradio 界面

interface = gr.Interface(
    predict,
    inputs="sketchpad",
    outputs="label",
    theme="huggingface",
    title="Sketch Recognition",
    description="Who wants to play Pictionary? Draw a common object like a shovel or a laptop, and the algorithm will guess in real time!",
    article="<p style='text-align: center'>Sketch Recognition | Demo Model</p>",
    live=True,
)
interface.launch(share=True)

请注意 `Interface` 中的 `live=True` 参数,这意味着素描演示会实时预测每次在素描板上绘制的内容(无需提交按钮!)。

此外,我们还在 `launch()` 方法中设置了 `share=True` 参数。这将创建一个公共链接,你可以发送给任何人!当你发送此链接时,另一边的用户可以尝试素描识别模型。重申一下,你也可以将模型托管在 Hugging Face Spaces 上,这就是我们能够嵌入上述演示的方式。

接下来,我们将介绍 Gradio 如何与 Hugging Face 生态系统结合使用的其他方法!

< > 在 GitHub 上更新