
譯者 | 劉濤
審校 | 重樓
人工智能領(lǐng)域呈現(xiàn)出高速發(fā)展的態(tài)勢。每周均有新的模型誕生,舊有模型也在持續(xù)優(yōu)化,基于這些模型開發(fā)的應(yīng)用工具愈發(fā)便捷易用。
然而,在構(gòu)建機(jī)器學(xué)習(xí)項(xiàng)目的過程中,開發(fā)者可能會(huì)遭遇一個(gè)關(guān)鍵挑戰(zhàn):如何高效地分享項(xiàng)目成果,以供他人進(jìn)行試用。
單純提供一本滿是代碼的筆記本顯然是不夠的。用戶期望能夠與模型進(jìn)行交互,通過輸入特定內(nèi)容、點(diǎn)擊操作按鈕,進(jìn)而即時(shí)獲取處理結(jié)果。
在此情況下,Gradio這款工具發(fā)揮了重要作用。借助幾行Python代碼,開發(fā)者即可將自身的AI模型轉(zhuǎn)化為一個(gè)簡易的網(wǎng)頁應(yīng)用程序。開發(fā)者無需掌握HTML、CSS或JavaScript等前端技術(shù)知識(shí),Gradio會(huì)自動(dòng)處理界面設(shè)計(jì)與實(shí)現(xiàn),使開發(fā)者能夠?qū)⒕杏谀P偷难邪l(fā)與優(yōu)化。
在本教程中,將詳細(xì)介紹如何在短時(shí)間內(nèi)運(yùn)用Gradio構(gòu)建AI演示。完成本教程的學(xué)習(xí)后,開發(fā)者將能夠搭建一個(gè)可供任意用戶進(jìn)行測試的實(shí)時(shí)演示系統(tǒng)。
目錄
- Gradio的概念
- Gradio的應(yīng)用價(jià)值
- 搭建首個(gè)Gradio
- 將機(jī)器學(xué)習(xí)模型集成至Gradio
- Gradio界面的自定義策略
- Gradio應(yīng)用程序的分享途徑
- 總結(jié)
Gradio的概念
Gradio是一個(gè)開源的Python庫,可用于便捷地為機(jī)器學(xué)習(xí)模型創(chuàng)建交互式網(wǎng)絡(luò)界面。
假設(shè)要訓(xùn)練一個(gè)文本摘要生成器或圖像分類器,若不使用Gradio,就需要構(gòu)建前端、編寫后端代碼、尋找托管平臺(tái),并將各部分進(jìn)行連接,這一過程既耗費(fèi)時(shí)間又消耗精力。
而使用了Gradio后,僅需編寫幾行Python代碼,它便能生成一個(gè)附帶完整用戶界面(UI)的可分享鏈接。該界面可在任何具備瀏覽器的設(shè)備上使用,還能嵌入網(wǎng)站,也可分享給團(tuán)隊(duì)成員以收集反饋。
Gradio支持文本、圖像、音頻、視頻及多種其他數(shù)據(jù)類型,適用于計(jì)算機(jī)視覺、自然語言處理、語音識(shí)別等各類人工智能應(yīng)用。
Gradio的應(yīng)用價(jià)值
速度是選用Gradio的關(guān)鍵因素之一。若從零開始為模型構(gòu)建網(wǎng)絡(luò)應(yīng)用程序,可能需耗費(fèi)數(shù)小時(shí)甚至數(shù)天時(shí)間。而Gradio可將此過程縮短至幾分鐘,讓開發(fā)者能夠?qū)W⒂谌斯ぶ悄苣P偷膬?yōu)化,由Gradio負(fù)責(zé)處理用戶界面的搭建。
Gradio具有較低的學(xué)習(xí)門檻。即便僅具備基礎(chǔ)Python知識(shí)的初學(xué)者,也能夠利用其創(chuàng)建出可運(yùn)行的演示程序。它與TensorFlow、PyTorch以及Hugging Face Transformers等主流庫具有良好的兼容性。
分享便捷是Gradio的另一顯著優(yōu)勢。啟動(dòng)Gradio應(yīng)用程序時(shí),系統(tǒng)會(huì)生成一個(gè)公共鏈接,任何用戶均可通過該鏈接訪問應(yīng)用程序,無需手動(dòng)部署或搭建服務(wù)器。這一特性使Gradio在黑客馬拉松活動(dòng)、快速原型制作,以及向客戶和朋友展示演示程序等場景中具有較高的適用性。
如何安裝Gradio
在搭建首個(gè)應(yīng)用程序前,需完成 Gradio 的安裝。具體操作是,打開終端或命令提示符,輸入如下指令:
pip install gradio安裝便捷簡單,通常在一分鐘內(nèi)即可完成。安裝完成后,便可以著手搭建首個(gè)演示程序。
搭建首個(gè)Gradio
下面從一個(gè)簡單示例開始。假定要搭建一個(gè)文本反轉(zhuǎn)應(yīng)用程序,該程序可接收用戶輸入的句子,并展示其反轉(zhuǎn)后的內(nèi)容。盡管這并非嚴(yán)格意義上的人工智能模型,但有助于掌握相關(guān)基礎(chǔ)知識(shí)。
具體代碼如下:
# Import the Gradio library
import gradio as gr
# Define a function that reverses any input text
def reverse_text(text):
# The [::-1] slice notation reverses the string
return text[::-1]
# Create a Gradio interface to connect the function with a simple web UI
demo = gr.Interface(
fn=reverse_text, # Function to call when the user submits input
inputs="text", # Type of input (a text box for user input)
outputs="text", # Type of output (a text box to display reversed text)
title="Text Reversal App", # Title displayed on the app
description="Type any text and see it reversed instantly." # Short description for users
)
# Launch the web app in the browser
demo.launch()gr.Interface()用于將Python函數(shù)與基于網(wǎng)頁的用戶界面進(jìn)行連接。其中,fn=reverse_text指示 Gradio,在用戶輸入內(nèi)容時(shí)調(diào)用該函數(shù)進(jìn)行處理。
inputs="text" 明確輸入框的類型為文本框,outputs="text"則規(guī)定輸出以文本形式呈現(xiàn)。
title和 description可通過添加標(biāo)題和說明,優(yōu)化應(yīng)用程序的展示效果。
將上述代碼保存為Python文件并運(yùn)行,系統(tǒng)會(huì)自動(dòng)彈出一個(gè)瀏覽器窗口,窗口中包含一個(gè)文本框。在文本框中輸入內(nèi)容并點(diǎn)擊提交后,即可看到反轉(zhuǎn)后的文本顯示出來。

