Collaborative Filtering as a Case-Study for Model ...atalwalk/cikm17-case1629-cameraready.pdf · in...

9
Collaborative Filtering as a Case-Study for Model Parallelism on Bulk Synchronous Systems Ariyam Das University of California, Los Angeles [email protected] Ishan Upadhyaya University of California, Los Angeles [email protected] Xiangrui Meng Databricks [email protected] Ameet Talwalkar University of California, Los Angeles [email protected] ABSTRACT Industrial-scale machine learning applications oen train and main- tain massive models that can be on the order of hundreds of millions to billions of parameters. Model parallelism thus plays a signicant role to support these machine learning tasks. Recent work in this area has been dominated by parameter server architectures that follow an asynchronous computation model, introducing added complexity and approximation in order to scale to massive work- loads. In this work, we explore model parallelism in the distributed bulk-synchronous parallel (BSP) seing, leveraging some recent progress made in the area of high performance computing, in order to address these complexity and approximation issues. Using col- laborative ltering as a case-study, we introduce an ecient model parallel industrial scale algorithm for alternating least squares (ALS), along with a highly optimized implementation of ALS that serves as the default implementation in MLlib, Apache Spark’s machine learning library. Our extensive empirical evaluation demonstrates that our implementation in MLlib compares favorably to the leading open-source parameter server framework, and our implementation scales to massive problems on the order of 50 billion ratings and close to 1 billion parameters. CCS CONCEPTS Information systems Collaborative ltering; Computing methodologies Factorization methods; Distributed algo- rithms; KEYWORDS Collaborative ltering; Bulk synchronous parallel (BSP) systems; Al- ternating least squares (ALS); Model parallelism; Parameter servers; Apache Spark 1 INTRODUCTION e emergence of massive datasets has motivated the data parallel paradigm [5] in the distributed seing. Indeed, modern industrial Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for prot or commercial advantage and that copies bear this notice and the full citation on the rst page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permied. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specic permission and/or a fee. Request permissions from [email protected]. CIKM’17, November 6–10, 2017, Singapore. © 2016 ACM. ISBN 978-1-4503-4918-5/17/11. . . $15.00 DOI: hp://dx.doi.org/10.1145/3132847.3132862 learning applications like collaborative ltering for recommenda- tion systems or click-through rate prediction for display advertise- ments [14] require such distributed storage and processing capabil- ities. However, these learning applications also generate massive machine learning models, oen on the order of hundreds of mil- lions to billions of parameters in size. ese models are typically too large to store and update on a single machine, thus motivating model parallel industrial scale approaches for ecient storage and updating of massive models. Bulk synchronous parallel (BSP) systems such as Apache Hadoop and Apache Spark are arguably the most commonly used systems for data parallel tasks, given their elegant and serial-equivalent com- putational model. However, BSP systems have received much less aention for model parallel learning tasks, as the iterative nature of most distributed learning algorithms is seemingly a mismatch with BSP systems’ synchronization requirements. is mismatch has motivated the development of asynchronous parameter server architectures [7, 37], which handle model parallelism by using a stale synchronous update mechanism that relieves the boleneck of straggler nodes and thus reduces idle computation resources. Recent parameter server frameworks like [18, 33], built around the exible asynchronous communication model, have shown to consistently outperform BSP systems like Apache Mahout [27] and graph-centric platforms such as GraphLab [20]. However, these asynchronous mechanisms [11, 16] introduce added complexities in machine learning applications. For instance, in order to ensure convergence of these approximate solutions, pa- rameter servers typically use a dedicated scheduler [18, 33] which identies the parameters that can be updated at any given time. e scheduler also allots higher priority to parameters with slow conver- gence rates to speed up convergence [33]. Parameter servers thus incur additional computational expenses in the form of scheduling overhead and dependency structure resolution [33], and require sig- nicant resources to develop and maintain their complex soware implementations. In light of the complexities associated with parameter servers, in this work we revisit the ecacy of model parallelism in BSP systems. We focus on matrix factorization approaches [15, 28] for collaborative ltering as a case-study to compare BSP and pa- rameter servers systems. While naive BSP algorithms for matrix factorization may not be scalable, we demonstrate that an industrial scale algorithmic approach, along with an optimized implemen- tation in Spark can compete with a state-of-the-art open source

Transcript of Collaborative Filtering as a Case-Study for Model ...atalwalk/cikm17-case1629-cameraready.pdf · in...

Page 1: Collaborative Filtering as a Case-Study for Model ...atalwalk/cikm17-case1629-cameraready.pdf · in a leading open source machine learning library – Spark MLlib [24]. In particular,

Collaborative Filtering as a Case-Study forModel Parallelism on Bulk Synchronous Systems

Ariyam DasUniversity of California, Los Angeles

[email protected]

Ishan UpadhyayaUniversity of California, Los Angeles

[email protected]

Xiangrui MengDatabricks

[email protected]

Ameet TalwalkarUniversity of California, Los Angeles

[email protected]

ABSTRACTIndustrial-scale machine learning applications oen train and main-tain massive models that can be on the order of hundreds of millionsto billions of parameters. Model parallelism thus plays a signicantrole to support these machine learning tasks. Recent work in thisarea has been dominated by parameter server architectures thatfollow an asynchronous computation model, introducing addedcomplexity and approximation in order to scale to massive work-loads. In this work, we explore model parallelism in the distributedbulk-synchronous parallel (BSP) seing, leveraging some recentprogress made in the area of high performance computing, in orderto address these complexity and approximation issues. Using col-laborative ltering as a case-study, we introduce an ecient modelparallel industrial scale algorithm for alternating least squares (ALS),along with a highly optimized implementation of ALS that servesas the default implementation in MLlib, Apache Spark’s machinelearning library. Our extensive empirical evaluation demonstratesthat our implementation in MLlib compares favorably to the leadingopen-source parameter server framework, and our implementationscales to massive problems on the order of 50 billion ratings andclose to 1 billion parameters.

CCS CONCEPTS•Information systems→Collaborative ltering; •Computingmethodologies → Factorization methods; Distributed algo-rithms;

KEYWORDSCollaborative ltering; Bulk synchronous parallel (BSP) systems; Al-ternating least squares (ALS); Model parallelism; Parameter servers;Apache Spark

1 INTRODUCTIONe emergence of massive datasets has motivated the data parallelparadigm [5] in the distributed seing. Indeed, modern industrial

Permission to make digital or hard copies of all or part of this work for personal orclassroom use is granted without fee provided that copies are not made or distributedfor prot or commercial advantage and that copies bear this notice and the full citationon the rst page. Copyrights for components of this work owned by others than ACMmust be honored. Abstracting with credit is permied. To copy otherwise, or republish,to post on servers or to redistribute to lists, requires prior specic permission and/or afee. Request permissions from [email protected]’17, November 6–10, 2017, Singapore.© 2016 ACM. ISBN 978-1-4503-4918-5/17/11. . .$15.00DOI: hp://dx.doi.org/10.1145/3132847.3132862

