lccc2010:learning on cores, clusters and cloudsの解説
TRANSCRIPT
![Page 1: LCCC2010:Learning on Cores, Clusters and Cloudsの解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/1.jpg)
LCCC2010:Learning on Cores, Clusters and Cloudsの解説
岡野原 大輔
(株)Preferred Infrastructure
NIPS2010を読む会@東工大 2011/2/14
![Page 2: LCCC2010:Learning on Cores, Clusters and Cloudsの解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/2.jpg)
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の解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/3.jpg)
今日の発表について
• 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の解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/4.jpg)
背景
• 解析対象データの急激な増加– アルゴリズムは最低でも線形の計算量が必要
だがそれでも不十分.潰しても捨てても無理– 世界で作成されたデータ量は
2009年 8億テラバイト(前年比62%増)2020年 35億テラバイトと予想 [Digital Universe 2010]
– 例: ニューヨーク株式市場 毎日1TBFacebook 毎日20TBの圧縮データ
• 分散/並列化しないと、そもそもデータの読み込み/書き込みすら無理– HDDは現在100MB/s
![Page 5: LCCC2010:Learning on Cores, Clusters and Cloudsの解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/5.jpg)
素朴な疑問並列分散化の機械学習は面白いの?
Q. たくさんマシンを用意できたなら、データを適当に分けて、それぞれのマシンで処理して結果を合わせるだけじゃないの?
A. 部分的にYES, 残りはNO– 各マシン間の情報のやりとりが制限された環境で学
習の収束保障は?収束速度は?– 単純なアプローチはうまく行かない.が、ちょっと
だけ工夫するとうまくいく– 分散並列システムを一から作るのはすごく大変
MapReduceなどの分散並列を実現するフレームワーク上で実現可能な機械学習を考える
![Page 6: LCCC2010:Learning on Cores, Clusters and Cloudsの解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/6.jpg)
分散並列環境下の問題
• 通信コストは非常に大きい– データのマシン間移動は計算コストと同じか
それ以上に大変
– スループット、レイテンシの両方で制限
• マシン間同期をとるのはコストがかかる– 計算時間はバラバラで一番遅いマシンに依存
– そもそも同期をとれない場合も
• それぞれが独立にタスクをこなしつつ、いかに全体の最適化を達成するか
![Page 7: LCCC2010:Learning on Cores, Clusters and Cloudsの解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/7.jpg)
Distributed MAP Inferencefor Undirected Graphical
Models
Sammer SinghAmarnag Subramanya
Fernando PereiraAndrew McCallum
![Page 8: LCCC2010:Learning on Cores, Clusters and Cloudsの解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/8.jpg)
目標
• グラフィカルモデルの推論は一般に困難– 近年利用されるモデルはより巨大で密に
• 共参照推定、関係抽出、同時推論など
• 文書集合をまたがるグラフ
– 100万変数の問題を数百台で解きたい
• 様々な近似推論手法が提案されている– LP-Relaxations
– Dual Decomposition
– MCMC-Based
• これらの手法の並列化は難しい
![Page 9: LCCC2010:Learning on Cores, Clusters and Cloudsの解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/9.jpg)
問題設定
• 変数Yの確率分布を因子ψで表す
• 例:
• MAP推定をしたい y*=argmaxy p(Y=y)– ループなどがあり動的計画法は使えない
![Page 10: LCCC2010:Learning on Cores, Clusters and Cloudsの解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/10.jpg)
既存手法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の解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/11.jpg)
相互排他的な提案を利用した並列化
• yからの提案 yaとybについてyaとybの影響箇所が重ならないとする
• この時、y⇒yaとy⇒ybは並列に評価でき、採択することができる
• グラフィカルモデルの特徴を利用し、相互排他的な提案を作ることができる– 汎用的な方法もできつつある
c.f. Residual Splash Belief Propagation
![Page 12: LCCC2010:Learning on Cores, Clusters and Cloudsの解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/12.jpg)
赤と緑の両方の提案を同時に計算し、採択することができる赤:m3をe1のグループから外すか緑:m4とm5を分割するか
![Page 13: LCCC2010:Learning on Cores, Clusters and Cloudsの解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/13.jpg)
文書間共参照解析での並列数に対する精度
共参照解析:二つの表現が現実世界で同一実体を指すかどうかを求める
![Page 14: LCCC2010:Learning on Cores, Clusters and Cloudsの解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/14.jpg)
実験結果 (2)マシン台数におけるスケーラビリティ
• NY Times Corpus 20年分の記事中に含まれる100万回の人名言及の共参照解析
正解データが無いので精度で評価できないが・・
![Page 15: LCCC2010:Learning on Cores, Clusters and Cloudsの解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/15.jpg)
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の解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/16.jpg)
背景
• 分散並列向けにSplash Belief Propagationを提案 [UAI 09]
• MapReduce(MR)はバッチ処理が得意だが反復的な処理、部分的な更新は苦手
⇒ GraphLabを提案 [UAI 10]
– MRが苦手なML向けの処理を行うフレームワーク
– データの疎な依存関係を表せる
– 部分更新、反復処理が得意
– マルチコア、分散、クラウド、GPUに対応
![Page 17: LCCC2010:Learning on Cores, Clusters and Cloudsの解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/17.jpg)
GraphLabの特徴Sequential Consistency
Thm.全ての並列更新処理については、それと同じ結果を生成する、逐次更新処理が必ず存在
– 並列処理の正しさを証明
![Page 18: LCCC2010:Learning on Cores, Clusters and Cloudsの解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/18.jpg)
実験結果
• Gibbs sampling– 相互排他的な変数を毎に色分けし並列更新
– プロセッサ数にほぼ線形で性能向上
– 他の様々な並列化もサポート
• LASSO– Shooting Algorithmの並列化
• 変数とサンプルで二部グラフ作り相互排他的な変数集合を作る
– 相互排他的な変数の更新を自動で並列化
• その他いくつかのタスクで並列化を評価
![Page 19: LCCC2010:Learning on Cores, Clusters and Cloudsの解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/19.jpg)
MapReduce / Bigtable for Distributed Optimization
Keith HallScott Gilpin
Gideon MannSlav Petrov
![Page 20: LCCC2010:Learning on Cores, Clusters and Cloudsの解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/20.jpg)
最適化の分散並列化は簡単?
• MapReduceフレームワークを使えば簡単
• データ分散し、それぞれ独立にパラメータを計算して(Map)、集める(Reduce)
• 分散の仕方でいろいろ方法がある
– パラメータを分割して求めて平均とるか
– 勾配を分割して求めて勾配をとるか など
• どれも同じ様に見えるが実は精度に大きな違いがあり、理論的に解析可能
ここでの最適化は教師付き学習を含む最適化
![Page 21: LCCC2010:Learning on Cores, Clusters and Cloudsの解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/21.jpg)
方法1:Parameter Mixture
1. データを分割しK個のshardに配る
2. shard毎にパラメータθを最適化
3. 最後に各最適化した結果の平均をとる
– θ’ = (∑iθi)/K
• 実はうまくいかない
– 性能も悪いし、失敗する例も作れる(次項)
– 理論的保障もできない
![Page 22: LCCC2010:Learning on Cores, Clusters and Cloudsの解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/22.jpg)
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の解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/23.jpg)
方法2Distributed Gradient
• 勾配の計算部分を並列に行う
• 求まった勾配を利用して更新は一台で行う
• 長所– 勾配の計算に時間がかかる場合に高速化可能
• 短所– 毎回パラメータを全てのshard間でやりとり
しないといけない.
– 収束は遅く,バッチ学習と同じ
![Page 24: LCCC2010:Learning on Cores, Clusters and Cloudsの解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/24.jpg)
方法3Asynchronous Update
• 全shardで共通のパラメータθを利用
• 各ワーカーは、現在のθを取得し、分割されたデータでθを更新
• 欠点:θにlockをとらないため、古いθを元に更新を計算してしまう可能性.実はそれでも収束保障はできるが遅い
![Page 25: LCCC2010:Learning on Cores, Clusters and Cloudsの解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/25.jpg)
方法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の解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/26.jpg)
Structured Perceptron(SP)[Collins 2002] 1台での学習の場合
更新時に、正解の特徴ベクトルを足し、不正解で最もスコアが高かった特徴ベクトルを引く
![Page 27: LCCC2010:Learning on Cores, Clusters and Cloudsの解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/27.jpg)
Structured Perceptron
• 1台での学習の場合
• 訓練例の直径がRであり、マージンγで分離可能の時、SPによる学習アルゴリズムの更新回数は高々(R/γ)2 [Novikoff 62][Collins 02]
• これを分散させるとどうなるか ..
![Page 28: LCCC2010:Learning on Cores, Clusters and Cloudsの解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/28.jpg)
Structured Perceptorn+ Iterative Paramter Mixture
μi,nは混ぜる割合∑iμi,n =1
![Page 29: LCCC2010:Learning on Cores, Clusters and Cloudsの解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/29.jpg)
データ
θ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の解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/30.jpg)
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の解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/31.jpg)
略証 (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の解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/32.jpg)
略証 (2/3)
• wi,nを上から抑える
• これより各shardのエラー回数ki,nとw(avg,n-1)の対応付けができた
![Page 33: LCCC2010:Learning on Cores, Clusters and Cloudsの解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/33.jpg)
略証 (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の解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/34.jpg)
実験1
•クリックデータでクリックするかどうかを予測•訓練例数 3億7000万• 200個のグループに分割し 240台のworkerでMapReduce• Iterative Parameter Mixtureが70倍の高速化と高性能を達成
![Page 35: LCCC2010:Learning on Cores, Clusters and Cloudsの解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/35.jpg)
実験2
•先ほどと同じデータ(Single-coreではもう不可能)•訓練例数 16億• 900個のグループに分割し 600台のworkerでMapReduce• Iterative Parameter Mixtureが同じく高速で高性能
![Page 36: LCCC2010:Learning on Cores, Clusters and Cloudsの解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/36.jpg)
彼らの結論
• 非同期更新は現在のデータセンター環境では非常に厳しい
– 遅い、収束しない
– ネットワークが混み合う
• Iterative Parameter Mixtureが良い
– 実装もすごく簡単
– Perceptron以外にもPassive Aggressiveなどでも証明可能
![Page 37: LCCC2010:Learning on Cores, Clusters and Cloudsの解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/37.jpg)
結論
• 機械学習の分散並列化の理論/実践が揃いつつある– オンライン学習のRegret最小化解析の適用
– 分散最適化の理論
– MapReduceで可能なものがまだ中心
• 現状、線形識別器の分散並列化はIterative Parameter Mixtureが最強– ほぼ線形の高速化が可能で収束する
– Iteration毎にパラメータを混ぜるだけ
![Page 38: LCCC2010:Learning on Cores, Clusters and Cloudsの解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/38.jpg)
コメント
• やり残し– 個別の手法についての収束証明はあるが、一般の
分散最適化問題も証明できるか
– 最適な混ぜ具合を決められるかActive Learningとの関係?
• パラメータを圧縮した最適化は伸びシロあり– センサネットワークやCompressed Sensing の
話がそのまま使えそう
• 数台程度ならMapReduce使わずとも実現できそう
![Page 39: LCCC2010:Learning on Cores, Clusters and Cloudsの解説](https://reader035.vdocuments.site/reader035/viewer/2022062406/55a4d3681a28ab313e8b45be/html5/thumbnails/39.jpg)
質問に対する回答
• 問: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) 終了