SlideShare a Scribd company logo
1 of 19
Download to read offline
协同过滤-矩阵分解
liupeng11

2017.10
业务
•画报锁屏场景

•like

•unlike(dislike)

•share

•buy

•click

•数据规模

•(user, image, rating)

•(3820_8649, 2_7347, 6_5556_0952)

• 仅 rating, disk parquet 6.5 GB ,
RDD cache 48+ GB,单机内存不不够
常⽤用 CF
• user CF

• item CF

• matrix factorization

• latent factor

• 本质降维 user embedding, item embedding
MF
MF
• Alternative Least Square (ALS) (using QR, SVD)

Matrix Algebra
Theory, Computations, and Applications
in Statistics
• Stochastic Gradient Descent (SGD)
ALS
• 现成 Spark MLlib ALS

• 数据结构: CSC-like (compressed sparse column) format matrix

• 算法:NormalEquation Ax = b solving weighted least squares

• 优点:肯定收敛且速度快,基本不不需要调参

• 缺点(⼤大数据量量)

• shuffle data size ⼤大,容易易 retry -> failed

• 需要⾃自⼰己实现 continuous training, 花了了不不少时间 refactor,code
画报 train
• rank 600 (多⼤大可以⽆无误差拟合 train data ?)

• 让最近时间的 rating 有更更⾼高权重

3 epoch for data in (300, 100, 30, 14, 7, 3, 1) 天内

• Spark 600 executors,600 Blocks

• 300天数据量量时 1.5 h / epoch,遇到 retry, 此恨绵绵⽆无绝
期
画报 recommend
• userFactor dot itemFactor

• userFactor 3 kw, 100+ GB

• itemFactor 70+ MB,⼩小数据 broadcast
画报写⼊入 redis
• Redis DB, 增⼤大 write timeout,避免写⼊入异常 (AOF 速度跟
不不上)

• 每个 user 写⼊入 250 个 imageId,占⽤用 60GB
SGD
• 需要更更快的训练速度,更更少的计算资源 (⼀一天⼀一算?)

• Distributed Stochastic Gradient Descent
求⼀一阶导
单机计算 demo 矩阵计算加速
参考论⽂文
• Large-Scale Matrix Factorization with Distributed
Stochastic Gradient Descent

• Sparkler: Supporting Large-Scale Matrix Factorization

• 搜不不到能⽤用的代码,email ⽆无果,⾃自⼰己实现
Stratum
• 分层训练,如何分层
mapreduce 如何实现
• 参考 recommending-items-to-more-than-a-billion-people
Spark 如何实现
• 怎样做 rotation

• 使⽤用矩阵运算加速 (mutable or immutable ? )

code Spark ⽤用好不不容易易(co-located, co-partitioned)
MovieLens 20M Dataset
对⽐比测试
• 很不不理理想

• 训练数据⼤大,存储需要更更多 node,但 epoch = subepoch *
node_num

• 不不能扩展,相⽐比较计算耗时,shuffle 耗时⼏几乎可以忽略略
展望
• 能⼒力力有限,累觉不不爱

• 更更快的矩阵运算⽅方法,更更好的数据结构

• GPU

More Related Content

Similar to Matrix factoration and DSGD in Spark

改善Programmer生活的sql技能
改善Programmer生活的sql技能改善Programmer生活的sql技能
改善Programmer生活的sql技能
Rack Lin
 
分布式Key-value漫谈
分布式Key-value漫谈分布式Key-value漫谈
分布式Key-value漫谈
lovingprince58
 
Google LevelDB Study Discuss
Google LevelDB Study DiscussGoogle LevelDB Study Discuss
Google LevelDB Study Discuss
everestsun
 
淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化
丁 宇
 
基于My sql的分布式数据库实践
基于My sql的分布式数据库实践基于My sql的分布式数据库实践
基于My sql的分布式数据库实践
锐 张
 
Exadata那点事
Exadata那点事Exadata那点事
Exadata那点事
freezr
 
张勇 搜搜前端架构
张勇 搜搜前端架构张勇 搜搜前端架构
张勇 搜搜前端架构
isnull
 
排行榜V3项目总结
排行榜V3项目总结排行榜V3项目总结
排行榜V3项目总结
Frank Xu
 
设计高性能mysql应用-TechClub技术沙龙
设计高性能mysql应用-TechClub技术沙龙设计高性能mysql应用-TechClub技术沙龙
设计高性能mysql应用-TechClub技术沙龙
banping
 
大规模网站架构
大规模网站架构大规模网站架构
大规模网站架构
drewz lin
 

Similar to Matrix factoration and DSGD in Spark (20)

改善Programmer生活的sql技能
改善Programmer生活的sql技能改善Programmer生活的sql技能
改善Programmer生活的sql技能
 
分布式Key Value Store漫谈
分布式Key Value Store漫谈分布式Key Value Store漫谈
分布式Key Value Store漫谈
 
分布式Key-value漫谈
分布式Key-value漫谈分布式Key-value漫谈
分布式Key-value漫谈
 
Google LevelDB Study Discuss
Google LevelDB Study DiscussGoogle LevelDB Study Discuss
Google LevelDB Study Discuss
 
淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化
 
Distributed Data Analytics at Taobao
Distributed Data Analytics at TaobaoDistributed Data Analytics at Taobao
Distributed Data Analytics at Taobao
 
How do we manage more than one thousand of Pegasus clusters - backend part
How do we manage more than one thousand of Pegasus clusters - backend partHow do we manage more than one thousand of Pegasus clusters - backend part
How do we manage more than one thousand of Pegasus clusters - backend part
 
基于My sql的分布式数据库实践
基于My sql的分布式数据库实践基于My sql的分布式数据库实践
基于My sql的分布式数据库实践
 
基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践
 
Mysql调优
Mysql调优Mysql调优
Mysql调优
 
Exadata那点事
Exadata那点事Exadata那点事
Exadata那点事
 
百度前端技术交流会--搜搜前端架构演变与优化
百度前端技术交流会--搜搜前端架构演变与优化百度前端技术交流会--搜搜前端架构演变与优化
百度前端技术交流会--搜搜前端架构演变与优化
 
[Baidu web frontend_conference_2010]_[soso_frontend_architecture]
[Baidu web frontend_conference_2010]_[soso_frontend_architecture][Baidu web frontend_conference_2010]_[soso_frontend_architecture]
[Baidu web frontend_conference_2010]_[soso_frontend_architecture]
 
张勇 搜搜前端架构
张勇 搜搜前端架构张勇 搜搜前端架构
张勇 搜搜前端架构
 
大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点 大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点
 
分布式存储与TDDL
分布式存储与TDDL分布式存储与TDDL
分布式存储与TDDL
 
Component in fe
Component in feComponent in fe
Component in fe
 
排行榜V3项目总结
排行榜V3项目总结排行榜V3项目总结
排行榜V3项目总结
 
设计高性能mysql应用-TechClub技术沙龙
设计高性能mysql应用-TechClub技术沙龙设计高性能mysql应用-TechClub技术沙龙
设计高性能mysql应用-TechClub技术沙龙
 
大规模网站架构
大规模网站架构大规模网站架构
大规模网站架构
 

Matrix factoration and DSGD in Spark