bdtc2015...

136
Octopus(大章鱼): 基于R语言的跨平台大数据 机器学习不数据分析系统 黄宜华 南京大学PASA大数据技术实验室 南京大学计算机软件新技术国家重点实验室 江苏省软件新技术不产业化协同创新中心 2015.12.12

Upload: jerry-wen

Post on 16-Apr-2017

887 views

Category:

Data & Analytics


5 download

TRANSCRIPT

Page 1: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

Octopus(大章鱼): 基于R语言的跨平台大数据 机器学习不数据分析系统

黄宜华

南京大学PASA大数据技术实验室 南京大学计算机软件新技术国家重点实验室 江苏省软件新技术不产业化协同创新中心 2015.12.12

Page 2: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

南京大学PASA大数据技术实验室

PASA BigData Lab studies on Parallel Algorithms Systems, and Applications for Big Data Processing

We are one of the earliest research labs on Big Data in China, entering big data research area since 2009

Page 3: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

南京大学PASA大数据技术实验室

南京大学PASA大数据实验室是国内最终从事大数据技术研究和教学的团队之一。早在大数据还鲜为关注的2009年,本实验室已经进入大数据技术研究领域。实验室自2009年以来在大数据技术领域开展了一系列系统深入的研究开发工作,在分布式大数据存储和查询、分布式文件系统、大数据幵行计算模式不系统、Hadoop/Spark性能优化不功能增强、幵行化机器学习和数据挖掘算法、大数据机器学习系统、大规模Web信息挖掘集成、大规模文本语义分析、幵行机器翻译算法、大数据行业应用等方面,开展了广泛的研究,积累了系统的研究和技术基础,近6年来课题组在国内外学术期刊和国际会议上发表了大数据相关研究论文30多篇,撰写大数据技术书籍/教材两部

实验室承担国家级、部省级大数据研究项目多项,幵开展了不Google、Intel、微软亚洲研究院、百度、华为、中兴通讯等国内外著名企业开展合作研究;此外还不UC Berkeley AMP实验室在Spark和分布式内存文件系统Tachyon方面开展合作研究;此外,课题组还开展了电力、电信、等典型行业的大数据平台和分析应用研究

Page 4: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

南京大学PASA大数据技术实验室

Our research areas

Parallel Computing Models and Frameworks

& Hadoop/Spark Performance Optimization Hadoop job and resource scheduling optimization Spark RDD persisting optimization

Big Data Storage and Query Tachyon Optimization Performance Benchmarking Tools for Tachyon and DFS HBase Secondary Indexing (HBase+In-memory) and query system

Large-Scale Semantic Data Storage and Query Large-scale RDF semantic data storage and query system(HBase+In-memory) RDFS/OWL semantic reasoning engines on Hadoop and Spark

Machine Learning Algorithms and Systems for Big Data Analytics Parallel MLDM algorithm design with diversified parallel computing platforms Unified programming model and platform for MLDM algorithm design

Page 5: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

南京大学PASA大数据技术实验室

在大数据领域多年研究和教学成果基础上,编写出版了《深入理解大数据》一书(480页, 机械工业出版社, 2014),该书已作为国家教委计算机教指委“计算机系统能力培养”系列教材

Page 6: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

上篇

大数据机器学习系统概述

下篇

大章鱼:跨平台大数据

机器学习与数据分析系统

报 告 内 容

南京大学PASA大数据技术实验室

Page 7: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

上 篇

1. 大数据机器学习:从算法到系统

2. 大数据机器学习系统的技术特征

3. 大数据机器学习系统的主要研究问题

4. 大数据机器学习方法分类与典型系统

上篇:大数据机器学习系统概述

Page 8: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

1. 大数据机器学习:从算法到系统

大数据隐含着很多深度知识和价值,大数据智能化分析挖掘将能为行业/企业带来巨大的商业价值,实现多种高附加值的增值服务,从而提升行业/企业生产管理决策水平和经济效益

大数据分析挖掘主要分为简单分析和智能化复杂分析两大类;大数据的深度价值发现仅仅通过简单分析是难以实现的,必须使用基于机器学习和数据挖掘的智能化复杂分析才能完成

机器学习和数据分析是将大数据转换成有用知识的关键技术

研究表明,通常数据规模越大,机器学习效果会越好

大数据 + 强大的计算能力,成为推动大数据时代人工智能技术和应用发展的动力,将基于大数据的机器学习和人工智能推上新一轮发展浪潮

CCF 2015年大数据十大发展趋势预测:“结合智能计算的大数据分析”成为第一大预测热点。“大数据与神经计算、深度学习、语义计算以及人工智能其他相关技术结合,成为大数据分析领域的热点。”

Page 9: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

1. 大数据机器学习:从算法到系统

大数据+机器学习是驱动全球互联网企业的核心

“谷歌实际上丌是一个搜索公司,它是一个机器学习公司。”

随着大数据时代的来临,IBM、Google、Facebook、微软、百度、腾讯、科大讯飞等国内外著名企业纷纷成立专门的基于大数据的机器学习与人工智能研发机构,深入研究基于大数据的机器学习和智能化计算技术

Google大脑

Facebook人工智能实验室

Microsoft Adam 微软人工智能项目

百度大脑

讯飞超脑:实现基于类人神经网络的中文认知智能引擎

Page 10: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

并行化机器学习与数据挖掘算法设计是复杂大数据分析关键技术之一

Hadoop、Spark等

各种大数据计算技术与平台出现后,人们普遍关注如何在这些平台上设计实现各种大数据机器学习和数据挖掘并行化算法

1. 大数据机器学习:从算法到系统

大数据机器学习 并行化算法

Page 11: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

频繁项集挖掘并行化算法 Frequent Itemset Mining Algorithm

• Frequent Itemset Mining is one of the most important

and often used algorithm for data mining

• Apriori algorithm is the most established algorithm for

finding frequent itemset from a transactional dataset

Tao Xiao, Shuai Wang, Chunfeng Yuan, Yihua Huang. PSON: A Parallelized SON Algorithm with MapReduce for Mining Frequent Sets. The Fourth International Symposium on Parallel Architectures, Algorithms and Programming, PAAP 2011, p 252-257, 2011

Hongjian Qiu, Rong Gu, Chunfeng Yuan and Yihua Huang. YAFIM: A Parallel Frequent Itemset Mining Algorithm with Spark. The 3rd International Workshop on Parallel and Distributed Computing for Large Scale Machine Learning and Big Data Analytics, conjunction with IPDPS 2014, May 23, 2014. Phoenix, USA

1. 大数据机器学习:从算法到系统

Page 12: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

频繁项集挖掘并行化算法 Frequent Itemset Mining Algorithm

Apriori algorithm • A classic frequent sets mining algorithm • Needs multiple passes over the database • In the first pass, all frequent 1-itemsets are discovered • In each subsequent pass, frequent (k+1)-itemsets are discovered, with the frequent

k- itemsets found in the previous pass as the seed (referred to as candidate itemsets) • Repeat until no more frequent

itemsets can be found

1. 大数据机器学习:从算法到系统

Page 13: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

频繁项集挖掘并行化算法 Frequent Itemset Mining Algorithm

[1] Rakesh Agrawal, Ramakrishnan Srikant: Fast Algorithms for Mining Association Rules in Large Databases. VLDB 1994: 487-499

Apriori Algorithm:

1. 大数据机器学习:从算法到系统

Page 14: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

频繁项集挖掘并行化算法 Frequent Itemset Mining Algorithm

Apriori in MapReduce:

基于MapReduce的频繁项集挖掘算法

1. 大数据机器学习:从算法到系统

Page 15: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

频繁项集挖掘并行化算法 Frequent Itemset Mining Algorithm

基于MapReduce的频繁项集挖掘算法

实验结果

Tao Xiao, Shuai Wang, Chunfeng Yuan, Yihua Huang. PSON: A Parallelized SON Algorithm with MapReduce for Mining Frequent Sets. The Fourth International Symposium on Parallel Architectures, Algorithms and Programming, PAAP 2011, p 252-257, 2011

1. 大数据机器学习:从算法到系统

Page 16: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

频繁项集挖掘并行化算法 Frequent Itemset Mining Algorithm

• Parallel Aprioir algorithm with MapReduce needs to run the

MapReduce job iteratively

• It need to scan the dataset iteratively and store all the intermediate

data in HDFS

• As a result, the parallel Apriori algorithm with MapReduce is not

efficient enough

基于MapReduce的频繁项集挖掘算法

1. 大数据机器学习:从算法到系统

Page 17: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

频繁项集挖掘并行化算法 Frequent Itemset Mining Algorithm

• YAFIM, Apriori algorithm implemented in Spark Model, can gain

about 18x speedup in our experiments

• Our YAFIM contains two phases to find all frequent itemsets

– Phase Ⅰ: Load transaction datasets as a Spark RDD object and

generate 1-frequent itemsets;

– Phase Ⅱ: Iteratively generate (k+1)-frequent itemset from k-frequent

itemset.

基于Spark的频繁项集挖掘算法

Hongjian Qiu, Rong Gu, Chunfeng Yuan and Yihua Huang. YAFIM: A Parallel Frequent Itemset Mining Algorithm with Spark. The 3rd International Workshop on Parallel and Distributed Computing for Large Scale Machine Learning and Big Data Analytics, conjunction with IPDPS 2014, May 23, 2014. Phoenix, USA

