SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Downloaden Sie, um offline zu lesen
【論文紹介】
Zuang et al. “Fast Prallel SGD for
Matrix Factorization in Shared
Memory Systems”
2013/11/16
RecSys2013読み会 at Gunosyオフィス
加藤公一 @hamukazu
シルバーエッグテクノロジー
要旨
レイティング問題
• 映画を見た人たちがそれぞれの作品の面白
さを1~5の点数で評価したとする。
• ある人が、まだ見てない映画について、どの
ような点数を与えるだろうか?
• 注意:ショッピング向けのレコメンデーション
(これを買った人がどれを買ってくれそうか)と
は違う
Matrix Factorization Technique
与えられたuser×item行列

Sparse!

×

≈

Itemのratingは少数の特徴量で
表現できるという前提

例:映画の場合、ジャンル、
監督、主演俳優、など

≔
≐

=

≒

(不明要素を含む)

サイズの小さい行列の積で近似

Q
行列の積によって不明部分を埋める
与えられたuser×item行列

Sparse!

≒

(不明要素を含む)

最小化:

サイズの小さい行列の積で近似

×

≈

≔
≐

Q

≘ ∨≲ ⊡ ≰≔ ≱ ∩∲ ∫ ⊸ ≫≐ ≫∲ ∫ ⊸ ≫≑≫∲
∧ ∨≐ ∻ ≑ ∩ ∽
≩∻≪ ≩ ≪
≐ ≆ ≑ ≆
≲≩∻≪ ∺≲≩∻≪ ∾∰
最急降下法と確率的最急降下法(一般論)
最急降下法
目的関数

∧ ∽ ∧ ∨ ≸∩ ∻

を最小化したいとする。

≤
≸∲≒

アルゴリズム

≸ ⋃ ≸ ⊡ ⊮ ≲∧

以下を収束するまで繰り返す

≎
≘ ∧ ∨≸∩∻ ≸ ∽ ∨≸ ∻ ∺ ∺ ∺ ∻ ≸ ∩ ∲ ≒≤
∧ ∨≸ ∩ ∽ ≩
∱
≤
≩∽∱
∧≩∨≸∩
≸≪ ∻ ≪ ∲ ≊ ≩

確率的最急降下法(SGD)

ただし

は一部の変数

のみに依存する

アルゴリズム

以下を収束するまで繰り返す
i をランダムに選ぶ
すべての

≪ ∲ ≊≩
≀ ∧≩
≸ ≪ ⋃ ≸≪ ⊡ ⊮ ≀ ≸ ≪
について
SGDの前提
• 高速にそこそこいい解を得たい
– 本当の最適解を得ることはあきらめている
MFのSGD
≘

∱
≔ ≱≪ ∩ ∲ ∫ ⊸ ≐ ≫ ≐ ≫ ∲ ∫ ⊸ ≑ ≫ ≑ ≫ ∲
∧∨≐ ∻ ≑∩ ∽ ∲
∨≲≩∻≪ ⊡ ≰≩
∲ ≆ ∲ ≆
≲≩∻≪ ∺≲≩∻≪ ∾∰
∱ ∨≲≩∻≪ ⊡ ≰≔ ≱≪ ∩∲ ∫ ⊸≐ ≫≰≩≫∲ ∫ ⊸≑ ≫≱≪ ≫∲
∧≩∻≪ ∽ ∲
≩
∲
∲
≰≩∻ ≱≪ にのみ依存

≀ ∧≩∻≪ ∽ ⊡∨≲≩∻≪ ⊡ ≰≔ ≱≪ ∩≱≪≫ ∫ ⊸≐ ≰≩≫
≩
≀ ≰≩≫
≀ ∧≩∻≪ ∽ ⊡∨≲≩∻≪ ⊡ ≰≔ ≱≪ ∩≰≩≫ ∫ ⊸≑≱≪≫
≩
≀ ≱≪ ≫
≰≩≫ ⋃ ≰≩≫ ∫ ⊮∨≥≩≪ ≱≪≫ ⊡ ⊸≐ ≰≩≫∩
≱≪≫ ⋃ ≱≪≫ ∫ ⊮∨≥≩≪ ≰≩≫ ⊡ ⊸≑≱≪≫∩
≥≩≪ ∽ ≲≩≪ ⊡ ≰≔ ≱≪
≩
これは

つまり、ランダムに i, j を選んで以下を計算

ただし、
問題
• SGDを共有メモリで並列に高速に計算したい
既存手法の紹介
• HogWild
– 文字通りワイルドな方法

• DSGD
– 分散環境
確認
j

≲≩∻≪

i

≒

i

≈

≰≔
≩

j

≱≪

Q
≔ ≲≩∻≪ ⊼ ≰≔ ≱≪
≐
≩

アルゴリズム
ランダムに i, j を選んで以下を計算

×

≰≩≫ ⋃ ≰≩≫ ⊡ ⊮∨≥≩≪ ≱≪≫ ⊡ ⊸≐ ≰≩≫ ∩
≱≪≫ ⋃ ≱≪≫ ⊡ ⊮∨≥≩≪ ≰≩≫ ⊡ ⊸≑≱≪≫∩
≥≩≪ ∽ ≲≩≪ ⊡ ≰≔ ≱≪
≩
ただし、
HogWild
複数スレッドで以下を同時に繰り返す

