APP下载

基于Docker的大数据AI教学与实验系统

2018-09-14游向东徐圆圆欧阳松

软件 2018年8期
关键词:容器人工智能数据库

游向东,徐圆圆,欧阳松



基于Docker的大数据AI教学与实验系统

游向东,徐圆圆,欧阳松

(北京邮电大学 信息与通信工程学院,北京 100876)

大数据AI教学与实验系统是一个基于Docker容器技术研发的大数据人工智能在线教学、实验和科研的云平台。该云平台支持主流深度学习框架Tensorflow,能快速部署深度学习的训练环境,共享GPU计算资源,支持多人同时在线学习和实验。云平台还支持大数据hadoop实验,提供hadoop的安装和应用实验。在云平台上,老师可展开大数据、人工智能领域的教学与科研,学生可完成相关课程的学习、实验。本系统能有效降低大数据AI教学和科研的难度,利于高校大数据、人工智能的人才培养和科研创新。

人工智能;大数据;在线实验;机器学习;docker

0 引言

2017年8月,在国务院印发的《新一代人工智能发展规划》中明确提出:推动人工智能领域一级学科建设,把高端人才队伍建设作为人工智能发展的重中之重[1],完善人工智能教育体系等内容。《北京市加快科技创新培育人工智能产业的指导意见》也指出:搭建人工智能创新平台,支持国内外人工智能优势企业、高等学校、科研机构等开展合作,搭建开源技术创新平台,探索开放式协同创新模 式[2]。开发面向人工智能的开源开放平台、完善人工智能领域学科布局,推动设立人工智能专业,推动人工智能领域一级学科建设,加快人工智能相关学科方向的研究生培养。

另一方面,我们看到,人工智能的教学实验和科研创新,是一个综合性较强的新兴的领域。深度学习的实验成本高,通行的提供并行运算能力的Nvidia GPU对学生来说价格不菲;人工智能算法对数学要求高,需要较强的概率与统计、矩阵论等数学基础[3];涉及的计算机基础知识多,要求学生掌握Linux、Python、Java等计算机基础;平台搭建繁琐,需要将众多的开源软件、硬件资源结合与集成;实践性强,需要教学与实验结合,需要理论和实践的结合,需要将人工智能的算法在计算平台上去运行、验证,才能达到实验的目的。因此展开人工智能的教学实验和科研创新具有一定的门槛,对于普通高校的学生来说具有一定的学习难度。

因此针对高校在人工智能的教学与科研上述问题,本文研发一套“大数据AI教学与科研云平台”,为老师和学生解决人工智能在线教学与实验环境缺乏的现实问题。

1 系统原理和设计

1.1 系统的原理

系统包括物理层、容器层和平台层,如图1所示。

图1 系统结构图

“大数据AI教学与实验系统”是基于Docker容器技术,可快速创建随时可运行的实验环境,利用docker-API部署应用、维护、扩展机制等,方便地管理容器化的应用。系统预先针对人工智能实验内容构建一系列基于linux和深度学习框架的特定镜像,通过Docker镜像构建容器,为每个使用平台的用户开辟独立的实验环境。

系统分为如下三层:

平台层:应用软件和管理软件,主要有教学管理子系统、在线IDE子系统;

容器层:包含docker引擎、镜像、容器,docker编排管理;

物理层:CPU、GPU、存储设备、网络设备等。

1.2 系统分层结构

分层结构介绍:

(1)平台层(web管理):教学和实验管理、用户管理、容器管理界面、软硬件资源管理。

(2)平台层(IDE实验):在线IDE、git、gitlab、各种实验程序、数据集、算法库。

(3)容器层:含docker引擎、镜像、容器。利用Docker技术封装Tensorflow、caffe等深度学习计算框架;利用Docker技术封装mysql、redis数据库;利用docker-API进行配置、管理docker容器。

(4)驱动层:Linux操作系统的硬件驱动;Nvidia显卡GPU驱动CUDA。

(5)物理层:CPU 、GPU 、存储设备、网络设备等硬件模块,构成深度学习单服务器一体机或服务器集群。

表1 系统分层结构表

Tab.1 System hierarchy table

1.3 系统方案设计

1.3.1 系统硬件方案设计

硬件采用GPU+CPU混合架构,实现对数据的高性能并行处理;

服务器CPU选用英特尔E5-2600系列至强处理器;

每台服务器最多可插入4块英伟达GPU卡,可选配NVIDIA TITAN X、Tesla、GeForce

等各档次英伟达GPU卡,最大可提供每秒万亿次的单精度计算能力。

1.3.2 系统软件方案设计