1. 大数据机器学习:从算法到系统

Page 18: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

All transaction data reside in RDD

Load all transaction data into a RDD

频繁项集挖掘并行化算法 Frequent Itemset Mining Algorithm

基于Spark的频繁项集挖掘算法

1. 大数据机器学习:从算法到系统

Page 19: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

Phase Ⅰ

频繁项集挖掘并行化算法 Frequent Itemset Mining Algorithm

基于Spark的频繁项集挖掘算法

1. 大数据机器学习:从算法到系统

Page 20: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

Phase ⅠI

频繁项集挖掘并行化算法 Frequent Itemset Mining Algorithm

基于Spark的频繁项集挖掘算法

1. 大数据机器学习:从算法到系统

Page 21: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

频繁项集挖掘并行化算法 Frequent Itemset Mining Algorithm

基于Spark的频繁项集挖掘算法

1. 大数据机器学习:从算法到系统

Page 22: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

频繁项集挖掘并行化算法 Frequent Itemset Mining Algorithm

基于Spark的频繁项集挖掘算法

1. 大数据机器学习:从算法到系统

基于Spark的并行化算法比基于Hadoop MapReduce的并行化算法大约快18倍

Page 23: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

K-Means聚类并行化算法 K-Means Clustering Algorithm

基本算法

Input: A dataset of N data points that need to be clustered into K clusters

Output:K clusters

Choose k cluster center Centers[K] as initial cluster centers

Loop:

for each data point P from dataset:

Calculate the distance between P and each of Centers[i] ;

Save p to the nearest cluster center

Recalculate the new Centers[K]

Go loop until cluster centers converge

1. 大数据机器学习:从算法到系统

Page 24: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

class Mapper

setup(…) { read k cluster centers Centers[K]; } map(key, p) // p is a data point { minDis = Double.MAX VALUE; index = -1; for i=0 to Centers.length { dis= ComputeDist(p, Centers[i]); if dis < minDis { minDis = dis; index = i; } } emit(Centers[i].ClusterID, (p,1)); }

K-Means聚类并行化算法 K-Means Clustering Algorithm

基于MapReduce 的K-Means聚类算法

1. 大数据机器学习:从算法到系统

Page 25: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

To optimize the data I/O and network transfer, we can use Combiner to reduce

the number of key-value pairs from a Map node

class Combiner

reduce(ClusterID, [(p1,1), (p2,1), …])

{

pm = 0.0;

n = 数据点列表[(p1,1), (p2,1), …]中数据点的总个数;

for i=0 to n

pm += p[i];

pm = pm / n; // Calculate the average of points in the Cluster

emit(ClusterID, (pm, n)); // use it as new Center

}

K-Means聚类并行化算法 K-Means Clustering Algorithm

基于MapReduce 的K-Means聚类算法

1. 大数据机器学习:从算法到系统

Page 26: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

class Reducer

reduce(ClusterID, valueList = [(pm1,n1),(pm2,n2) …])

{

pm = 0.0; n=0;

k = length of valuelist belonging to a ClusterID;

for i=0 to k

{ pm += pm[i]*n[i]; n+= n[i]; }

pm = pm / n; // calculate new center of the Cluster

emit(ClusterID, (pm,n)); // output new center of the Cluster

}

In main() function of the MapReduce Job, set a loop to run the

MapReduce job until converge

K-Means聚类并行化算法 K-Means Clustering Algorithm

基于MapReduce 的K-Means聚类算法

1. 大数据机器学习:从算法到系统

Page 27: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

while(tempDist > convergeDist && tempIter < MaxIter)

{

var closest = data.map ( p => (closestPoint(p, kPoints), (p, 1))) // determine nearest center for

each P

// calculate the average of all points in a cluster as new center

var pointStats = closest.reduceByKey{case ((x1, y1), (x2, y2)) => (x1 + x2, y1 + y2)}

var newPoints = pointStats.map {pair => (pair._1, pair._2._1 / pair._2._2)}.collectAsMap()

tempDist = 0.0

for (i <- 0 until K) // calculate tempDist to determine if converges

tempDist += kPoints(i).squaredDist(newPoints(i)) // calculate tempDist to determine if

converges

for (newP <- newPoints)

kPoints(newP._1) = newP._2 // update new centers

tempIter=tempIter+1

}

K-Means聚类并行化算法 K-Means Clustering Algorithm

基于Spark的K-Means聚类算法

1. 大数据机器学习:从算法到系统

Page 28: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

Exec

uti

on

tim

e(s)

Number of Nodes 1st iteration next iteration

Spark speedup about 4-5 times compared to MapReduce

Peng Liu, Jiayu Teng, Yihua Huang. Study of k-means algorithm parallelization performance based on spark. CCF Big Data 2014, Beijing, on review

K-Means聚类并行化算法 K-Means Clustering Algorithm

基于Spark的K-Means聚类算法

1. 大数据机器学习:从算法到系统

Page 29: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

朴素贝叶斯并行化算法 NaiveBayes Classification Algorithm

||

i i

i

P X C P CP C X

P X

| 1i

map iC C

c arg max P C X i m

Given m classes from training dataset: { C1,C2, …, Cm } Predict which class a testing sample X will belong to.

=> Only need to calculate P |i i

X C P C

n

1| ( | )

i k ikP X C P x C

Suppose xk is independent to each other =>

Thus, we can count from training samples to get both P |i i

X C P C

1. 大数据机器学习:从算法到系统

Page 30: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

Training Map Pseudo Code to calculate P(X|Ci) and P(Ci)

class Mapper

map(key, tr) // tr is a training sample { tr trid, X, Ci

emit(Ci, 1) for j=0 to X.lenghth) { X[j] xnj & xvj // xnj: name if xj, xvj: value of xj emit(<Ci, xnj, xvj>, 1) } }

朴素贝叶斯并行化算法 NaiveBayes Classification Algorithm

基于MapReduce的朴素贝叶斯并行化算法

1. 大数据机器学习:从算法到系统

Page 31: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

Training Reduce Pseudo Code to calculate P(xj|Ci) and P(Ci)

class Reducer

reduce(key, value_list) // key: either Ci or <Ci, xnj, xvj> {

sum =0; // count for P(xj|Ci) and P(Ci) while(value_list.hasNext()) sum += value_list.next().get();

emit(key, sum) } // Trim and save output as P(xj|Ci) and P(Ci) tables in HDFS

朴素贝叶斯并行化算法 NaiveBayes Classification Algorithm

基于MapReduce的朴素贝叶斯并行化算法

1. 大数据机器学习:从算法到系统

Page 32: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

Predict Map Pseudo Code to Predict Test Sample class Mapper setup(…) { load P(xj|Ci) and P(Ci) data from training stage FC = { (Ci, P(Ci)) }, FxC = { (<Ci, xnj, xvj>, P(xj|Ci)) } } map(key, ts) // ts is a test sample { ts tsid, X MaxF = MIN_VALUE; idx = -1; for (i=0 to FC.length) { FXCi = 1.0;Ci = FC[i].Ci; FCi = FC[i].P(Ci) for (j=0 to X.length) { xnj = X[j].xnj; xvj = X[j].xvj Use <Ci, xnj, xvj> to scan FxC, get P(xj|Ci) FXCi = FXCYi * P(xj|Ci); } if(FXCi* FCi >MaxF) { MaxF = FXCi*FCi; idx = i; } } emit(tsid, FC[idx].Ci) }

朴素贝叶斯并行化算法 NaiveBayes Classification Algorithm

基于MapReduce的朴素贝叶斯并行化算法

1. 大数据机器学习:从算法到系统

Page 33: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

