Gradio機(jī)器學(xué)習(xí)模型快速部署工具應(yīng)用分享
1.嵌入 IFrame
(/assets/img/anchor.svg)]()](https://gradio.app/sharing-your-app/#embedding-with-iframes)
要改為嵌入 IFrame(例如,如果您無(wú)法將 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頁(yè)面
漸變/你好世界 使用 Gradio構(gòu)建。 托管在 空間
如果您單擊并打開上面的空間,您將在應(yīng)用程序的頁(yè)腳中看到一個(gè)“通過(guò) API 使用”鏈接。
這是記錄用戶可用于查詢函數(shù)的 REST API 的頁(yè)面Interface
。Blocks
應(yīng)用程序也可以生成一個(gè) API 頁(yè)面,盡管 API 必須為每個(gè)事件偵聽器顯式命名,例如
btn.click(add, [num1, num2], output, api_name="addition")
這會(huì)將端點(diǎn)記錄/api/addition/
到自動(dòng)生成的 API 頁(yè)面。
注意:對(duì)于啟用隊(duì)列的Gradio 應(yīng)用程序,如果用戶向您的 API 端點(diǎn)發(fā)出 POST 請(qǐng)求,則可以繞過(guò)隊(duì)列。要禁用此行為,請(qǐng)api_open=False
在queue()
方法中設(shè)置。
3.驗(yàn)證
您可能希望在您的應(yīng)用程序前面放置一個(gè)身份驗(yàn)證頁(yè)面,以限制誰(shuí)可以打開您的應(yīng)用程序。通過(guò)方法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èn)網(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)用而不是通過(guò) 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)存失敗,建議將圖片保存下來(lái)直接上傳
(/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.安全和文件訪問(wèn)
與他人共享您的 Gradio 應(yīng)用程序(通過(guò)將其托管在 Spaces、您自己的服務(wù)器上或通過(guò)臨時(shí)共享鏈接)會(huì)將主機(jī)上的某些文件**公開給您的 Gradio 應(yīng)用程序的用戶。**這樣做是為了讓 Gradio 應(yīng)用程序能夠顯示由 Gradio 創(chuàng)建或由您的預(yù)測(cè)功能創(chuàng)建的輸出文件。
特別是,Gradio 應(yīng)用程序授予用戶訪問(wèn)三種文件的權(quán)限:
- Gradio 腳本啟動(dòng)所在的同一文件夾(或子目錄)中的文件。例如,如果您的 gradio 腳本的路徑是
/home/usr/scripts/project/app.py
并且您從 啟動(dòng)它/home/usr/scripts/project/
,那么您共享的 Gradio 應(yīng)用程序的用戶將能夠訪問(wèn)其中的任何文件/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
您通過(guò)中的參數(shù)明確允許的文件launch()
。在某些情況下,您可能希望引用文件系統(tǒng)中的其他文件。該file_directories
參數(shù)允許您傳入您希望提供訪問(wèn)權(quán)限的其他目錄列表。(默認(rèn)情況下,沒(méi)有其他文件目錄)。
用戶不應(yīng)該能夠訪問(wèn)主機(jī)上的其他任意路徑。
以上就是Gradio機(jī)器學(xué)習(xí)模型快速部署工具應(yīng)用分享的詳細(xì)內(nèi)容,更多關(guān)于Gradio 部署應(yīng)用分享的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python基于Dlib的人臉識(shí)別系統(tǒng)的實(shí)現(xiàn)
這篇文章主要介紹了Python基于Dlib的人臉識(shí)別系統(tǒng)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02Django form表單與請(qǐng)求的生命周期步驟詳解
這篇文章主要介紹了Django-form表單與請(qǐng)求的生命周期,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06Python面向?qū)ο蟪绦蛟O(shè)計(jì)之繼承、多態(tài)原理與用法詳解
這篇文章主要介紹了Python面向?qū)ο蟪绦蛟O(shè)計(jì)之繼承、多態(tài),結(jié)合實(shí)例形式分析了Python面向?qū)ο蟪绦蛟O(shè)計(jì)中繼承、多態(tài)的相關(guān)概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下2020-03-03python計(jì)算機(jī)視覺opencv圖像金字塔輪廓及模板匹配
這篇文章主要為大家介紹了python計(jì)算機(jī)視覺opencv圖像金字塔圖像輪廓及模板匹配的學(xué)習(xí)講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11pandas中的Timestamp只保留日期不顯示時(shí)間
這篇文章主要介紹了pandas中的Timestamp只保留日期不顯示時(shí)間,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07使用Python的Treq on Twisted來(lái)進(jìn)行HTTP壓力測(cè)試
這篇文章主要介紹了使用Python的Treq on Twisted來(lái)進(jìn)行HTTP壓力測(cè)試,基于Python中的Twisted框架,需要的朋友可以參考下2015-04-04python 基于Appium控制多設(shè)備并行執(zhí)行
這篇文章主要介紹了python 如何基于Appium控制多設(shè)備并行執(zhí)行,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-03-03python+opencv實(shí)現(xiàn)的簡(jiǎn)單人臉識(shí)別代碼示例
這篇文章主要介紹了圖像識(shí)別 python+opencv的簡(jiǎn)單人臉識(shí)別,具有一定參考價(jià)值,需要的朋友可以參考下。2017-11-11