楚朋志,肖雄子彥,陳江平,徐季旻,熊振華
(上海交通大學(xué)a.學(xué)生創(chuàng)新中心;b.生物醫(yī)學(xué)工程學(xué)院,上海 200240)
2018年,教育部頒發(fā)《高等學(xué)校人工智能創(chuàng)新行動(dòng)計(jì)劃》提出,“推動(dòng)高校人工智能學(xué)科建設(shè)、人才培養(yǎng)、理論創(chuàng)新、技術(shù)突破和應(yīng)用示范,為構(gòu)筑人工智能發(fā)展優(yōu)勢(shì)提供戰(zhàn)略支撐?!?020 年3月,教育部、發(fā)改委、財(cái)政部聯(lián)合印發(fā)《關(guān)于“雙一流”建設(shè)高校,促進(jìn)學(xué)科融合加快人工智能領(lǐng)域?qū)W生培養(yǎng)的若干意見(jiàn)》,提出依托“雙一流”建設(shè),深化人工智能內(nèi)涵,構(gòu)建基礎(chǔ)理論人才與“人工智能+X”復(fù)合型人才并重的培養(yǎng)體系,探索深度融合的學(xué)科建設(shè)和人才培養(yǎng)模式[1-4]。一系列政策表明,智能時(shí)代大潮呼喚高等教育優(yōu)化人工智能專(zhuān)業(yè)新結(jié)構(gòu),系統(tǒng)化培養(yǎng)人工智能領(lǐng)域人才,為我國(guó)新一代人工智能發(fā)展提供戰(zhàn)略支撐。
然而在具體的人才培養(yǎng)過(guò)程中,我們也會(huì)遇到很多問(wèn)題。首先,大量學(xué)生并沒(méi)有專(zhuān)業(yè)硬件可以進(jìn)行實(shí)驗(yàn)操作,造成了理論與實(shí)踐的脫節(jié),往往在上完課后,無(wú)法通過(guò)實(shí)踐加深對(duì)算法及網(wǎng)絡(luò)的認(rèn)知,最終導(dǎo)致紙上空談[5];其次,人工智能教學(xué)實(shí)踐環(huán)境建設(shè)門(mén)檻高,以機(jī)器學(xué)習(xí)和模式識(shí)別為例,目前主要有Matlab、Python、R 等不同編程語(yǔ)言,對(duì)深度學(xué)習(xí)來(lái)說(shuō),又需要搭建不同的框架,如TensorFlow[6]、Caffe[7]、MindSpore[8]、Pytorch[9]等。不同的環(huán)境的安裝配置對(duì)學(xué)生來(lái)說(shuō)較為繁瑣,尤其對(duì)交叉學(xué)科中非工科專(zhuān)業(yè)的學(xué)生來(lái)講更是困難重重;同時(shí),目前實(shí)踐環(huán)節(jié)中的教學(xué)案例較少,實(shí)踐案例有限且相互孤立,無(wú)法進(jìn)一步提升學(xué)生能力。因此如何建設(shè)一個(gè)管理方便、操作便捷、利于學(xué)習(xí)、高性?xún)r(jià)比的人工智能實(shí)踐平臺(tái)至關(guān)重要。
上海交通大學(xué)學(xué)生創(chuàng)新中心人工智能實(shí)踐平臺(tái)是一個(gè)面向全校學(xué)生開(kāi)放、周期性預(yù)約的高性能并行計(jì)算實(shí)訓(xùn)平臺(tái),包含了中央處理單元(Central Processing Unit,CPU)與圖像處理單元(Graphics Processing Unit,GPU)。其硬件結(jié)構(gòu)包括2 個(gè)管理節(jié)點(diǎn)(CPU:E52620,內(nèi)存:128 GB),其中一個(gè)為登錄節(jié)點(diǎn),一個(gè)為管理控制節(jié)點(diǎn);一套并行存儲(chǔ)(2 個(gè)IO 節(jié)點(diǎn),300 TB 可用容量);14 個(gè)GPU計(jì)算節(jié)點(diǎn)(CPU:5118,GPU:1080TI,內(nèi)存:128 GB);一套FDR 56 GB Infini-band 高速網(wǎng)絡(luò)[10]。
通常用每秒所執(zhí)行的浮點(diǎn)運(yùn)算次數(shù)(Floating Point Operations Per Second,F(xiàn)LOPS)來(lái)衡量電腦的計(jì)算能力,1 PFLOPS 為1024 TFLOPS,即一千萬(wàn)億次浮點(diǎn)指令/s。該平臺(tái)單精度理論峰值約1 PFLOPS,可為每位用戶(hù)提供約為30 FLOPS的運(yùn)算能力,具體架構(gòu)見(jiàn)圖1。
圖1 人工智能實(shí)踐平臺(tái)硬件架構(gòu)
Linux 資源管理工具(Simple Linux Utility for Resource Management,SLURM)[11]是一種可用于大型計(jì)算節(jié)點(diǎn)集群的高度可伸縮和容錯(cuò)的集群管理器和作業(yè)調(diào)度系統(tǒng),被世界范圍內(nèi)的超級(jí)計(jì)算機(jī)和計(jì)算集群廣泛采用。SLURM維護(hù)著一個(gè)待處理工作的隊(duì)列并管理此工作的整體資源利用。它以一種共享或非共享的方式管理可用的計(jì)算節(jié)點(diǎn)(取決于資源的需求),以供用戶(hù)執(zhí)行工作。SLURM 會(huì)為任務(wù)隊(duì)列合理地分配資源,并監(jiān)視作業(yè)至其完成[12]。
SLURM 系統(tǒng)有3 種作業(yè)運(yùn)行模式:交互模式,以srun命令運(yùn)行;批處理模式,以sbatch 命令運(yùn)行;分配模式,以salloc 命令運(yùn)行。本文在集群中使用批處理方式sbatch命令來(lái)運(yùn)行腳本,具體批處理的參數(shù)及作用見(jiàn)表1 所列。
表1 SLURM調(diào)度系統(tǒng)參數(shù)說(shuō)明
Module工具的全稱(chēng)是module-environment,用來(lái)專(zhuān)門(mén)管理環(huán)境變量的工具。在Linux中,當(dāng)同一款編輯器、運(yùn)行庫(kù)、軟件存在多個(gè)版本且多個(gè)版本都需要在不同的場(chǎng)景或人員使用時(shí),如何配置這些環(huán)境變量是一個(gè)較為復(fù)雜的工程問(wèn)題。而Module 工具則提供了一個(gè)簡(jiǎn)單快速的方法。
安裝Module 工具,需要執(zhí)行該指令進(jìn)行初始化,完成source/usr/share/modules/init/bash之后,在實(shí)踐平臺(tái)中即可使用Module工具。常用的Module 指令及功能見(jiàn)表2 所列。
表2 Module命令功能說(shuō)明
學(xué)生創(chuàng)新中心人工智能實(shí)踐平臺(tái)面向全校學(xué)生的課程及科創(chuàng)提供技術(shù)支持與服務(wù),因此要考慮多種框架和網(wǎng)絡(luò),而不同版本框架對(duì)驅(qū)動(dòng)及環(huán)境的要求也不盡相同,于是安裝了如圖2所示的各類(lèi)模塊。經(jīng)過(guò)近3 年的測(cè)試運(yùn)行,基本囊括了學(xué)生科創(chuàng)與科研所需的常用軟件及驅(qū)動(dòng)。
圖2 人工智能實(shí)踐平臺(tái)常用軟件及驅(qū)動(dòng)
Anaconda[13]是一個(gè)基于Python 編程語(yǔ)言的數(shù)據(jù)科學(xué)平臺(tái),Anaconda的特點(diǎn)是擁有大量的科學(xué)包和一些依賴(lài)項(xiàng)。同時(shí)Anaconda支持創(chuàng)建虛擬環(huán)境,可以讓不同用戶(hù)在自己的環(huán)境下安裝和管理包。對(duì)于多用戶(hù)集群來(lái)說(shuō),這個(gè)特性將非常方便。因此,本架構(gòu)方案中采用Anaconda進(jìn)行深度學(xué)習(xí)環(huán)境的配置。
在選擇框架上做了基礎(chǔ)調(diào)研。在工業(yè)應(yīng)用領(lǐng)域,TensorFlow 依然保有優(yōu)勢(shì),尤其在TensorFlow 1.2 版本融合Keras 作為高級(jí)獨(dú)立應(yīng)用程序接口(Application Program Interface,API)之后,其在工業(yè)領(lǐng)域的優(yōu)勢(shì)則更加明顯。在研究領(lǐng)域,PyTorch 的使用率在近2 年飛速提升。69%的CVPR 論文、75%以上的NAACL 和ACL 論文,以及50%以上的ICLR 和ICML 論文都選擇使用PyTorch[14]。與此同時(shí),我們也積極推進(jìn)國(guó)產(chǎn)框架的生態(tài)布局,在集群上部署了華為自研的MindSpore深度學(xué)習(xí)環(huán)境。它是一個(gè)全場(chǎng)景深度學(xué)習(xí)框架,旨在實(shí)現(xiàn)易開(kāi)發(fā)、高效執(zhí)行、全場(chǎng)景覆蓋三大目標(biāo),不僅對(duì)于API友好、調(diào)試難度低,同時(shí)支持云、邊緣以及端側(cè)場(chǎng)景。實(shí)踐平臺(tái)中使用Anaconda 集成的深度學(xué)習(xí)框架,如圖3 所示。
圖3 人工智能實(shí)踐平臺(tái)集成的深度學(xué)習(xí)環(huán)境
考慮到使用本平臺(tái)的學(xué)生專(zhuān)業(yè)背景與計(jì)算機(jī)能力的差異,開(kāi)發(fā)了用戶(hù)友好的可視化界面,主要提供以下兩項(xiàng)功能:①云桌面,便于零開(kāi)發(fā)基礎(chǔ)的同學(xué)進(jìn)行一步步可視化操作,提升操作友好度;②云端Jupyter Notebook,可讓學(xué)生快速進(jìn)行代碼驗(yàn)證及案例調(diào)試,具體界面如圖4 所示。
圖4 人工智能實(shí)踐平臺(tái)可視化界面
由于硬件的數(shù)量有限,且為了提升資源的利用效率,制定了不同情況下的資源申請(qǐng)與使用方案,包括申請(qǐng)、續(xù)申請(qǐng)與算力提升申請(qǐng)。
初次申請(qǐng):每期開(kāi)始前,將設(shè)計(jì)預(yù)約問(wèn)卷,通過(guò)學(xué)生創(chuàng)新中心官方發(fā)送預(yù)約通知,根據(jù)問(wèn)卷反饋情況篩選100 名學(xué)生作為本期使用者,且為每個(gè)賬戶(hù)分配兩塊GPU的算力。在使用2 個(gè)月后,將自動(dòng)回收賬號(hào)與資源,準(zhǔn)備用于下一期資源開(kāi)放申請(qǐng)。
續(xù)用申請(qǐng):如有同學(xué)在上一期使用后,由于比賽或者項(xiàng)目的緊迫性仍需繼續(xù)使用資源,則需要填寫(xiě)“續(xù)用申請(qǐng)說(shuō)明”,并由課程導(dǎo)師簽字或出具相關(guān)證明,符合條件的同學(xué)將保留其賬號(hào)與資源,延續(xù)使用至下一期。
算力提升申請(qǐng):為進(jìn)一步激勵(lì)學(xué)生動(dòng)手實(shí)踐和科研創(chuàng)新,同學(xué)們可申請(qǐng)?zhí)嵘懔Γ▽⒃械? 塊GPU算力提升到4 塊甚至6 塊)。提出申請(qǐng)的同學(xué)雖被重點(diǎn)支持,但對(duì)他們也同時(shí)提出了更高的審核要求,如所參加的科創(chuàng)競(jìng)賽成績(jī)較優(yōu)秀,已進(jìn)入市賽、國(guó)賽等階段。
為了讓學(xué)生快速上手,運(yùn)維教師負(fù)責(zé)編寫(xiě)了詳盡的實(shí)驗(yàn)操作手冊(cè),該手冊(cè)以經(jīng)典的MNIST手寫(xiě)數(shù)字集為例,介紹了如何在平臺(tái)上使用顯卡對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,如圖5 所示。
圖5 實(shí)踐平臺(tái)使用手冊(cè)
具體的操作實(shí)踐步驟如下:
(1)ssh登錄,建議使用工具M(jìn)obaXterm;
(2)利用module指令加載所需模塊;
(3)利用Anaconda指令加載已安裝環(huán)境或自定義環(huán)境;
(4)使用SLURM調(diào)度系統(tǒng)的sbatch 指令提交測(cè)試腳本;
(5)通過(guò)sq指令查看任務(wù)運(yùn)行狀態(tài);
(6)如有報(bào)錯(cuò),通過(guò)錯(cuò)誤日志輸出調(diào)整代碼;
(7)最后通過(guò)輸出日志查看輸出結(jié)果。
平臺(tái)面向全校學(xué)生預(yù)約使用,考慮到部分學(xué)生基礎(chǔ)較弱,為了提升他們的使用及學(xué)習(xí)體驗(yàn),在本平臺(tái)放置了一系列經(jīng)典實(shí)踐案例與常用數(shù)據(jù)集(見(jiàn)表3)。
表3 經(jīng)典實(shí)踐案例及數(shù)據(jù)集
經(jīng)過(guò)近3 年的運(yùn)行、管理與維護(hù),該平臺(tái)每年服務(wù)學(xué)生數(shù)量1250人,其中本科生800人,研究生450 人。學(xué)生使用人工智能實(shí)踐平臺(tái),在相關(guān)頂會(huì)、頂刊發(fā)表論文數(shù)十篇,圖6 為其中一篇CVPR作者致謝。
圖6 學(xué)生科研成果致謝
平臺(tái)在競(jìng)賽方面也獲得豐富的產(chǎn)出,除支撐校內(nèi)賽外,該平臺(tái)總計(jì)支撐了校內(nèi)RoboMaster 機(jī)器人、VEX、RoboCup機(jī)器人、無(wú)人機(jī)、賽車(chē)隊(duì)等社團(tuán),獲市級(jí)以上獎(jiǎng)項(xiàng)40 余項(xiàng)(見(jiàn)表4)。
表4 大賽獲獎(jiǎng)
從硬件到軟件的一體化人工智能實(shí)踐平臺(tái)建設(shè),包含了硬件的架構(gòu)設(shè)計(jì)和軟件的系統(tǒng)設(shè)計(jì),同時(shí)關(guān)于具體運(yùn)維方式也給出了建設(shè)性方案。首先,利用SLURM的調(diào)度系統(tǒng)和Anaconda 集成環(huán)境為學(xué)生進(jìn)行人工智能算法實(shí)踐類(lèi)學(xué)習(xí)提供技術(shù)保障;其次,對(duì)于非工科學(xué)生,可視化界面操作及詳盡的指導(dǎo)手冊(cè)都較大提升了用戶(hù)使用友好度和操作的便捷性;最后利用規(guī)范化的申請(qǐng)管理方式,積極引導(dǎo)學(xué)生參與競(jìng)賽和科創(chuàng),不僅支撐發(fā)表了數(shù)十篇頂級(jí)會(huì)議論文,也助力學(xué)生賽隊(duì)斬獲了10 項(xiàng)冠軍及眾多賽事獎(jiǎng)項(xiàng)。我們提供的一體化人工智能建設(shè)方案解決了學(xué)生實(shí)踐能力不足的問(wèn)題,助力更多跨專(zhuān)業(yè)的學(xué)生掌握人工智能實(shí)踐技能,為我國(guó)“AI+X”復(fù)合型人才培養(yǎng)貢獻(xiàn)力量。