楚朋志,肖雄子彦,陈江平,徐季旻,熊振华
(上海交通大学a.学生创新中心;b.生物医学工程学院,上海 200240)
2018年,教育部颁发《高等学校人工智能创新行动计划》提出,“推动高校人工智能学科建设、人才培养、理论创新、技术突破和应用示范,为构筑人工智能发展优势提供战略支撑。”2020 年3月,教育部、发改委、财政部联合印发《关于“双一流”建设高校,促进学科融合加快人工智能领域学生培养的若干意见》,提出依托“双一流”建设,深化人工智能内涵,构建基础理论人才与“人工智能+X”复合型人才并重的培养体系,探索深度融合的学科建设和人才培养模式[1-4]。一系列政策表明,智能时代大潮呼唤高等教育优化人工智能专业新结构,系统化培养人工智能领域人才,为我国新一代人工智能发展提供战略支撑。
然而在具体的人才培养过程中,我们也会遇到很多问题。首先,大量学生并没有专业硬件可以进行实验操作,造成了理论与实践的脱节,往往在上完课后,无法通过实践加深对算法及网络的认知,最终导致纸上空谈[5];其次,人工智能教学实践环境建设门槛高,以机器学习和模式识别为例,目前主要有Matlab、Python、R 等不同编程语言,对深度学习来说,又需要搭建不同的框架,如TensorFlow[6]、Caffe[7]、MindSpore[8]、Pytorch[9]等。不同的环境的安装配置对学生来说较为繁琐,尤其对交叉学科中非工科专业的学生来讲更是困难重重;同时,目前实践环节中的教学案例较少,实践案例有限且相互孤立,无法进一步提升学生能力。因此如何建设一个管理方便、操作便捷、利于学习、高性价比的人工智能实践平台至关重要。
上海交通大学学生创新中心人工智能实践平台是一个面向全校学生开放、周期性预约的高性能并行计算实训平台,包含了中央处理单元(Central Processing Unit,CPU)与图像处理单元(Graphics Processing Unit,GPU)。其硬件结构包括2 个管理节点(CPU:E52620,内存:128 GB),其中一个为登录节点,一个为管理控制节点;一套并行存储(2 个IO 节点,300 TB 可用容量);14 个GPU计算节点(CPU:5118,GPU:1080TI,内存:128 GB);一套FDR 56 GB Infini-band 高速网络[10]。
通常用每秒所执行的浮点运算次数(Floating Point Operations Per Second,FLOPS)来衡量电脑的计算能力,1 PFLOPS 为1024 TFLOPS,即一千万亿次浮点指令/s。该平台单精度理论峰值约1 PFLOPS,可为每位用户提供约为30 FLOPS的运算能力,具体架构见图1。
图1 人工智能实践平台硬件架构
Linux 资源管理工具(Simple Linux Utility for Resource Management,SLURM)[11]是一种可用于大型计算节点集群的高度可伸缩和容错的集群管理器和作业调度系统,被世界范围内的超级计算机和计算集群广泛采用。SLURM维护着一个待处理工作的队列并管理此工作的整体资源利用。它以一种共享或非共享的方式管理可用的计算节点(取决于资源的需求),以供用户执行工作。SLURM 会为任务队列合理地分配资源,并监视作业至其完成[12]。
SLURM 系统有3 种作业运行模式:交互模式,以srun命令运行;批处理模式,以sbatch 命令运行;分配模式,以salloc 命令运行。本文在集群中使用批处理方式sbatch命令来运行脚本,具体批处理的参数及作用见表1 所列。
表1 SLURM调度系统参数说明
Module工具的全称是module-environment,用来专门管理环境变量的工具。在Linux中,当同一款编辑器、运行库、软件存在多个版本且多个版本都需要在不同的场景或人员使用时,如何配置这些环境变量是一个较为复杂的工程问题。而Module 工具则提供了一个简单快速的方法。
安装Module 工具,需要执行该指令进行初始化,完成source/usr/share/modules/init/bash之后,在实践平台中即可使用Module工具。常用的Module 指令及功能见表2 所列。
表2 Module命令功能说明
学生创新中心人工智能实践平台面向全校学生的课程及科创提供技术支持与服务,因此要考虑多种框架和网络,而不同版本框架对驱动及环境的要求也不尽相同,于是安装了如图2所示的各类模块。经过近3 年的测试运行,基本囊括了学生科创与科研所需的常用软件及驱动。
图2 人工智能实践平台常用软件及驱动
Anaconda[13]是一个基于Python 编程语言的数据科学平台,Anaconda的特点是拥有大量的科学包和一些依赖项。同时Anaconda支持创建虚拟环境,可以让不同用户在自己的环境下安装和管理包。对于多用户集群来说,这个特性将非常方便。因此,本架构方案中采用Anaconda进行深度学习环境的配置。
在选择框架上做了基础调研。在工业应用领域,TensorFlow 依然保有优势,尤其在TensorFlow 1.2 版本融合Keras 作为高级独立应用程序接口(Application Program Interface,API)之后,其在工业领域的优势则更加明显。在研究领域,PyTorch 的使用率在近2 年飞速提升。69%的CVPR 论文、75%以上的NAACL 和ACL 论文,以及50%以上的ICLR 和ICML 论文都选择使用PyTorch[14]。与此同时,我们也积极推进国产框架的生态布局,在集群上部署了华为自研的MindSpore深度学习环境。它是一个全场景深度学习框架,旨在实现易开发、高效执行、全场景覆盖三大目标,不仅对于API友好、调试难度低,同时支持云、边缘以及端侧场景。实践平台中使用Anaconda 集成的深度学习框架,如图3 所示。
图3 人工智能实践平台集成的深度学习环境
考虑到使用本平台的学生专业背景与计算机能力的差异,开发了用户友好的可视化界面,主要提供以下两项功能:①云桌面,便于零开发基础的同学进行一步步可视化操作,提升操作友好度;②云端Jupyter Notebook,可让学生快速进行代码验证及案例调试,具体界面如图4 所示。
图4 人工智能实践平台可视化界面
由于硬件的数量有限,且为了提升资源的利用效率,制定了不同情况下的资源申请与使用方案,包括申请、续申请与算力提升申请。
初次申请:每期开始前,将设计预约问卷,通过学生创新中心官方发送预约通知,根据问卷反馈情况筛选100 名学生作为本期使用者,且为每个账户分配两块GPU的算力。在使用2 个月后,将自动回收账号与资源,准备用于下一期资源开放申请。
续用申请:如有同学在上一期使用后,由于比赛或者项目的紧迫性仍需继续使用资源,则需要填写“续用申请说明”,并由课程导师签字或出具相关证明,符合条件的同学将保留其账号与资源,延续使用至下一期。
算力提升申请:为进一步激励学生动手实践和科研创新,同学们可申请提升算力(将原有的2 块GPU算力提升到4 块甚至6 块)。提出申请的同学虽被重点支持,但对他们也同时提出了更高的审核要求,如所参加的科创竞赛成绩较优秀,已进入市赛、国赛等阶段。
为了让学生快速上手,运维教师负责编写了详尽的实验操作手册,该手册以经典的MNIST手写数字集为例,介绍了如何在平台上使用显卡对网络进行训练,如图5 所示。
图5 实践平台使用手册
具体的操作实践步骤如下:
(1)ssh登录,建议使用工具MobaXterm;
(2)利用module指令加载所需模块;
(3)利用Anaconda指令加载已安装环境或自定义环境;
(4)使用SLURM调度系统的sbatch 指令提交测试脚本;
(5)通过sq指令查看任务运行状态;
(6)如有报错,通过错误日志输出调整代码;
(7)最后通过输出日志查看输出结果。
平台面向全校学生预约使用,考虑到部分学生基础较弱,为了提升他们的使用及学习体验,在本平台放置了一系列经典实践案例与常用数据集(见表3)。
表3 经典实践案例及数据集
经过近3 年的运行、管理与维护,该平台每年服务学生数量1250人,其中本科生800人,研究生450 人。学生使用人工智能实践平台,在相关顶会、顶刊发表论文数十篇,图6 为其中一篇CVPR作者致谢。
图6 学生科研成果致谢
平台在竞赛方面也获得丰富的产出,除支撑校内赛外,该平台总计支撑了校内RoboMaster 机器人、VEX、RoboCup机器人、无人机、赛车队等社团,获市级以上奖项40 余项(见表4)。
表4 大赛获奖
从硬件到软件的一体化人工智能实践平台建设,包含了硬件的架构设计和软件的系统设计,同时关于具体运维方式也给出了建设性方案。首先,利用SLURM的调度系统和Anaconda 集成环境为学生进行人工智能算法实践类学习提供技术保障;其次,对于非工科学生,可视化界面操作及详尽的指导手册都较大提升了用户使用友好度和操作的便捷性;最后利用规范化的申请管理方式,积极引导学生参与竞赛和科创,不仅支撑发表了数十篇顶级会议论文,也助力学生赛队斩获了10 项冠军及众多赛事奖项。我们提供的一体化人工智能建设方案解决了学生实践能力不足的问题,助力更多跨专业的学生掌握人工智能实践技能,为我国“AI+X”复合型人才培养贡献力量。