软件采用B/S结构,SaaS服务模式。系统软件包括如下模块:

web后台模块,包括后端框架、web服务器、数据库、web接口的设计和开发。

web前端模块,包括前端框架、前端UI、前端编程,采用bootstrap、jquery和ajax等技术。

数据库模块:数据库采用Mysql,Redis。

深度学习模块:深度学习框架采用Tensorflow、Caffe。

机器学习模块:基于Python的机器学习,包括机器学习算法,如分类、聚类。

并行运算技术模块:包括GPU、CUDA、CuDNN、Nvidia docker,GPU资源的调度使用、实验排队,GPU的共享。

容器技术模块:Docker镜像制作、容器的生成、容器的调度。

在线IDE模块:用户可以通过在线IDE创建项目的工作空间,进行在线开发,调试等操作。在线IDE集成了git代码版本控制,用户可以选择GitHub、BitBucket、GitLab等任意的代码仓库。

1.4 系统平台应用软件子系统设计

A 用户管理子系统

包括用户注册管理、信息管理、权限管理、资源分配、使用情况管理模块。

B 容器管理子系统

对容器进行管理,包括Docker镜像制作,容器的生成、调度和编排。有容器列表、启动、停止、重启、删除、log查看等功能。

C 教学管理子系统

包含课程体系管理模块、课程管理模块。

D 学习管理子系统

含课程上机实验环境,有实验课程选择、文件管理、代码编辑、执行窗口。

E AI并行计算子系统

包括CUDA、CuDNN等GPU并行运算系统,GPU资源的调度、共享模块。

F hadoop应用子系统

包含hadoop的安装模块、hadoop的应用模块。

1.5 实验流程设计

(1)添加体系或模块

登录—教学管理—体系管理—添加或编辑—体系或模块,指定模块的镜像和相关参数。

(2)添加课程

登录—教学管理—课程管理—新增实验—填写内容。

(3)在线实验

登录—学习管理—上机实验—选择体系和模块—选择课程—开始学习—启动自己的容器—按说明做实验—退出登录—停止容器。

(4)上课教学

登录—学习管理—大数据教学或AI教学—在线ppt教学。

2 教学管理子系统的设计与实现

开发环境和开发工具:ubuntu14.04,Python2.7, Django1.9.9, Sublime。

关键技术:Django框架,js,jquery等。

Django是一个MVC框架,MVC是一种主流 的软件设计模式,其全名是Model View Controller,分别表示模型(model)、视图(view)、控制器(con­troller)[4]。MVC是通过编写业务的处理逻辑、将数据与界面分离显示,进而实现将众多业务的处理逻辑聚合到同一个部件里。通过这样的方式,使得在改进和优化界面促进用户体验时,不用重新编写业务处理逻辑。在Django 中MVC模式表现形式是模型(Model)、模板(Template)和视图(Views),因此称为 MTV模式。

各模块工作流程如图2所示。

模型Model:数据存取层,用于与数据库进行交互,一个表对应一个model类,表里面的字段同时对应model类的属性。

模版Template:业务逻辑层,处理与表现层相关的逻辑,定义在页面或其他文档中如何显示出来。

视图View:表现层,主要实现存取模型和调取相应模版的逻辑,一个视图是一个可调用对象, 不仅仅局限于一个函数[5]。

2.1 添加体系或模块

课程体系管理模块:可水平扩展的课程体系管理,本平台设计的体系包括:

人工智能实验:包含机器学习、深度学习、TensorFlow;大数据实验:hadoop安装、hadoop应用、R语言;基础实验:Linux、Python、数据库Mysql。

图2 MVC各模块工作流程图

添加基本流程如下:

登录—教学管理—体系管理—添加或编辑—体系或模块,指定模块的镜像和相关参数。

该模块前后端实现原理:用户点击“添加”按钮,输入相关名称、描述、镜像,点击提交,前端通过ajax的post方法将数据传输给后端,后台在view.py中写入函数获取前端传输的数据,进行相应处理后存入数据库。用户访问体系或模块,通过url跳转到view中对应的逻辑函数,从数据库中获取数据,进行一定处理以达到前端需要的格式后加载前端界面,即完成展示功能。

交互流程图如下:

图3 添加体系/模块交互流程图

本模块中体系和模块信息共用一个数据库,在数据库设计中通过设置parent_id字段来定义父节点和子节点。为了更好的表现层级关系,前端采用treeview框架,这是一款多级列表树插件,实现以简单和优雅的方式来显示一些继承树结构[6]。

实现效果图如下:

图4 体系/模块界面图

2.2 添加、编辑课程

