39
LCCC2010:Learning on Cores, Clusters and Cloudsの解説 岡野原 大輔 (株)Preferred Infrastructure NIPS2010を読む会@東工大 2011/2/14

LCCC2010:Learning on Cores, Clusters and Cloudsの解説

Embed Size (px)

Citation preview

Page 1: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

LCCC2010:Learning on Cores, Clusters and Cloudsの解説

岡野原 大輔

(株)Preferred Infrastructure

NIPS2010を読む会@東工大 2011/2/14

Page 2: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

LCCC2010について

• NIPS併催のワークショップ

• 毎年同じようでテーマで開催されている

– Organizer達で今年本を出すらしい [挨拶より]

• J. Langford, O. Dekel, J. Duchi, A. Agrawal, L. Cayton

• Google, MS, Yahoo!をはじめ主要な企業と大学、研究所が3等分ぐらいずつ

– 実用化は04年頃から進み身近なところで利用

– 例:gmailの優先トレイはメールでPA+転移学習

• 理論と実践の両方が進展

Page 3: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

今日の発表について

• Distributed MAP Inference for Undirected Graphical Models

• Machine Learning in the Cloud with Graph Lab

• MapReduce/Bigtable for Distributed Optimization

• 選んだ基準

– 実用的

– 単に並列化しただけじゃないものを選んだ

Page 4: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

背景

• 解析対象データの急激な増加– アルゴリズムは最低でも線形の計算量が必要

だがそれでも不十分.潰しても捨てても無理– 世界で作成されたデータ量は

2009年 8億テラバイト(前年比62%増)2020年 35億テラバイトと予想 [Digital Universe 2010]

– 例: ニューヨーク株式市場 毎日1TBFacebook 毎日20TBの圧縮データ

• 分散/並列化しないと、そもそもデータの読み込み/書き込みすら無理– HDDは現在100MB/s

Page 5: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

素朴な疑問並列分散化の機械学習は面白いの?

Q. たくさんマシンを用意できたなら、データを適当に分けて、それぞれのマシンで処理して結果を合わせるだけじゃないの?

A. 部分的にYES, 残りはNO– 各マシン間の情報のやりとりが制限された環境で学

習の収束保障は?収束速度は?– 単純なアプローチはうまく行かない.が、ちょっと

だけ工夫するとうまくいく– 分散並列システムを一から作るのはすごく大変

MapReduceなどの分散並列を実現するフレームワーク上で実現可能な機械学習を考える

Page 6: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

分散並列環境下の問題

• 通信コストは非常に大きい– データのマシン間移動は計算コストと同じか

それ以上に大変

– スループット、レイテンシの両方で制限

• マシン間同期をとるのはコストがかかる– 計算時間はバラバラで一番遅いマシンに依存

– そもそも同期をとれない場合も

• それぞれが独立にタスクをこなしつつ、いかに全体の最適化を達成するか

Page 7: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

Distributed MAP Inferencefor Undirected Graphical

Models

Sammer SinghAmarnag Subramanya

Fernando PereiraAndrew McCallum

Page 8: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

目標

• グラフィカルモデルの推論は一般に困難– 近年利用されるモデルはより巨大で密に

• 共参照推定、関係抽出、同時推論など

• 文書集合をまたがるグラフ

– 100万変数の問題を数百台で解きたい

• 様々な近似推論手法が提案されている– LP-Relaxations

– Dual Decomposition

– MCMC-Based

• これらの手法の並列化は難しい

Page 9: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

問題設定

• 変数Yの確率分布を因子ψで表す

• 例:

• MAP推定をしたい y*=argmaxy p(Y=y)– ループなどがあり動的計画法は使えない

Page 10: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

既存手法MCMCによるMAP推定

1. yを適当に決める

2. yの中身を少し変更したy’を提案

3. [0,1]の乱数がより大きいならy’を採択し、y=y’と更新

– 確率が上がるなら常に採用、下がる場合は確率的に採用.tは温度

– p(y’)/p(y)は変数が変わったところだけ見れば計算できるので高速に計算できる

Page 11: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

相互排他的な提案を利用した並列化

• yからの提案 yaとybについてyaとybの影響箇所が重ならないとする

• この時、y⇒yaとy⇒ybは並列に評価でき、採択することができる

• グラフィカルモデルの特徴を利用し、相互排他的な提案を作ることができる– 汎用的な方法もできつつある

c.f. Residual Splash Belief Propagation

Page 12: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

