謝作如 溫州科技高級(jí)中學(xué)
為激發(fā)學(xué)習(xí)興趣,教師在介紹圖像分類(lèi)、目標(biāo)檢測(cè)之類(lèi)的人工智能技術(shù)時(shí),總希望能制作一些個(gè)性化的展示AI應(yīng)用的教學(xué)課件,讓學(xué)生深度體驗(yàn)AI的強(qiáng)大功能。在《用PyWebIO“交互”呈現(xiàn)人工智能學(xué)習(xí)成果》一文中,我介紹了用PyWebIO來(lái)部署AI模型,并形成一個(gè)交互網(wǎng)頁(yè)的案例。但PyWebIO存在一些不足,如界面不夠美觀、不支持頁(yè)面布局、不支持Jupyter,也不支持?jǐn)z像頭和麥克風(fēng)等。前段時(shí)間,在本地部署Stable fuffsion的時(shí)候,我無(wú)意中找到了一款A(yù)I模型可視化演示的工具,即Gradio。經(jīng)過(guò)深度測(cè)試,我認(rèn)為它很適合用于教學(xué)演示。
Gradio是一個(gè)開(kāi)源的Python庫(kù),用于構(gòu)建演示機(jī)器學(xué)習(xí)、數(shù)據(jù)科學(xué)或者Web應(yīng)用的程序。使用Gradio,用戶(hù)可以快速為機(jī)器學(xué)習(xí)模型或數(shù)據(jù)科學(xué)工作流創(chuàng)建一個(gè)漂亮的Web交互界面,讓用戶(hù)可以在瀏覽器上執(zhí)行輸入文本、上傳圖像和錄制聲音等操作,與演示程序進(jìn)行交互(如圖1)。
圖1 Gradio的官方頁(yè)面
值得強(qiáng)調(diào)的是,國(guó)內(nèi)外多個(gè)人工智能模型托管網(wǎng)站都內(nèi)置了Gradio,如Hugging Face、OpenXLab浦源、啟智AI協(xié)作平臺(tái)等??梢哉f(shuō),Gradio是一個(gè)主流的AI模型快速部署工具。
Gradio支持pip安裝,即“pip install gradio”。庫(kù)很小,關(guān)聯(lián)的依賴(lài)庫(kù)也很少,Python3.7以上即可安裝。(文檔地址為:https://gradio.app/docs/)
G r a d i o 的核心函數(shù)是Interface類(lèi),通過(guò)fn、inputs、ouputs這三個(gè)參數(shù)進(jìn)行初始化,其中,“fn”為關(guān)聯(lián)的函數(shù),“inputs”為輸入組件類(lèi)型,“ouputs”為輸出組件類(lèi)型。通過(guò)這三個(gè)參數(shù),可以快速創(chuàng)建一個(gè)接口并發(fā)布如圖2所示的程序。
圖2
運(yùn)行圖2所示的代碼,訪問(wèn)“http://127.0.0.1:7860”,即可打開(kāi)一個(gè)網(wǎng)頁(yè),如圖3所示。其中左邊為輸入端,右邊為輸出端。
圖3 Gradio的運(yùn)行界面
從上面的例子可以看到,輸入的內(nèi)容為fn關(guān)聯(lián)函數(shù)“greet”的“name”參數(shù)值,“greet”返回的數(shù)據(jù)即輸出的內(nèi)容。Interface對(duì)象還可以處理很多類(lèi)型的數(shù)據(jù),如:輸入類(lèi)型有“text”“image”和“a u d i o”等,甚至還支持“sketchpad”涂鴉板;輸出類(lèi)型則有“text”“image”和“l(fā)abel”等。
以一個(gè)車(chē)牌識(shí)別模型的部署為例,當(dāng)用XEdu的Det(目標(biāo)識(shí)別)模塊訓(xùn)練出一個(gè)車(chē)牌識(shí)別模型后,在模型推理的代碼中增加數(shù)行代碼,即可實(shí)現(xiàn)在Web頁(yè)面推理模型,參考代碼如圖4所示。
圖4
Gradio直接支持在Jupyter中運(yùn)行代碼,并以嵌入幀的方式顯示在Jupyter筆記中,特別適合教學(xué)演示,如下頁(yè)圖5所示。
圖5 在浦育平臺(tái)的容器里運(yùn)行Gradio
雖然Gradio語(yǔ)法簡(jiǎn)單,但功能卻非常強(qiáng)大,尤其是在多模態(tài)交互方面。下面簡(jiǎn)單介紹如何調(diào)用攝像頭和麥克風(fēng),以及實(shí)現(xiàn)外部(互聯(lián)網(wǎng))訪問(wèn)。
只要將inputs參數(shù)設(shè)為“gr.Image(source='webcam',type='p il')”,就能在網(wǎng)頁(yè)上喚起攝像頭。使用方式是點(diǎn)擊一次“拍照”圖標(biāo),即上傳一張照片。我們甚至可以用這種方式來(lái)收集圖片,制作簡(jiǎn)單的數(shù)據(jù)集。同樣,只要將inputs參數(shù)設(shè)為"microphone",就能在網(wǎng)頁(yè)上使用麥克風(fēng)了。
創(chuàng)建外部訪問(wèn)鏈接有兩個(gè)作用,一是可以讓外網(wǎng)訪問(wèn)內(nèi)網(wǎng)電腦運(yùn)行的代碼,二是可以訪問(wèn)一些本來(lái)不支持Web訪問(wèn)的服務(wù)器,如使用容器(Docker)技術(shù)運(yùn)行代碼的平臺(tái)。只需要在launch函數(shù)中增加“share=True”的參數(shù),在程序啟動(dòng)時(shí)的打印信息中會(huì)看到外部訪問(wèn)鏈接。免費(fèi)用戶(hù)的鏈接可以使用24小時(shí),想要長(zhǎng)期的話(huà)需要在Gradio官方購(gòu)買(mǎi)云服務(wù)。借助這一功能,我們可以隨時(shí)在浦育平臺(tái)或者M(jìn)o平臺(tái)上建一個(gè)臨時(shí)的應(yīng)用分享網(wǎng)頁(yè)。
在部署Stable fuffsion時(shí)第一次見(jiàn)到Gradio,我就和其他老師一起討論了其教育價(jià)值。它除了用于做教學(xué)演示課件外,還可以用來(lái)設(shè)計(jì)一些AI模型的體驗(yàn)作品。比如,將一些復(fù)雜的模型部署在迷你電腦或者一體機(jī)中,放在實(shí)驗(yàn)室或者科技館的公共區(qū)域,供學(xué)生使用。
此外,隨著Keras、XEdu等這些門(mén)檻較低的深度學(xué)習(xí)工具的普及,學(xué)生基于真實(shí)問(wèn)題進(jìn)行數(shù)據(jù)收集和模型訓(xùn)練也將越來(lái)越普遍。那么,教師也可以借助Gradio將學(xué)生的學(xué)習(xí)成果(模型)部署為人工智能應(yīng)用,直觀形象地呈現(xiàn)他們的學(xué)習(xí)成果,一定能夠極大地提高學(xué)生學(xué)習(xí)的收獲感。