LLM 課程文件
與他人共享演示
並獲得增強的文件體驗
開始使用
與他人共享演示
既然你已經構建了一個演示,你可能會想與他人分享它。Gradio 演示可以透過兩種方式共享:使用**臨時共享連結**或**在 Spaces 上永久託管**。
我們將很快介紹這兩種方法。但在分享你的演示之前,你可能需要將其完善一下💅。
完善你的 Gradio 演示:


要向演示新增額外內容,`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 上更新