陳春林,曹旭斌
(1.西南財(cái)經(jīng)大學(xué) 經(jīng)濟(jì)管理實(shí)驗(yàn)教學(xué)中心,成都 611130;2.西南財(cái)經(jīng)大學(xué) 信息化與大數(shù)據(jù)管理中心,成都 611130)
兼具技術(shù)屬性和社會(huì)屬性并高度融合的人工智能技術(shù),因其對(duì)整個(gè)社會(huì)經(jīng)濟(jì)生活模式產(chǎn)生的重大需求變革,不僅在計(jì)算機(jī)科學(xué)與技術(shù)相關(guān)專業(yè)提出了新的學(xué)科建設(shè)方向,在各學(xué)科專業(yè)也都提出了“人工智能+X”的學(xué)科要求[1]。以筆者所在高校設(shè)置專業(yè)為例,開設(shè)了人工智能的機(jī)器學(xué)習(xí)類(含深度學(xué)習(xí)、強(qiáng)化學(xué)習(xí))等必修課程的專業(yè)占全校2021 級(jí)本科專業(yè)總數(shù)近三分之一。
在人工智能滲透到各類學(xué)科教育的過程中,實(shí)踐必然成為教學(xué)中重要的一環(huán)。其教學(xué)要求理論與實(shí)踐并需且緊密結(jié)合:理論層次上,從交叉學(xué)科領(lǐng)域的基礎(chǔ)理論前沿研究中形成的邏輯和解決模式提出了解決某類問題的優(yōu)化方法模型,選擇采用算法的類型、算法中超參數(shù)的調(diào)教設(shè)定等需要理論教學(xué)帶來認(rèn)知;實(shí)踐層次上,則是將所涉及和選定的算法應(yīng)用到實(shí)際問題的過程,實(shí)操、驗(yàn)證和探索各類理論算法中條件限定、準(zhǔn)確度以及性能要求。
融合學(xué)科的人工智能領(lǐng)域的教學(xué)依賴專業(yè)且易用的編程環(huán)境、高效且穩(wěn)定的計(jì)算資源、安全且便捷的數(shù)據(jù)資源和可靠且靈活的教學(xué)模式。傳統(tǒng)計(jì)算機(jī)房能夠基于預(yù)裝好的操作系統(tǒng)和硬件提供有效但相對(duì)固化的實(shí)驗(yàn)教學(xué)環(huán)境,以筆者所在學(xué)校為例,學(xué)校提供了50 臺(tái)配置有NVIDIA GPU的計(jì)算機(jī)在實(shí)驗(yàn)室滿足日常教學(xué)課程。但傳統(tǒng)的計(jì)算機(jī)房的開放局限于教學(xué)課程安排和場(chǎng)地日常工作開放時(shí)間,而現(xiàn)場(chǎng)的開放也同時(shí)面臨著座位數(shù)量、課程間隔時(shí)間、班級(jí)隔離、設(shè)備維護(hù)等需求和影響,傳統(tǒng)計(jì)算機(jī)房很難做到全天候、無需教師看管的開放模式,實(shí)驗(yàn)室的使用效率潛力依然有提升空間。
為構(gòu)建滿足新時(shí)代背景下泛在學(xué)習(xí)的教育服務(wù)供給能力,本文將介紹一種有效的方法,在不改變?cè)杏?jì)算機(jī)實(shí)驗(yàn)室的使用模式和教學(xué)體驗(yàn)的基礎(chǔ)上,進(jìn)行基礎(chǔ)設(shè)施改造,將傳統(tǒng)機(jī)房的計(jì)算能力虛擬化,建立有效調(diào)度計(jì)算能力并即開即用的計(jì)算環(huán)境,通過Web 提供泛在人工智能實(shí)驗(yàn)教學(xué)平臺(tái)服務(wù),使教學(xué)雙方能夠使用移動(dòng)終端。在改造后的實(shí)驗(yàn)室中,無論是平板還是筆記本還是PC 甚至手機(jī)的瀏覽器均可利用平臺(tái)配備完善的環(huán)境進(jìn)行相關(guān)算法的開發(fā)研究和應(yīng)用實(shí)踐。
通過分析數(shù)據(jù)科學(xué)和人工智能的教學(xué)需求,根據(jù)現(xiàn)有硬件資源條件,需要實(shí)現(xiàn)對(duì)于基礎(chǔ)設(shè)施的計(jì)算能力、存儲(chǔ)能力的虛擬化調(diào)度改造,同時(shí)也需實(shí)現(xiàn)實(shí)驗(yàn)教學(xué)環(huán)境的虛擬化,即提供可基于Web 訪問的實(shí)驗(yàn)教學(xué)環(huán)境和管理平臺(tái)。
基礎(chǔ)設(shè)施服務(wù)能力包含計(jì)算和存儲(chǔ)服務(wù)的能力,同時(shí)還包括調(diào)度管理等服務(wù)的能力。
2.1.1 計(jì)算能力的調(diào)度
為實(shí)現(xiàn)虛擬化調(diào)度分布在實(shí)驗(yàn)室50 臺(tái)終端的CPU、GPU 和內(nèi)存的計(jì)算能力,我們采用容器虛擬化模式。計(jì)算機(jī)的虛擬化有全虛擬化、半虛擬化和容器虛擬化等技術(shù),其中全虛擬化和半虛擬化以VMware vSphere、Microsoft Hyper-V 和Xen為代表,但其虛擬化界面和應(yīng)用程序界面隔離并獨(dú)占使用,容器虛擬化適用于相同操作系統(tǒng)內(nèi)核的應(yīng)用程序部署。Docker 作為一種容器技術(shù),性能損失小,用于創(chuàng)建、運(yùn)行和管理容器。Kubernetes(簡(jiǎn)稱K8s)是一個(gè)容器編排平臺(tái),負(fù)責(zé)管理和調(diào)度容器化應(yīng)用程序。這兩者相互配合,可以實(shí)現(xiàn)高度自動(dòng)化、可擴(kuò)展和易于維護(hù)的基礎(chǔ)設(shè)施服務(wù)。通過在傳統(tǒng)實(shí)驗(yàn)室內(nèi)終端上的Linux 系統(tǒng)建立容器服務(wù),將容器服務(wù)集中以K8s 進(jìn)行編排服務(wù)[2],因Docker 容器通過使用cgroups 技術(shù)大大降低了控制系統(tǒng)資源的粒度,從而大幅度地提高了對(duì)系統(tǒng)資源的利用率[3],其計(jì)算性能損耗可忽略不計(jì)[4],但同時(shí)又能夠滿足終端在日常教學(xué)實(shí)驗(yàn)課程中的正常使用。容器以內(nèi)核級(jí)的虛擬化實(shí)現(xiàn)了相比在終端上建立虛擬機(jī)來獲取GPU 的計(jì)算能力有著更高的性能和效率。為使容器能夠?qū)ⅹ?dú)享的GPU 分割為多個(gè)(在本實(shí)踐中為兩個(gè))vGPU 以提供更多的GPU 實(shí)例[5],本文綜合對(duì)比了目前多種方案(如表1所示),選擇以TKE 方案為基礎(chǔ)進(jìn)行鏡像生成和K8s 編排集成,實(shí)現(xiàn)了將原有50 張顯存為8 G 的GPU 卡分割為100 張顯存單位為最小的4 GB vGPU,使使用者數(shù)量擴(kuò)展了一倍。
表1 vGPU 分割方案對(duì)比
2.1.2 存儲(chǔ)能力的調(diào)度
在存儲(chǔ)服務(wù)方面,為減少新的投入,采用現(xiàn)有的集中式存儲(chǔ)陣列。由于現(xiàn)有集中式存儲(chǔ)陣列采用SAN 存儲(chǔ),而K8s 采用文件存儲(chǔ),采用已經(jīng)連接到SAN 存儲(chǔ)的存儲(chǔ)池中新建虛擬機(jī),把集中式存儲(chǔ)陣列LUN 掛載給該主機(jī),通過該主機(jī)將整個(gè)平臺(tái)所需至少4 T 容量的存儲(chǔ)需求以卷(volume)的形式作為K8s 的存儲(chǔ)層抽象。存儲(chǔ)服務(wù)提供3 個(gè)使用方向:K8s 中主節(jié)點(diǎn)運(yùn)行所需的存儲(chǔ);人工智能實(shí)驗(yàn)教學(xué)平臺(tái)的使用者在利用平臺(tái)進(jìn)行數(shù)據(jù)標(biāo)注、數(shù)據(jù)和算法訓(xùn)練時(shí)所需的數(shù)據(jù)存儲(chǔ);保存平臺(tái)和使用者所需的Docker 鏡像的倉(cāng)庫存儲(chǔ)。當(dāng)存儲(chǔ)需求增加已有存儲(chǔ)無法滿足時(shí),可通過擴(kuò)展SAN 存儲(chǔ)的分配容量進(jìn)行卷擴(kuò)容,滿足新增需求。
為了便于平臺(tái)使用者能夠脫離平臺(tái)在本地系統(tǒng)中也能獲取數(shù)據(jù),將容器所掛載的數(shù)據(jù)存儲(chǔ)與容器解耦部署,通過Docker 容器的定義聲明,將存儲(chǔ)資源掛載到容器中,并實(shí)現(xiàn)數(shù)據(jù)的讀寫和持久化。在掛載容器卷的同時(shí),使用NFS[6]的模式將數(shù)據(jù)存儲(chǔ)開放給使用者,使用者僅需通過設(shè)定的賬號(hào)密碼即可獲取數(shù)據(jù)或共享數(shù)據(jù)給平臺(tái)其他用戶。由此,使用者在啟動(dòng)容器服務(wù)時(shí),可隨時(shí)進(jìn)行數(shù)據(jù)的上傳、下載和共享。
2.1.3 資源服務(wù)能力的調(diào)度
在設(shè)計(jì)整體結(jié)構(gòu)時(shí),考慮到位于傳統(tǒng)實(shí)驗(yàn)室的終端的開關(guān)機(jī)較為頻繁,環(huán)境并不滿足長(zhǎng)時(shí)間開啟服務(wù)的條件。為解決實(shí)現(xiàn)K8s 的主機(jī)集群服務(wù)長(zhǎng)期穩(wěn)定,通過數(shù)據(jù)中心現(xiàn)有Vmare vsphere 資源池建立虛擬機(jī)提供K8s 的主服務(wù)節(jié)點(diǎn),將傳統(tǒng)實(shí)驗(yàn)室內(nèi)的50 臺(tái)工作站終端作為計(jì)算節(jié)點(diǎn)加入。數(shù)據(jù)中心和傳統(tǒng)實(shí)驗(yàn)室通過光纖實(shí)現(xiàn)千兆鏈接,并劃分為同一虛擬vlan。
資源服務(wù)能力的調(diào)度包含計(jì)算資源調(diào)度和物理資源調(diào)度兩部分。計(jì)算資源的調(diào)度以K8s 調(diào)度分布在實(shí)驗(yàn)室的計(jì)算節(jié)點(diǎn),通過容器實(shí)現(xiàn)算力資源輕量級(jí)虛擬化,快速完成計(jì)算所需資源的封裝與隔離;K8s 完成對(duì)容器集群的編排、調(diào)度、容器生命周期管理等。結(jié)合教學(xué)和科研需求,可以將分布在50 臺(tái)計(jì)算節(jié)點(diǎn)終端的計(jì)算資源根據(jù)需求進(jìn)行CPU、內(nèi)存和vGPU 的模式預(yù)置提供可選項(xiàng),如“實(shí)驗(yàn)教學(xué)A-1CPU 2 G 內(nèi)存 4 G 顯存”和“實(shí)驗(yàn)教學(xué)B-2CPU 8 G 內(nèi)存 8 G 顯存”等,幫助使用者在應(yīng)用分布式訓(xùn)練時(shí)可以實(shí)現(xiàn)多節(jié)點(diǎn)多卡、單節(jié)點(diǎn)單多卡訓(xùn)練[7]。物理資源調(diào)度根據(jù)日常教學(xué)計(jì)劃預(yù)先確認(rèn)實(shí)驗(yàn)室在日間的使用空閑時(shí)間,結(jié)合非授課時(shí)間和晚間及節(jié)假日,將實(shí)驗(yàn)室可用于遠(yuǎn)程教學(xué)、學(xué)生自主實(shí)驗(yàn)和教師科研實(shí)驗(yàn)可使用的時(shí)間段進(jìn)行公告,提前根據(jù)需求利用傳統(tǒng)實(shí)驗(yàn)室已有的教室管理系統(tǒng)進(jìn)行遠(yuǎn)程開關(guān)機(jī)和系統(tǒng)的切換,滿足物理資源的調(diào)度需求。
圍繞機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的教學(xué)科研需求特色,從數(shù)據(jù)處理、算法開發(fā)、訓(xùn)練、模型泛化的實(shí)驗(yàn)流程出發(fā),抽象出人工智能學(xué)習(xí)的實(shí)驗(yàn)教學(xué)平臺(tái)的模式。結(jié)合機(jī)器學(xué)習(xí)業(yè)務(wù)特點(diǎn),封裝優(yōu)化后的機(jī)器/深度學(xué)習(xí)框架和分布式訓(xùn)練框架,如TensorFlow、PyTorch[8]、MXnet,和分布式機(jī)器學(xué)習(xí)框架Horovod 等到容器中。透過Jupyter 服務(wù)使上述的實(shí)驗(yàn)流程通過Web 模式提供[9],針對(duì)一些常用的數(shù)據(jù)處理分析軟件,如MATLAB,進(jìn)行容器化改造,通過VNC 界面提供[10]。同時(shí),在集群管理的優(yōu)勢(shì)下,可以通過網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)[11]的方式,將集群內(nèi)的容器服務(wù)能力映射出,以保持平臺(tái)系統(tǒng)的開放性,支持SSH 和Tensorboard[12]。
在用戶授權(quán)上,使用校內(nèi)現(xiàn)有身份認(rèn)證系統(tǒng)進(jìn)行用戶甄別準(zhǔn)入,并在平臺(tái)系統(tǒng)內(nèi),根據(jù)學(xué)生和教師身份給予相應(yīng)的資源使用權(quán)限。
1)提升資源利用率?;诂F(xiàn)有傳統(tǒng)實(shí)驗(yàn)室的計(jì)算終端改造,機(jī)器一體兩用,日常供正常教學(xué)實(shí)驗(yàn),空閑時(shí)間快速切換系統(tǒng)啟動(dòng)容器服務(wù),在10 分鐘內(nèi)即可組建成人工智能實(shí)驗(yàn)教學(xué)平臺(tái)提供算力支撐;同時(shí)通過按需分配、多任務(wù)隔離并行等功能,進(jìn)一步提升資源利用率。
2)實(shí)現(xiàn)教學(xué)和科研效率提升。通過平臺(tái)實(shí)現(xiàn)秒級(jí)的預(yù)置環(huán)境創(chuàng)建,同時(shí)提供數(shù)據(jù)準(zhǔn)備、算法模型構(gòu)建、訓(xùn)練調(diào)優(yōu)、模型管理和部署應(yīng)用等功能,實(shí)現(xiàn)機(jī)器學(xué)習(xí)生命周期流程管理。
3)工具服務(wù)化,形成全面的機(jī)器學(xué)習(xí)技術(shù)工具鏈服務(wù)于人工智能教學(xué)全生命周期。集成常用軟件如MATLAB 并能實(shí)現(xiàn)即開即用、按需使用的服務(wù)模式。通過K8s 的網(wǎng)絡(luò)發(fā)現(xiàn)服務(wù)開放并預(yù)留了標(biāo)準(zhǔn)API 擴(kuò)展[13]接口,從而提升平臺(tái)的可用性。平臺(tái)集成TensorFlow、PyTorch、MXnet 等多個(gè)主流機(jī)器學(xué)習(xí)框架,也集成了Harbor 等容器倉(cāng)庫框架,能夠在后期進(jìn)行容器鏡像擴(kuò)展。
本平臺(tái)的設(shè)計(jì)與實(shí)踐,是推進(jìn)實(shí)驗(yàn)教學(xué)智能發(fā)展的有益嘗試,在推動(dòng)實(shí)驗(yàn)教學(xué)變革,構(gòu)建新技術(shù)賦能的教學(xué)環(huán)境,探索基于人工智能的新教學(xué)模式,重構(gòu)教學(xué)流程方面做出了積極的探索。在重構(gòu)教學(xué)流程的過程中,我們不僅致力于改進(jìn)既有教學(xué)模式,同時(shí)也在尋求如何優(yōu)化運(yùn)行機(jī)制和服務(wù)模式。通過優(yōu)化運(yùn)行機(jī)制和服務(wù)模式,實(shí)現(xiàn)教學(xué)資源的按需定制,從而提升教學(xué)治理水平。此外,通過推動(dòng)在線學(xué)習(xí),發(fā)展以學(xué)習(xí)者為中心的學(xué)習(xí)平臺(tái),提供按需定制的學(xué)習(xí)資源,創(chuàng)新服務(wù)供給模式,實(shí)現(xiàn)實(shí)驗(yàn)教學(xué)的智能化。
在今后的平臺(tái)建設(shè)中,還有以下需要改進(jìn)和考慮的內(nèi)容。
1)進(jìn)一步提升實(shí)驗(yàn)教學(xué)的智能化。舉例來講,在當(dāng)前使用Jupyter 服務(wù)實(shí)現(xiàn)人工智能全流程開發(fā)實(shí)驗(yàn)教學(xué)的模式中,可以嵌入Jupyter 的相關(guān)教學(xué)管理插件,如Auto Grade 等,進(jìn)一步提升實(shí)驗(yàn)教學(xué)的智能化水平。
2)擴(kuò)大平臺(tái)的教學(xué)適用性。基于容器化服務(wù)的特性,將多種類的實(shí)驗(yàn)教學(xué)軟件進(jìn)行容器化改造和測(cè)試,在資源存量允許的情況下,實(shí)現(xiàn)實(shí)驗(yàn)教學(xué)軟件在本平臺(tái)上的Web 化訪問,提升實(shí)驗(yàn)教學(xué)軟硬件的使用效率,方便廣大師生在教學(xué)科研中使用。
3)開源軟件的應(yīng)用需要更多的投入。本人工智能實(shí)驗(yàn)教學(xué)平臺(tái)從集群編排使用的K8s 軟件、計(jì)算終端使用的linux 操作系統(tǒng)、容器鏡像服務(wù)harbor 以及計(jì)算框架horovod、GPU 虛擬化分割vGPU 的TKE 方案、教學(xué)框架Jupyter 等,均為開源社區(qū)所提供,需更加重視安全性和日志代碼審查,及時(shí)更新漏洞,加強(qiáng)人員投入并反哺社區(qū)形成良性循環(huán)。