parseVector <- function(line) { # mapping line to list(Ci, list(1, features)) } sc <- sparkR.init(master, “NaiveBayes”) # init Spark file <- textFile(sc, dataFile) # read training text data file => RDD lines <- lapply(file, parseVector) # do map # sum up to count the number of Ci and xj aggre <- reduceByKey(lines, function(p1, p2) { list(p1[[1]] + p2[[1]], p1[[2]] + p2[[2]]) }, 2L) cltaggr <- collect(aggre) # localize dataset C <- length(cltaggr) # Total number of Classes Calculate total number of each Ci from cltaggr lapply(cltaggr, function(p) { # calculate and save P(xj|Ci) and P(Ci) })

朴素贝叶斯并行化算法 NaiveBayes Classification Algorithm

基于Spark的朴素贝叶斯并行化算法

Training SparkR Code to calculate P(xj|Ci) and P(Ci)

1. 大数据机器学习:从算法到系统

Page 34: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

Predict SparkR Code predict <- function(d) { dataMatrix <- as.matrix(d) result <- P(Ci) + P(xj|Ci) %*% dataMatrix # return max one which.max(result) – 1 # Ci starts from 0 predictRDD <- function(data) {map(data, predict) } tFile <- textFile(sc, dataFile) testData <- map(tFile, function(p){as.double(strsplit(p, " ")[[1]])}) Classlabel <- collect(predictRDD(testData)) Save predicted Class label to file

朴素贝叶斯并行化算法 NaiveBayes Classification Algorithm

基于MapReduce的朴素贝叶斯并行化算法

1. 大数据机器学习:从算法到系统

Page 35: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

TrainingDataset

(thousand) Hadoop SparkR Speedup

250 35 s 13 s 2.69

500 40 s 14 s 2.85

1000 49 s 16 s 3.06

2000 66 s 18 s 3.67

朴素贝叶斯并行化算法 NaiveBayes Classification Algorithm

基于MapReduce的朴素贝叶斯并行化算法

Zhiqiang Liu, Rong Gu, Yihua Huang. The Parallelization of Classification Algorithms Based on SparkR. CCF Big Data 2014, Beijing. 《计算机科学与探索》,2015

1. 大数据机器学习:从算法到系统

Page 36: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

更多并行化算法设计 More Parallel Algorithms We Do

Iteration Hadoop SparkR

(no cache)

SparkR

(cache) Speedup

10 374 s 103 s 43 s 8.7

20 720 s 183 s 68 s 10.6

30 1065s 274 s 94 s 11.3

SVM and Logistic Regression with MapReduce and SparkR

Zhiqiang Liu, Rong Gu, Yihua Huang. The Parallelization of Classification Algorithms Based on SparkR. CCF Big Data 2014, Beijing. 《计算机科学与探索》,2015

1. 大数据机器学习:从算法到系统

Page 37: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

Large Scale Deep Learning on Intel Xeon Phi Manycore Coprocessor with OpenMP

60 cores 30 cores

BaseLine 16024s 15960s

OpenMP 892s 2122s

OpenMP+MKL 97s 120s

Improved OpenMP+MKL

53s 81s

Speedup (fully-optimized compared with baseline)

302 197

Lei Jin, Rong Gu, Chunfeng Yuan and Yihua Huang. Large Scale Deep Learning On Xeon Phi Many-core Coprocessor. The 3rd International Workshop on Parallel and Distributed Computing for Large Scale Machine Learning and Big Data Analytics, conjunction with IPDPS 2014, May 23, 2014. Phoenix, USA

更多并行化算法设计 More Parallel Algorithms We Do

1. 大数据机器学习:从算法到系统

Page 38: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

Large Scale Learning to Rank based on Gradient Boosting Decision Tree with MPI

Research Grant from Baidu

更多并行化算法设计 More Parallel Algorithms We Do

Gu Rong,Jin Lei,Huang Yihua. Parallel Training GBRT Based on KMeans Histogram Approximation for Big Data. ICA3PP 2015

1. 大数据机器学习:从算法到系统

Page 39: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

Large Scale Learning to Rank based on Gradient Boosting Decision Tree with MPI

Implemented parallel algorithm with MPI achieves 1.5 speedup compared with existing algorithm from Baidu

更多并行化算法设计 More Parallel Algorithms We Do

1. 大数据机器学习:从算法到系统

Page 40: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

大数据机器学习并行化算法总结

• 面向大数据复杂分析挖掘,现有的串行化机器学习与数据挖掘算法都需要重写,进行并行化设计

• 不同的大数据并行处理平台上,各种大数据机器学习与数据挖掘算法需要进行基于特定平台的并行化算法设计

• 多种大数据并行处理平台为大数据分析挖掘处理提供了良好的并行编程模型和支持平台,但对于应用行业的数据分析师来说,需要具备分布式和并行计算的专业知识背景,技术门槛要求较高,不易学习和使用

• 即使对于专业性的大数据应用开发程序员来说,学习多种不同的编程模型和平台、并基于不同平台完成各种机器学习与数据挖掘算法的并行化设计,也是一个很大的负担

迫切需要研究提供一种统一化并易于使用的 大数据机器学习系统支撑平台!

1. 大数据机器学习:从算法到系统

Page 41: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

大数据机器学习系统

=“分布式机器学习系统”(Distributed Machine Learning)

或“大规模机器学习系统”(Large-Scale Machine Learning)

大数据机器学习是一个同时涉及到机器学习和大数据处理两个主要方面的

交叉性研究课题:

机器学习:一方面,它仍然需要继续关注机器学习方法和算法本身,即

需要继续研究新的或改进的学习模型和学习方法,以不断提升分析预测

结果的准确性

大数据处理:与此同时,由于数据规模巨大,大数据机器学习还要关注

如何结合分布式和并行化的大数据处理技术,以便在可接受的时间内完

成计算。为了能有效完成大数据机器学习过程,需要研究并构建兼具机

器学习和大规模分布并行计算处理能力的一体化系统

1. 大数据机器学习:从算法到系统

Page 42: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

上 篇

1. 大数据机器学习:从算法到系统

2. 大数据机器学习系统的技术特征

3. 大数据机器学习系统的主要研究问题

4. 大数据机器学习方法分类与典型系统

上篇:大数据机器学习系统概述

Page 43: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

大数据机器学习 = 机器学习 + 大数据处理

同时涉及机器学习和大数据处理两方面的诸多复杂技术问题: 1)机器学习方面的模型、训练、精度问题 2)大数据处理方面的分布式存储、并行化计算、网络通讯、局部性计算、任务

调度、容错等诸多因素

大数据机器学习系统所涉及的复杂因素

机器学习

大数据处理

插图引自:Joseph E. Gonzalez. Emerging Systems for Large-Scale Machine Learning. Tutorial on ICML 2014

2. 大数据机器学习系统技术特征

Page 44: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

2. 大数据机器学习系统技术特征

理想的大数据机器学习系统需要具备以下几方面的技术要素和特征*:

第一,大数据机器学习系统应当从整个学习的生命周期/流水线来考虑,包括训练数据和特征的提取、并行学习算法的设计、训练模型和参数的查询管理、分布式训练计算过程在内,都应在一个一体化的学习系统平台上完成

第二,大数据机器学习系统应提供多种并行训练模式,支持不同的机器学习模型和算法

第三,大数据机器学习系统需要提供对底层系统的抽象,以实现对底层通用大数据处理引擎的支持,并提供数据科学中常用的编程语言接口API

第四,机器学习系统应该拥有开放和丰富的生态、广泛的应用和快速的进化能力

* Joseph E. Gonzalez. Emerging Systems for Large-Scale Machine Learning. Tutorial on ICML 2014. * 中国计算机学会大数据专家委员会.《2014年中国大数据技术与产业发展白皮书》. 2014年12月 * Matthias Boehm S T, Berthold Reinwald P S, Yuanyuan Tian D R, et al. Hybrid parallelization strategies for large-scale machine learning in

SystemML. Proceedings of the VLDB Endowment, 2014.7(7).

Page 45: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

构建大数据机器学习系统时一个重要技术特征是:

需要通过系统抽象来降低大数据机器学习系统设计的复杂性

一个良好设计的大数据机器学习系统,应当通过定义特定的机器学习编程计算和系统抽象接口

通过编程计算和系统抽象层API,向上提供各种机器学习编程计算接口以及学习模型和训练数据的表示,向下由底层分布式系统负责处理并提供高效的分布和并行化计算实现

通过编程计算和系统抽象层,将上层机器学习和底层分布式系统解耦开来,实现低层大数据平台对程序员的透明性,使得程序员不需要去考虑底层大数据处理系统层面的因素

大数据机器学习系统抽象

2. 大数据机器学习系统技术特征

Page 46: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

上 篇

1. 大数据机器学习:从算法到系统

2. 大数据机器学习系统的技术特征

3. 大数据机器学习系统的主要研究问题

4. 大数据机器学习方法分类与典型系统

上篇:大数据集学习系统概述

Page 47: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

3. 大数据机器学习系统的主要研究问题

Apache Flink大数据分析系统研究者从数据分析复杂程度和数据规模大小的维度,考察了现有的相关研究工作和系统

他们认为,目前还缺少既具有复杂数据分析能力、又具有强大的大数据处理能力的大数据分析系统;甚至认为,对于行业大数据分析人员而言,现有的工具还处于“石器时代” Apache Flink研究者提出的分析维度和研究现状

插图引自 Volker Markl,VLDB 2014

Volker Markl. Breaking the Chains : On Declarative Data Analysis and Data Independence in the Big Data Era. VLDB 2014 Keynote

Page 48: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

UC Berkeley AMPLab从计

算性能和系统易用性两个重要维度,考察了现有的大数据机器学习研究工作和系统。根据这两个维度,他们认为,面向机器学习和数据分析时,目前已有的工作和系统,绝大多数都未能同时具备大规模分析处理能力和良好的系统易用性 Spark系统研究者提出的分析维度和研究现状

插图引自: Kraska et. al. CIDR 2013

结论:大数据机器学习除了继续关注传统意义上的学习方法和算法问题外,需要重点关注和研究解决大数据场景下所特有的两大技术问题和挑战:

一是大数据复杂分析时的计算性能问题

二是大数据机器学习系统的易用性和可编程性问题

Kraska, Tim and Talwalkar et. al. MLbase: A Distributed Machine-learning System. the 6th Conference on Innovative Data Systems Research(CIDR), 2013

3. 大数据机器学习系统的主要研究问题

Page 49: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

计算性能问题

小数据集上很多复杂度在O(n)、O(n2)、O(n3) 的传统串行化机器学习

算法都可以有效工作。但当数据规模增长到极大尺度,现有的串行化算法难以在可接受的时间完成计算,使得算法在实际应用场景中失效。

大数据时代,在大型互联网企业,大规模机器学习算法经常用于处理高达十亿至千亿级别的样本、以及高达一亿至数十亿以上数据特征的大规模数据集,如此大量的训练样本,加上机器学习算法本身的复杂性,导致难以在传统的串行化计算平台上、在可接受的时间内完成