≰ ≩ ∻ ≱≪

ランダムに i,j を選ぶ
を更新

根拠:i や j がぶつかることはめったにない
(サイズが十分大きいから)
ぶつかっても無視して進める
(あまり影響はない)
ここらへんがワイルド
F. Niu et al., HOGWILD: A lock-free approach to parallelizing stochastic gradient descent,
Advance in Neural Information Processing Systems 24, 2011
問題点
• アトミックな処理がたくさん必要
– 衝突しているときを考慮してP, Qの読み書きはア
トミックに
DSGD
入力s×s個のブロックに分ける
以下を複数ノードで並列計算
i ←ノード番号
j ←i
以下を繰り返す
( i, j )ブロックの範囲内でランダムに更新
j←(j+1) mod s
隣のノードにデータ送信
sはノード数
Node0

Node1
Node2

R. Gemulla et al., Large scale matrix factorization with distributed stochastic gradient descent, ACM SIGKDD, 2011
DSGDの問題点
• 非ゼロ要素の分布によっては計算負荷のバ
ランスが悪い
– 待ち時間が発生する
– 分散環境を想定したので、通信コストを下げるの
が最優先だった
FPSGD(提案手法)
• M×M(M>R)のブロックに分割
• 計算が終わったスレッドにフリーなブロックを
割り当てる
– フリー:同じ行、同じ列に計算中ブロックがないブ
ロック

• いくつかあるフリーなブロックのうち、更新回
数が少ないものを優先的に割り当て
– 計算の偏りがないように
例

:処理中

:フリー

ロックフリー!
Partial Random Method
• 行列要素へのアクセスを、ランダムにせずに順序性を
持たせることでキャッシュミスを減らす
• ただし、そうすることで収束性が不安定になり逆効果
になることもあるので注意
• 本論文では、ブロックはランダムに、ブロック内の要素
は順番にアクセスするPartial Random Methodを提案
する
収束性の実験

原論文から抜粋
実験結果
FPSGD**=FPSGDの実装で、スケ
ジューリングの部分をDSGD相当
に変更したバージョン
(つまり実質的にDSGD。スケ
ジューリング以外のところで差が
でないように調整)

原論文より抜粋
まとめ
• 従来の分散システム向けMatrix Factorization
をもとに共有メモリ向けの効率のよいアルゴ
リズムを考案
• スケジューリングの工夫により計算リソース
の無駄軽減に成功

• キャッシュを意識したメモリアクセスで高速化
に成功

Weitere ähnliche Inhalte

Mehr von Kimikazu Kato

Mehr von Kimikazu Kato (15)

機械学習ゴリゴリ派のための数学とPython
機械学習ゴリゴリ派のための数学とPython機械学習ゴリゴリ派のための数学とPython
機械学習ゴリゴリ派のための数学とPython
 
Pythonを使った機械学習の学習
Pythonを使った機械学習の学習Pythonを使った機械学習の学習
Pythonを使った機械学習の学習
 
Fast and Probvably Seedings for k-Means
Fast and Probvably Seedings for k-MeansFast and Probvably Seedings for k-Means
Fast and Probvably Seedings for k-Means
 
Pythonで機械学習入門以前
Pythonで機械学習入門以前Pythonで機械学習入門以前
Pythonで機械学習入門以前
 
Pythonによる機械学習
Pythonによる機械学習Pythonによる機械学習
Pythonによる機械学習
 
Introduction to behavior based recommendation system
Introduction to behavior based recommendation systemIntroduction to behavior based recommendation system
Introduction to behavior based recommendation system
 
Pythonによる機械学習の最前線
Pythonによる機械学習の最前線Pythonによる機械学習の最前線
Pythonによる機械学習の最前線
 
Sparse pca via bipartite matching
Sparse pca via bipartite matchingSparse pca via bipartite matching
Sparse pca via bipartite matching
 
正しいプログラミング言語の覚え方
正しいプログラミング言語の覚え方正しいプログラミング言語の覚え方
正しいプログラミング言語の覚え方
 
Introduction to NumPy for Machine Learning Programmers
Introduction to NumPy for Machine Learning ProgrammersIntroduction to NumPy for Machine Learning Programmers
Introduction to NumPy for Machine Learning Programmers
 
Sapporo20140709
Sapporo20140709Sapporo20140709
Sapporo20140709
 
ネット通販向けレコメンドシステム提供サービスについて
ネット通販向けレコメンドシステム提供サービスについてネット通販向けレコメンドシステム提供サービスについて
ネット通販向けレコメンドシステム提供サービスについて
 
関東GPGPU勉強会資料
関東GPGPU勉強会資料関東GPGPU勉強会資料
関東GPGPU勉強会資料
 
2012-03-08 MSS研究会
2012-03-08 MSS研究会2012-03-08 MSS研究会
2012-03-08 MSS研究会
 
純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門
 

Zuang-FPSGD