learning applications like collaborative ltering for recommenda-tion systems or click-through rate prediction for display advertise-ments [14] require such distributed storage and processing capabil-ities. However, these learning applications also generate massivemachine learning models, oen on the order of hundreds of mil-lions to billions of parameters in size. ese models are typicallytoo large to store and update on a single machine, thus motivatingmodel parallel industrial scale approaches for ecient storage andupdating of massive models.

Bulk synchronous parallel (BSP) systems such as Apache Hadoopand Apache Spark are arguably the most commonly used systemsfor data parallel tasks, given their elegant and serial-equivalent com-putational model. However, BSP systems have received much lessaention for model parallel learning tasks, as the iterative natureof most distributed learning algorithms is seemingly a mismatchwith BSP systems’ synchronization requirements. is mismatchhas motivated the development of asynchronous parameter serverarchitectures [7, 37], which handle model parallelism by using astale synchronous update mechanism that relieves the boleneckof straggler nodes and thus reduces idle computation resources.Recent parameter server frameworks like [18, 33], built aroundthe exible asynchronous communication model, have shown toconsistently outperform BSP systems like Apache Mahout [27] andgraph-centric platforms such as GraphLab [20].

However, these asynchronous mechanisms [11, 16] introduceadded complexities in machine learning applications. For instance,in order to ensure convergence of these approximate solutions, pa-rameter servers typically use a dedicated scheduler [18, 33] whichidenties the parameters that can be updated at any given time. escheduler also allots higher priority to parameters with slow conver-gence rates to speed up convergence [33]. Parameter servers thusincur additional computational expenses in the form of schedulingoverhead and dependency structure resolution [33], and require sig-nicant resources to develop and maintain their complex sowareimplementations.

In light of the complexities associated with parameter servers,in this work we revisit the ecacy of model parallelism in BSPsystems. We focus on matrix factorization approaches [15, 28]for collaborative ltering as a case-study to compare BSP and pa-rameter servers systems. While naive BSP algorithms for matrixfactorization may not be scalable, we demonstrate that an industrialscale algorithmic approach, along with an optimized implemen-tation in Spark can compete with a state-of-the-art open source

Page 2: Collaborative Filtering as a Case-Study for Model ...atalwalk/cikm17-case1629-cameraready.pdf · in a leading open source machine learning library – Spark MLlib [24]. In particular,

parameter server implementation, and can even outperform it. Ourtwo main contributions can be summarized as follows:

• We introduce a industrial scale distributed algorithm forthe classic Alternating Least Squares (ALS) method formatrix factorization in the BSP seing. Our algorithm cur-rently serves as the default collaborative ltering methodin a leading open source machine learning library – SparkMLlib [24]. In particular, we describe a novel block-to-blockjoin technique along with a series of rigorous engineer-ing eorts, the laer of which translates many abstractconcepts originating from recent progress in high perfor-mance computing [6] into highly-ecient communication,storage, and computational optimizations. Together, ournovel algorithm and implementation optimizations resultin signicant speedups and scalability for large-scale modelparallel machine learning applications.

• We present comprehensive experimental results on industrial-scale datasets comparing our optimized ALS algorithmwith an optimized open-source parameter server imple-mentation (Petuum [33]). Our results demonstrate that ourBSP approach is comparable in terms of accuracy and run-time with Petuum for models with relatively small numbersof parameters, while we signicantly outperform Petuumas the number of model parameters increases. We performan extensive empirical evaluation with three industrialdatasets (one of which is from an actual industrial deploy-ment) that contain as many as 50 billion ratings. We learnmatrix factorization models with up to a billion parameters,thereby showing the robustness, eciency and scalabilityof our implementation.

e rest of the paper is organized as follows. In section 2, webriey review the recent literature on collaborative ltering prob-lem. Section 3 reviews the state-of-the-art distributed systems usedfor large-scale collaborative ltering problems. Section 4 rst dis-cusses the limitations of a naive BSP ALS implementation, andthen gradually introduces our various optimizations in detail thatresult in an ecient ALS algorithm, along with the lessons learnton the way. e experimental results on industry-scale datasets arepresented in Section 5.

2 BACKGROUNDe leading approach to solving large-scale collaborative lteringproblems for recommendation engines is via matrix factorization [1,15]. In this model, we want to learn the hidden user and itemfactors from an incomplete ratings matrix. More formally, let A ∈Rnu×nv be the incomplete ratings data, where nu and nv denotethe total number of users and items, respectively. en, the matrixfactorization problem can be formulated as:

minU ∈Rnu×kV ∈Rnv ×k

∑(i,j )∈Ω

(Ai j − uTi vj )

2 + λ( | |U | |2F | + | |V | |2F )︸ ︷︷ ︸

д (U ,V ;A)

(1)

where Ω represents the indices for observed ratings, λ is the reg-ularization parameter, and uTi and vTj denote the ith and jth rowvectors of the matrices U and V representing the k-dimensional

feature vectors of user i and item j, respectively. Minimizing theabove objective function allows us to approximate the incompleteratings matrix as the product of two rank-k matrices.

While the input ratings matrix A is typically sparse, the user anditem feature vectors are usually dense. us this model requires(nu + nv ) ∗ k parameters. In industrial-scale datasets, the numberof input ratings can be on the order of billions, while nu can rangeanywhere from 106 − 108. us, even when considering low rankmodels, e.g., k = 10, the number of model parameters can be onthe order of billions. e scale of both the input ratings and themodels for such large-scale problems oen necessitates storageacross multiple machines, thus requiring ecient communicationmechanisms for model training.

Classically, the Alternating Least Squares (ALS) [29] methodsolves the the objective function д(U ,V ;A) by alternatively updat-ing U and V , using the following closed form expression, shownhere for a user factor:

u∗i = (ViTVi + λIk )

−1ViTAi (2)

where Vi is the matrix containing the vectors of items rated byuser i and Ai is row vector containing ratings by user i . Previouswork [38] has shown that the subproblems for each user or itemcan trivially be solved in parallel, thus suggesting a natural paral-lelization strategy which has been adopted in systems like ApacheMahout [27]. However, as we will discuss, communication bole-necks limit the scalability of these straightforward parallelizationschemes for industrial-scale applications.

