謝作如 林淼焱
摘要:為了能讓沒(méi)有代碼基礎(chǔ)的學(xué)生也能順利訓(xùn)練AI模型,作者分析了XEdu訓(xùn)練AI模型的核心代碼,介紹了實(shí)現(xiàn)無(wú)代碼訓(xùn)練AI模型的原理,并以QT、Gradio、VB等多種工具為例,展示無(wú)代碼訓(xùn)練AI模型的XEdu插件編寫過(guò)程,為一線教師和企業(yè)工程師提供了開(kāi)發(fā)人工智能教學(xué)工具的新思路。
關(guān)鍵詞:XEdu;無(wú)代碼訓(xùn)練;深度學(xué)習(xí)
中圖分類號(hào):G434? 文獻(xiàn)標(biāo)識(shí)碼:A? 論文編號(hào):1674-2117(2023)15-0065-03
人工智能教育的核心工作之一是讓學(xué)生能夠通過(guò)數(shù)據(jù)、算法和算力來(lái)訓(xùn)練相關(guān)模型。XEdu作為一款深度學(xué)習(xí)開(kāi)發(fā)工具,能讓學(xué)生通過(guò)簡(jiǎn)潔的代碼完成各種SOTA模型的訓(xùn)練,即可快速搭建出AI應(yīng)用系統(tǒng),降低了學(xué)習(xí)人工智能的門檻。但是,沒(méi)有代碼基礎(chǔ)的學(xué)生如何訓(xùn)練AI模型?當(dāng)微軟、百度、華為等IT企業(yè)相繼推出無(wú)代碼訓(xùn)練模型的平臺(tái)時(shí),筆者也在思考,能否為XEdu開(kāi)發(fā)一個(gè)無(wú)代碼的AI模型訓(xùn)練插件,以進(jìn)一步降低學(xué)習(xí)門檻。
分析:XEdu訓(xùn)練AI模型的基本流程和代碼
XEdu的核心模塊是MMEdu,是基于國(guó)產(chǎn)計(jì)算機(jī)視覺(jué)算法包OpenMMLab做的封裝。在設(shè)計(jì)MMEdu的時(shí)候,筆者對(duì)AI模型的基本流程做了梳理,歸納出四大步驟:①構(gòu)建一個(gè)SOTA模型;②指定數(shù)據(jù)集路徑、分類數(shù)量;③指定權(quán)重文件保存路徑;④設(shè)定訓(xùn)練參數(shù)、開(kāi)始訓(xùn)練。
實(shí)際上,訓(xùn)練模型代碼(以Keras為例)之所以復(fù)雜,是因?yàn)榇罅康拇a用于處理數(shù)據(jù)集和逐層構(gòu)建神經(jīng)網(wǎng)絡(luò)模型。當(dāng)MMEdu將數(shù)據(jù)集的格式做了規(guī)范,并且用SOTA模型的名稱來(lái)簡(jiǎn)化模型搭建過(guò)程后,代碼就變得非常簡(jiǎn)潔。XEdu團(tuán)隊(duì)最終設(shè)計(jì)的MMEdu訓(xùn)練AI模型的典型代碼為6行,如圖1所示的代碼用于圖像分類的模型訓(xùn)練,使用的是貓狗二分類數(shù)據(jù)集。
從圖1所示的代碼中可以看出,這是一個(gè)流程化(順序結(jié)構(gòu))的指令序列。代碼除了“LeNet”是專用名詞外,其他無(wú)非是路徑和類別數(shù)量,較容易理解。機(jī)器學(xué)習(xí)的參數(shù)很多,但MMEdu預(yù)設(shè)了默認(rèn)值,唯一需要設(shè)置參數(shù)的是“epochs”(訓(xùn)練輪次)。如果選擇其他的SOTA模型和數(shù)據(jù)集,代碼需要修改的地方非常有限。
原理:無(wú)代碼訓(xùn)練AI模型功能的實(shí)現(xiàn)
既然訓(xùn)練模型的代碼如此簡(jiǎn)單,那么只要借助一款帶界面設(shè)計(jì)功能的編程語(yǔ)言,或者網(wǎng)頁(yè)表單,就能設(shè)計(jì)出一款“Step-by-step”(一步一步)訓(xùn)練AI模型的插件(全程不需要寫一行代碼),生成的代碼可直接寫入一個(gè)名為*.py的文件,調(diào)用Shell命令(Windows下調(diào)用CMD命令)即可開(kāi)始AI模型的訓(xùn)練,具體流程如圖2所示。
如圖3所示是生成訓(xùn)練代碼的核心函數(shù),實(shí)際上僅僅使用了Python的字符串替換功能。
盤點(diǎn):支持插件編寫的編程工具介紹
由此可見(jiàn),只要能設(shè)計(jì)程序界面的軟件,都能用來(lái)開(kāi)發(fā)無(wú)代碼訓(xùn)練AI模型插件。常見(jiàn)的工具或者開(kāi)發(fā)路徑如下。
1.Python+GUI庫(kù)
因?yàn)閄Edu使用的是Python,所以選擇Python的GUI(圖形用戶界面)庫(kù)是最合理的,如QT、EasyGUI、unihiker庫(kù)等。XEdu的一鍵安裝包中內(nèi)置了EasyTrain,是借助QT庫(kù)開(kāi)發(fā)的訓(xùn)練模型插件,界面如圖4所示。
EasyTrain同時(shí)支持圖像分類和目標(biāo)檢測(cè)兩種方式,點(diǎn)擊“更多參數(shù)”,將跳出新窗口提供OpenMMLab支持的所有模型訓(xùn)練參數(shù),如優(yōu)化器、隨機(jī)種子等。
2.Python+可快速搭建Web應(yīng)用的庫(kù)
用網(wǎng)頁(yè)表單來(lái)選擇、提交各種變量,是最自然的交互。借助Gradio、Remi和PyWebIO等可快速搭建Web應(yīng)用的庫(kù),開(kāi)發(fā)Web應(yīng)用也很簡(jiǎn)單。其中,Gradio是一個(gè)開(kāi)源的Python庫(kù),常用于搭建演示機(jī)器學(xué)習(xí)模型功能方面的程序,其代碼非常簡(jiǎn)潔,關(guān)注的是輸入和輸出。Gradio支持通過(guò)瀏覽器上傳各種文件,支持拍攝圖像、錄制聲音和錄制視頻等功能,還支持實(shí)現(xiàn)多人共建數(shù)據(jù)集、內(nèi)網(wǎng)穿透等原本不容易實(shí)現(xiàn)的功能。
此外,Remi和PyWebIO也是很不錯(cuò)的選擇。相對(duì)來(lái)說(shuō),Remi更像一個(gè)Web版的GUI庫(kù),使用語(yǔ)法和Tkinter庫(kù)(Python最經(jīng)典的圖形界面庫(kù))類似。
3.Python+Web開(kāi)發(fā)框架
如果有Web應(yīng)用的開(kāi)發(fā)經(jīng)驗(yàn),可以選擇Flask、Django和Tornado等的Web開(kāi)發(fā)框架。而開(kāi)發(fā)工作主要在前端,即網(wǎng)頁(yè)模板,后端只需要生成并寫入代碼,再用os.system調(diào)用命令即可。浙江教育出版社出版的高中信息技術(shù)必修2中,有使用Flask搭建Web應(yīng)用的學(xué)習(xí)內(nèi)容。只要具備最基礎(chǔ)的能力,就能寫出這類插件。
此外,還可以在這個(gè)插件中集成圖像標(biāo)注、模型轉(zhuǎn)換等功能。如果加上作業(yè)管理功能,就實(shí)現(xiàn)了一個(gè)支持多用戶的算力管理平臺(tái),可將一臺(tái)帶GPU(哪怕是游戲顯卡)的計(jì)算機(jī)轉(zhuǎn)換為以Web為用戶接口的算力服務(wù)器,訪問(wèn)方式如圖5所示。
4.任何支持GUI的編程語(yǔ)言
中小學(xué)機(jī)房目前絕大多數(shù)使用的是Windows系統(tǒng),為了獲得更好的兼容體驗(yàn),也可以使用VB、C#等工具來(lái)開(kāi)發(fā)插件。以VB為例,設(shè)計(jì)輸入框、選擇框等交互控件非常容易,如圖6所示。
生成*.py代碼后再調(diào)用CMD命令來(lái)執(zhí)行。如果生成的*.py文件和插件都運(yùn)行在“XEdu一鍵安裝包”的主目錄下,那么參考代碼如圖7所示。
結(jié)語(yǔ):人工智能教育需要更多工具
人工智能教育并不等同于編程教育,雖然二者關(guān)系非常密切。用無(wú)代碼的方式訓(xùn)練AI模型,實(shí)際上并非僅僅為了降低難度,而是強(qiáng)調(diào)了訓(xùn)練模型屬于流程化的工作,本來(lái)就不需要太多編程知識(shí)作為基礎(chǔ)。當(dāng)模型訓(xùn)練技術(shù)成熟后,用戶在圖形界面下操作自然更加方便。智能時(shí)代已經(jīng)到來(lái),期待有更多學(xué)科的教師突破學(xué)科壁壘,參與到人工智能教育中來(lái)。
參考文獻(xiàn):
[1]吳俊杰,戴娟,謝作如.中小學(xué)AI教育需要怎樣的學(xué)習(xí)工具[J].中國(guó)信息技術(shù)教育,2022(12):4-10.
[2]謝作如.用Python寫一個(gè)基于Web的物聯(lián)網(wǎng)應(yīng)用程序[J].中國(guó)信息技術(shù)教育,2021(09):78-81.
[3]謝作如,方建文.讓學(xué)生真正理解數(shù)據(jù)、算法和算力——談新一代人工智能教育教什么和怎么教[J].中小學(xué)信息技術(shù)教育,2023(06):8-10.