Google著名的Seti太空搜索项目:需要进行高达千亿样本、十亿特征数据的大规模机器学习

腾讯Peacock主题模型分析系统:高达十亿文档、百万词汇、百万主题的主题模型训练,而仅仅是一个百万词汇乘以百万主题的矩阵,其数据存储量即高达3TB,如果再考虑十亿文档乘以百万主题的矩阵,则其数据量更是高达3PB之大

3. 大数据机器学习系统的主要研究问题

Page 50: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

易用性和可编程性问题

对于普通的数据分析程序员或机器学习研究者来说,在特定的大数据编程模型和平台下进行并行化机器学习和数据分析算法设计,需要掌握很多分布式系统背景知识和并行程序设计技巧,这对他们来说难度较大,导致他们经常要把实际工作的大部分时间都花费在底层复杂的并行化和分布式编程和调试上,给他们的上层数据分析和算法设计工作带来很大的不便和困难,导致在普通程序员与现有的各种大数据处理平台之间存在一个难以逾越的鸿沟

根据Google Seti项目研究人员在开发实际的大型机器学习系统上的经

验,在面向大数据时,考虑到用户开发效率问题,系统易用性与提高机器学习精度几乎同等重要,有时甚至比精度问题更为重要,“也许过去学术界很少关心设计一个精度稍差、但有更好易用性和系统可靠性的学习算法,但是,在我们的实际应用中,这会体现出非常重要的价值”

3. 大数据机器学习系统的主要研究问题

Page 51: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

易用性和可编程性问题

Hadoop的出现使得大数据处理技术和平台从无到有

基于内存计算的Spark系统的出现使得大数据分析计算从慢到快

然而,现有的大数据处理技术和系统平台都存在很大的易用性问题,难以为普通的程序员掌握和使用

3. 大数据机器学习系统的主要研究问题

Page 52: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

大数据处理的两大计算类型

易用性和可编程性问题

3. 大数据机器学习系统的主要研究问题

Page 53: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

分析师

a11 a12 ... a21 a22 ... ...

[ a1, a2, a3, a4, ...]

数学建模 分析工具

A Big Gap!

大数据处理平台和编程模型

MPI、Fortran/C++ ScaLAPACK; GPU CUDA、BIDMach; Scala、Spark RDD; Hadoop MR;

易用性和可编程性问题

对于普通的数据分析程序员或机器学习研究者来说,在特定的大数据编程模型和平台下进行并行化机器学习和数据分析算法设计,需要掌握很多分布式系统背景知识和并行程序设计技巧,这对他们来说难度较大,导致他们经常要把实际工作的大部分时间都花费在底层复杂的并行化和分布式编程和调试上,给他们的上层数据分析和算法设计工作带来很大的不便和困难,导致在普通程序员与现有的各种大数据处理平台之间存在一个难以逾越的鸿沟

3. 大数据机器学习系统的主要研究问题

Page 54: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

上 篇

1. 大数据机器学习:从算法到系统

2. 大数据机器学习系统的技术特征

3. 大数据机器学习系统的主要研究问题

4. 大数据机器学习方法分类与典型系统

上篇:大数据集学习系统概述

Page 55: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

4. 大数据机器学习方法分类与典型系统

基于主流大数据平台的并行化机器学习算法/算法库

基于Hadoop MapReduce和Spark、以及基于传统的MPI并行计算框架,

完成各种并行化机器学习和数据挖掘算法的设计

结合传统数据分析平台的大数据机器学习算法/算法库

基于R、Python、MatLab等传统数据分析平台的机器学习算法或系统

基于特定平台的大数据机器学习系统

总结机器学习算法设计的共同特性,结合大规模学习时所需要考虑的

底层分布式数据存储和并行化计算等系统问题,专门研究提供能同时

兼顾并支持大数据机器学习和大数据分布并行处理两方面问题的一体

化大数据机器学习系统

Page 56: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

基于主流大数据平台的并行化机器学习算法/算法库

用户定制算法

基于Hadoop MapReduce和Spark、以及基于传统的MPI平台he

并行计算框架,定制实现各种并行化机器学习和数据挖掘算法

优点:灵活,用户可根据需要进行特定优化

缺点:开发难度大,需要程序员掌握分布式和并行化程序设计

技术,熟悉大数据并行计算框架和平台的使用

4. 大数据机器学习方法分类与典型系统

Page 57: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

基于主流大数据平台的并行化机器学习算法/算法库

用户定制算法总结

已有大数据平台不易学习和使用

Existing parallel computing platforms provide useful means for Big Data machine learning and data analytics. However, they are not easy to learn and use for data analysts

出现新的平台时需要重写所有算法

When choosing to use different parallel computing platform, we need to rewrite all machine learning algorithms. This is a lot of burden even for professional parallel programmers

4. 大数据机器学习方法分类与典型系统

Page 58: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

基于主流大数据平台的并行化机器学习算法/算法库

基于Hadoop的算法库Mahout

主要任务是设计并提供一些基于MapReduce的可扩展的机器学习领域经典算法库,包括聚类、分类、推荐过滤、频繁项集挖掘等算法

基于Hadoop MapReduce平台实现,应用开发时,用户可直接调用Mahout算法库里实现好的算法

但提供的并行化机器学习算法数量有限,而且作为标准的软件包,其所提供的算法几乎都是标准的,在算法精度和性能上不一定能满足用户的需要

大多数机器学习算法的计算流程都比较复杂,模型的训练过程往往需要多次迭代计算(如梯度下降算法)、有中间数据集需要共享等。MapReduce模型处理这类问题时,额外的调度和初始化开销导致其处理性能偏低

4. 大数据机器学习方法分类与典型系统

Page 59: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

基于主流大数据平台的并行化机器学习算法/算法库

基于Spark的算法库MLlib

MLlib是基于Spark的分布式机器学习算法库,提供了常用机器学习算法和工具类

MLlib目前也包含一些矩阵操作,并希望基于矩阵的表示设计开发一些统计包和机器学习算法库;此外,基于MLlib的工作基础,UC Berkeley还计划研发MLBase

项目,该项目增加了机器学习模型自动选择和参数自动优化等功能,提供了以目标为导向的高层机器学习方法接口

4. 大数据机器学习方法分类与典型系统

Page 60: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

结合传统数据分析平台的大数据机器学习算法/系统

基于Python的机器学习工具包

Scikit Learn:机器学习工具包,用于进行分类、特征选择、特征提取和聚集,还包含有限的自然语言处理特征提取能力,以及词袋(bag of words)、TF-IDF、预处理(停用词/stop-words,自定义预处理,分析器)

Statsmodels:另一个聚焦在统计模型上的算法库,主要用于预测和探索性分析

PyMC:贝叶斯曲线工具,包含贝叶斯模型、统计分布和模型收敛的诊断工具,也包含一些层次模型

Shogun:聚焦于支持向量机(Support Vector Machines, SVM)的机器学习工具箱

Gensim:主题建模算法工具库(topic modeling for humans),其焦点是狄利克雷划分(Latent Dirichlet Allocation, LDA)及变体;还支持自然语言处理,能将NLP和其他机器学习算法更容易组合在一起

Orange:带有图形用户界面的机器学习算法库工具包,包含全面的分类、聚集和特征选择方法,以及交叉验证方法

PyMVPA:一个统计学习库,API上与Scikit-learn很像,包含交叉验证和诊断工具

Theano:是最成熟的深度学习库,提供数据结构(张量,tensor)来表示神经网络的层

Decaf:是最近由UC Berkeley发布的深度学习库,在Imagenet分类挑战中测试发现,其神经网络实现非常先进(state of art)

NeuroLab:是另一个API友好(与Matlabapi类似)的神经网络库,与其他库不同,它包含递归神经网络(Recurrent Neural Network,RNN)实现的不同变体

4. 大数据机器学习方法分类与典型系统

Page 61: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

结合传统数据分析平台的大数据机器学习算法/系统

R与大数据处理平台结合的机器学习算法设计

在R中利用分布式并行计算引擎来完成大数据分析挖掘算法设计

Rhadoop:由Revolution Analytics发起的一个开源项目,其目标是将统计语言R与Hadoop结合起来,目前该项目包括三个R packages,分别为支持用R来编写MapReduce应用的rmr、用于R语言访问HDFS的rhdfs以及用于R语言访问HBASE的rhbase。其中Hadoop主要用来存储和处理底层的海量数据,用R替代Java语言完成MapReduce算法设计实现

SparkR:UC Berkeley AMP实验室在2014年1月也推出了一个称为SparkR的项目。SparkR也是作为一个R的扩展包,为R用户提供一个轻量级的、在R环境里使用Spark RDD API编写程序的接口。它允许用户在R的shell环境里交互式地向Spark集群提交运行作业

RHadoop和SparkR都存在一个同样的问题:仍要求用户熟悉MapReduce或Spark RDD的编程框架和程序结构,然后将自己的MapReduce或Spark程序实现到基于R的编程接口上

4. 大数据机器学习方法分类与典型系统

Page 62: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

基于特定平台的大数据机器学习系统

Spark MLlib

MLLib与Spark环境整合起来后可完整解决大数据的分布式存储、并行化计算、