Alternatively, д(U ,V ;A) can also be solved using Stochastic Gra-dient Descent (SGD) [25] or coordinate descent [35]. SGD enjoysstrong convergence guarantees [9, 17], and asynchronous updateschemes have been proposed to scale SGD to large-scale collabora-tive ltering problems [16, 25]. However, as pointed out in variousworks [8, 35, 36], the convergence of SGD can be sensitive to thelearning rate and SGD can scale poorly in distributed seings whenthe number of workers is large (on the order of hundreds). us,many next generation parameter server frameworks (e.g. Petuum-Strads, DiFacto) have adopted the coordinate descent approach.

3 COMPETING SYSTEMSBSP systems like Apache Mahout, Spark and parameter serverframeworks like Petuum [33], DiFacto [19] have adopted dierentapproaches for the collaborative ltering problem, each of which isparticularly well-suited for its individual framework. e underlyingimplementation on these frameworks are highly optimized andtuned in accordance to each of these systems.

One of the earliest open-source industrial scale solution for col-laborative ltering on BSP systems was the ALS implementation onApache Mahout [27]. However, recently an implementation of ALSon Spark (MLlib version 1.1) has been shown to outperform Mahoutby an order of magnitude in the benchmark study in [24], mainlydue to Spark’s in-memory capabilities. However, this Spark im-plementation still suered from communication bolenecks, highstorage requirements, and signicant computational overheads,making it inecient for large-scale datasets and models. Likewise,graph based platforms like GraphLab [20], with built-in schedul-ing mechanisms, follow a vertex-centric computing model [34] to

Page 3: Collaborative Filtering as a Case-Study for Model ...atalwalk/cikm17-case1629-cameraready.pdf · in a leading open source machine learning library – Spark MLlib [24]. In particular,

ensure strong consistency among its model variables (the Gather-Apply-Scaer abstraction), thereby making its communication costcomparable to the synchronous seing on the BSP frameworks.

e recently proposed parameter server systems [18, 19, 33]leverage the idea of error-tolerance in machine learning algorithmsand follow an asynchronous/stale synchronous update mechanism,where model parameters are not synchronized at every epoch. erst generation parameter server framework PMLS Bosen [10]mainly provided a data parallel machine learning framework whichwas unable to scale to billions of model parameters. It was recentlyreplaced by the state-of-the-art model parallel parameter serversystem Petuum (or PMLS Strads), which have been shown to out-perform BSP systems and graph-central frameworks like GraphLab[33].

In addition to a stale-synchronous model, Petuum also oersa dynamic scheduler that prioritizes computation towards non-converged model parameters, hoping for a faster convergence.However, the asynchrony in the updates can lead to the diver-gence of strongly correlated model parameters. is observationintroduces additional overhead for the scheduler, as it must de-cide which model parameters can be updated independently. Withrespect to the matrix factorization problem, Petuum solves the ob-jective function in equation (1) using a highly optimized distributedimplementation of coordinate descent [13].

Another recent parameter server system, DiFacto [19] supportslarge-scale distributed factorization machines to solve the recom-mendation problem. However, this system is optimized to incorpo-rate user features. Unlike all the other aforementioned competingsystems, DiFacto solves a more complex objective than the onedescribed in equation (1).

4 DISTRIBUTED ALS IMPLEMENTATIONIn this section, we rst examine a trivial distributed ALS algorithm,which broadcasts everything as shown in Figure 1a. In this simplealgorithm, the ratings matrix is loaded into the memory of themaster which then initializes the model and broadcasts both dataand initial model parameters. At the end of each ALS iteration, theupdated parameters are then broadcasted back. Consequently, thisapproach involves a lot of communication overhead and can onlywork for small data and model sizes.

A beer alternative would be to use a data parallel approach,where the ratings matrix is partitioned across the workers and themaster initializes the models and broadcasts only the parameters.is case is shown in Figure 1b. e updated model at the endof each iteration is then broadcasted again. is algorithm worksreasonably well on large datasets, provided the number of modelparameters remains small.

However this approach also does not scale to large model sizesthat do not t in the memory of a single machine. In fact, fortraining these large models, we need to leverage the idea of modelparallelism, where models (user and item factors) are initializedat the workers and shared at each iteration via joins between theworkers as shown in Figure 1c. However, as we show next in Section4.1.1, a naive model parallel algorithm may not scale well due tothe overall communication cost. Aer discussing the inadequacies

of these naive algorithms, we will then gradually introduce ouroptimization strategies to solve these limitations.

4.1 Reducing Communication Cost4.1.1 All-to-All Join. In a naive model parallel ALS algorithm,

the ratings matrix, the user and item factors are distributed acrossthe workers in a cluster. Let us assume in an ALS iteration, we needto calculate the item factors from the previously computed userfactors. is means the appropriate user factors need to be sent tothe machines containing the relevant item factors [26]. To buildan intuitive understanding of this approach, consider the bipartitegraph presented in Figure 2. In this gure, the users are representedby the nodes on the le and the items by nodes on the right. Eachedge here represents a rating. Now, for computing an item featurevector, say for v1, we need to send the user factors for users u1and u2 to the node storing the factors for v1. Similarly, whilecomputing factors for v2, we need to send the factors of u1 and u2along with u3 to the node, which has the factors of item v2. is issimilar to the message passing mechanism of vertex programmingmodels executed on platforms like GraphLab [20] and Pregel [21],irrespective of mirroring technique [34]. It is also important tonote that, even when the factors for v1 and v2 are hosted on thesame machine, this algorithm will still end up sending the factorsof u2 twice. In fact, the communication cost in this algorithm isgoverned by the number of edges times the size of the factors weare computing. Since, the number of edges is equal to the numberof ratings, the communication cost is given by O (nk ), where n isthe number of ratings under consideration and k is the rank.

Solving a least squares convex problem, using the closed formexpression shown in (2), has a computational time complexity ofO (nk2). Although, the communication cost is less than the compu-tation cost of O (nk2), but the computation is done in CPU. usfor large-scale models, the network bandwidth and the communi-cation cost form the main boleneck in BSP systems like Spark (orgraph-based platforms like GraphLab) as naive algorithms end upshuing huge amount of data over the network for each model up-date in every iteration. erefore to mitigate this issue, we proposethe following novel block-to-block strategy.

Figure 2: All to all join adversely impacts communicationcost thereby making naive model parallel ALS unscalable.

4.1.2 Block-to-Block Join. In a block-to-block join algorithm,we use our own data structure to reduce the shuing overhead bypartitioning the ratings, user factors and item factors into blocksdistributed over the workers in the cluster. In this algorithm, wecreate two sets of blocks – InBlocks and OutBlocks. Formally, theOutBlocks store the factors which are needed to be sent out, while

Page 4: Collaborative Filtering as a Case-Study for Model ...atalwalk/cikm17-case1629-cameraready.pdf · in a leading open source machine learning library – Spark MLlib [24]. In particular,

