论文部分内容阅读
机器学习是近20年来兴起的多领域交叉学科,涉及多门学科,诸如概率论、统计学、逼近论、凸分析等等。机器学习算法目前已经有了广泛的应用,例如数据挖掘、自然语言处理、搜索引擎等等。当前各种机器学习算法已经有开源的单机实现,但是随着互联网的高速发展,用户数据量急剧增加,单机实现已经不能满足工业界的需求,为了满足算法的高性能实现,开发人员需要利用MPI, Hadoop/MapReduce等计算框架开发并行程序。MPI效率高,编程灵活,扩展性好,适合高性能计算,然而也存在一些缺点:MPI接口众多,学习成本高;当前使用MPI实现高性能程序时,往往需要考虑数据切分、网络通信等问题,缺少类似MapReduce的计算模型,增加了程序员的负担;算法实现专有化不利用代码复用,缺少统一抽象的分布式数据结构;程序容错性较差。针对以上缺点,本论文综述了MPI容错方案和MapReduce的应用与改进,结合抽象向量接口设计,提出了一种MPI下基于向量和MapReduce的分布式计算框架。该框架将机器学习算法中的矩阵操作抽象成为分布式向量的操作,同时结合异步收发提高网络传输效率,尽可能重叠CPU计算和网络收发。在此基础之上,引入checkpoint机制,增加多轮迭代算法的在MPI环境中的容错性。为了验证程序的效率和正确性,选择了PageRank算法进行对比实验。实验证明,本论文提出框架适合并且能有有效解决符合MapReduce模型的机器学习算法的分布式实现问题。