Zuang-FPSGD

1,646 views

Published on

2013/11/16 RecSys読み会での発表資料です。

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,646
On SlideShare
0
From Embeds
0
Number of Embeds
762
Actions
Shares
0
Downloads
10
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Zuang-FPSGD

  1. 1. 【論文紹介】 Zuang et al. “Fast Prallel SGD for Matrix Factorization in Shared Memory Systems” 2013/11/16 RecSys2013読み会 at Gunosyオフィス 加藤公一 @hamukazu シルバーエッグテクノロジー
  2. 2. 要旨
  3. 3. レイティング問題 • 映画を見た人たちがそれぞれの作品の面白 さを1~5の点数で評価したとする。 • ある人が、まだ見てない映画について、どの ような点数を与えるだろうか? • 注意:ショッピング向けのレコメンデーション (これを買った人がどれを買ってくれそうか)と は違う
  4. 4. Matrix Factorization Technique 与えられたuser×item行列 Sparse! × ≈ Itemのratingは少数の特徴量で 表現できるという前提 例:映画の場合、ジャンル、 監督、主演俳優、など ≔ ≐ = ≒ (不明要素を含む) サイズの小さい行列の積で近似 Q 行列の積によって不明部分を埋める
  5. 5. 与えられたuser×item行列 Sparse! ≒ (不明要素を含む) 最小化: サイズの小さい行列の積で近似 × ≈ ≔ ≐ Q ≘ ∨≲ ⊡ ≰≔ ≱ ∩∲ ∫ ⊸ ≫≐ ≫∲ ∫ ⊸ ≫≑≫∲ ∧ ∨≐ ∻ ≑ ∩ ∽ ≩∻≪ ≩ ≪ ≐ ≆ ≑ ≆ ≲≩∻≪ ∺≲≩∻≪ ∾∰
  6. 6. 最急降下法と確率的最急降下法(一般論) 最急降下法 目的関数 ∧ ∽ ∧ ∨ ≸∩ ∻ を最小化したいとする。 ≤ ≸∲≒ アルゴリズム ≸ ⋃ ≸ ⊡ ⊮ ≲∧ 以下を収束するまで繰り返す ≎ ≘ ∧ ∨≸∩∻ ≸ ∽ ∨≸ ∻ ∺ ∺ ∺ ∻ ≸ ∩ ∲ ≒≤ ∧ ∨≸ ∩ ∽ ≩ ∱ ≤ ≩∽∱ ∧≩∨≸∩ ≸≪ ∻ ≪ ∲ ≊ ≩ 確率的最急降下法(SGD) ただし は一部の変数 のみに依存する アルゴリズム 以下を収束するまで繰り返す i をランダムに選ぶ すべての ≪ ∲ ≊≩ ≀ ∧≩ ≸ ≪ ⋃ ≸≪ ⊡ ⊮ ≀ ≸ ≪ について
  7. 7. SGDの前提 • 高速にそこそこいい解を得たい – 本当の最適解を得ることはあきらめている
  8. 8. MFのSGD ≘ ∱ ≔ ≱≪ ∩ ∲ ∫ ⊸ ≐ ≫ ≐ ≫ ∲ ∫ ⊸ ≑ ≫ ≑ ≫ ∲ ∧∨≐ ∻ ≑∩ ∽ ∲ ∨≲≩∻≪ ⊡ ≰≩ ∲ ≆ ∲ ≆ ≲≩∻≪ ∺≲≩∻≪ ∾∰ ∱ ∨≲≩∻≪ ⊡ ≰≔ ≱≪ ∩∲ ∫ ⊸≐ ≫≰≩≫∲ ∫ ⊸≑ ≫≱≪ ≫∲ ∧≩∻≪ ∽ ∲ ≩ ∲ ∲ ≰≩∻ ≱≪ にのみ依存 ≀ ∧≩∻≪ ∽ ⊡∨≲≩∻≪ ⊡ ≰≔ ≱≪ ∩≱≪≫ ∫ ⊸≐ ≰≩≫ ≩ ≀ ≰≩≫ ≀ ∧≩∻≪ ∽ ⊡∨≲≩∻≪ ⊡ ≰≔ ≱≪ ∩≰≩≫ ∫ ⊸≑≱≪≫ ≩ ≀ ≱≪ ≫ ≰≩≫ ⋃ ≰≩≫ ∫ ⊮∨≥≩≪ ≱≪≫ ⊡ ⊸≐ ≰≩≫∩ ≱≪≫ ⋃ ≱≪≫ ∫ ⊮∨≥≩≪ ≰≩≫ ⊡ ⊸≑≱≪≫∩ ≥≩≪ ∽ ≲≩≪ ⊡ ≰≔ ≱≪ ≩ これは つまり、ランダムに i, j を選んで以下を計算 ただし、
  9. 9. 問題 • SGDを共有メモリで並列に高速に計算したい
  10. 10. 既存手法の紹介 • HogWild – 文字通りワイルドな方法 • DSGD – 分散環境
  11. 11. 確認 j ≲≩∻≪ i ≒ i ≈ ≰≔ ≩ j ≱≪ Q ≔ ≲≩∻≪ ⊼ ≰≔ ≱≪ ≐ ≩ アルゴリズム ランダムに i, j を選んで以下を計算 × ≰≩≫ ⋃ ≰≩≫ ⊡ ⊮∨≥≩≪ ≱≪≫ ⊡ ⊸≐ ≰≩≫ ∩ ≱≪≫ ⋃ ≱≪≫ ⊡ ⊮∨≥≩≪ ≰≩≫ ⊡ ⊸≑≱≪≫∩ ≥≩≪ ∽ ≲≩≪ ⊡ ≰≔ ≱≪ ≩ ただし、
  12. 12. 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
  13. 13. 問題点 • アトミックな処理がたくさん必要 – 衝突しているときを考慮してP, Qの読み書きはア トミックに
  14. 14. 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
  15. 15. DSGDの問題点 • 非ゼロ要素の分布によっては計算負荷のバ ランスが悪い – 待ち時間が発生する – 分散環境を想定したので、通信コストを下げるの が最優先だった
  16. 16. FPSGD(提案手法) • M×M(M>R)のブロックに分割 • 計算が終わったスレッドにフリーなブロックを 割り当てる – フリー:同じ行、同じ列に計算中ブロックがないブ ロック • いくつかあるフリーなブロックのうち、更新回 数が少ないものを優先的に割り当て – 計算の偏りがないように
  17. 17. 例 :処理中 :フリー ロックフリー!
  18. 18. Partial Random Method • 行列要素へのアクセスを、ランダムにせずに順序性を 持たせることでキャッシュミスを減らす • ただし、そうすることで収束性が不安定になり逆効果 になることもあるので注意 • 本論文では、ブロックはランダムに、ブロック内の要素 は順番にアクセスするPartial Random Methodを提案 する 収束性の実験 原論文から抜粋
  19. 19. 実験結果 FPSGD**=FPSGDの実装で、スケ ジューリングの部分をDSGD相当 に変更したバージョン (つまり実質的にDSGD。スケ ジューリング以外のところで差が でないように調整) 原論文より抜粋
  20. 20. まとめ • 従来の分散システム向けMatrix Factorization をもとに共有メモリ向けの効率のよいアルゴ リズムを考案 • スケジューリングの工夫により計算リソース の無駄軽減に成功 • キャッシュを意識したメモリアクセスで高速化 に成功

×