(a) Broadcast everything (b) Data parallel architecture (c) Model parallel architecture

Figure 1: Dierent architectures for distributed ALS implementation.

InBlocks store the factors which are being computed during thecurrent iteration. Continuing with the same example introducedearlier, the corresponding InBlocks and OutBlocks are shown inFigure 3. Here, we store the factors for users u1 and u2 on theOutBlock P1 and the factors for user u3 on OutBlock P2. Similarly,we partition the item factors for items v1, v2, v3 and v4 evenly intoInblocks Q1 and Q2. If we assume that each block is stored on asingle node, then the user factors in OutBlock P1 only need to besent once over the network to update both the factors for v1 andv2, thereby reducing the communication cost over all-to-all join.

In addition to the InBlocks and OutBlocks, we also need twoauxiliary data structures – OutLink mapping and InLink mapping.e OutLink mapping stores the user/item ids and feature vectorsfor a given OutBlock, along with a list of destination InBlocks thatindicates where to send these vectors. e second auxiliary datastructure is called InLink mapping and is stored at each InBlock.It represents a sub-graph that indicates which user/item factors touse for computing a given item/user factor respectively, once therequired data has been sent using the OutLink mapping.

Figure 3: Reducing communication cost using block to blockjoin.

4.1.3 Ratings Matrix Distribution. e distribution of the inputratings matrix can also play a signicant role in minimizing thecommunication overhead. For example, consider the 1D partitioningshown in Figure 4, where the ratings are distributed in a row-wisefashion across the workers. Unfortunately, this partitioning would

create a signicant amount of data shuing across the clusterwhile computing the item factors (similar argument applies for userfactors if we use a column-wise partitioning).

Another alternative is to use 2D partitioning shown in Figure 4,where disjoint blocks of the ratings matrix are distributed acrossthe workers. However, in the worst case, a worker can end uphaving just a single rating due to this 2D partitioning. As a result,computing the user and item factors corresponding to that workerwould involve a lot of data shuing.

In order to resolve the above issues, we leverage the concept ofhybrid 1.5D partitioning [6] as shown in Figure 4. In this strategy,two copies of the sub ratings matrix are cached with the correspond-ing InLink mapping at the InBlocks to reduce the cost of shuingat each iteration. One copy is used the for InBlocks for users andanother for InBlocks for items. ese algorithmic optimizationsallow us to signicantly reduce the communication cost. However,with 1.5D partitioning, we are now storing two copies of the rat-ings. erefore, we also need to store the InBlocks eciently, asotherwise a storage overhead would lead to a larger number ofmachines being required in the cluster, thus adversely impactingthe cost and scalability.

Figure 4: ree dierent strategies for distributing the rat-ings matrix.

Page 5: Collaborative Filtering as a Case-Study for Model ...atalwalk/cikm17-case1629-cameraready.pdf · in a leading open source machine learning library – Spark MLlib [24]. In particular,

4.2 Reducing Storage Overhead4.2.1 Naive Implementation. As discussed earlier, the InBlocks

for items contain user IDs (with corresponding feature vectors)along with the ratings for each corresponding user. e samelogic follows for InBlocks for users as well. e naive way ofarranging the InBlocks for items would be to use an array of tu-ples in the format <itemid:int, userid:int, rating:double>.For instance, the InBlock Q1 in Figure 3 can be stored naively as:[(v1,u1,r11), (v2,u1,r12), (v1,u2,r21), (v2,u2,r22), (v2,u3,r32)] How-ever, there are two signicant problems with this naive storagescheme – rst, there will be a huge storage overhead as each tupleneeds to maintain additional pointer, where the pointers are usuallyof storage type long (i.e. additional bytes for each tuple). Secondly,having a tuple for each rating would create billions of objects acrossall the Java virtual machines spawned on the dierent nodes in acluster. is would create a high garbage collection (GC) pressureand increase the computational overhead.

4.2.2 Semi-naive Implementation. A slightly beer approachwould be to use three primitive arrays instead of an array of tuples,i.e.,: ([v1,v2,v1,v2,v2], [u1,u1,u2,u2,u3], [r11,r12,r21,r22,r32]). iswould reduce the GC pressure as well as the storage overhead com-pared to the naive strategy. It is worth mentioning that instead ofusing array of type double to store the ratings, we use the primitivetype float, as this slight loss of precision does not impact the accu-racy of the ALS solution, but it reduces computational and storageoverhead making the implementation more scalable. However notethat the array of items is not sorted in this storage scheme. us,we have to start solving the least squares problems for v1 and v2together to compute their corresponding item factors. In otherwords, we have to construct all the sub-problems together for thedierent items and store them in memory. is will give a worstcase space complexity of O (njk

2), where nj is the number of itemsin the given InBlock.

4.2.3 Pre-sorted Array based Implementation. One way to re-duce this storage complexity of the semi-naive implementationis to sort the primitive arrays accordingly. For example, the fol-lowing instance shows the items are sorted in ascending orderand the users and the ratings are sorted in accordance to the items:([v1,v1,v2,v2,v2], [u1,u2,u1,u2,u3], [r11,r21,r12,r22,r32]). With theprimitive arrays sorted, we can solve the sub-problems one aer an-other in sequence, i.e., we need space only to store the sub-problemfor one item vector. us, the space complexity can be reducedfromO (njk

2) toO (k2). However, it is worth noting that sorting thethree primitive arrays must be carried out eciently as otherwiseit can signicantly impact the computational overhead. is isdiscussed further in the next section.

4.2.4 Index based Implementation. With the pre-sorted arraybased implementation, we observed that there are duplicated itemsin the array adding to the overall storage overhead. us, wecompressed this item array further by removing the duplicatesand instead keeping a local index to point which user vectors arerequired by which items. Consider the following example:

([v1,v2],[0,2,5],[u1,u2,u1,u2,u3],[r11,r21,r12,r22,r32])

is example implies that for calculating the item vector for v1, wewould need the vectors of the users stored in the user array fromindex 0 to 2 (2 not included). Similarly, we would need the vectorsof the users stored in the user array at indices 2, 3 and 4 to computethe corresponding item vector for v2.

Although index based implementations is quite popular in we-bgraph compressions [3], following this strategy in our seingintroduces novel challenges. Specically, we would still need toperform lookup operations to identify where the user factor is lo-cated in the OutBlock for a given a user id. is implies that we needto create a hash map with user ids as keys and the correspondingaddresses of the user factors as values. For example, while comput-ing v1, we learned that we need to use the user factor for u1 andhence we need to perform a map lookup to identify the location ofthe corresponding user factor in the OutBlock P1. Unfortunately,a hash map for millions of objects increases the storage burden aswell as the computational overhead, since the lookup is not ecientfor large number of objects. Some of the earlier distributed ALSimplementations like in Mahout [27], Spark version 1.2 have beenadversely impacted by use of hash map or hash table.