课程管理模块:在每一个课程体系的具体模块下,可水平扩展教学和实验课程内容,教学课程内容基于markdown格式编写,用HTML格式展示[7]。课程内容包含实验目的、实验步骤,有演示代码和代码说明。实验内容包括,选择实验体系、实验模块,填写实验名称、实验简介、实验时长、实验描述,其中实验描述为markdown格式。

基本流程如下:

登录—教学管理—课程管理—新增实验—填写内容

课程管理模块主要包括以下功能:课程添加,课程编辑,课程删除,markdown格式转换,分页展示,关键词搜索等。

课程添加编辑功能基于django web的前后端交互实现,通过ajax局部刷新进行数据交互,利用django的过滤标签linebreaksbr将markdown格式转换为浏览器识别的html格式。通过pagelist类来定义当前页面、总页数、每页显示内容数实现分页显示。关键词搜索功能是基于Django的Q对象进行复杂查询,通过使用符号&或者|将多个Q()对象组合起来传递给filter(),exclude(),get()等函数,Django会将多个Q()对象的关系主动理解成“且(and)”关系。将多个Q()对象组合起来后,Django会自动生成新的Q(),从而对条件进行分组组合成更加复杂的查询逻辑[8-9]。

页面实现效果如下图。

3 学生学习管理子系统

学生在线实验流程为:登录—学习管理—上机实验—选择体系和模块—选择课程—开始学习—启动自己的容器—按说明做实验—退出登录—停止容器。

交互流程图如下。

学生选择课程后,点击开始学习,前端通过ajax将实验id,模块id,实验详细信息传输给后台,后台获取相关数据后通过django的数据查询获取相应镜像信息,包括imagehost, index_port, repository等,根据自定义的容器名称命名规则为每个学生匹配对应的容器。后台调用docker-API的接口,通过startcontainer函数开启对应容器,前端启动上机实验界面。当学生学习完毕退出时,后台调用docker- API的killcontainer函数关闭容器进程,结束本次实验课程,释放占用的资源。

图5 课程编辑界面效果图

图6 实验展示界面图

图7 学生在线实验交互流程图

实现界面如下图。

图8 实验课程界面图

4 结语

本文针对在高校的人工智能的教学与科研的问题,研发了一套“大数据AI教学与科研云平台”,为老师和学生解决人工智能实验入门难、社会培训机构费用高、人工智能计算资源短缺、实验和科研环境配置复杂难度大、实验数据缺失、实训项目较少、资源管理缺失等问题[10]。平台提供了一个开放的、开源的、互利共享的人工智能学习和研究环境,提高广大师生的研究兴趣和水平。

本文研发的教学与科研的云平台,对加快AI专业的课程建设,对开展高校人工智能的教学与实验、科研和创新,对加快人工智能的人才培育和科技创新具有一定的意义。

[1] 张婷嫣, 桂腾昕, 邓万风. 课堂管理软件的对比与分析[J]. 软件, 2018, 39(1): 191-194.

[2] 闫实, 付佳, 石莉. 大数据环境下基于智慧校园的教学改革[J]. 软件, 2018, 39(2): 208-211.

[3] 国发〔2017〕35号. 新一代人工智能发展规划[S].北京: 国务院, 2017.

[4] 汪子尧, 贾娟. 人工智能的前生、今世与未来[J]. 软件, 2018, 39(2): 223-226.

[5] 腾讯研究院. 人工智能[M]. 北京: 中国人民大学出版社, 2017.

[6] 刘鹏. 深度学习[M]. 北京: 电子工业出版社, 2017.

[7] 朱福喜. 人工智能[M]. 北京: 清华大学出版社, 2017.

[8] 李凡长, 钱旭培, 谢琳, 何书萍. 机器学习理论及应用[J]. 计算机工程与科学, 2012, Vol.34(09).

[9] 严冬梅. 数据库原理[M]. 北京: 清华大学出版社, 2011.

[10] 刘思尧, 李强, 李斌. 基于Docker 技术的容器隔离性研究[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

游向东,男,高级工程师,主要研究方向:移动互联网与嵌入式多媒体系统;徐圆圆,女,研究生在读,主要研究方向:移动互联网与嵌入式多媒体系统;欧阳松,男,研究生在读,主要研究方向:移动互联网与嵌入式多媒体系统。

本文著录格式:游向东,徐圆圆,欧阳松. 基于Docker的大数据AI教学与实验系统[J]. 软件,2018,39(8):192-197

猜你喜欢

容器人工智能数据库
Different Containers不同的容器
难以置信的事情
人工智能与就业