以及上层的机器学习算法设计和使用,因此,它可视为是一个基本的机器学习系统。目前其已经向上层提供多种优化方法、分类算法、回归算法、推荐算法、聚类算法。但其算法数目和接口有限,难以完全满足用户各种各样的需求,用户难以对内部算法进行深层定制优化。因此,其在灵活性方面存在不足

4. 大数据机器学习方法分类与典型系统

Page 63: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

基于特定平台的大数据机器学习系统

IBM SystemML

由IBM Waston Research Center 和IBM Almaden Research Center联合研发的一款大数据学习系统

SystemML对用户提供了一个类似于R语言的高层声明式机器学习语言DML,基于这种语言编写的程序可以被SystemML自动编译转化为MapReduce 作业在Hadoop

集群上运行,这种高层语言提供了大量的监督和非监督的机器学习算法所需要的线性代数操作算子,包括高层算子HOP(High-Level Operator)和底层算子LOP(Low-Level Operator)

DML提供了一种基于矩阵的线性代数数学运算高层原语,允许用户用接近于数据语言的自然方式刻画诸多机器学习算法

SystemML最大的优势是其具有较好的可编程性和易用性,用户不需要具备任何分布式系统的概念或编程经验即可利用其写出可扩展的机器学习算法

然而,SystemML最大的缺点在于底层计算平台单一,其只采用了MapReduce作为底层分布式执行平台,而底层的MapReduce作业本身执行性能并不高

4. 大数据机器学习方法分类与典型系统

Page 64: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

基于特定平台的大数据机器学习系统

IBM SystemML

4. 大数据机器学习方法分类与典型系统

Page 65: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

基于特定平台的大数据机器学习系统

Apache Flink

由欧洲的一群研究者和多家资助单位(EIT1 ICT Labs, DFG2, IBM, Oracle, HP等)联合研发的一款开源的并行化数据分析软件栈

为了使得数据分析人员能够在不需顾及各种并行化优化问题的情况下就可以进行深度数据分析,Flink提供了一款数据分析栈式软件,向用户提供了一种专用的脚本式语言MeteorScript,并且会自动将基于该语言开发的程序转换到底层的分布式计算平台Nephele上,由于其专用性语言不够普及,目前对语言接口上又做了更多的扩充,支持Java、Scala等语言

Flink的优势在于其从上到下提供了一整套完整的栈式解决方案,试图为

用户提供易于使用的数据分析系统,同时通过一些编译优化手段尽可能地提升程序执行的性能

其缺点在于其底层是专用的单一化计算平台,与目前普遍使用的主流大数据平台Hadoop和Spark尚未能集成使用,另外上层的语言接口层也没有包含现在数据分析师广为使用的R、Python等语言接口

4. 大数据机器学习方法分类与典型系统

Page 66: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

基于特定平台的大数据机器学习系统

Apache Flink

4. 大数据机器学习方法分类与典型系统

Page 67: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

基于特定平台的大数据机器学习系统

GraphLab

CMU(卡耐基梅隆大学)开发的一个以顶点为计算单元(vertex programs)的大规模图处理系统,是基于图模型抽象的机器学习系统

GraphLab的设计初衷主要是为了解决具有以下特点的机器学习问题:有局部依赖的稀疏数据集、迭代可收敛、异步执行

GraphLab把数据之间的依赖关系抽象成Graph结构,以顶点为计算单元,将算法的执行过程抽象成每个顶点上的GAS(Gather、Apply、Scatter)过程,其并行的核心思想是多个顶点同时执行

GraphLab的优点是能够高效地处理大规模图算法问题或者是可归结为图问题的机器学习和数据挖掘算法问题

其缺点在于提供的接口细节比较复杂,对于普通的数据分析程序员而言,有较大的掌握和使用难度

4. 大数据机器学习方法分类与典型系统

Page 68: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

基于特定平台的大数据机器学习系统

GraphLab

GAS(Gather、Apply、Scatter)操作原语

Gather:收集本节点邻居节点或边的数据或参数信息 Apply:计算所收集的信息,更新到本节点; Scatter:把本节点更新后的信息传播到邻居节点

4. 大数据机器学习方法分类与典型系统

Page 69: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

基于特定平台的大数据机器学习系统

Parameter Server与Petuum

很多机器学习算法常常要解决学习训练过程中的模型参数的高效存储与更新问题。为了有效应对和满足大数据场景下这类机器学习算法的需要,研究者提出了一种称为Parameter Server的框架,提供了一个分布式全局模型参数存储和访问接口,模型参数存储在多台server中,可以通过网络访问方便地读取全局参数

卡利基梅隆大学Li Mu等人开发了一套基于Parameter Server框架的分布式机器学习系统,该系统由一个server group和多个worker group构成。其中server group中包括一个server manager节点和多个server节点。每个server节点存储部分全局共享参数;server manager节点用来存储server节点的元信息,并通过心跳机制管理所有server

Parameter Server的优点是为大规模机器学习提供了非常灵活的模型参数调优和控制机制

缺点是缺少对大规模机器学习时的数据及编程计算模型的高层抽象,使用较为繁琐,通常比较适合于机器学习算法研究者或者需要通过调整参数深度优化机器学习算法的数据分析程序员使用

4. 大数据机器学习方法分类与典型系统

Page 70: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

基于特定平台的大数据机器学习系统

Parameter Server与Petuum

CMU SAILING 实验室研究实现了大数据学习系统Petuum。Petuum是一个基于Parameter Server框架的系统,提供基于模型的并行化处理

Petuum的Parameter Server中使用SSP(Stale Synchronous Parallel)一致性模型,允许计算速度慢的节点从本机cache中读陈旧的参数值,以此大大节省网络开销和网络等待时间,使得慢机器的大部分时间用在计算而不是等待上

Petuum在使用上需要算法设计者对分布式系统概念和系统有一定了解,其易用

性仍有一定的限制,且其底层数据存储和并行计算框架与上层的学习算法层以紧耦合的方式全部自己实现,与主流大数据平台缺少兼容性

4. 大数据机器学习方法分类与典型系统

Page 71: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

基于特定平台的大数据机器学习系统

腾讯Peacock与Mariana深度学习平台

Peacock

Peacock是腾讯公司研发的一个大规模LDA主题模型训练系统

该系统通过并行计算可对10亿x 1亿级别的大规模矩阵进行分解,从而从海量文档样本数据中学习10万到100万量级的隐含语义

为了完成大规模处理,Peacock基于吉布斯采样的LDA训练算法进行了并

行化设计,并设计实现了一个完整的具有大规模样本数据处理能力的训练系统

Peacock已广泛应用在腾讯的文本语义理解、QQ群的推荐、用户商业兴趣挖掘、相似用户扩展、广告点击率转化率预估等多个业务数据中

Peacock是一个专为LDA并行化计算而定制的大规模训练系统,它还不是一个通用化的大数据机器学习系统

4. 大数据机器学习方法分类与典型系统

Page 72: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

基于特定平台的大数据机器学习系统

腾讯Peacock与Mariana深度学习平台

Mariana

为了提供更为广泛的大规模并行化机器学习处理能力,腾讯研究构建了一个称为Mariana的深度学习平台。Mariana可提供数据并行和模型并行计算,基于GPU和CPU集群提升模型规模,加速训练性能,由三套大规模深度学习系统构成,包括:

基于多GPU的深度神经网络并行计算系统Mariana DNN:在腾讯内部用于微信语音识别声学模型训练,可训练超过1万小时的语音数据、超过40亿的数据样本、以及超过5千万的参数,相对于单GPU而言6 GPU可实现4.6倍的加速比

基于多GPU的深度卷积神经网络并行计算系统Mariana CNN:用于微信图像识别,可训练2千个以上的分类、3百万以上的数据样本、以及超过6千万的参数,相对于单GPU而言4 GPU可实现2.5倍的加速比;在图文类效果广告点击率提升方面也取得初步应用

基于CPU集群的深度神经网络并行计算系统Mariana Cluster:实现了一个基于Parameter Server模型的大规模通用化机器学习和训练系统,主要用于进行大规模广告并行化训练,完成广告点击率预估模型训练和广告点击性能优化

4. 大数据机器学习方法分类与典型系统

Page 73: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

基于特定平台的大数据机器学习系统

百度ELF与百度机器学习云平台BML

大规模分布式机器学习框架和系统ELF(Essential Learning Framework):是一个基于Parameter Server模型的通用化大规模机器学习系统,可允许

用户方便快速地设计实现大数据机器学习算法,在系统设计上吸收了Hadoop、Spark和MPI等大数据平台的优点,用类似于Spark的全内存DAG

计算引擎,可基于数据流的编程模式,通过高度抽象的编程接口,让用户方便地完成各种机器学习算法的并行化设计并完成快速计算

百度机器学习云平台BML(Baidu Machine Learning):支持丰富的机器学习算法,可支持包含20 多种大规模并行机器学习算法,提供包括数据

预处理算法、分类算法、聚类算法、主题模型、推荐算法、深度学习、序列模型、在线学习在内的各种机器学习算法支持,并通过分布和并行化计算实现优异的计算性能。BML在百度内部的业务系统中经历了线上

大规模使用部署考验,承载公司内各种重要在线业务线应用,包括凤巢广告CTR 预估、搜索LTR排名等应用

4. 大数据机器学习方法分类与典型系统

Page 74: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

基于特定平台的大数据机器学习系统

百度ELF与百度机器学习云平台BML

BML平台承载的业务与功能

4. 大数据机器学习方法分类与典型系统

