论文部分内容阅读
大数据时代下,很多有价值的信息等待被发现利用,通过机器学习,对这些数据进行离线或实时分析,为决策者提供决策依据显得极为重要。大数据下的机器学习离不开云计算,而云计算的核心技术之一是虚拟化。以往很多应用和服务是部署在虚拟机上的,但虚拟机启动速度慢,而且每台虚拟机都有一个客户机操作系统(OS),带来OS的启动开销,并且OS占用内存资源。正是由于Hypervisor虚拟化技术存在性能表现不佳和资源使用率不高等问题,因此出现了一种新型的虚拟化技术——基于容器(Container)的虚拟化技术来解决这些问题。Docker容器的出现正在改变人们开发、测试、部署应用的方式。容器相比于虚拟机具有以下特点:启动、创建、销毁速度快;对系统资源利用率很高;系统开销很小。基于此,本文研究容器计算环境下机器学习任务的优化调度问题。以学术文献、技术实践中发现的局限性和现实需求为驱动,在综述容器环境下资源与任务调度相关领域的实验结果、前沿方法基础上,搭建容器计算实验环境和监控平台;基于容器计算环境,对机器学习任务中的分类、回归和聚类进行相关计算实验,得到不同机器学习任务类型在不同模型、不同数据集下计算资源的消耗规律;以最小化虚拟机租用成本、时间成本和资源闲置成本为目标,建立了以容器为载体的机器学习任务的分配和调度优化模型,并使用AIMMS建模和优化软件包求解。本文的主要工作如下:(1)分析了云计算服务三种服务模式、机器学习的相关算法与模型,特别是机器学习的分类模型、回归模型、聚类模型;综述了国内外现有的机器学习算法以及计算资源的优化调度相关研究成果。(2)搭建了容器模式下的计算实验环境和性能监控平台。基于容器的计算实验环境和性能监控平台的主要作用是为执行机器学习任务的分类、聚类和回归算法实验提供计算环境,同时监控机器学习任务在执行中的资源消耗情况(CPU及内存占用)。容器模式下的计算实验环境由物理机(一台真实的计算机)、Linux虚拟机(虚拟的计算机)和Docker容器组成,三者的关系是在物理机上建立虚拟机,在虚拟机内创建Docker容器;性能监控平台由cAdvisor、InfluxDB和Grafana组成,其中cAdvisor负责采集虚拟机上每个容器占用的CPU和内存的实时数据,InfluxDB负责数据存储,Grafana则可以对特定容器在某段时间内的资源占用情况以图、表等形式进行可视化。(3)基于实验环境和监控平台,对机器学习的分类、回归和聚类任务,进行了16组计算服务实验,数据集来自Spark自带数据集以及竞赛数据集。这些计算实验由学习任务类型、算法(模型)和数据集组成。实验统计结果表明:朴素贝叶斯模型和支持向量机模型在面对样本数多而属性少的数据集时,比面对样本数少而属性多的数据集时的平均CPU占用要少;而决策树模型则相反。处理同样的小数据集,与K-means模型相比,Bisecting K-means平均占用较多的CPU。(4)构建了一个以最小化虚拟机租用成本、容器部署时间成本和资源闲置成本为目标的以容器为载体的机器学习任务分配与调度模型。该模型在考虑虚拟机要有足够资源来部署容器、容器要满足机器学习任务的资源需求的约束条件下,决策应该建立何种配置的容器来执行机器学习任务以及容器分配到哪台虚拟机上,使得成本最小,并使用AIMMS优化建模软件进行求解。此外,本文还实现了通过JAVA调用AIMMS进行传参及求解。