4.2.5 Block-encoding based Implementation. In the index basedimplementation, note that the user id is not directly required inthe computation of the item vectors. Instead user id is only usedto lookup the corresponding user factor from the OutBlock. isobservation allows us to use traditional encoding techniques, wherewe encode this address information and store them into the userarray directly, instead of the user ids. We perform this by encodingthe block id of the OutBlock into the higher bits of an integer andusing its lower bits to pack the local index of the user vectors.

Consider the same running example with block-encoding basedimplementation, as shown below:

([v1,v2],[0,2,5],[0|0,0|1,0|0,0|1,1|0],[r11,r21,r12,r22,r32])

P1 and P2 are assigned block ids 0 and 1 respectively. us, wereplace the user id u2 in the user array with 0|1, indicating that theuser factor can be found in block 0 (i.e. P1) at local index 1 (i.e., thesecond vector). is encoding using the bits of an integer easilyallows us to deal up to 4 billions of users/items.

In addition to the above optimizations, also recall that in an ALSiteration we compute Vi

TVi as shown in equation 2. However, this

being a symmetric matrix, we only compute and store the lowerhalf, thus further reducing the computation and storage overheadby a factor of 2.

4.3 Reducing Computational OverheadIn this section, we briey summarize three engineering aspectswhich play a signicant role in the overall computational overhead– how to reduce the GC pressure, how to eciently sort three largeprimitive arrays and how to perform fast linear algebra operations.

• Reducing GC pressure: is plays a signicant role in manyBSP systems like Apache Hadoop and Apache Spark thatuses Java. e presence of a large number of objects inmemory usually causes the JVM to pause frequently andallow the garbage collector to free up heap space. is GCaction is random making dierent worker nodes stragglein dierent ALS iterations, thereby signicantly increasing

Page 6: Collaborative Filtering as a Case-Study for Model ...atalwalk/cikm17-case1629-cameraready.pdf · in a leading open source machine learning library – Spark MLlib [24]. In particular,

the overall computational time. us, avoiding tuple stor-age structure as mentioned in the naive storage techniqueor not using hash maps as required in the index based im-plementation signicantly mitigates the GC pressure bycreating fewer objects. In addition, we also use specializedcode during initial partitioning of the ratings to preventgenerating millions of tiny temporary objects.

• Sorting primitive arrays: As mentioned in the pre-sortedarray based implementation, we need to arrange threeprimitive arrays. icksort [12], which is the default sortin Java 6, creates lot of swaps and objects. As such, weuse an alternative, TimSort1, which is a hybrid of insertionand merge sort and is extremely ecient in sorting largesequence of numbers.

• Ecient linear algebra operations: As presented in equa-tion (2), the computation time of an ALS iteration dependson performing fast matrix multiplications and inversions.Hence we call standard and ecient native binaries of LA-PACK and BLAS [31] via the Java Native Interface (JNI) toperform these operations.

In addition to the above strategies, avoiding map lookups (inblock-encoding based implementation) and using float type tostore ratings (at a marginal loss of precision) reduces the overallcomputational runtime.

5 EXPERIMENTS5.1 SetupWe used two setups for our experiments. In the rst setup, we useda 15-node Microsoft Azure cluster with standard D12v2 instances,each of which has 4 cores, 28 GB RAM and runs on Ubuntu 14.04LTS operating system. We used this as our default setup for most ofour experiments. In this setup, 16 threads were spawn per workernode. For each of the experiments conducted on this Azure setup,we used the following seings:

• Spark: We used the default Spark HDInsight cluster onAzure which follows a 2+13 conguration, where 2 nodesare assigned as masters (primary and secondary masters)and 13 nodes as slaves. For all our experiments, we usedSpark 2.0.

• Petuum (Strads): Each of the 15 nodes was assigned therole of a worker. In addition, one of the nodes was alsogiven the roles of the co-ordinator and scheduler, as re-quired by Petuum2. In all our experiments, we disabled thefault tolerance for Petuum, as capturing periodic snapshotscan deteriorate its performance. For all our experiments,we used Petuum version 1.1. e staleness for the modelwas not a user-dened hyper-parameter, but was insteadselected automatically by the Strads scheduler.

In our second setup, we used a 16-node m3.2xlarge cluster onAWS mainly for our ablation study. In this setup, we used a 1+14conguration for Spark, with one node being assigned as the master.We used the same conguration for Petuum. In all experiments,

1TimSort was used to win the 2014 Gray Sort Benchmark [32].2ese congurations were validated by the Petuum team [33].

we omit Mahout, GraphLab as it is well-documented that Petuumsignicantly outperforms them for matrix factorization [33].

5.2 DatasetsWe worked with the following three industrial scale datasets, therst two of which are available publicly.

(1) R2-Webscope YahooMusic Ratings dataset: is is the largestindustrial ratings dataset made available for research3. isdataset represents a snapshot of the Yahoo users’ prefer-ence for various songs between 2002 to 2006. It containsaround 700 million ratings of 136 thousand songs given by1.8 million users.

(2) Amazon Review dataset: is dataset [22] was created basedon the ratings of the users across the two most popularproduct categories. is dataset was preprocessed andstored in a format compatible to both Petuum and Spark.is dataset contained around 11 million users, 3 millionitems and 30 million ratings.

(3) Industrial Scale dataset: is dataset is a sample from areal industrial application of collaborative ltering, andconsists of approximately 50 billion ratings from 50 millionusers and 5 million items [23].

5.3 Convergence CriterionWe are interested in comparing the peak performance and scalabil-ity of two dierent industrial scale frameworks (Spark MLlib andPetuum) where each of them have dierent optimal seings. How-ever, these two systems use dierent underlying algorithms witheach of them being highly optimized in accordance to their architec-tures. For example, Petuum implements coordinate descent which ismore suitable for their stale synchronous model while Spark MLlibrelies on a synchronous ALS approach for the same collaborativeltering (matrix factorization) application. Notably, comparisonof systems implementing dierent underlying algorithms for thesame application have also been reported in [18, 33].

To ensure fair comparison between the two systems (Petuum andSpark), it is important to select a suitable stopping criterion. Sincethe underlying objective function for both Petuum and Spark arethe same, an obvious choice would be to stop at an iteration whenthe change in the objective value between two consecutive epochsis less than some xed tolerance ϵ . However, we observed that thisstrict stopping criterion generally leads to signicant overing forPetuum on the training set, thereby producing considerably highRMSE on the test data. e authors of [33] suggested to computethe RMSE on a validation dataset at the end of each iteration ofcoordinate descent in Petuum and save the most optimal model,while running the computation until the strict ϵ stopping criterionis reached4. All the computations still needed to be run until the ϵcriterion is reached, as one cannot make any broad assumptionsbefore-hand about the validation RMSE versus iterations curve.