Page 75: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

下 篇

大章鱼:跨平台大数据

机器学习与数据分析系统

Page 76: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

2007年Hadoop推出并成为广为接受使用的主流大数据处理技术与平台

2013年Spark推出,以内存计算大幅提升大数据处理的性能

主流大数据技术与平台

研究动机和目标

Page 77: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

• 不同的大数据并行处理平台上,各种大数据机器学习与数据挖掘算法需要进行基于特定平台的并行化算法设计

• 多种大数据并行处理平台为大数据分析挖掘处理提供了良好的并行编程模型和支持平台,但对于应用行业的数据分析师来说,这些平台不易学习和使用

• 即使对于专业性的大数据应用开发程序员来说,学习多种不同的编程模型和平台、并基于不同平台完成各种MLDM算法的并行化设计,也是一个很大的负担

迫切需要研究提供一种统一化并易于使用的大数据机器学习与数据挖掘编程模型和工具平台!

研究动机和目标

Page 78: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

主流大数据技术与平台

研究动机和目标

Page 79: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

大数据处理的两大计算类型

传统数据查询分析 vs.复杂数据分析挖掘

如何能在现有大数据平台上提供强大的SQL查询能力,方便SQL程序员进行查询分析?

易用性 问题

如何能在现有大数据平台上提供易于使用的大数据复杂分析挖掘编程方法方便数据分析人员使用?

Hive,Impala, SparkSQL Transwarp Incepter…

RHadoop, SparkR Spark Mllib…

解决 方案

Octopus(大章鱼)的工作

研究动机和目标

Page 80: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

解决方法:在数据分析师与现有大数据处理平台之间构建一个桥梁,提供统一化的编程模型和方法消除这一鸿沟

……

MPI

Spark

Un

ified &

easy-to-u

se P

rogram

min

g

MapReduce

研究动机和目标

Page 81: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

……

MPI

解决方法:对于专业性程序员来说,提供一个跨平台统一的大叔聚集起学习和数据分析编程方法和平台,实现“Write once,

run anywhere”的特性,以避免针对不同的大数据平台重写所有大数据起学习和数据分析算法

Hundred of ML

Algorithms

Spark

MapReduce

Lots of duplicated work & burden to

rewrite all ML algorithms

研究动机和目标

Page 82: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

Rhadoop:Revolution Analytics开源项目,将统计语言R与Hadoop结合起来,支持用R代替Java语言完成MapReduce程序开发 SparkR:SparkR是一个R的API包,为R用户提供一个轻量级的在R环境里使用Spark RDD API编写程序的接口。但无法支持大规模矩阵的分布计算,且系统执行效率较低 Spark MLlib:提供一个基于矩阵模型的MLDM算法库,但缺少支持大规模矩阵分布计算的能力 pbdR:来自田纳西大学,将R映射到MPI,提供基于R语言的HPC高性能计算编程能力 R:是一套广为应用领域数据分析师熟悉使用的

数据分析、统计计算及制图的开源软件系统,提供了成千上万的专业模块和实用工具。但R不能支持基于各种主流大数据平台的大数据分析处理

研究现状

现有工作的缺陷 Rhadoop、SparkR和

pbdR都存在同样的问

题:仍要求用户对MapReduce或Spark RDD以及MPI的编程框架比

较了解,然后将自己的算法基于R语言实现到

对应的编程接口上,这和在Hadoop/Spark /MPI

上写应用程序没有太大区别,只是编程接口用R语言封装了一下

所有现有工作都是基于单一平台的,不具有跨平台统一编程能力

Page 83: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

统一大数据机器学习编程模型与平台总体思路

大规模矩阵计算是机器学习与数据挖掘以及其他诸多计算问题的建模表示方法

机器学习 人工智能

数值分析

图像渲染

物理计算

社交网络

大规模 矩阵计算

Page 84: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

统一大数据机器学习编程模型与平台总体思路

• 机器学习与数据挖掘算法都可以表示为矩阵计算

• 采用矩阵作为各种机器学习与数据挖掘算法的抽象计算和编程模型

• 提供一个基于矩阵的高层并行化编程和计算模型

• 提供一个基于矩阵的易于使用的统一编程语言和软件框架

• 为底层的各种异构大数据处理平台提供一个从上层统一语言为底层各种异构大数据处理平台实现优化的大规模矩阵分布和并行计算和任务调度管理,实现底层异构平台对程序员的透明化,实现“Write once, run anyway”的目标

• 设计提供基于矩阵模型和统一平台的并行化机器学习与数据挖掘算法库

Page 85: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

统一大数据机器学习编程模型与平台总体构架

Octopus(大章鱼)项目

我们启动了一个称为“大章鱼”的项目,旨在研究实现面向大数据的跨平台统一MLDM编程模型、框架和系统平台

We have initiated a research project, named Octopus, to develop a cross-platform and unified MLDM programming model, framework and platform

Page 86: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

统一大数据机器学习编程模型与平台总体构架

Octopus(大章鱼)项目

Page 87: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

标准的R语言及其开发环境

基于矩阵模型的R语言MLDM程序

大规模矩阵自动划分与并行化计算任务调度管理

基于Spark的矩阵计算

基于Hadoop

的矩阵计算

基于MPI的

矩阵计算 。。。

Spark平台 Hadoop平台 MPI平台 。。。

基于矩阵模型的高层矩阵编程接口

基于Flink的

矩阵计算

Flink平台

统一大数据机器学习编程模型与平台总体构架

Page 88: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

Spark Map

Reduce Flink

HDFS

Tachyon

Spark-Matrix

(Marlin)

MR-Matrix

MPI-Matrix

Matrix Execution Optimization Module

OctMatrix (An R package and APIs for distributed matrix operations)

Connection Model for Underlying Matrix Lib

Single Node-R

LR, SVM, Deep Learning, Other ML Algorithms

Demo Applications

Matrix Data Representation and Storage Developed by us

Open Source

R-Matrix Flink-

Matrix

MPI

统一大数据机器学习编程模型与平台总体构架

Page 89: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

大规模分布式矩阵计算库

OctMatrix:一个基于R的大规模分布矩阵计算库,提供高层和平台独立的分布矩阵计算操作和编程接口,允许从R语言程序中直接调用

OctMatrix APIs: 编程接口包括:

读写和管理大规模矩阵数据

调用分布式矩阵运算库,底层自动完成对分布式矩阵运算时划分为子矩阵并负责调度在并行化平台上分布执行

继承并自动调用原有R语言自带的单机上的矩阵运算库已完成小规模矩阵的单机执行

Page 90: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

OctMatrix的API和代码结构

OctMatrix

Spark_MatRef

MR_MatRef

MPI_MatRef

R_MatRef

Mat_Type

Support_ NativeTachyon

NativeTachyon _Ref

Methods: initialization(); //支持从(local,HDFS,Tachyon)文件、二维数组初始化;支持特殊矩阵初始化(zeros,ones) // initializations of matrix from local, HDFS, Tachyon, two-dim Array, and also special matrix

matrixOperations(); // 支持各种矩阵函数,如分解、转置、求和等; // provide matrix operations including decompression, transformation, sum, etc.

matrixOperator(); //支持矩阵运算的操作符,如各种类型的加、减、乘、除; // provide matrix operators including Add, Sub, Mul, Div of matrices

apply(); saveToTachyon(); toArray (); sample(); delete(); …

Storage_ Location

implement

Methods: enableNativeTachyon(); getSubMatrix(); getRow(); getElement(); …

implement

Exposed Methods: initialization(); //支持从(local,HDFS,Tachyon)文件、R矩阵、R向量初始化;支持特殊矩阵初始化(zeros,ones) // initializations of matrix from local, HDFS, Tachyon, two-dim Array, and also special matrix

matrixOperations(); //支持各种矩阵函数,如分解、转置、求和等; // provide matrix operations including decompression, transformation, sum, etc.

matrixOperator(); //支持矩阵运算的操作符,如各种类型的加、减、乘、除; // provide matrix operators including Add, Sub, Mul, Div of matrices

apply(); toLocalRMatrix(); sample(); dim(); getRow(); getElement(); getSubMatrix(); delete(); …

大规模分布式矩阵计算库

Page 91: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

OctMatrix 用户编程APIs

• Matrix Initialization/Exportation • initialize OctMatrix from Local File System/HDFS/Tachyon • save OctMatrix from/to Local File System/HDFS/Tachyon • convert OctMatrix from/to native R matrix; • construct special matrix,API: ones,zeros • …

• Matrix Operators • elemwise/numeric matrix multiply,add,minus,division (API: *,+,-,/) • matrix multiply (API: %*%) • bind x and y via columns (API: cbind2) • …

• Matrix Operations • get the rows and cols of matrix, API: dim ; • the inv of a OctMatrix, API: inv ; • statistical functions, API: max, min, mean, sum ; • matrix transposition, API: t ; • matrix decomposition, API: lu, svd, etc. • apply a function to matrix, API: apply(OctMatrix, MARGIN, FUN) ; • functions contained in R matrix, such as rep,split. • get sub-matrix; • …

大规模分布式矩阵计算库

Page 92: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

大规模分布式矩阵运算优化

大规模矩阵运算中最为常用和复杂的算法是:

大规模矩阵乘法 大规模矩阵求逆

主要技术挑战

单节点难以甚至无法完成大规模矩阵相乘和求逆