赤と緑の両方の提案を同時に計算し、採択することができる赤:m3をe1のグループから外すか緑:m4とm5を分割するか

Page 13: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

文書間共参照解析での並列数に対する精度

共参照解析:二つの表現が現実世界で同一実体を指すかどうかを求める

Page 14: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

実験結果 (2)マシン台数におけるスケーラビリティ

• NY Times Corpus 20年分の記事中に含まれる100万回の人名言及の共参照解析

正解データが無いので精度で評価できないが・・

Page 15: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

Machine Learning in the Cloud with Graph Lab

Yucheng LowJoey GonzalezAapo Kyrola

Danny BicksonCarlos GuestrinJoe Hellerstein

David O’Hallaron

Page 16: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

背景

• 分散並列向けにSplash Belief Propagationを提案 [UAI 09]

• MapReduce(MR)はバッチ処理が得意だが反復的な処理、部分的な更新は苦手

⇒ GraphLabを提案 [UAI 10]

– MRが苦手なML向けの処理を行うフレームワーク

– データの疎な依存関係を表せる

– 部分更新、反復処理が得意

– マルチコア、分散、クラウド、GPUに対応

Page 17: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

GraphLabの特徴Sequential Consistency

Thm.全ての並列更新処理については、それと同じ結果を生成する、逐次更新処理が必ず存在

– 並列処理の正しさを証明

Page 18: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

実験結果

• Gibbs sampling– 相互排他的な変数を毎に色分けし並列更新

– プロセッサ数にほぼ線形で性能向上

– 他の様々な並列化もサポート

• LASSO– Shooting Algorithmの並列化

• 変数とサンプルで二部グラフ作り相互排他的な変数集合を作る

– 相互排他的な変数の更新を自動で並列化

• その他いくつかのタスクで並列化を評価

Page 19: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

MapReduce / Bigtable for Distributed Optimization

Keith HallScott Gilpin

Gideon MannSlav Petrov

Page 20: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

最適化の分散並列化は簡単?

• MapReduceフレームワークを使えば簡単

• データ分散し、それぞれ独立にパラメータを計算して(Map)、集める(Reduce)

• 分散の仕方でいろいろ方法がある

– パラメータを分割して求めて平均とるか

– 勾配を分割して求めて勾配をとるか など

• どれも同じ様に見えるが実は精度に大きな違いがあり、理論的に解析可能

ここでの最適化は教師付き学習を含む最適化

Page 21: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

方法1:Parameter Mixture

1. データを分割しK個のshardに配る

2. shard毎にパラメータθを最適化

3. 最後に各最適化した結果の平均をとる

– θ’ = (∑iθi)/K

• 実はうまくいかない

– 性能も悪いし、失敗する例も作れる(次項)

– 理論的保障もできない

Page 22: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

Parameter Mixtureが失敗する例

• f(x)=wTx のwを学習.訓練例は次の通りy1=0 x1 =(1 1 0)

y2=1 x2 =(0 0 1)

y3=0 x3 =(0 1 1)

y4=1 x4 =(1 0 0)

• 1と2で学習して w1=(-1 -1 0)

• 3と4で学習して w2=(0 -1 -1)

• w’=w1+w2は全ての訓練例をy=0に分類• 全例を正しく分けるのは w =(1 -2 1)

⇒全訓練例を正しく分類するwがあっても、それをPMは必ずしも求めることはできない

Page 23: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

方法2Distributed Gradient

• 勾配の計算部分を並列に行う

• 求まった勾配を利用して更新は一台で行う

• 長所– 勾配の計算に時間がかかる場合に高速化可能

• 短所– 毎回パラメータを全てのshard間でやりとり

しないといけない.

– 収束は遅く,バッチ学習と同じ

Page 24: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

方法3Asynchronous Update

• 全shardで共通のパラメータθを利用

• 各ワーカーは、現在のθを取得し、分割されたデータでθを更新

• 欠点:θにlockをとらないため、古いθを元に更新を計算してしまう可能性.実はそれでも収束保障はできるが遅い

Page 25: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

方法4 Iterative Parameter Mixture

• Parameter Mixtureを少しだけ改造

1. データを分割しshardに配る2. shard毎に最適化3. 全部のθの平均をとる4. θを再度各shardに配り1から繰り返す

これは収束証明ができ、実際に高性能– 重要:各epoch毎にパラメーターを通信するのみ.

データの通信は発生しない

• 以降ではStructured Perceptronの場合を議論

Page 26: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

Structured Perceptron(SP)[Collins 2002] 1台での学習の場合