Figure 5a plots the validation RMSE (on a given Yahoo music val-idation dataset) against the coordinate descent iterations in Petuum,while a model is being trained on a 10% sample of Yahoo musictraining dataset. As shown in the gure, the validation RMSE3hps://webscope.sandbox.yahoo.com/catalog.php?datatype=r4Based on personal communications with the Petuum team.

Page 7: Collaborative Filtering as a Case-Study for Model ...atalwalk/cikm17-case1629-cameraready.pdf · in a leading open source machine learning library – Spark MLlib [24]. In particular,

curve is monotonically decreasing for rank 10, while it follows a “V”shaped curve for rank 20. Figure 5b shows the corresponding plotfor Spark. It is important to mention that we found the validationRMSE in Spark to be mostly monotonically decreasing across theALS iterations. e experimental results are reported here aerhyperparameter tuning. Unless otherwise mentioned, in all oursubsequent experiments we used ϵ = 0.01.

5.4 ResultsIn the rst set of experiments, we compare the performance of thesystems as the model size increases. We conduct these experimentson the complete yahoo dataset with λ = 0.05. Figure 6a showsthe total computation time for dierent ranks. As is evident fromthe gure, the performance of Spark and Petuum are comparablewhen the rank is small. However, as the number of model param-eters increases, Spark becomes almost twice as fast than Petuum.is result is consistent with a recent theoretical result [2] whichshows that as the number of learners increases the convergencerate following asynchronous update may greatly dier from thetheoretical ideal rate. Figure 6b shows the objective function valueon the training dataset for each of the systems when the algorithmsterminate. Figure 6c shows the corresponding test RMSE computedon a separate test dataset using the best models as determined froma validation dataset. e baseline method shown in Figure 6c simplyuses the average rating of an item as its prediction. Figures 6b and6c indicate that although Spark has a high training objective value,nevertheless, most importantly, it always has a lower test RMSEcompared to Petuum. It is also evident from these gures that incase of Spark, as the model size increases the test RMSE graduallyreduces and tapers o at very high ranks. However, surprisingly,in case of Petuum, the test RMSE gradually decreases up to rank 40and then it starts increasing with the rank. is could be possiblyaributed to the fact, that a large number of model parameterscould also mean a large number of strongly correlated factors [4],thereby leading to signicant scheduling challenges and conictsfor Petuum because of its asynchronous update. is could alsoexplain the sharp increase in computation time for Petuum as therank increases, despite having the exibility of stale synchronousmodel. Figure 7 shows the corresponding plot for computation timeon the Amazon Reviews dataset for ranks of 40 and 60.

0

500

1000

1500

2000

40 60

Com

puta

tion

time

(in s

ec)

Rank

Spark MLlib Petuum (Strads)

Figure 7: Results comparing computation time on Amazondataset for ranks 40 and 60 with λ = 0.05.

In the second set of experiments, we evaluate the scalabilityof the two systems in terms of the number of ratings. Figure 8compares the computation time between the two systems for a xedrank of 60 on dierent subsets of the complete yahoo data, havingvarying number of ratings. Here also, Petuum has a comparableperformance to Spark for a smaller number of ratings (around76 million). However, as the number of ratings increases Sparkoutperforms Petuum signicantly becoming almost twice as fast.

500

1000

1500

2000

2500

3000

3500

4000

4500

5000

0 100 200 300 400 500 600 700

Com

puta

tion

time

(in s

ec)

Number of ratings (in millions)

Spark MLlib Petuum (Strads)

Figure 8: Results comparing computation time on full Ya-hoomusic dataset for dierent number of ratings with xedrank of 60 and λ = 0.05.

Figure 9 plots the objective function value against running timefor both the systems. is experiment was conducted on the com-plete yahoo dataset with a xed rank of 60. Although Spark hasa much higher objective value at the start, it drops sharply andconverges faster than Petuum with respect to time as well as innumber of iterations. Finally, Figure 10 represents the strong scal-ing experiments, which were conducted on a 50% sample of theyahoo dataset with a xed rank of 60. e gure shows that in eachof the three setups with 9, 12 and 15 machines Spark outperformsPetuum consistently for the same amount of work.

1x108

1x109

1x1010

0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000Obj

ecti

ve f

unct

ion

valu

e (l

ogar

ithm

ic s

cale

)

Running time (in sec)

Spark MLlib Petuum (Strads)

Figure 9: Plot of objective function value with running timeon complete Yahoomusic dataset formatrix rank 60 and λ =0.05.

In our nal experiment, we present an ablation study on theeectiveness of our storage optimization algorithm. We conducted

Page 8: Collaborative Filtering as a Case-Study for Model ...atalwalk/cikm17-case1629-cameraready.pdf · in a leading open source machine learning library – Spark MLlib [24]. In particular,

1.16

1.18

1.2

1.22

1.24

1.26

1.28

1.3

1.32

2 4 6 8 10 12 14 16 18 20 22

RM

SE

on

valid

atio

n da

tase

t

Number of iterations of coordinate descent in Petuum

Rank 10 Rank 20

(a) Iteration vs validation RMSE in Petuum

1.07

1.08

1.09

1.1

1.11

1.12

1.13

1.14

2 4 6 8 10 12 14 16

RM

SE

on

valid

atio

n da

tase

t

Number of iterations of ALS in Spark

Rank 10 Rank 20

(b) Iteration vs validation RMSE in Spark

Figure 5: RMSE computed on a separately provided Yahoo music validation dataset for ranks 10 and 20 with λ = 0.05.

0

1000

2000

3000

4000

5000

6000

7000

8000

9000

20 30 40 50 60 70 80 90 100

Com

puta

tion

time

(in s

ec)

Rank

Spark MLlib Petuum (Strads)

(a) Rank vs computation time

4.5x108

5x108

5.5x108

6x108

6.5x108

7x108

7.5x108

20 30 40 50 60 70 80 90 100

Obj

ecti

ve v

alue

at t

erm

inat

ion

Rank

Spark MLlib Petuum (Strads)

(b) Rank vs objective value at termination

0.9

1

1.1

1.2

1.3

1.4

1.5

20 30 40 50 60 70 80 90 100

Tes

t RM

SE

Rank

Spark MLlib Petuum (Strads) Baseline

(c) Rank vs test rmse

Figure 6: Performance comparison on full Yahoo music dataset for dierent ranks with λ = 0.05.

0

500