大规模矩阵相乘和求逆时计算时间长,难以满足大数据处理的实时性需求,需要研究采用分布式和并行化方法提高计算速度

研究内容和目标

重点研究实现大规模矩阵分布式乘法和求逆运算方法和并行化算

法,构建基于各种大数据平台的完整大规模分布式矩阵运算库

矩阵最常用运算算法

Page 93: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

大规模分布式矩阵运算优化

三种矩阵表示方法

本地矩阵(Local Matrix)

一个可在单机上本地化完成计算的小矩阵

广播矩阵(Broadcast Matrix)

一个大小适中可广播方式发送到各个计算节点以完成分布计算的矩阵

分布式矩阵(Distributed Matrix)

一个规模极大、需要划分成子矩阵并以分布和并行化方式完成计算的矩阵

.

Page 94: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

大规模分布式矩阵运算优化

DenseVecMatrix

<行号, 向量>

...

行向量矩阵(DenseVecMatrix)

分布式矩阵的划分表示方法

块矩阵(BlockMatrix)

Block

BlockMatrix

Block

Block

Block

...

<块编号,子矩阵>

...

...

...

...问题:为了完成大规模矩阵的分布式和并行化计算,需要考虑大规模分布式矩阵的划分表示方法

Page 95: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

大规模分布式矩阵运算优化

分布式矩阵乘法

A11 A12

A21 A22

B11 B12

B21 B22

A11 B11

A12 B21

A11 B12

A12 B22

A21 B11

A22 B21

A21 B12

A22 B22

C111 C211

C112 C212

C121 C221

C122 C222

+

+

+

+

C11

C12

C21

C22

=

=

=

=

C11 C12

C21 C22

C111

C211

C112

C212

C121

C221

C122

C222

A11 B11

A12 B21

A11 B12

A12 B22

A21 B11

A22 B21

A21 B12

A22 B22

=

=

=

=

=

=

=

=

FlatMap&Join Map GroupBy&Reduce Result FlatMap&Join Map GroupBy&Reduce Result

对相乘的两个矩阵进行分块,再把子矩阵按一定规则进行分发和Join操作,再对Join后的元组进行相乘,最后按一定规则把相乘的结果进行相加。

Page 96: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

Spark Cluster Server Nodes

分布式矩阵的划分和并行化调度计算

Large Scale Matrix Partition and Optimized Execution

Schedule and Dispatch

大规模分布式矩阵运算优化

Page 97: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

分布式矩阵乘法优化

大规模分布式矩阵运算优化

1. 适用于方形矩阵相乘的均匀划分方法

2. 适用于长条形矩阵相乘的递归自适应划分方法

3. 适用于一大一小矩阵相乘的Broadcast矩阵划分方法

4. 基于BLAS的子矩阵本地化运算加速优化

问题:

不同的矩阵划分方法会造成计算性能的巨大差异,为此需要根据矩阵大小、形状和计算特点的不同,考虑优化的矩阵划分方法

为此,我们研究提出了三种针对大规模矩阵乘法的不同矩阵划分方法,同时还研究利用BLAS矩阵运算库进行本地子矩阵运算加速优化

Page 98: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

分布式矩阵乘法优化

大规模分布式矩阵运算优化

大规模矩阵乘法分布式计算时,矩阵的划分方法直接关系到矩阵计算性能。我们研究实现了基于矩阵大小和形状特征的自动化矩阵划分和调度计算方法,并完成基于Spark、Hadoop、MPI、Flink的分布式矩阵乘法计算

均匀划分 递归自适应划分方法 Broadcast矩阵划分

方形矩阵相乘 长条形矩阵相乘法

一大一小矩阵阵相乘法

Page 99: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

分布式矩阵乘法优化

大规模分布式矩阵运算优化

1. 适用于方形矩阵相乘的均匀划分方法

适用性:适用于两个方形或近似方形矩阵的相乘

方 法:均匀划分,划分块的行数不列数相等,使每个子矩阵的规模相等

9

9 3 3

3

3

3

3

将9 x 9的矩阵划分为3 x 3块

Page 100: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

分布式矩阵乘法优化

大规模分布式矩阵运算优化

适用性:适用于矩阵长宽相差较大的长条形矩阵

方 法:每次选取最长的边进行划分,给每个子矩阵分块分配计算核,

当计算核的个数或最大边长为1时停止划分

m

k

k

n

计算核数=

m= k= n=

8 4 2 1

500

1000

1200 600

500

300

2. 适用于长条形矩阵相乘的递归自适应划分方法

Page 101: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

分布式矩阵乘法优化

大规模分布式矩阵运算优化

A11

A21

A31

B

A41

A11

A21

A31

B

B

B

A41 B

C11

C21

C31

C41

Broadcast Result

适用性:适用于大矩阵不小矩阵的相乘

方 法:将大矩阵划分为Mx1x1(大矩阵为左矩阵)或1x1xM(大矩阵为

右矩阵),然后广播小矩阵到大矩阵划分后子矩阵所在的计算节点

3.适用于一大一小矩阵相乘的Broadcast矩阵划分方法

Page 102: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

分布式矩阵乘法优化

大规模分布式矩阵运算优化

4.基于BLAS的子矩阵本地化运算加速优化

划分并分发到各个节点的子矩阵运算时,可以再利用底层平台上的BLAS标准代数运算库进行子矩阵计算加速优化

Page 103: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

分布式矩阵求拟运算优化

大规模分布式矩阵运算优化

缺陷: 1. 迭代次数为矩阵的维度,过多的迭代在分布式情况下会造成额外的开销 2. 每次迭代都是串行地从左往右迭代,处理速度缓慢

4.00, 5.00, 6.00, 7.00 0.00, 1.00, 2.00, 3.00 18.0, 9.00, 10.0, 11.0 12.0, 13.0, 14.0, 25.0

0.25, 1.25, 1.50, 1.75-0.00, 1.00, 2.00, 3.00-4.50,-13.5,-17.0,-20.5-3.00,-2.00,-4.00, 4.00

0.25,-1.25,-1.00,-2.00-0.00, 1.00, 2.00, 3.00-4.50, 13.5, 10.0, 20.0-3.00, 2.00, 0.00, 10.0

-0.20, 0.10, 0.10, 0.00 0.90,-1.70,-0.20,-1.00-0.45, 1.35, 0.10, 2.00-3.00, 2.00,-0.00, 10.0

传统的Gauss-Jordan消元求逆算法

-0.20, 0.10, 0.10,-0.00 0.60,-1.50,-0.20, 0.10 0.15, 0.95, 0.10,-0.20-0.30, 0.20,-0.00, 0.10

4.00, 5.00, 6.00, 7.00 0.00, 1.00, 2.00, 3.00 18.0, 9.00, 10.0, 11.0 12.0, 13.0, 14.0, 25.0

Page 104: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

分布式矩阵求拟运算优化

大规模分布式矩阵运算优化

优化的矩阵求逆方法

主要思想:将矩阵按列分成多块,每次迭代选取多个主元列向量去更新整

个矩阵,每次更新时多块之间进行幵行化更新

求逆 计算主元列矩阵和更新当前矩阵块

Block1 Block2 Block3

Matrix:

当前块矩阵

Page 105: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

分布式矩阵求拟运算优化

优化的矩阵求逆方法

主要思想:将矩阵按列分成多块,每次迭代选取多个主元列向量去更新整

个矩阵,每次更新时多块之间进行幵行化更新 当前块矩阵

求逆 计算主元列矩阵和更新当前矩阵块

Block1 Block2 Block3

Matrix:

大规模分布式矩阵运算优化

Page 106: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

分布式矩阵求拟运算优化

优化的矩阵求逆方法

主要思想:将矩阵按列分成多块,每次迭代选取多个主元列向量去更新整

个矩阵,每次更新时多块之间进行幵行化更新 当前块矩阵

求逆 计算主元列矩阵和更新当前矩阵块

Block1 Block2 Block3

Matrix:

大规模分布式矩阵运算优化

Page 107: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

矩阵相加、相减等操作

矩阵的求值(最大值、最小值、均值等)操作

矩阵的转置

矩阵的标量计算

分布式矩阵的其他运算

除了矩阵乘法和求逆外,我们还研究实现了上述大规模矩阵运算并行化计算方法和算法,实现了完整的大规模分布式矩阵运算库

大规模分布式矩阵运算优化

Page 108: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

43

112

244

50

143

293

10000x10000x10000

15000x15000x15000

20000x20000x200000

100

200

300

NANA

矩阵

相乘

时间

(s)

矩阵规模

均匀划分方式 递归自适应划分方式 Broadcast乘法

NA

三种矩阵划分方式下矩阵相乘性能评估实验

两个方形矩阵相乘时,

均匀划分方式性能最优

大规模分布式矩阵运算优化

Page 109: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

三种矩阵划分方式下矩阵相乘性能评估实验

274

320

430

3958

72

25000x1280x25000

25000x2560x25000

25000x5120x250000

200

400

NANA

矩阵

相乘

时间

(s)

矩阵规模

均匀划分方式

递归自适应划分方式 Broadcast乘法

NA

长条形矩阵相乘时,

递归自适应划分方式

性能最优

大规模分布式矩阵运算优化

Page 110: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

三种矩阵划分方式下矩阵相乘性能评估实验

245

296

443

4359

82

19 2748

256000x1000x1000

