摘要:中小學(xué)人工智能教育的核心要素是模型,但目前缺少相應(yīng)的技術(shù)規(guī)范和社區(qū)平臺(tái),導(dǎo)致中小學(xué)生的人工智能學(xué)習(xí)成果難以有效“流通”。本文介紹了XEduHub的“repo”功能,提出借助XEduHub和魔搭社區(qū)分享AI模型作品的方法,并以MMEdu的“車牌識(shí)別”模型為例,展示了分享AI模型作品的具體過(guò)程。
關(guān)鍵詞:XEduHub;人工智能教育
中圖分類號(hào):G434 文獻(xiàn)標(biāo)識(shí)碼:A 論文編號(hào):1674-2117(2024)19-0090-03
新一代人工智能教育的核心要素是模型。中小學(xué)的人工智能教育一般要圍繞模型展開(kāi),經(jīng)歷從搭建、訓(xùn)練、部署到應(yīng)用的過(guò)程,最終解決一個(gè)真實(shí)問(wèn)題。然而,在信息科技類課程中學(xué)生的作品類型有Word文檔、演示文稿、Flash動(dòng)畫(huà)等,也有網(wǎng)頁(yè)、程序代碼等,但幾乎很少看到中小學(xué)生發(fā)布或者分享模型方面的學(xué)習(xí)成果。
人工智能教育的學(xué)習(xí)成果有哪些?筆者在編寫(xiě)清華大學(xué)出版社出版的《信息科技》教材時(shí)曾經(jīng)討論過(guò)這個(gè)問(wèn)題,并對(duì)學(xué)生的學(xué)習(xí)成果進(jìn)行了梳理,認(rèn)為大致有如下幾類:數(shù)據(jù)集、模型、訓(xùn)練代碼、推理代碼、在模型基礎(chǔ)上開(kāi)發(fā)的應(yīng)用程序等。相對(duì)來(lái)說(shuō),要求“分享”模型作品很簡(jiǎn)單,但是如何讓分享的模型有效“流通”起來(lái)卻并不容易。
人工智能模型的有效“流通”是一道難題
人工智能模型的有效“流通”是一道難題,首先難在技術(shù)規(guī)范上。人工智能的開(kāi)發(fā)工具很多,僅Python代碼中就有Scikit-Learn、SciPy和BaseML等傳統(tǒng)機(jī)器學(xué)習(xí)工具,還有TensorFlow、PyTorch和PaddlePaddle等深度學(xué)習(xí)開(kāi)發(fā)框架。幾乎每一種開(kāi)發(fā)框架都會(huì)有自己特定類型的模型,如PyTorch的模型格式為“.pth”,TensorFlow的模型格式為“.h5”等。那么,中小學(xué)生選擇哪一種類型的模型進(jìn)行分享呢?還有,模型推理往往需要對(duì)數(shù)據(jù)進(jìn)行前處理和后處理,僅僅提供模型顯然沒(méi)辦法讓其他人方便地拿來(lái)就用,達(dá)不到“流通”的目的。
其次,還缺少方便青少年分享模型的社區(qū)。模型分享是一個(gè)相對(duì)比較專業(yè)的工作,直接將模型作品放在云盤(pán)上,顯然不是一個(gè)可行的分享方式,也很難達(dá)到分享交流的目的。例如,人工智能企業(yè)或者研究者往往會(huì)選擇Hugging Face、魔搭(ModelScope)等開(kāi)源模型社區(qū)或者平臺(tái)。這些平臺(tái)會(huì)提供特定的運(yùn)行環(huán)境和下載協(xié)議,吸引了越來(lái)越多的愛(ài)好者前來(lái)“尋寶”。
借助XEduHub分享學(xué)生人工智能模型
為了方便人工智能模型的交流,XEduHub在設(shè)計(jì)之初就選擇了ONNX Runtime推理框架。支持ONNX Runtime的企業(yè)很多,其模型格式為ONNX,全稱為Open Neural Network Exchange,即開(kāi)放神經(jīng)網(wǎng)絡(luò)交換格式,旨在實(shí)現(xiàn)不同深度學(xué)習(xí)框架之間的模型互操作性,便于模型的共享和部署??紤]到更多的模型需要快速支持,XEduHub設(shè)計(jì)了“repo”功能,無(wú)意中為學(xué)生模型的有效流通問(wèn)題提供了一個(gè)不錯(cuò)的解決方案。
1.XEduHub的“repo”功能
“repo”一詞是“Repository(倉(cāng)庫(kù))”的縮寫(xiě),是指用來(lái)存儲(chǔ)代碼、模型以及其他項(xiàng)目文件的地方。想要分享任何一個(gè)模型或者其他作品,都需要將相關(guān)的文件放在一個(gè)公共的區(qū)域,如GitHub、GitLab、魔搭等。XEduHub的“repo”功能也一樣,要求分享者將代碼、模型等文件放在公共的網(wǎng)絡(luò)空間中,公開(kāi)其空間信息。使用者通過(guò)空間信息,將網(wǎng)絡(luò)空間的項(xiàng)目自動(dòng)下載(同步)到本地(如圖1),達(dá)到了分享的目的。
經(jīng)過(guò)多方面的比較XEduHub最終選擇魔搭社區(qū)為統(tǒng)一分享的空間。分享者需要在開(kāi)源模型社區(qū)上創(chuàng)建一個(gè)新的倉(cāng)庫(kù)(repo),并上傳所需的代碼、模型等項(xiàng)目文件。這個(gè)倉(cāng)庫(kù)的名稱就是workflow對(duì)象的“repo”參數(shù)名稱。
2.XEduHub的“repo”功能的基礎(chǔ)代碼
在Python程序中使用以“repoUS9m5IA4VYw0dDcT6XaUlKaXeJRuNZytvppfZ0MfNqA=”形式分享的模型僅需要三行代碼,如圖2所示,其中第二行代碼將云端的項(xiàng)目同步到本地,并實(shí)例化為模型以供調(diào)用,第三行代碼則調(diào)用了模型的推理函數(shù),對(duì)數(shù)據(jù)進(jìn)行處理并返回推理計(jì)算的結(jié)果。如果云端項(xiàng)目已經(jīng)同步,則不會(huì)重復(fù)下載,其規(guī)則和XEduHub的其他模型保持一致。
人工智能模型的分享實(shí)例
這里以MMEdu訓(xùn)練的車牌檢測(cè)模型為例,展示一個(gè)人工智能模型的分享流程。首先,利用MMEdu的模型轉(zhuǎn)換功能,將PyTorch模型格式轉(zhuǎn)換為ONNX模型格式,并命名為“model.onnx”。其次,編寫(xiě)一個(gè)名為“data_process.py”的模型推理代碼,可以實(shí)現(xiàn)“端到端”推理。在這里,“端到端”指的是輸入一張圖片,即可輸出模型的推理結(jié)果——圖片中車牌的坐標(biāo)信息?!癲ata_process.py”的核心代碼如圖3所示。
在圖3所示的代碼中,定義了一個(gè)函數(shù)get_model_path來(lái)輔助模型實(shí)例化。另一個(gè)函數(shù)inference則定義了核心的模型推理參數(shù)、流程和返回值。函數(shù)名“inference”不能修改,內(nèi)容可以根據(jù)模型的具體情況來(lái)實(shí)現(xiàn)。接著,將這兩個(gè)文件上傳到魔搭社區(qū)。如用戶名為“yikshing”,創(chuàng)建的倉(cāng)庫(kù)名為“det_plate_ssd”,那么“repo”的參數(shù)名稱就是“yikshing/det_plate_ssd”(如圖4)。圖5中的代碼實(shí)現(xiàn)了調(diào)用AI模型,推理一張名為“plate0.png”的圖片。這段代碼可以在任意支持Python并安裝好XEduHub的電腦上運(yùn)行。
借助“repo”功能實(shí)現(xiàn)更復(fù)雜的“流通”
在使用過(guò)程中筆者發(fā)現(xiàn),結(jié)合一些創(chuàng)意,“repo”功能還能實(shí)現(xiàn)更復(fù)雜的“流通”。
①在一個(gè)人工智能項(xiàng)目中多次“repo”其他模型。例如,在一個(gè)語(yǔ)音交互的智能作品中,可以將其劃分為“語(yǔ)音識(shí)別+智能問(wèn)答+語(yǔ)音合成”的模型組合,借助XEduLLM(大語(yǔ)言模型庫(kù))和兩個(gè)repo的配合,實(shí)現(xiàn)語(yǔ)音交互的完整應(yīng)用。事實(shí)上,很多生活中的真實(shí)問(wèn)題需要多個(gè)模型聯(lián)合工作。用“repo”來(lái)組合這些模型,流程清晰且代碼簡(jiǎn)潔。
②使用“repo”分享機(jī)器學(xué)習(xí)的模型?!皉epo”功能一開(kāi)始僅僅為深度學(xué)習(xí)的模型分享而設(shè)計(jì),所以規(guī)定了必須有model.onnx和data_process.py兩個(gè)文件。但用戶只要將模型的擴(kuò)展名改為“.onnx”,就可以用“repo”方式分享機(jī)器學(xué)習(xí)的模型了。
③在項(xiàng)目中同時(shí)分享其他代碼資源。“repo”功能會(huì)將一個(gè)項(xiàng)目中的全部文件都同步在本地,因此可以在項(xiàng)目中提供一些與模型相關(guān)的資源,如數(shù)據(jù)采集工具、模型訓(xùn)練代碼、功能介紹視頻等,甚至可以同步教學(xué)案例,方便教師們的交流分享。
④使用“repo”傳遞各種非AI的代碼?!皉epo”功能的核心在于data_process.py文件。使用者可以在inference函數(shù)中加入各種復(fù)雜的功能,如可以設(shè)計(jì)一個(gè)圖形化的交互界面,用gradio來(lái)實(shí)現(xiàn)一個(gè)網(wǎng)頁(yè)端的編程助手等。
結(jié)語(yǔ)
XEduHub的“repo”功能為模型的分享而開(kāi)發(fā),因此項(xiàng)目組還在XEdu文檔中提供了“repo”倉(cāng)庫(kù)收集頁(yè)面,匯集了各種自定義的模型,方便大家查詢,如人臉情緒判斷、人臉特征提取、語(yǔ)音識(shí)別、語(yǔ)音合成等。只要看到有趣、有用的開(kāi)源模型,或者自己訓(xùn)練了特定的模型,使用者都可以用這樣的方式分享出來(lái)。因而,中小學(xué)生訓(xùn)練的人工智能模型也會(huì)因此相互“流通”起來(lái)。