1000

1500

2000

2500

3000

9x4

core

s

12x4

cor

es

15x4

cor

es

Com

puta

tion

time

(in s

ec)

No. of cores

Spark MLlib Petuum (Strads)

Figure 10: Results comparing computation time on 50% Ya-hoo music dataset for rank 60 with λ = 0.0001 and ϵ = 0.02.

this experiment on the Amazon Review dataset using the AWSsetup with rank 10. In this study, we compare the storage spacerequired to store the InBlocks and OutBlocks in the unoptimizedversion of Spark MLlib (version 1.2) with the block-encoding basedimplementation, which is available in MLlib from version 1.4 on-wards. e corresponding optimization results are reported in Table1. As observed from the table, block-encoding based implemen-tation can compress userInBlock and itemOutBlock to nearly 30%of their initial sizes, while userOutBlock and itemInBlock can befurther compressed to 18%.

Table 1: Reduction in Storage Overhead

Block MLlib 1.2 MLlib 1.4+userInBlock 941MB 277MBuserOutBlock 355MB 65MBitemInBlock 1380MB 243MBitemOutBlock 119MB 37MB

5.5 Real Industrial DeploymentWe next present results on an industrial dataset consisting of roughly50 billion ratings from 50 million users and 5 million items. ematrix factorization implementation on Spark MLlib has been indus-trially deployed [23] and tested on 32 r3.8xlarge nodes (around$10/hr with spot instances). In this setup, it usually takes 1 hourto complete 10 iterations for building a model with rank 10 whichconsists of 550 million parameters. On average, it usually takes10 minutes to prepare the InBlocks and the OutBlocks and then 5minutes per ALS iteration.

6 CONCLUSIONIn this paper, we presented an ecient model parallel algorithmfor ALS and discussed its optimized implementation on ApacheSpark. is implementation, which is available in the current ver-sion of Spark MLlib (version 2.1.0) has been industrially deployedfor large-scale collaborative ltering problems. We also bench-marked the performance of our implementation against another

Page 9: Collaborative Filtering as a Case-Study for Model ...atalwalk/cikm17-case1629-cameraready.pdf · in a leading open source machine learning library – Spark MLlib [24]. In particular,

optimized implementation developed on the leading open sourceparameter server framework, Petuum (Strads). Empirical resultsshow that MLlib can actually outperform such asynchronous sys-tems in terms of scalability, accuracy and computation time as thenumber of parameters increases. In future, we plan to extend theoptimization strategies discussed here to develop ecient modelparallel algorithms for building linear models on BSP systems andon other architectures like GPUs [30].

ACKNOWLEDGMENTis work was funded in part via National Science FoundationAward 1555772. We thank our reviewers, Brooke Wenig, Hang Qiand Lisha Li for their thoughtful comments and insights. We alsothank the Petuum team for their feedback and assistance with theexperimental comparison.

REFERENCES[1] Kamal Ali and Wijnand van Stam. 2004. TiVo: Making Show Recommendations

Using a Distributed Collaborative Filtering Architecture. In Proceedings of theTenth ACM SIGKDD International Conference on Knowledge Discovery and DataMining (KDD ’04). 394–401.

[2] Onkar Bhardwaj and Guojing Cong. 2016. Practical Eciency of AsynchronousStochastic Gradient Descent. In Proceedings of the Workshop on Machine Learningin High Performance Computing Environments (MLHPC ’16). 56–62.

[3] P. Boldi and S. Vigna. 2004. e Webgraph Framework I: Compression Techniques.In Proceedings of the 13th International Conference on World Wide Web (WWW’04). 595–602.

[4] Joseph K. Bradley, Aapo Kyrola, Danny Bickson, and Carlos Guestrin. 2011. Par-allel Coordinate Descent for L1-Regularized Loss Minimization. In InternationalConference on Machine Learning (ICML 2011).

[5] Cheng-Tao Chu, Sang Kyun Kim, Yi-An Lin, YuanYuan Yu, Gary Bradski, An-drew Y. Ng, and Kunle Olukotun. 2006. Map-reduce for Machine Learning onMulticore. In Proceedings of the 19th International Conference on Neural Informa-tion Processing Systems (NIPS’06). 281–288.

[6] David Clarke. 2014. Design and Implementation of Parallel Algorithms for Mod-ern Heterogeneous Platforms Based on the Functional Performance Model. Ph.D.Dissertation. University College Dublin.

[7] Wei Dai, Abhimanu Kumar, Jinliang Wei, Qirong Ho, Garth Gibson, and Eric P.Xing. 2015. High-performance Distributed ML at Scale rough Parameter ServerConsistency Models. In Proceedings of the Twenty-Ninth AAAI Conference onArticial Intelligence (AAAI’15). 79–87.

[8] Soham De and Tom Goldstein. 2016. Ecient Distributed SGD with VarianceReduction. In IEEE 16th International Conference on Data Mining (ICDM).

[9] Rong Ge, Jason D Lee, and Tengyu Ma. 2016. Matrix Completion has No SpuriousLocal Minimum. In Advances in Neural Information Processing Systems 29, D. D.Lee, M. Sugiyama, U. V. Luxburg, I. Guyon, and R. Garne (Eds.). 2973–2981.

[10] Qirong Ho. 2017. Petuum v0.93 Documentation. hps://github.com/sailing-pmls/bosen/blob/v0.9.3/Petuumv0.93documentation.pdf/. (2017). [Online; accessed14-February-2017].

[11] Qirong Ho, James Cipar, Henggang Cui, Jin Kyu Kim, Seunghak Lee, Phillip B.Gibbons, Garth A. Gibson, Gregory R. Ganger, and Eric P. Xing. 2013. MoreEective Distributed ML via a Stale Synchronous Parallel Parameter Server. InProceedings of the 26th International Conference on Neural Information ProcessingSystems (NIPS’13). 1223–1231.

[12] C. A. R. Hoare. 1961. Algorithm 64: icksort. Commun. ACM 4, 7 (July 1961).[13] Petuum Inc. 2017. Petuum Documentation. hps://media.readthedocs.org/pdf/

petuum/latest/petuum.pdf/. (2017). [Online; accessed 14-February-2017].[14] Yuchin Juan, Yong Zhuang, Wei-Sheng Chin, and Chih-Jen Lin. 2016. Field-

aware Factorization Machines for CTR Prediction. In Proceedings of the 10th ACMConference on Recommender Systems (RecSys ’16). 43–50.

[15] Ehalia Karydi and Konstantinos Margaritis. 2016. Parallel and DistributedCollaborative Filtering: A Survey. ACM Comput. Surv. 49, 2 (Aug. 2016), 37:1–37:41.

