要实现高效的大数据机器学习,需要构建一个能同时支持机器学习算法设计和大规模数据处理的一体化大数据机器学习系统。研究设计高效、可扩展且易于使用的大数据机器学习系统面临诸多技术挑战。近年来,大数据浪潮的兴起,推动了大数据机器学习的迅猛发展,使大数据机器学习系统成为大数据领域的一个热点研究问题。介绍了国内外大数据机器学习系统的基本概念、基本研究问题、技术特征、系统分类以及典型系统;在此基础上,进一步介绍了本实验室研究设计的一个跨平台统一大数据机器学习系统——Octopus(大章鱼)。
关键词:大数据;机器学习;分布并行计算;大数据处理平台
1 大数据机器学习系统研究背景
近年来,大数据技术在全球发展迅猛,掀起了巨大的研究热潮,引起全球业界、学术界和各国政府的高度关注。随着计算机和信息技术的迅猛发展和普及应用,行业应用数据呈爆炸性增长。动辄达到数百TB甚至数PB规模的行业/企业大数据已经远远超出了传统计算技术和信息系统的处理能力。与此同时,大数据往往隐含着很多在小数据量时不具备的深度知识和价值,大数据智能化分析挖掘将为行业/企业带来巨大的商业价值,实现多种高附加值的增值服务,从而提升行业/企业生产管理决策水平和经济效益。
大数据分析挖掘处理主要分为简单分析和智能化复杂分析两大类。简单分析主要采用类似于传统数据库OLAP的处理技术和方法,用SQL完成各种常规的查询统计分析;而大数据的深度价值仅通过简单分析是难以发现的,通常需要使用基于机器学习和数据挖掘的智能化复杂分析才能实现。
机器学习和数据分析是将大数据转换成有用知识的关键技术,并且有研究表明,在很多情况下,处理的数据规模越大,机器学习模型的效果会越好[1~3]。目前,国内外业界和学术界专家普遍认同的观点是,越来越多的海量数据资源加上越来越强大的计算能力,已经成为推动大数据时代人工智能技术和应用发展的动力,将基于大数据的机器学习和人工智能推上了新一轮发展浪潮,让大数据机器学习(bigdata machine learning)成为全球业界和学术界高度关注的热点研究领域。随着大数据时代的来临,Google、Facebook、微软、百度、腾讯等国内外著名企业均纷纷成立专门的基于大数据的机器学习与人工智能研发机构,深入系统地研究基于大数据的机器学习和智能化计算技术。
由于大数据机器学习和数据挖掘等智能计算技术在大数据智能化分析处理应用中具有极其重要的作用,在2014年12月中国计算机学会(CCF)大数据专家委员会上百位大数据相关领域学者和技术专家投票推选出的“2015年大数据十大热点技术与发展趋势”中,结合机器学习等智能计算技术的大数据分析技术被推选为大数据领域第一大研究热点和发展趋势[4]。
由于大数据机器学习在具体实现时通常需要使用分布式和并行化大数据处理技术方法,也有人将大数据机器学习称为“分布式机器学习”(distributedmachine learning)或“大规模机器学习”(large-scale machine learning)。
大数据机器学习,不仅是机器学习和算法设计问题,还是一个大规模系统问题。它既不是单纯的机器学习,也不是单纯的大数据处理技术所能解决的问题,而是一个同时涉及机器学习和大数据处理两个主要方面的交叉性研究课题。一方面,它仍然需要继续关注机器学习的方法和算法本身,即需要继续研究新的或改进的学习模型和学习方法,以不断提升分析预测结果的准确性;与此同时,由于数据规模巨大,大数据机器学习会使几乎所有的传统串行化机器学习算法难以在可接受的时间内完成计算,从而使得算法在实际应用场景中失效。因此,大数据机器学习在关注机器学习方法和算法研究的同时,还要关注如何结合分布式和并行化的大数据处理技术,以便在可接受的时间内完成计算。为了能有效完成大数据机器学习过程,需要研究并构建兼具机器学习和大规模分布并行计算处理能力的一体化系统。
因此,领域内出现了“大数据机器学习系统”或者“分布式学习系统”的概念,并进行了诸多大数据机器学习系统的研究与开发工作。
2 大数据机器学习系统的技术特征
参考文献[5,6]专门介绍了大数据机器学习系统的技术特征。
一个大数据机器学习系统会同时涉及机器学习和大数据处理两方面的诸多复杂技术问题,包括机器学习方面的模型、训练、精度问题以及大数据处理方面的分布式存储、并行化计算、网络通信、局部性计算、任务调度、容错等诸多因素。这些因素互相影响,交织在一起,大大增加了系统设计的复杂性。因此,大数据机器学习已经不仅仅是一个算法研究问题,而是需要针对大数据集,考虑从底层的大数据分布存储到中层的大数据并行化计算,再到上层的机器学习算法,设计一种一体化的支撑系统,形成易于为数据分析程序员和机器学习研究者使用的、完整的大数据机器学习系统。
一个理想的大数据机器学习系统通常需要具备以下几个方面的技术要素和特征[5~7]。
应当从整个学习的生命周期/流水线来考虑,包括训练数据和特征的提取、并行学习算法的设计、训练模型和参数的查询管理、分布式训练计算过程,都应在一个一体化的学习系统平台上完成。
应提供多种并行训练模式,支持不同的机器学习模型和算法。
需要提供对底层系统的抽象,以实现对底层通用大数据处理引擎的支持,并提供数据科学中常用的编程语言接口(API)。
应该拥有开放和丰富的生态、广泛的应用和快速的进化能力。
在上述技术特征中,一个非常重要的思路是,要通过系统抽象来降低系统设计的复杂性。如图2所示,一个设计良好的大数据机器学习系统,应当通过定义特定的机器学习编程计算和系统抽象接口,将上层机器学习和底层分布式系统解耦开来,将机器学习实现在现有的大数据计算平台之上,而不需要考虑底层系统层面的因素,以此实现底层大数据处理平台对上层用户的透明化,让上层用户从诸多底层的分布和并行化大数据编程计算细节中解放出来,以便他们致力于上层的机器学习模型和算法的设计实现。通过编程计算和系统抽象层API,向上提供各种机器学习编程计算接口以及学习模型和训练数据的表示,向下由底层分布式系统负责处理并提供高效的分布和并行化计算实现。
3 大数据机器学习系统的主要研究问题
知名的Apache Flink大数据分析系统研究者在2014年VLDB会议主题报告和论文中[8],从数据分析的复杂程度和数据规模的维度,考察了现有的相关研究工作和系统,如图3所示。现有的系统要么主要用于小规模复杂分析,要么主要用于大规模的简单统计分析,缺少既具有复杂数据分析能力又具有强大的大数据处理能力的大数据分析系统;文章作者甚至认为,对于行业大数据分析人员而言,现有的工具还处于“石器时代”[8]。
与此同时,著名的UC Berkeley AMPLab在研究基于Spark的机器学习库MLBase[9]时,从计算性能和系统易用性两个重要维度,考察了现有的大数据机器学习研究工作和系统,如图4所示。面向机器学习和数据分析时,目前已有的工作和系统,绝大多数都未能同时具备大规模分析处理能力和良好的系统易用性。
因此,大数据机器学习除了需要继续关注和研究传统意义上的学习方法和算法问题,以不断提高学习精度外,还需要重点关注和研究解决大数据场景下所特有的两大技术问题:
一是大数据复杂分析时的计算性能问题;
二是大数据机器学习系统的可编程性和易用性问题。
(1)大数据复杂分析时的计算性能问题
在计算性能方面,大规模数据集给很多传统串行的机器学习和数据分析挖掘算法带来很大的挑战,需要研究解决面向大数据机器学习和数据分析的高效计算方法和系统。在数据集较小时,很多复杂度在O(n log n)、O(n2)甚至O(n3)的传统串行化机器学习算法都可以有效工作;但当数据规模增长到极大尺度时,现有的串行化算法将花费难以接受的时间开销,使得算法在实际应用场景中失效,这给业界大量实际的大数据复杂分析应用带来很多新的挑战和问题[10]。正如微软全球副总裁陆奇博士在2012年指出的,“大数据使得现有的大多数机器学习算法失效,面向大数据处理时这些算法都需要重写”。
在大型互联网企业,大规模机器学习算法经常用于处理十亿至千亿级别的样本以及一亿至数十亿数据特征的大规模数据集。例如,Google著名的Seti太空搜索项目需要进行高达千亿样本、十亿特征数据的大规模机器学习,腾讯Peacock主题模型分析系统需要进行高达十亿文档、百万词汇、百万主题的主题模型训练,而仅一个百万词汇乘以百万主题的矩阵,其数据存储量即高达3TB,如果再考虑十亿文档乘以百万主题的矩阵,其数据量更是高达3 PB[3]。如此大量的训练样本,加上机器学习算法本身的复杂性,导致难以在传统的串行化计算平台上、在可接受的时间内完成如此巨大的复杂分析计算任务,因而带来了十分突出的计算性能问题。因此,大数据机器学习算法和系统需要研究解决大规模场景下高效的分布式和并行化算法设计以及计算问题,以保证算法和系统可以在可接受的时间内完成大规模数据的学习和训练。
6结束语
近几年来,大数据技术的发展推动了大数据机器学习和智能计算技术的发展热潮。大数据机器学习不仅是一个单纯的机器学习问题,更是一个大规模的复杂系统问题;是一个同时涉及机器学习和大数据处理两个领域的交叉研究课题。要实现有效的大数据机器学习处理,需要构建一个能同时支持机器学习算法设计和大规模数据处理的一体化大数据机器学习系统。
本文介绍了国内外大数据机器学习系统的基本概念、基本研究问题、技术特征、系统分类以及典型系统。在此基础上,进一步介绍了研究设计的跨平台统一大数据机器学习原型系统Octopus。基于大多数机器学习和数据分析算法可表示为矩阵运算的事实,Octopus采用矩阵模型作为大数据机器学习和数据分析抽象编程计算模型,提供了一个基于矩阵的高层编程模型和接口,并基于R语言和开发环境向用户提供了一个矩阵运算R扩展包,为用户提供可扩展性好且易于使用的矩阵运算操作,允许用户基于所提供的大规模矩阵运算操作,快速设计实现各种机器学习和数据分析算法。Octopus能在底层无缝地集成和使用不同的大数据计算引擎和平台,完成大数据机器学习算法的分布和并行化执行,并支持单节点R环境以及Spark、HadoopMapReduce和MPI等多种大数据计算引擎和平台,并能实现这些平台间的无缝切换,实现“Write
Once,Run Anywhere”的跨平台特征。就我们所知,Octopus是目前世界上第一个具有跨平台特性,同时还能实现底层大数据平台对上层程序员透明化的大数据机器学习系统研究工作。
正如CCF大数据专家委员会发布的2014年《中国大数据技术与产业发展白皮书》中所说,目前大数据机器学习系统尚处在一个初期的探索和研究阶段,尽管国内外已经有不少研究开发工作,但研究设计高效、可扩展且易于使用的大数据机器学习系统仍面临诸多的技术挑战。因此,大数据机器学习系统将是目前和未来几年的热点研究领域,工业界和学术界都将持续地投入相当多的资源进行深入的研究开发工作。
同样,虽然初步研究设计了跨平台大数据机器学习系统Octopus,但其中仍然有大量需要进一步深入研究解决和完善的技术问题,例如大规模矩阵运算的深度优化、稀疏矩阵的存储管理和计算优化、异构大数据处理平台环境下不同矩阵计算时的平台自动选择、基于矩阵计算表达式和计算流图的计算优化等。此外,仅有矩阵计算模型还不能满足所有的大数据机器学习计算需求,还需要考虑其他计算模型,如图模型和参数模型(parameterserver)的混合使用,形成一个能满足各种大数据机器学习算法设计需求的综合系统。