更新時に、正解の特徴ベクトルを足し、不正解で最もスコアが高かった特徴ベクトルを引く

Page 27: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

Structured Perceptron

• 1台での学習の場合

• 訓練例の直径がRであり、マージンγで分離可能の時、SPによる学習アルゴリズムの更新回数は高々(R/γ)2 [Novikoff 62][Collins 02]

• これを分散させるとどうなるか ..

Page 28: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

Structured Perceptorn+ Iterative Paramter Mixture

μi,nは混ぜる割合∑iμi,n =1

Page 29: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

データ

θ1 θ2 θ3 θ4θ(1)=(θ1+θ2+θ3+θ4)/4

θ1 θ2 θ3 θ4

データをK個に分割に分割

それぞれで独立に学習

パラメータを集めて、平均をとり再度分配する(データはそのまま)

θ(1)を初期値に再度学習

これを収束するまで繰り返す

θ(0)

θ(0) = 0

θ(0) θ(0) θ(0)

θ(1) θ(1) θ(1) θ(1)

Page 30: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

Iterative Paramter Mixture + Structured Perceptron

• 訓練例の直径がRであり、マージンγで分離可能の時、IPM+SPによる学習アルゴリズムの合計の更新回数は高々(R/γ)2

[R. McDonald NAACL 10]

– 一台で動かした場合と全く同じなのでK台で分割したらK倍の高速化が可能

– データの移動を全くしなくても全部のデータを正しく分類可能な学習ができる!

Page 31: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

略証 (1/3)

• wi,n : i番目のshardのn週目の学習結果• w([i,n]-k): wi,nのk回の更新前• ki,n : shard i でのn epoch目の更新回数

• wi,nを下から抑える

Page 32: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

略証 (2/3)

• wi,nを上から抑える

• これより各shardのエラー回数ki,nとw(avg,n-1)の対応付けができた

Page 33: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

略証 (3/3)

• 次にw(avg,N)を上と下から抑える

• これらは数学的帰納法で証明する– 先程の(A1) (A2)とJensenの不等式を組み合わせ

て抑えることができる

• |u|=1より、|wavg,N|≧uw(avg,N)

• (IH2)と組み合わせて最初のバウンドを得る

Page 34: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

実験1

•クリックデータでクリックするかどうかを予測•訓練例数 3億7000万• 200個のグループに分割し 240台のworkerでMapReduce• Iterative Parameter Mixtureが70倍の高速化と高性能を達成

Page 35: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

実験2

•先ほどと同じデータ(Single-coreではもう不可能)•訓練例数 16億• 900個のグループに分割し 600台のworkerでMapReduce• Iterative Parameter Mixtureが同じく高速で高性能

Page 36: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

彼らの結論

• 非同期更新は現在のデータセンター環境では非常に厳しい

– 遅い、収束しない

– ネットワークが混み合う

• Iterative Parameter Mixtureが良い

– 実装もすごく簡単

– Perceptron以外にもPassive Aggressiveなどでも証明可能

Page 37: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

結論

• 機械学習の分散並列化の理論/実践が揃いつつある– オンライン学習のRegret最小化解析の適用

– 分散最適化の理論

– MapReduceで可能なものがまだ中心

• 現状、線形識別器の分散並列化はIterative Parameter Mixtureが最強– ほぼ線形の高速化が可能で収束する

– Iteration毎にパラメータを混ぜるだけ

Page 38: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

コメント

• やり残し– 個別の手法についての収束証明はあるが、一般の

分散最適化問題も証明できるか

– 最適な混ぜ具合を決められるかActive Learningとの関係?

• パラメータを圧縮した最適化は伸びシロあり– センサネットワークやCompressed Sensing の

話がそのまま使えそう

• 数台程度ならMapReduce使わずとも実現できそう

Page 39: LCCC2010:Learning on Cores,  Clusters and Cloudsの解説

質問に対する回答

• 問:Shard間でデータがものすごく偏っている場合でもIterative Parameter Mixtureは収束する?例えば片方が全部正例、もう片方が全部負例でも?

• 答:必ず収束する+1 (1, 1, 0) 一周目 w=(1,1,0) w=(0,0,0)

+1 (1, 0, 0) 平均をとって w=(1/2, 1/2, 0)

-1 (0, 1, 1) 二週目 w=(1/2, 1/2, 0), w=(1/2, -1/2, -1)

-1 (0, 0, 1) 平均をとって w=(1/2, 0, -1/2) 終了