游向東,徐圓圓,歐陽松
?
基于Docker的大數(shù)據(jù)AI教學(xué)與實(shí)驗(yàn)系統(tǒng)
游向東,徐圓圓,歐陽松
(北京郵電大學(xué) 信息與通信工程學(xué)院,北京 100876)
大數(shù)據(jù)AI教學(xué)與實(shí)驗(yàn)系統(tǒng)是一個基于Docker容器技術(shù)研發(fā)的大數(shù)據(jù)人工智能在線教學(xué)、實(shí)驗(yàn)和科研的云平臺。該云平臺支持主流深度學(xué)習(xí)框架Tensorflow,能快速部署深度學(xué)習(xí)的訓(xùn)練環(huán)境,共享GPU計(jì)算資源,支持多人同時在線學(xué)習(xí)和實(shí)驗(yàn)。云平臺還支持大數(shù)據(jù)hadoop實(shí)驗(yàn),提供hadoop的安裝和應(yīng)用實(shí)驗(yàn)。在云平臺上,老師可展開大數(shù)據(jù)、人工智能領(lǐng)域的教學(xué)與科研,學(xué)生可完成相關(guān)課程的學(xué)習(xí)、實(shí)驗(yàn)。本系統(tǒng)能有效降低大數(shù)據(jù)AI教學(xué)和科研的難度,利于高校大數(shù)據(jù)、人工智能的人才培養(yǎng)和科研創(chuàng)新。
人工智能;大數(shù)據(jù);在線實(shí)驗(yàn);機(jī)器學(xué)習(xí);docker
2017年8月,在國務(wù)院印發(fā)的《新一代人工智能發(fā)展規(guī)劃》中明確提出:推動人工智能領(lǐng)域一級學(xué)科建設(shè),把高端人才隊(duì)伍建設(shè)作為人工智能發(fā)展的重中之重[1],完善人工智能教育體系等內(nèi)容?!侗本┦屑涌炜萍紕?chuàng)新培育人工智能產(chǎn)業(yè)的指導(dǎo)意見》也指出:搭建人工智能創(chuàng)新平臺,支持國內(nèi)外人工智能優(yōu)勢企業(yè)、高等學(xué)校、科研機(jī)構(gòu)等開展合作,搭建開源技術(shù)創(chuàng)新平臺,探索開放式協(xié)同創(chuàng)新模 式[2]。開發(fā)面向人工智能的開源開放平臺、完善人工智能領(lǐng)域?qū)W科布局,推動設(shè)立人工智能專業(yè),推動人工智能領(lǐng)域一級學(xué)科建設(shè),加快人工智能相關(guān)學(xué)科方向的研究生培養(yǎng)。
另一方面,我們看到,人工智能的教學(xué)實(shí)驗(yàn)和科研創(chuàng)新,是一個綜合性較強(qiáng)的新興的領(lǐng)域。深度學(xué)習(xí)的實(shí)驗(yàn)成本高,通行的提供并行運(yùn)算能力的Nvidia GPU對學(xué)生來說價格不菲;人工智能算法對數(shù)學(xué)要求高,需要較強(qiáng)的概率與統(tǒng)計(jì)、矩陣論等數(shù)學(xué)基礎(chǔ)[3];涉及的計(jì)算機(jī)基礎(chǔ)知識多,要求學(xué)生掌握Linux、Python、Java等計(jì)算機(jī)基礎(chǔ);平臺搭建繁瑣,需要將眾多的開源軟件、硬件資源結(jié)合與集成;實(shí)踐性強(qiáng),需要教學(xué)與實(shí)驗(yàn)結(jié)合,需要理論和實(shí)踐的結(jié)合,需要將人工智能的算法在計(jì)算平臺上去運(yùn)行、驗(yàn)證,才能達(dá)到實(shí)驗(yàn)的目的。因此展開人工智能的教學(xué)實(shí)驗(yàn)和科研創(chuàng)新具有一定的門檻,對于普通高校的學(xué)生來說具有一定的學(xué)習(xí)難度。
因此針對高校在人工智能的教學(xué)與科研上述問題,本文研發(fā)一套“大數(shù)據(jù)AI教學(xué)與科研云平臺”,為老師和學(xué)生解決人工智能在線教學(xué)與實(shí)驗(yàn)環(huán)境缺乏的現(xiàn)實(shí)問題。
系統(tǒng)包括物理層、容器層和平臺層,如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)圖
“大數(shù)據(jù)AI教學(xué)與實(shí)驗(yàn)系統(tǒng)”是基于Docker容器技術(shù),可快速創(chuàng)建隨時可運(yùn)行的實(shí)驗(yàn)環(huán)境,利用docker-API部署應(yīng)用、維護(hù)、擴(kuò)展機(jī)制等,方便地管理容器化的應(yīng)用。系統(tǒng)預(yù)先針對人工智能實(shí)驗(yàn)內(nèi)容構(gòu)建一系列基于linux和深度學(xué)習(xí)框架的特定鏡像,通過Docker鏡像構(gòu)建容器,為每個使用平臺的用戶開辟獨(dú)立的實(shí)驗(yàn)環(huán)境。
系統(tǒng)分為如下三層:
平臺層:應(yīng)用軟件和管理軟件,主要有教學(xué)管理子系統(tǒng)、在線IDE子系統(tǒng);
容器層:包含docker引擎、鏡像、容器,docker編排管理;
物理層:CPU、GPU、存儲設(shè)備、網(wǎng)絡(luò)設(shè)備等。
分層結(jié)構(gòu)介紹:
(1)平臺層(web管理):教學(xué)和實(shí)驗(yàn)管理、用戶管理、容器管理界面、軟硬件資源管理。
(2)平臺層(IDE實(shí)驗(yàn)):在線IDE、git、gitlab、各種實(shí)驗(yàn)程序、數(shù)據(jù)集、算法庫。
(3)容器層:含docker引擎、鏡像、容器。利用Docker技術(shù)封裝Tensorflow、caffe等深度學(xué)習(xí)計(jì)算框架;利用Docker技術(shù)封裝mysql、redis數(shù)據(jù)庫;利用docker-API進(jìn)行配置、管理docker容器。
(4)驅(qū)動層:Linux操作系統(tǒng)的硬件驅(qū)動;Nvidia顯卡GPU驅(qū)動CUDA。
(5)物理層:CPU 、GPU 、存儲設(shè)備、網(wǎng)絡(luò)設(shè)備等硬件模塊,構(gòu)成深度學(xué)習(xí)單服務(wù)器一體機(jī)或服務(wù)器集群。
表1 系統(tǒng)分層結(jié)構(gòu)表
Tab.1 System hierarchy table
1.3.1 系統(tǒng)硬件方案設(shè)計(jì)
硬件采用GPU+CPU混合架構(gòu),實(shí)現(xiàn)對數(shù)據(jù)的高性能并行處理;
服務(wù)器CPU選用英特爾E5-2600系列至強(qiáng)處理器;
每臺服務(wù)器最多可插入4塊英偉達(dá)GPU卡,可選配NVIDIA TITAN X、Tesla、GeForce
等各檔次英偉達(dá)GPU卡,最大可提供每秒萬億次的單精度計(jì)算能力。
1.3.2 系統(tǒng)軟件方案設(shè)計(jì)
軟件采用B/S結(jié)構(gòu),SaaS服務(wù)模式。系統(tǒng)軟件包括如下模塊:
web后臺模塊,包括后端框架、web服務(wù)器、數(shù)據(jù)庫、web接口的設(shè)計(jì)和開發(fā)。
web前端模塊,包括前端框架、前端UI、前端編程,采用bootstrap、jquery和ajax等技術(shù)。
數(shù)據(jù)庫模塊:數(shù)據(jù)庫采用Mysql,Redis。
深度學(xué)習(xí)模塊:深度學(xué)習(xí)框架采用Tensorflow、Caffe。
機(jī)器學(xué)習(xí)模塊:基于Python的機(jī)器學(xué)習(xí),包括機(jī)器學(xué)習(xí)算法,如分類、聚類。
并行運(yùn)算技術(shù)模塊:包括GPU、CUDA、CuDNN、Nvidia docker,GPU資源的調(diào)度使用、實(shí)驗(yàn)排隊(duì),GPU的共享。
容器技術(shù)模塊:Docker鏡像制作、容器的生成、容器的調(diào)度。
在線IDE模塊:用戶可以通過在線IDE創(chuàng)建項(xiàng)目的工作空間,進(jìn)行在線開發(fā),調(diào)試等操作。在線IDE集成了git代碼版本控制,用戶可以選擇GitHub、BitBucket、GitLab等任意的代碼倉庫。
A 用戶管理子系統(tǒng)
包括用戶注冊管理、信息管理、權(quán)限管理、資源分配、使用情況管理模塊。
B 容器管理子系統(tǒng)
對容器進(jìn)行管理,包括Docker鏡像制作,容器的生成、調(diào)度和編排。有容器列表、啟動、停止、重啟、刪除、log查看等功能。
C 教學(xué)管理子系統(tǒng)
包含課程體系管理模塊、課程管理模塊。
D 學(xué)習(xí)管理子系統(tǒng)
含課程上機(jī)實(shí)驗(yàn)環(huán)境,有實(shí)驗(yàn)課程選擇、文件管理、代碼編輯、執(zhí)行窗口。
E AI并行計(jì)算子系統(tǒng)
包括CUDA、CuDNN等GPU并行運(yùn)算系統(tǒng),GPU資源的調(diào)度、共享模塊。
F hadoop應(yīng)用子系統(tǒng)
包含hadoop的安裝模塊、hadoop的應(yīng)用模塊。
(1)添加體系或模塊
登錄—教學(xué)管理—體系管理—添加或編輯—體系或模塊,指定模塊的鏡像和相關(guān)參數(shù)。
(2)添加課程
登錄—教學(xué)管理—課程管理—新增實(shí)驗(yàn)—填寫內(nèi)容。
(3)在線實(shí)驗(yàn)
登錄—學(xué)習(xí)管理—上機(jī)實(shí)驗(yàn)—選擇體系和模塊—選擇課程—開始學(xué)習(xí)—啟動自己的容器—按說明做實(shí)驗(yàn)—退出登錄—停止容器。
(4)上課教學(xué)
登錄—學(xué)習(xí)管理—大數(shù)據(jù)教學(xué)或AI教學(xué)—在線ppt教學(xué)。
開發(fā)環(huán)境和開發(fā)工具:ubuntu14.04,Python2.7, Django1.9.9, Sublime。
關(guān)鍵技術(shù):Django框架,js,jquery等。
Django是一個MVC框架,MVC是一種主流 的軟件設(shè)計(jì)模式,其全名是Model View Controller,分別表示模型(model)、視圖(view)、控制器(con-troller)[4]。MVC是通過編寫業(yè)務(wù)的處理邏輯、將數(shù)據(jù)與界面分離顯示,進(jìn)而實(shí)現(xiàn)將眾多業(yè)務(wù)的處理邏輯聚合到同一個部件里。通過這樣的方式,使得在改進(jìn)和優(yōu)化界面促進(jìn)用戶體驗(yàn)時,不用重新編寫業(yè)務(wù)處理邏輯。在Django 中MVC模式表現(xiàn)形式是模型(Model)、模板(Template)和視圖(Views),因此稱為 MTV模式。
各模塊工作流程如圖2所示。
模型Model:數(shù)據(jù)存取層,用于與數(shù)據(jù)庫進(jìn)行交互,一個表對應(yīng)一個model類,表里面的字段同時對應(yīng)model類的屬性。
模版Template:業(yè)務(wù)邏輯層,處理與表現(xiàn)層相關(guān)的邏輯,定義在頁面或其他文檔中如何顯示出來。
視圖View:表現(xiàn)層,主要實(shí)現(xiàn)存取模型和調(diào)取相應(yīng)模版的邏輯,一個視圖是一個可調(diào)用對象, 不僅僅局限于一個函數(shù)[5]。
課程體系管理模塊:可水平擴(kuò)展的課程體系管理,本平臺設(shè)計(jì)的體系包括:
人工智能實(shí)驗(yàn):包含機(jī)器學(xué)習(xí)、深度學(xué)習(xí)、TensorFlow;大數(shù)據(jù)實(shí)驗(yàn):hadoop安裝、hadoop應(yīng)用、R語言;基礎(chǔ)實(shí)驗(yàn):Linux、Python、數(shù)據(jù)庫Mysql。
圖2 MVC各模塊工作流程圖
添加基本流程如下:
登錄—教學(xué)管理—體系管理—添加或編輯—體系或模塊,指定模塊的鏡像和相關(guān)參數(shù)。
該模塊前后端實(shí)現(xiàn)原理:用戶點(diǎn)擊“添加”按鈕,輸入相關(guān)名稱、描述、鏡像,點(diǎn)擊提交,前端通過ajax的post方法將數(shù)據(jù)傳輸給后端,后臺在view.py中寫入函數(shù)獲取前端傳輸?shù)臄?shù)據(jù),進(jìn)行相應(yīng)處理后存入數(shù)據(jù)庫。用戶訪問體系或模塊,通過url跳轉(zhuǎn)到view中對應(yīng)的邏輯函數(shù),從數(shù)據(jù)庫中獲取數(shù)據(jù),進(jìn)行一定處理以達(dá)到前端需要的格式后加載前端界面,即完成展示功能。
交互流程圖如下:
圖3 添加體系/模塊交互流程圖
本模塊中體系和模塊信息共用一個數(shù)據(jù)庫,在數(shù)據(jù)庫設(shè)計(jì)中通過設(shè)置parent_id字段來定義父節(jié)點(diǎn)和子節(jié)點(diǎn)。為了更好的表現(xiàn)層級關(guān)系,前端采用treeview框架,這是一款多級列表樹插件,實(shí)現(xiàn)以簡單和優(yōu)雅的方式來顯示一些繼承樹結(jié)構(gòu)[6]。
實(shí)現(xiàn)效果圖如下:
圖4 體系/模塊界面圖
課程管理模塊:在每一個課程體系的具體模塊下,可水平擴(kuò)展教學(xué)和實(shí)驗(yàn)課程內(nèi)容,教學(xué)課程內(nèi)容基于markdown格式編寫,用HTML格式展示[7]。課程內(nèi)容包含實(shí)驗(yàn)?zāi)康?、?shí)驗(yàn)步驟,有演示代碼和代碼說明。實(shí)驗(yàn)內(nèi)容包括,選擇實(shí)驗(yàn)體系、實(shí)驗(yàn)?zāi)K,填寫實(shí)驗(yàn)名稱、實(shí)驗(yàn)簡介、實(shí)驗(yàn)時長、實(shí)驗(yàn)描述,其中實(shí)驗(yàn)描述為markdown格式。
基本流程如下:
登錄—教學(xué)管理—課程管理—新增實(shí)驗(yàn)—填寫內(nèi)容
課程管理模塊主要包括以下功能:課程添加,課程編輯,課程刪除,markdown格式轉(zhuǎn)換,分頁展示,關(guān)鍵詞搜索等。
課程添加編輯功能基于django web的前后端交互實(shí)現(xiàn),通過ajax局部刷新進(jìn)行數(shù)據(jù)交互,利用django的過濾標(biāo)簽linebreaksbr將markdown格式轉(zhuǎn)換為瀏覽器識別的html格式。通過pagelist類來定義當(dāng)前頁面、總頁數(shù)、每頁顯示內(nèi)容數(shù)實(shí)現(xiàn)分頁顯示。關(guān)鍵詞搜索功能是基于Django的Q對象進(jìn)行復(fù)雜查詢,通過使用符號&或者|將多個Q()對象組合起來傳遞給filter(),exclude(),get()等函數(shù),Django會將多個Q()對象的關(guān)系主動理解成“且(and)”關(guān)系。將多個Q()對象組合起來后,Django會自動生成新的Q(),從而對條件進(jìn)行分組組合成更加復(fù)雜的查詢邏輯[8-9]。
頁面實(shí)現(xiàn)效果如下圖。
學(xué)生在線實(shí)驗(yàn)流程為:登錄—學(xué)習(xí)管理—上機(jī)實(shí)驗(yàn)—選擇體系和模塊—選擇課程—開始學(xué)習(xí)—啟動自己的容器—按說明做實(shí)驗(yàn)—退出登錄—停止容器。
交互流程圖如下。
學(xué)生選擇課程后,點(diǎn)擊開始學(xué)習(xí),前端通過ajax將實(shí)驗(yàn)id,模塊id,實(shí)驗(yàn)詳細(xì)信息傳輸給后臺,后臺獲取相關(guān)數(shù)據(jù)后通過django的數(shù)據(jù)查詢獲取相應(yīng)鏡像信息,包括imagehost, index_port, repository等,根據(jù)自定義的容器名稱命名規(guī)則為每個學(xué)生匹配對應(yīng)的容器。后臺調(diào)用docker-API的接口,通過startcontainer函數(shù)開啟對應(yīng)容器,前端啟動上機(jī)實(shí)驗(yàn)界面。當(dāng)學(xué)生學(xué)習(xí)完畢退出時,后臺調(diào)用docker- API的killcontainer函數(shù)關(guān)閉容器進(jìn)程,結(jié)束本次實(shí)驗(yàn)課程,釋放占用的資源。
圖5 課程編輯界面效果圖
圖6 實(shí)驗(yàn)展示界面圖
圖7 學(xué)生在線實(shí)驗(yàn)交互流程圖
實(shí)現(xiàn)界面如下圖。
圖8 實(shí)驗(yàn)課程界面圖
本文針對在高校的人工智能的教學(xué)與科研的問題,研發(fā)了一套“大數(shù)據(jù)AI教學(xué)與科研云平臺”,為老師和學(xué)生解決人工智能實(shí)驗(yàn)入門難、社會培訓(xùn)機(jī)構(gòu)費(fèi)用高、人工智能計(jì)算資源短缺、實(shí)驗(yàn)和科研環(huán)境配置復(fù)雜難度大、實(shí)驗(yàn)數(shù)據(jù)缺失、實(shí)訓(xùn)項(xiàng)目較少、資源管理缺失等問題[10]。平臺提供了一個開放的、開源的、互利共享的人工智能學(xué)習(xí)和研究環(huán)境,提高廣大師生的研究興趣和水平。
本文研發(fā)的教學(xué)與科研的云平臺,對加快AI專業(yè)的課程建設(shè),對開展高校人工智能的教學(xué)與實(shí)驗(yàn)、科研和創(chuàng)新,對加快人工智能的人才培育和科技創(chuàng)新具有一定的意義。
[1] 張婷嫣, 桂騰昕, 鄧萬風(fēng). 課堂管理軟件的對比與分析[J]. 軟件, 2018, 39(1): 191-194.
[2] 閆實(shí), 付佳, 石莉. 大數(shù)據(jù)環(huán)境下基于智慧校園的教學(xué)改革[J]. 軟件, 2018, 39(2): 208-211.
[3] 國發(fā)〔2017〕35號. 新一代人工智能發(fā)展規(guī)劃[S].北京: 國務(wù)院, 2017.
[4] 汪子堯, 賈娟. 人工智能的前生、今世與未來[J]. 軟件, 2018, 39(2): 223-226.
[5] 騰訊研究院. 人工智能[M]. 北京: 中國人民大學(xué)出版社, 2017.
[6] 劉鵬. 深度學(xué)習(xí)[M]. 北京: 電子工業(yè)出版社, 2017.
[7] 朱福喜. 人工智能[M]. 北京: 清華大學(xué)出版社, 2017.
[8] 李凡長, 錢旭培, 謝琳, 何書萍. 機(jī)器學(xué)習(xí)理論及應(yīng)用[J]. 計(jì)算機(jī)工程與科學(xué), 2012, Vol.34(09).
[9] 嚴(yán)冬梅. 數(shù)據(jù)庫原理[M]. 北京: 清華大學(xué)出版社, 2011.
[10] 劉思堯, 李強(qiáng), 李斌. 基于Docker 技術(shù)的容器隔離性研究[J]. 軟件, 2015, 36(4): 110-113.
Big Data AI Teaching and Experiment System Based on Docker
YOU Xiang-dong, XU Yuan-yuan, OU Yang-song
(Beijing University of Posts and Telecommunications, Institute of Information and communication, Beijing 100876, China)
The Big Data AI Teaching and Experiment System is a cloud platform for online teaching, experimentation and research of big data artificial intelligence based on Docker container technology. The cloud platform supports the mainstream deep learning framework Tensorflow, which can quickly deploy a deep learning training environment, share GPU computing resources, and support multi-person simultaneous online learning and experimentation. The cloud platform also supports big data Hadoop experiments, providing Hadoop installation and application experiments. On the cloud platform, teachers can carry out teaching and research in the field of big data and artificial intelligence. Students can complete the study and experiment of relevant courses. The system can effectively reduce the difficulty of big data AI teaching and scientific research, and is conducive to the talent training and scientific research innovation of university big data and artificial intelligence.
Artificial intelligence; Big data; Online experiment; Machine learning; Docker
TP311.1
A
10.3969/j.issn.1003-6970.2018.08.040
游向東,男,高級工程師,主要研究方向:移動互聯(lián)網(wǎng)與嵌入式多媒體系統(tǒng);徐圓圓,女,研究生在讀,主要研究方向:移動互聯(lián)網(wǎng)與嵌入式多媒體系統(tǒng);歐陽松,男,研究生在讀,主要研究方向:移動互聯(lián)網(wǎng)與嵌入式多媒體系統(tǒng)。
本文著錄格式:游向東,徐圓圓,歐陽松. 基于Docker的大數(shù)據(jù)AI教學(xué)與實(shí)驗(yàn)系統(tǒng)[J]. 軟件,2018,39(8):192-197