256000x1000x2000

256000x1000x40000

200

400

矩阵

相乘

时间

(s)

矩阵规模

均匀划分方式 递归自适应划分方式 Broadcast乘法

一大一小矩阵相乘时,

Broadcast划分方法

性能最优

大规模分布式矩阵运算优化

Page 111: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

分布式矩阵乘法优化

三种矩阵划分方式下矩阵相乘性能评估实验

12 43112

244

450

1994

295

761

1430

5000x5000x5000

10000x10000x10000

15000x15000x15000

20000x20000x20000

25000x25000x250000

200

400

600

800

1000

1200

1400

1600

矩阵相乘时间开销(

s)

矩阵规模

启用 BLAS

禁用 BLAS

子矩阵运算启用BLAS加速后平均约提高3倍的计算速度

Page 112: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

31 93255

519

916

150

456

1131

2383

4377

1000x1000

2000x2000

3000x3000

4000x4000

5000x5000

0

1000

2000

3000

4000

5000

矩阵求逆的时间

(s)

矩阵规模

基于Flink优化后的Gauss-Jordan算法 基于Flink未优化的Gauss-Jordan算法

优化后的幵行化矩阵求逆算法平均约提高 4倍的计算速度

幵行化矩阵求逆算法性能评估实验

分布式矩阵乘法优化

Page 113: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

矩阵规模增大时矩阵乘法性能变化 矩阵规模增大时矩阵求逆性能变化

0 1E8 2E8 3E8 4E8 5E8 6E8 7E8

0

200

400

矩阵规模

矩阵相乘的时间

(s)

0 1E7 2E7 3E7

0

200

400

600

800

1000

矩阵规模

矩阵

求逆

的时

间(

s)

矩阵规模增大时矩阵乘法和求逆算法均达到近线性的扩展性能

分布式矩阵乘法优化

Page 114: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

0 2 4 6 8 10

100

200

300

400

任务划分数目

矩阵

求逆

时间

(s)

0 2 4 6 8 10 12 14

40

60

80

100

矩阵相乘的时间开销

(s)

节点的个数

增加节点时矩阵乘法性能变化 增加任务数目时矩阵求逆性能变化

系统规模扩展时矩阵乘法和求逆算法均达到较好的系统扩展性

分布式矩阵乘法优化

Page 115: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

基于Spark的分布式矩阵计算库Marlin性能对比

Multiply big and small matrices Multiply two big matrices

分布式矩阵乘法优化

Page 116: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

基于Spark的分布式矩阵计算库Marlin性能对比

分布式矩阵乘法优化

Page 117: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

基于Spark的分布式矩阵计算库Marlin性能对比

与标准的SparkR相比,

大章鱼中矩阵相加相乘比SparkR快 2~5倍

分布式矩阵乘法优化

Page 118: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

基于Spark的分布式矩阵计算库Marlin性能对比 Matrix Multiply , 96 partitions, executor memory 10GB, except that case 3_5 is 20GB

分布式矩阵乘法优化

Page 119: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

OctMatrix的大规模矩阵数据表示和分布存储

\Octopus_HOME \user-sesscion-id1\ \matrix-a info row_index \row-data par1.data … parN.data col_index \col-data par1.data … parN.data \matrix-b \matrix-c \user-sesscion-id2\ … \user-sesscion-id3\ …

矩阵数据可存储于本地文件系统、HDFS, 或Tachyon, 在OctMatrix矩阵库中提供了矩阵数据读写接口,以便从R语言程序中读写这些文件系统中的矩阵数据

矩阵数据在底层文件系统中存储组织时,将遵照一定的存储管理格式

Page 120: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

基于OctMatrix的大规模机器学习算法库

• Classification and regression

• Linear Regression

• Logistic Regression

• Softmax

• Linear Support Vector Machine (SVM)

• Clustering

• K-Means

• Feature extraction

• Deep Neural Network(Auto Encoder)

• More MLDM algorithms to come

Page 121: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

大章鱼如何工作?

使用标准R语言编程

环境,允许用户基于矩阵模型与分布式矩阵运算库,快速编写各种机器学习和数据挖掘算法

目前大章鱼系统已经与Spark, Hadoop MapReduce,MPI以及最新的Flink系统

无缝集成,并实现这些底层大数据平台对上层程序员的完全透明性

Spark Hadoop

MapReduce MPI

Single Machine

Octopus

标准的R语言开发环境

Flink

Page 122: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

大章鱼系统特点总结

• 易于使用、基于矩阵模型的高层编程接口

• 高层分布式矩阵运算编程接口

• 不标准R语言环境中的矩阵操作API一致

• 程序员丌需要具备低层的分布式和幵行化编程知识

• Write Once, Run Anywhere的跨平台特性

• 基于大章鱼系统编写完成的程序可以透明地运行于Spark, Hadoop MapReduce, Flink或以及MPI等各种丌同的大数据处理平台上

• 可以基于单机R语言环境编程,首先使用小数据集测试程序,然后丌需要修改任何程序,便可方便地切换幵运行于任何底层大数据平台上

• 支持各种输入输出数据源,包括HDFS、分布式文件系统Tachyon, 以及本地文件系统

Page 123: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

• 分布环境下使用R中的apply 函数 • 在OctMatrix分布矩阵运算库中提供标准R语言环境中的apply( )函

数功能,幵可以在集群的每个节点上针对矩阵的行、列和元素幵行化地执行该apply( )函数

• 传递到apply( )函数中的参数可以是任意的R函数,包括用户自定义函数UDFs.

• 可提供基于矩阵模型的机器学习和数据挖掘算法库 • 已基于OctMatrix实现了一组具有可扩展性的机器学习和数据挖掘

算法

• 不标准R语言环境无缝集成 • 不标准R语言环境无缝集成,在标准R语言环境中提供了OctMatrix

分布矩阵运算库

• 继承了R语言环境的丰富资源和功能特性

大章鱼系统特点总结

Page 124: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

基于R语言环境的编程示范

读写分布式矩阵数据示例

Page 125: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

使用R apply( )函数示例

基于R语言环境的编程示范

Page 126: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

逻辑回归算法示例

Training

Predicting

Testing

修改 “enginetype”底层计算引擎参数,将能在不需要修改任何程序代码的情况下,快速切换底层大数据计算引擎

基于R语言环境的编程示范

Page 127: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

K-Means算法示例

Algorithm

Testing

基于R语言环境的编程示范

Page 128: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

线性回归算法示例

Algorithm

Testing

基于R语言环境的编程示范

Page 129: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

标准R语言与Octopus程序代码的比较

LR Codes with Standard R

LR Codes with Octopus

基于R语言环境的编程示范

Page 130: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

K-Means Codes with Standard R K-Means Codes with Octopus

基于R语言环境的编程示范

标准R语言与Octopus程序代码的比较

Page 131: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

MPI与Hadoop MapReduce底层平台切换示例

运行于MPI上的线性代数计算

Start a MPI Daemon to run MPI-Matrix behind

基于R语言环境的编程示范

Page 132: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

切换到Hadoop环境下运行同样的线性代数计算

基于R语言环境的编程示范

MPI与Hadoop MapReduce底层平台切换示例

Page 133: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

大章鱼文档网页

http://pasa-bigdata.nju.edu.cn/octopus/

Page 134: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

进一步的研发工作

编程语言:已提供R语言编程语言,目前正在开发并提供Python语言支持

矩阵计算:已完成全部的大规模稠密矩阵运算库,目前正在开发并提供大规模稀疏矩阵运算库

R语言及其开发环境

基于矩阵模型的R语言MLDM程序

基于Spark的矩阵计算

基于Hadoop

的矩阵计算

基于MPI的

矩阵计算 。。。

Spark平台 Hadoop平台 MPI平台 。。。

基于矩阵模型的高层矩阵编程接口

基于Flink的

矩阵计算

Flink平台

稠密矩阵计算

稀疏矩阵计算

Python语言及其开发环境

稠密矩阵计算

稀疏矩阵计算

稠密矩阵计算

稀疏矩阵计算

稠密矩阵计算

稀疏矩阵计算

Page 135: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

进一步的研发工作

基于表模型和SQL的简单统计分析:除基于矩阵模型的复杂机器学习和数据分析能力外,目前正在开发并提供基于表模型(DataFrame)和SQL查询语言的简单统计查询分析功能,底层可集成各种主流的数据库系统作为数据源,在支持简单统计查询分析功能的同时,也允许将来自数据库的数据转换为矩阵,进而用矩阵模型完成复杂数据分析处理,使大章鱼成为一个兼具简单查询统计分析和复杂分析能力的综合性大数据分析平台

矩阵模型高层编程接口

R/Python语言及其开发环境

Spark 。。。 Hadoop MPI Flink

矩阵模型(稠密/稀疏矩阵) 表模型

SQL+DataFrame编程接口 表→

矩阵转换

矩阵→表转换

关系式数据库

。。。 分布式

数据库 MPP

数据库

复杂分析 简单统计分析

基于矩阵和表模型的综合数据分析

Page 136: BDTC2015 南京大学-黄宜华-octopus(大章鱼):基于r语言的跨平台大数据机器学习与数据分析系统

谢 谢!

联系信息

黄宜华

南京大学PASA大数据技术实验室

http://pasa-bigdata.nju.edu.cn

南京大学计算机科学与技术系

Email:[email protected]