Gradio機(jī)器學(xué)習(xí)模型快速部署工具應(yīng)用分享
1.嵌入 IFrame
(/assets/img/anchor.svg)]()](https://gradio.app/sharing-your-app/#embedding-with-iframes)
要改為嵌入 IFrame(例如,如果您無法將 javascript 添加到您的網(wǎng)站),請(qǐng)?zhí)砑哟嗽兀?/p>
<iframe src="https://$your_space_host.hf.space"></iframe>
同樣,您可以找到src=空間嵌入 URL 的屬性,您可以在“嵌入此空間”按鈕中找到它。
您還需要height手動(dòng)添加一個(gè)固定的以及其他常規(guī)的 iframe 屬性。例如:
<iframe src="https://abidlabs-pytorch-image-classifier.hf.space" frameBorder="0" height="900"></iframe>
2.API頁面

漸變/你好世界 使用 Gradio構(gòu)建。 托管在 空間
如果您單擊并打開上面的空間,您將在應(yīng)用程序的頁腳中看到一個(gè)“通過 API 使用”鏈接。

這是記錄用戶可用于查詢函數(shù)的 REST API 的頁面Interface。Blocks應(yīng)用程序也可以生成一個(gè) API 頁面,盡管 API 必須為每個(gè)事件偵聽器顯式命名,例如
btn.click(add, [num1, num2], output, api_name="addition")
這會(huì)將端點(diǎn)記錄/api/addition/到自動(dòng)生成的 API 頁面。
注意:對(duì)于啟用隊(duì)列的Gradio 應(yīng)用程序,如果用戶向您的 API 端點(diǎn)發(fā)出 POST 請(qǐng)求,則可以繞過隊(duì)列。要禁用此行為,請(qǐng)api_open=False在queue()方法中設(shè)置。
3.驗(yàn)證
您可能希望在您的應(yīng)用程序前面放置一個(gè)身份驗(yàn)證頁面,以限制誰可以打開您的應(yīng)用程序。通過方法auth=中的關(guān)鍵字參數(shù)launch(),您可以提供一個(gè)包含用戶名和密碼的元組,或者一個(gè)可接受的用戶名/密碼元組列表;下面是一個(gè)為名為“admin”的單個(gè)用戶提供基于密碼的身份驗(yàn)證的示例:
demo.launch(auth=("admin", "pass1234"))
對(duì)于更復(fù)雜的身份驗(yàn)證處理,您甚至可以傳遞一個(gè)函數(shù),該函數(shù)將用戶名和密碼作為參數(shù),并返回 True 以允許身份驗(yàn)證,否則返回 False。這可用于向 3rd 方身份驗(yàn)證服務(wù)發(fā)出請(qǐng)求等。
下面是一個(gè)函數(shù)示例,它接受用戶名和密碼相同的任何登錄:
def same_auth(username, password):
return username == password
demo.launch(auth=same_auth)
為使身份驗(yàn)證正常工作,必須在您的瀏覽器中啟用第三方 cookie。默認(rèn)情況下,Safari、Chrome 隱身模式不是這種情況。
4.直接訪問網(wǎng)絡(luò)請(qǐng)求
當(dāng)用戶對(duì)您的應(yīng)用做出預(yù)測(cè)時(shí),您可能需要底層網(wǎng)絡(luò)請(qǐng)求,以便獲取請(qǐng)求標(biāo)頭(例如用于高級(jí)身份驗(yàn)證)、記錄客戶端的 IP 地址或其他原因。Gradio 以類似于 FastAPI 的方式支持這一點(diǎn):只需添加一個(gè)類型提示為的函數(shù)參數(shù)gr.Request,Gradio 就會(huì)將網(wǎng)絡(luò)請(qǐng)求作為該參數(shù)傳入。這是一個(gè)例子:
import gradio as gr
def echo(name, request: gr.Request):
if request:
print("Request headers dictionary:", request.headers)
print("IP address:", request.client.host)
return name
io = gr.Interface(echo, "textbox", "textbox").launch()
注意:如果您的函數(shù)是直接調(diào)用而不是通過 UI 調(diào)用(例如,當(dāng)示例被緩存時(shí)會(huì)發(fā)生這種情況),那么request將是None. 您應(yīng)該明確處理這種情況,以確保您的應(yīng)用不會(huì)拋出任何錯(cuò)誤。這就是為什么我們有明確的檢查if request。
5.在另一個(gè) FastAPI 應(yīng)用程序中安裝[![圖片轉(zhuǎn)存失敗,建議將圖片保存下來直接上傳
(/assets/img/anchor.svg)]()](https://gradio.app/sharing-your-app/#mounting-within-another-fastapi-app)
在某些情況下,您可能有一個(gè)現(xiàn)有的 FastAPI 應(yīng)用程序,并且您想要為 Gradio 演示添加一個(gè)路徑。您可以使用 輕松地做到這一點(diǎn)gradio.mount_gradio_app()。
這是一個(gè)完整的例子:
from fastapi import FastAPI
import gradio as gr
CUSTOM_PATH = "/gradio"
app = FastAPI()
@app.get("/")
def read_main():
return {"message": "This is your main app"}
io = gr.Interface(lambda x: "Hello, " + x + "!", "textbox", "textbox")
app = gr.mount_gradio_app(app, io, path=CUSTOM_PATH)
# Run this from the terminal as you would normally start a FastAPI app: `uvicorn run:app`
# and navigate to http://localhost:8000/gradio in your browser.
請(qǐng)注意,此方法還允許您在自定義路徑上運(yùn)行 Gradio 應(yīng)用程序(http://localhost:8000/gradio在上面的示例中)。
6.安全和文件訪問
與他人共享您的 Gradio 應(yīng)用程序(通過將其托管在 Spaces、您自己的服務(wù)器上或通過臨時(shí)共享鏈接)會(huì)將主機(jī)上的某些文件**公開給您的 Gradio 應(yīng)用程序的用戶。**這樣做是為了讓 Gradio 應(yīng)用程序能夠顯示由 Gradio 創(chuàng)建或由您的預(yù)測(cè)功能創(chuàng)建的輸出文件。
特別是,Gradio 應(yīng)用程序授予用戶訪問三種文件的權(quán)限:
- Gradio 腳本啟動(dòng)所在的同一文件夾(或子目錄)中的文件。例如,如果您的 gradio 腳本的路徑是
/home/usr/scripts/project/app.py并且您從 啟動(dòng)它/home/usr/scripts/project/,那么您共享的 Gradio 應(yīng)用程序的用戶將能夠訪問其中的任何文件/home/usr/scripts/project/。這是必需的,以便您可以輕松地在 Gradio 應(yīng)用程序中引用這些文件。 - Gradio 創(chuàng)建的臨時(shí)文件。這些文件是由 Gradio 創(chuàng)建的,作為運(yùn)行預(yù)測(cè)功能的一部分。例如,如果你的預(yù)測(cè)函數(shù)返回一個(gè)視頻文件,那么 Gradio 會(huì)將該視頻保存到一個(gè)臨時(shí)文件中,然后將臨時(shí)文件的路徑發(fā)送到前端。
file_directories您通過中的參數(shù)明確允許的文件launch()。在某些情況下,您可能希望引用文件系統(tǒng)中的其他文件。該file_directories參數(shù)允許您傳入您希望提供訪問權(quán)限的其他目錄列表。(默認(rèn)情況下,沒有其他文件目錄)。
用戶不應(yīng)該能夠訪問主機(jī)上的其他任意路徑。
以上就是Gradio機(jī)器學(xué)習(xí)模型快速部署工具應(yīng)用分享的詳細(xì)內(nèi)容,更多關(guān)于Gradio 部署應(yīng)用分享的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python Jupyter Notebook顯示行數(shù)問題的解決
這篇文章主要介紹了Python Jupyter Notebook顯示行數(shù)問題的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
Python讀取多列數(shù)據(jù)以及用matplotlib制作圖表方法實(shí)例
這篇文章主要給大家介紹了關(guān)于Python讀取多列數(shù)據(jù)以及用matplotlib制作圖表的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Python使用Supervisor來管理進(jìn)程的方法
這篇文章主要介紹了Python使用Supervisor來管理進(jìn)程的方法,涉及Supervisor的相關(guān)使用技巧,需要的朋友可以參考下2015-05-05
Python FastAPI返回不帶雙引號(hào)的字符串問題
這篇文章主要介紹了Python FastAPI返回不帶雙引號(hào)的字符串問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
Python字符串常用方法以及其應(yīng)用場(chǎng)景詳解
本人學(xué)習(xí)python時(shí)的總結(jié),并不需要記住,知道有這個(gè)方法,拿起來用就行,下面這篇文章主要給大家介紹了關(guān)于Python字符串常用方法以及其應(yīng)用場(chǎng)景的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08