將機(jī)器學(xué)習(xí)模型集成至Gradio
接下來,構(gòu)建一個(gè)更具實(shí)際意義的應(yīng)用程序。假設(shè)擁有一個(gè)情感分析模型,該模型能夠接收文本輸入,并對(duì)文本情感進(jìn)行預(yù)測,判斷其為積極、消極或中性。你可以便捷地將此模型與Gradio進(jìn)行集成。
以下是一個(gè)運(yùn)用Hugging Face Transformers的示例:
# Import the Gradio library
import gradio as gr
# Import the 'pipeline' function from Hugging Face's Transformers library
# 'pipeline' lets you load pre-trained AI models with a single line of code
from transformers import pipeline
# Load a pre-trained sentiment analysis model from Hugging Face
# This model can classify text as POSITIVE, NEGATIVE, or NEUTRAL along with a confidence score
sentiment_model = pipeline("sentiment-analysis")
# Define a function that uses the model to analyze text sentiment
def analyze_sentiment(text):
# Pass the user-provided text to the model
# The model returns a list of predictions; we take the first one using [0]
result = sentiment_model(text)[0]
# Return the label (e.g., POSITIVE) and the confidence score formatted to 2 decimal places
return f"Label: {result['label']}, Score: {result['score']:.2f}"
# Create a Gradio interface to turn the function into a web app
demo = gr.Interface(
fn=analyze_sentiment, # The function to call when user inputs text
inputs="text", # The input type (a single-line text box)
outputs="text", # The output type (display as text)
title="Sentiment Analysis App", # Title shown at the top of the web app
descriptinotallow="Type a sentence to check its sentiment." # Short explanation for the app
)
# Launch the web app so users can interact with it in a browser
demo.launch()運(yùn)行此代碼,在輸入框中輸入 “我喜歡這個(gè)產(chǎn)品!”,模型將輸出“Label:POSITIVE”以及相應(yīng)的置信度得分。

Gradio界面的自定義策略
Gradio支持對(duì)標(biāo)題、描述、主題,甚至示例進(jìn)行自定義設(shè)置。例如,可以按照如下方式添加示例輸入:
demo = gr.Interface(fn=analyze_sentiment,
inputs="text",
outputs="text",
title="Sentiment Analysis App",
descriptinotallow="Type a sentence to check its sentiment.",
examples=[["I love AI"], ["I hate waiting"]])目前,應(yīng)用程序會(huì)展示例句,用戶點(diǎn)擊這些例句即可立即開展測試。

Gradio 應(yīng)用程序的分享途徑
運(yùn)行demo.launch()時(shí),Gradio會(huì)啟動(dòng)本地服務(wù)器并生成一個(gè)本地鏈接。若需獲取可分享鏈接,可使用demo.launch(share = True),執(zhí)行該操作后,系統(tǒng)將生成一個(gè)公共鏈接,可用于與他人分享應(yīng)用程序。

默認(rèn)情況下,公共鏈接的有效期為72小時(shí)。若需要永久鏈接,可選擇免費(fèi)部署至 Hugging Face Spaces,也可使用AWS等平臺(tái)完成部署。
總結(jié)
Gradio革新了開發(fā)者分享機(jī)器學(xué)習(xí)模型的方式。以往需耗時(shí)數(shù)小時(shí)編碼才能達(dá)成的任務(wù),如今借助Gradio僅需幾分鐘便可完成。開發(fā)者只需編寫模型代碼,并將其與Gradio進(jìn)行連接,即可迅速獲得一個(gè)可運(yùn)行的演示程序以及與之對(duì)應(yīng)的可分享鏈接。
對(duì)于學(xué)習(xí)人工智能的學(xué)生、分享研究成果的科研人員,或是進(jìn)行原型構(gòu)建的開發(fā)者而言,Gradio均能有效節(jié)省時(shí)間與精力。它簡化了網(wǎng)頁開發(fā)流程,使開發(fā)者能夠?qū)⒕杏诤诵墓ぷ鳌獦?gòu)建人工智能模型。




