[16] Janis Keuper and Franz-Josef Pfreundt. 2015. Asynchronous Parallel StochasticGradient Descent: A Numeric Core for Scalable Distributed Machine Learn-ing Algorithms. In Proceedings of the Workshop on Machine Learning in High-Performance Computing Environments (MLHPC ’15). 1:1–1:11.

[17] Jason D Lee, Max Simchowitz, Michael I Jordan, and Benjamin Recht. 2016.Gradient Descent Converges to Minimizers. In Conference on Learning eory(COLT 2016).

[18] Mu Li, David G. Andersen, Jun Woo Park, Alexander J. Smola, Amr Ahmed,Vanja Josifovski, James Long, Eugene J. Shekita, and Bor-Yiing Su. 2014. ScalingDistributed Machine Learning with the Parameter Server. In Proceedings ofthe 11th USENIX Conference on Operating Systems Design and Implementation(OSDI’14). 583–598.

[19] Mu Li, Ziqi Liu, Alexander J. Smola, and Yu-Xiang Wang. 2016. DiFacto: Dis-tributed Factorization Machines. In Proceedings of the Ninth ACM InternationalConference on Web Search and Data Mining (WSDM ’16). 377–386.

[20] Yucheng Low, Danny Bickson, Joseph Gonzalez, Carlos Guestrin, Aapo Kyrola,and Joseph M. Hellerstein. 2012. Distributed GraphLab: A Framework for Ma-chine Learning and Data Mining in the Cloud. Proc. VLDB Endow. 5, 8 (April2012), 716–727.

[21] Grzegorz Malewicz, Mahew H. Austern, Aart J.C Bik, James C. Dehnert, IlanHorn, Naty Leiser, and Grzegorz Czajkowski. 2010. Pregel: A System for Large-scale Graph Processing. In Proceedings of the 2010 ACM SIGMOD InternationalConference on Management of Data (SIGMOD ’10). 135–146.

[22] Julian McAuley, Christopher Targe, Qinfeng Shi, and Anton van den Hengel.2015. Image-Based Recommendations on Styles and Substitutes. In Proceedingsof the 38th International ACM SIGIR Conference on Research and Development inInformation Retrieval (SIGIR ’15). 43–52.

[23] Xiangrui Meng. 2017. Implementing Large-Scale Matrix Factorization on ApacheSpark. In AAAI 2017 Workshop on Distributed Machine Learning.

[24] Xiangrui Meng, Joseph K. Bradley, Burak Yavuz, Evan R. Sparks, ShivaramVenkataraman, Davies Liu, Jeremy Freeman, D. B. Tsai, Manish Amde, SeanOwen, Doris Xin, Reynold Xin, Michael J. Franklin, Reza Zadeh, Matei Zaharia,and Ameet Talwalkar. 2015. MLlib: Machine Learning in Apache Spark. CoRRabs/1505.06807 (2015).

[25] Jinoh Oh, Wook-Shin Han, Hwanjo Yu, and Xiaoqian Jiang. 2015. Fast andRobust Parallel SGD Matrix Factorization. In Proceedings of the 21th ACM SIGKDDInternational Conference on Knowledge Discovery and Data Mining (KDD ’15).865–874.

[26] Anand Rajaraman and Jerey David Ullman. 2011. Mining of Massive Datasets.[27] Sebastian Schelter, Christoph Boden, Martin Schenck, Alexander Alexandrov,

and Volker Markl. 2013. Distributed Matrix Factorization with Mapreduce Us-ing a Series of Broadcast-joins. In Proceedings of the 7th ACM Conference onRecommender Systems (RecSys ’13). 281–284.

[28] Gabor Takacs, Istvan Pilaszy, Boyan Nemeth, and Domonkos Tikk. 2008. MatrixFactorization and Neighbor Based Algorithms for the Netix Prize Problem. InProceedings of the 2008 ACM Conference on Recommender Systems (RecSys ’08).267–274.

[29] Gabor Takacs and Domonkos Tikk. 2012. Alternating Least Squares for Per-sonalized Ranking. In Proceedings of the Sixth ACM Conference on RecommenderSystems (RecSys ’12). 83–90.

[30] Wei Tan, Liangliang Cao, and Liana Fong. 2016. Faster and Cheaper: ParallelizingLarge-Scale Matrix Factorization on GPUs. In Proceedings of the 25th ACM In-ternational Symposium on High-Performance Parallel and Distributed Computing(HPDC ’16). 219–230.

[31] Wikipedia. 2017. Jblas: Linear Algebra for Java. hps://en.wikipedia.org/wiki/Jblas: Linear Algebra for Java. (2017). [Online; accessed 14-February-2017].

[32] Reynold Xin. 2017. Apache Spark the fastest open source engine for sortinga petabyte. hps://databricks.com/blog/2014/10/10/spark-petabyte-sort.html.(2017). [Online; accessed 14-February-2017].

[33] Eric P. Xing, Qirong Ho, Wei Dai, Jin-Kyu Kim, Jinliang Wei, Seunghak Lee, XunZheng, Pengtao Xie, Abhimanu Kumar, and Yaoliang Yu. 2015. Petuum: A NewPlatform for Distributed Machine Learning on Big Data. In Proceedings of the21th ACM SIGKDD International Conference on Knowledge Discovery and DataMining (KDD ’15). 1335–1344.

[34] Da Yan, James Cheng, Yi Lu, and Wilfred Ng. 2015. Eective Techniques forMessage Reduction and Load Balancing in Distributed Graph Computation. InProceedings of the 24th International Conference on World Wide Web (WWW ’15).1307–1317.

[35] Hsiang-Fu Yu, Cho-Jui Hsieh, Si Si, and Inderjit Dhillon. 2012. Scalable CoordinateDescent Approaches to Parallel Matrix Factorization for Recommender Systems.In Proceedings of the 2012 IEEE 12th International Conference on Data Mining(ICDM ’12). 765–774.

[36] Hsiang-Fu Yu, Cho-Jui Hsieh, Si Si, and Inderjit S. Dhillon. 2014. Parallel MatrixFactorization for Recommender Systems. Knowl. Inf. Syst. 41, 3 (Dec. 2014),793–819.

[37] Erheng Zhong, Yue Shi, Nathan Liu, and Suju Rajan. 2016. Scaling FactorizationMachines with Parameter Server. In Proceedings of the 25th ACM International onConference on Information and Knowledge Management (CIKM ’16). 1583–1592.

[38] Yunhong Zhou, Dennis Wilkinson, Robert Schreiber, and Rong Pan. 2008. Large-Scale Parallel Collaborative Filtering for the Netix Prize. In Proceedings of the 4thInternational Conference on Algorithmic Aspects in Information and Management(AAIM ’08). 337–348.