黄曼绮
基于容器技术的机器学习计算平台设计与实现
黄曼绮
(电子科技大学成都学院 云计算科学与技术系,四川 成都 611731)
针对机器学习实验对环境的高要求,设计实现了适用于普通高校的公用计算平台架构。该平台通过LXC容器技术配置,既能实现硬件资源的共享,也能实现实验环境的隔离,并按需提供计算资源,确定平台实现的具体方法和维护管理流程。该平台具有易于管理,资源利用率高,界面直观,开放性较好等特点。通过对该平台进行测试,验证了其良好的管理效率,为后续该平台的进一步优化奠定了良好的基础。
机器学习;公用计算平台;Linux容器;运行时透传
随着机器学习算法的逐步成熟和人工智能相关的应用的加速部署落地,人工智能进入了全新的阶段。中国人工智能市场高于全球增速,据BBC预测全球人工智能总体市场规模2020年将达到1190亿元,复合增长率约为19.7%;国内人工智能市场规模2020年将达到91亿元,年复合增长率约50%[1]。
中国也将人工智能发展提升到国家战略,明确了阶段性发展目标。2018年4月,教育部在研究制定《高等学校引领人工智能创新行动计划》的同时,研究设立人工智能专业,进一步完善我国高校人工智能学科体系。虽然一些中国高校开设了相关课程,但总体上缺乏人工智能的基础教学能力,高校在培养具有动手能力的应用型人才上有所欠缺[2-3]。
总的来说,人工智能产业的高速发展正在推动高校大力布局人工智能学科建设[4]。因此,本文的目的是使用容器技术中的LXC和LXD以及资源分配的解决方案来设计一个公用计算平台,解决高校公共实验平台GPU资源共享的问题,为实验参与者提供一个稳定高效的机器学习实验环境;同时,实验室管理者也可以轻松扩展和部署实验环境资源。
本公用计算平台完全使用开源软件,独立选取设计组件,独立搭建、运行和维护。涉及的开源软件代码公开并且由开源社区维护,非常适合高校这种研发经费相对较少但是资源需求较多的环境。
分析普通高校现有的机器学习实验运作方式,大多分为2类;
(1)单机方式,即给每位学生或实验团队提供一台独立的计算机;虽然实验者不会相互干扰,但机器学习实验的特点是通过构建隐层的机器学习模型和海量的数据来训练机器,驱动机器去自主学习并发掘特征,从而最终提升分类和推理的准确性[5]。因此,机器学习需要大量的并行计算,而传统的CPU通常需要数百甚至成千上万条指令才能完成神经单元的处理,不能支撑深度学习大规模数据并行计算,因此主流硬件框架大都基于CPU+GPU搭配;其主要特点是高功耗、高计算能力以及通用性。但是由于GPU价格高昂,加之高校资源有限,很难保证每台单机都能提供足够的硬件支持。
(2)公用服务器方式,即提供一组高性能的公用服务器硬件资源,由所有参与者共享使用;但环境共享带来隔离性的问题,大家都在公用机器运行训练和验算,而各自所需要的运行环境版本(如Cuda、TensorFlow等)却可能不一样,这样很容易因为版本问题而导致程序无法运行,而且如何合理分配硬件资源也是实验管理员无法回避的难题。
综上所述,本文提出作为一个应用于高校机器学习实验课程的公用计算平台应该具备以下基本功能:
(1)用户之间不会相互影响;
(2)用户可以安装、访问自己的应用;
(3)用户能够使用GPU;
(4)用户不被允许直接操作宿主机;
(5)管理员能轻松地管理用户。
从需求出发,首先解决的问题是实现用户的隔离。目前机器学习用户隔离使用的是支持PCI Pass- through的虚拟技术,带来的问题是GPU使用过程中只能被一台虚拟机独占,其他虚拟机就无法使用该显卡。在实际的实验案例中,一般的执行案例是无法长时间占满GPU,GPU利用率只会达到10%~30%左右[6]。在多用户的高校实验环境中,共享同一个GPU是合理的,也能提高硬件资源的利用率。另外CPU/IO等硬件的虚拟化的额外开销较大,所以考虑到性能问题,本文的设计方案不选用虚拟化技术。
由于实验室公用主机一般安装防火墙和还原保护等措施,是一个相对安全和可控的环境,并且现在主流的深度学习平台都是在Linux上,因此可以直接利用Linux内核提供的隔离机制来解决安全问题。Linux的隔离机制带来的额外开销微乎其微,加上共享硬件资源,能最大化地利用硬件资源。
目前比较成熟的隔离的有KVM和LXC。KVM的虚拟化方案提供了完整的物理隔离功能;LXC的隔离方案则是资源隔离(namespace)能提高资源利用率。结合表1的基础架构实现方案的比较,本文选择LXC。
表1 基础架构实现方案比较
为了保证公用GPU在LXC中正常使用,采用了目前常用的解决方法:在 LXC 容器中使用GPU时把宿主机中显卡设备文件挂载到LXC容器中。而对于在容器内使用NVIDIA GPU的场景,则可以通过nvidia. runtime配置,结合nvidia-container-cli和liblxc实现自动检测主机系统上的所有正确位,并在引导时将它们传递到容器中,以保持用户空间库与内核驱动程序同步。这样可以节省大量的空间,简化了维护。为了限制终端用户直接操作宿主机,容器可以提供SSH服务,既提供远程控制服务,也可以实现传输文件等基本操作。
因此选择LXC搭建公共计算平台基础框架,如图1所示。
图1 公用计算平台架构及组件
LXC是一个Linux容器工具,提供轻量级的虚拟化的隔离进程和资源。LXC在资源管理方面依赖Linux内核的Cgroups系统[7]。Cgroups系统是Linux内核提供的一个基于进程组的资源管理框架,用于限定特定进程组可用资源。它最初由Google的工程师提出,之后又集成到Linux内核。Cgroups也是LXC用于实施虚拟化的资源管理手段。LXC现已加入Linux内核,这意味着LXC技术将是目前最有竞争力的轻量级虚拟容器技术[8],具体隔离机制如图2所示。
图2 LXC容器隔离实现机制
在实验室平台中操作LXC指令相对比较难用,为了给用户提供更好的容器管理平台体验,在本文中引入了LXD。LXD是一个提供REST API的LXC容器管理器,在LXD操作时,事先将boot.autostart设置为true,则在Linux启动时会自动启动LXD容器。LXD还支持与OpenStack的集成,并提供Restful API的支持,所以使用者可以定制web页面的直观的管理容器[9]。
容器本身是通过物理机内核调度的一组权限受限的进程,物理机的内核和驱动拥有对GPU 100%的访问。本平台利用物理机的内核执行访问GPU的系统调用达到GPU Passthrough实现。
LXD本身提供了详尽的GPU Passthrough支持,本平台在添加GPU设备之后,容器里可以看到对应的GPU。本平台在执行过程中需要安装必要的库或工具。特别注意因为容器container里装的库是在与物理机的内核配合工作,所安装的库必须与物理机内核里的GPU driver版本对应。
下面介绍如何搭建生产环境,并进行基本的评估。
结合目前高校实验室的现状,在控制预算的前提下,本文用于验证的硬件配置如表2所示。
表2 计算平台硬件配置
在人工智能领域,通过开源的方式推动产业的快速向前发展,已经成为面向未来的一种趋势[10]。因此,本文设计的公用计算平台也是基于目前主流的开源软件,主要软件配置如表3所示。
表3 计算平台软件配置
4.3.1 创建容器
使用LXC作为隔离机制,给每个用户分配一个LXC容器,具体分为以下几个步骤:
(1)更新并安装LXC;
(2)共享内核安装,宿主机和容器内的显卡驱动要求完全一致,且共享内核,需要在宿主机上安装NVIDIA显卡驱动,并把显卡设备文件挂载到 LXC 容器中。通过实验发现在安装NVIDIA显卡驱动时,需要事先禁用nouveau模块待安装好后再启用;
(3)创建容器,并将NVIDIA设备添加到容器中,并修改配置文件;
(4)设置容器以通过Shell进行访问,运行lxc-attach后,所在的控制台是容器中的根提示符。可以使用容器内的NVIDIA的run安装CUDA SDK,或者将CUDA二进制文件复制到容器中。
4.3.2 实现多用户共用平台,制作LXC镜像模板
因为是多用户公用计算平台,需要保证每个用户对GPU的并行使用。而测试用的开源机器学习框架TensorFlow默认抢占服务器所有GPU显存,所以需要限定每个用户的GPU占用率。为了限定GPU占用率,在此步骤中制定GPU使用策略[11]。
(1)在TensorFlow中设置参数,启用最少的GPU运行程序。
(2)在TensorFlow中设置参数,强制程序只占用指定比例的GPU。
config = tf.ConfigProto()
# 占用GPU40%的显存
config.gpu_options.per_process_gpu_memory_fraction = 0.4
session = tf.Session(config=config)
为了方便后续添加用户,先制作一个LXC 容器模板,这样之后每次新建容器的时候就从这个模板克隆一份。
配置好模板容器之后,复制到 /root/lxc-public- images/template。本平台提供将容器或容器快照发布为镜像选项。关闭容器,并把它复制到/root/lxc-public- images/template。将容器或容器快照发布为镜像,只需要在模板容器上完成操作即可。
4.3.3 使用镜像创建新容器
在本公用平台中,LXD守护程序可充当镜像服务器。在默认情况下加载到镜像存储中的所有镜像都会被标记为私有,只有受信任的客户端可以检索这些镜像。如果要创建公共镜像服务器,需要做的是将一些镜像标记为公开,并确保LXD守护进程监听网络[12]。通过这一方式可使用镜像创建新容器。
4.3.4 容器的管理
可通过terminal管理容器,也可以通过Restful API配置WEB管理系统实现容器的管理。
4.3.5 结果展示
我院云计算科学与技术系在本科阶段开设了“基于Python的人工智能”课程,本课程取得了四川省首批普通高校应用型本科示范课程建设项目资助。其中实验部分就使用本公用计算平台进行机器学习实验。
在使用该平台之前,全班30名学生使用分配虚拟机的CPU进行训练,占有率高、训练速度慢。通过公用计算平台,多人可以共享共用,表4为改进后训练一个TensorFlow测试样本平台使用情况和时间对比。实验证明,在对同一个测试样本进行测试时,公用计算平台的环境下,人均节约40%~60%的时间(见表4)。
表4 实验平台使用时间对比
本文尝试使用容器技术中的LXC和LXD技术设计并配置了一个公用计算平台,解决了高校实验平台GPU资源共享的技术难题。实验参与者在使用计算平台进行机器学习的实验时不仅可以共享数据和计算能力,也可以通过容器实现资源的隔离,同时能够充分利用有限资源完成实验任务。借助LXD的可视化平台,管理者也可以方便地新建及管理实验环境;由于物理服务器采用容器集群模式,平台可以支持快速的横向扩展,能为使用者节省一半以上的时间,将来会考虑对平台进行深度优化。
[1] 中国产业信息. 2018年中国人工智能行业发展现状及发展前景分析[EB/OL]. (2018-03-15). http://www.chyxx.com/industry/ 201803/619321.html.
[2] 国务院. 关于印发新一代人工智能发展规划的通知[EB/OL]. (2017-07-08). http://www.xinhuanet.com//tech/2017-07/21/c_ 1121355212.htm.
[3] 奎晓燕,刘卫国,郭克华,等. 构建智能型虚拟实验平台,推进现代教育技术改革[J]. 计算机工程与科学,2018, 40(增刊1): 12–15.
[4] 中国大数据产业观察. 国内高校人工智能教育现状[EB/OL]. (2018-04-22). https://www.sohu.com/a/2290865 85_353595.
[5] 人工智能. 人工智能市场巨大AI芯片有望成为下一个爆发点 [EB/OL]. (2018-05-05). http://www.elecfans.
[6] 陈乐群. 为实验室建立公用GPU服务器[EB/OL]. (2017-11- 03). https://zhuanlan.zhihu.com/p/25710517.
[7] 汪恺,张功萱,周秀敏. 基于容器虚拟化技术研究[J]. 计算机技术与发展,2015, 25(8): 138–141.
[8] 高岩,林军,云龙,等. 云计算主机内核虚拟化技术框架及其性能分析[J]. 计算机系统应用,2017, 26(8): 278–283.
[9] wangke0809. 搭建多人共用的GPU服务器[EB/OL]. (2018- 04-22). https://blog.csdn.net/wangke0809/article/details/80235989.
[10] 赵智兴,段鑫星. 人工智能时代高等教育人才培养模式的变革:依据、困境与路径[J]. 西南民族大学学报(人文社科版),2019(2): 213–219.
[11] Mr Caleb. tensorflow gpu使用说明[EB/OL]. (2016-10-22). https://blog.csdn.net/qq_30159351/article/ details/52892577.
[12] LXD 2.0. Introduction to LXD [EB/OL]. (2016-03-11) https:// stgraber.org/2016/03/11/lxd-2-0-introduction-to-lxd-112/.
Design and realization of machine learning computing platform based on container technology
HUANG Manqi
(Department of Cloud Computing Science and Technology, Chengdu College of University of Electronic Science and Technology of China, Chengdu 611731, China)
In view of the high requirement of machine learning experiment for environment, a common computing platform architecture suitable for colleges and universities is designed and realized. Through the configuration of LXC container technology, this platform can not only share hardware resources, but also realize the isolation of the experimental environment and provide computing resources on demand. The specific method of platform realization and maintenance management process are determined. This platform has the characteristics of easy management, high resource utilization, intuitive interface and good openness. The platform is tested to verify its good management efficiency, which lays a good foundation for further optimization of the platform.
machine learning; common computing platform; LXC container; runtime passthrough
G642.0
B
1002-4956(2019)09-0028-04
2019-02-14
教育部2018年第一批产学合作协同育人项目(教高司函[2018]47号,编号201801014012);四川省教育厅自然科学一般项目(18ZB0256);四川省地方普通本科高校应用型示范课程支持项目(川教函[2018]527号(255-256);电子科技大学成都学院教改重点项目(JG201808)
黄曼绮(1981—),女,四川内江,硕士,讲师,云计算教研室主任,研究方向为云计算架构、机器学习。
E-mail: qiluoli@126.com
10.16791/j.cnki.sjg.2019.09.008