hivemall talk@sigmod-j oct.4, 2014
DESCRIPTION
第20回先端的データベースとWeb技術動向講演会 (ACM SIGMOD 日本支部第57回支部大会) での講演スライドTRANSCRIPT
独)産業技術総合研究所情報技術研究部門
データサイエンス研究グループ主任研究員油井誠
Hivemall: Apache Hiveを用いたスケーラブルな機械学習基盤
ACM SIGMOD 日本支部第57回支部大会 1
1 / 66
自己紹介
学部 修士博士
(NAIST)ポスドク
(CWI)産総研
Web 2.0/AJAXの流行による
データベースへのトランザクションの急増
大量データの価値化
・PostgreSQLを改造してXML取り扱い機能を付与・フロムスクラッチからXML専用のDBを開発
・メニーコアを活かした超並列DBの研究開発・ロックフリーのページ置換アルゴリズムの開発
従来の関係データベースでは上手く扱えない
XMLデータが増加
・DWHの並列処理・大規模機械学習の並列処理
github.com/myui/hivemall
2
もともとデータベースの研究ばかりやっていたが,DWHに求められる分析処理の高度化の流れや産業貢献が強く求められる所属組織の研究方針から機械学習の並列処理の研究にシフト
ACM SIGMOD 日本支部第57回支部大会
2 / 66
発表の構成
• What is Hivemall
• Why Hivemall
• What Hivemall can do
• How to use Hivemall
• How Hivemall works• イテレーションへの対処方法(Sparkと比較)
•性能評価
• DEMO
• Hivemallについてのまとめ
•データベース屋から見た機械学習の研究課題
ACM SIGMOD 日本支部第57回支部大会 3
基本的にHadoop Summit 2014, San Joseで喋った内容を踏襲しております
3 / 66
What is Hivemall
• Hiveのユーザ定義関数またはユーザ定義テーブル生成関数として実装された機械学習ライブラリ
• クラス分類と回帰分析
•推薦
• K近傍探索.. and more
•オープンソースプロジェクト• LGPLライセンス• github.com/myui/hivemall (bit.ly/hivemall)
• コントリビュータは現在5人
ACM SIGMOD 日本支部第57回支部大会 4
4 / 66
5ACM SIGMOD 日本支部第57回支部大会
Hadoop HDFS分散ファイルシステム
MapReduce(MRv1)
Hive/PIGクエリ処理系
Hivemall機械学習ライブラリ
Apache YARNリソース管理システム
Apache TezDAG処理系
Apache MESOS
Apache SparkDAG処理系
Spark MLlib機械学習ライブラリ
MRv2
Hivemallのソフトウェアスタック
SparkSQLクエリ処理系
5 / 66
R
6ACM SIGMOD 日本支部第57回支部大会
M MM
M
HDFS
HDFS
M M M
R
M M M
R
HDFS
M MM
M M
HDFS
R
MapReduce and DAG engine
MapReduce DAG engineTez/Spark
6 / 66
リリースへの反応
ACM SIGMOD 日本支部第57回支部大会 7
7 / 66
リリースへの反応
ACM SIGMOD 日本支部第57回支部大会 8
トレジャーデータや複数の広告関連企業(ロックオン,フリークアウト, スケール
アウト)が広告のクリック率推定やコンバージョン率推定に利用
8 / 66
9ACM SIGMOD 日本支部第57回支部大会
InfoWorld最優秀オープンソフトウェア賞
InfoWorld の最優秀オープンソフトウェア賞 – Bossie (Best of Open Source Software Awards)は、エンドユーザ、業務およびITの専門家向けの最も優秀なオープンソースソフトウェアに対して授与されるもの
bit.ly/hivemall-award
9 / 66
ACM SIGMOD 日本支部第57回支部大会
Motivation –何故新しい機械学習基盤?
Mahout?
Vowpal Wabbit?(w/ Hadoop streaming)
Spark MLlib?
0xdata H2O? Cloudera Oryx?
既に巷にあるHadoopと協調動作する機械学習フレームワーク
Quick Poll: 現在いずれかのレームワークを使っていますか?
10
10 / 66
Framework User interface
Mahout Java API プログラミング
Spark MLlib/MLI Scala API プログラミングScala Shell (REPL)
H2O R プログラミングGUI
Cloudera Oryx Http REST API プログラミング
Vowpal Wabbit(w/ Hadoop streaming)
C++ API プログラミングコマンドライン
ACM SIGMOD 日本支部第57回支部大会
Motivation – 何故新しい機械学習基盤?
既存の分散機械学習フレームワークは利用するのにプログラミングが必要で敷居が高い
11
11 / 66
ACM SIGMOD 日本支部第57回支部大会
Mahoutを利用したクラス分類
org/apache/mahout/classifier/sgd/TrainNewsGroups.java
Find the complete code at bit.ly/news20-mahout
12
12 / 66
ACM SIGMOD 日本支部第57回支部大会
Why Hivemall
1. 利用が簡単• プログラミング不要
• 全ての機械学習のステップがHiveQLクエリで完結
• コンパイルやパッケージングが不要• 既存Hiveユーザにフレンドリー
• 5分もあればHivemallの簡易例を実行可能• インストールは次のとおり簡単
13
13 / 66
ACM SIGMOD 日本支部第57回支部大会
Why Hivemall
2. データに対してスケーラブル• 訓練事例/テスト事例の数に対してスケーラブル
• 特徴数に対してスケーラブル• Feature hashingと呼ばれるテクニックによる特徴数の削減をサポート
• 学習モデルのサイズに対してスケーラブル• 200ラベル* 1億の特徴⇒ 150GBのメモリが必要• Hivemallは学習時やテスト時に予測モデル全体がメモリに収まる必要がない
• 特徴エンジニアリングに関してもHiveを利用した並列処理によってスケーラブルに実行可能
14
14 / 66
ACM SIGMOD 日本支部第57回支部大会
Why Hivemall
3. 計算資源に対してスケーラブル• HadoopとHiveの利点を活用• Amazon Elastic MapReduce(EMR)による機械学習サービスのProvisioningが可能➞ EMRのHive環境にHivemallを自動セットアップするEMR bootstrapを用意している
Find an example on bit.ly/hivemall-emr
15
15 / 66
ACM SIGMOD 日本支部第57回支部大会
Why Hivemall
4. 最新のオンライン学習アルゴリズムをサポート(クラス分類)• ハイパーパラメータ/設定の細かい調整をしなくても十分な精度が出る (確率的勾配降下法ベースの場合は学習率の調整が困難)
• CW, AROW[1], SCW[2]のような最先端の機械学習アルゴリズムはMahout/Sparkではサポートされていない
• 学習の収束が高速• 一般的には10イテレーションが必要なところでもCW以降では2~3イテレーションもあれば収束する
1. Adaptive Regularization of Weight Vectors (AROW), Crammer et al., NIPS 20092. Exact Soft Confidence-Weighted Learning (SCW), Wang et al., ICML 2012
16
16 / 66
ACM SIGMOD 日本支部第57回支部大会
Why Hivemall
AlgorithmsNews20.binary
Classification Accuracy
Perceptron 0.9460 Passive-Aggressive(a.k.a. Online-SVM)
0.9604
LibLinear 0.9636 LibSVM/TinySVM 0.9643 Confidence Weighted (CW) 0.9656 AROW [1] 0.9660 SCW [2] 0.9662
精度が良い
4. 最新のオンライン学習アルゴリズムをサポート(クラス分類)
CWやその改良は賢いオンライン機械学習アルゴリズム
17
17 / 66
ACM SIGMOD 日本支部第57回支部大会
CWの精度が何故よいか?
文章をpositiveかnegativeかに分類する二値分類を想定してみる→ 単語(特徴)ごとに重みを計算する
I like this authorPositive
I like this author, but found this book dullNegative
Label Feature Vector(特徴ベクトル)
ナイーブな学習手法では重み を同様に更新するWlikeWdull
CWでは重みごとに異なる更新を行う18
18 / 66
ACM SIGMOD 日本支部第57回支部大会
CWの精度が何故よいか?
weight
weight
重みを更新する
重みと確信度を更新する
0.6 0.80.6
0.80.6
At this confidence, the weight is 0.5
共分散(確信度)
0.5
19
19 / 66
ACM SIGMOD 日本支部第57回支部大会
Why Hivemall
4. 最新のオンライン学習アルゴリズムをサポート(クラス分類)• 学習の収束速度が早い
• 確信度が十分な重みについては小さな更新を行う
• 確信度が低い重みについては大きな更新を行う (e.g., 学習の初期)
• 極少ないイテレーションで収束する
20
20 / 66
発表の構成
• What is Hivemall
• Why Hivemall
• What Hivemall can do
• How to use Hivemall
• How Hivemall works• イテレーションへの対処方法(Sparkと比較)
•性能評価
• DEMO
• Hivemallについてのまとめ
•データベース屋から見た機械学習の研究課題
ACM SIGMOD 日本支部第57回支部大会 21
21 / 66
ACM SIGMOD 日本支部第57回支部大会
What Hivemall can do
•クラス分類(二値分類/多値分類) Perceptron Passive Aggressive (PA) Confidence Weighted (CW) Adaptive Regularization of Weight Vectors (AROW) Soft Confidence Weighted (SCW) AdaGrad+RDA
•回帰分析確率的勾配降下法に基づくロジスティック回帰 PA Regression AROW Regression AdaGrad AdaDELTA
22
22 / 66
ACM SIGMOD 日本支部第57回支部大会
What Hivemall can do
• K近傍法 & レコメンデーション Minhashとb-Bit Minhash (LSH variant)
類似度に基づくK近傍探索(cosine similarity)
• Feature engineering Feature hashing
Feature scaling (normalization, z-score)
TF-IDF vectorizer
…
23
23 / 66
ACM SIGMOD 日本支部第57回支部大会
How to use Hivemall
MachineLearning
Training
Prediction
PredictionModel
Label
Feature Vector
Feature Vector
Label
Data preparation 24
24 / 66
ACM SIGMOD 日本支部第57回支部大会
Create external table e2006tfidf_train (rowid int,label float,features ARRAY<STRING>
) ROW FORMAT DELIMITED
FIELDS TERMINATED BY '¥t' COLLECTION ITEMS TERMINATED BY ",“
STORED AS TEXTFILE LOCATION '/dataset/E2006-tfidf/train';
How to use Hivemall –データの準備
訓練とテストデータ用のテーブルを定義HDFSに置いた(HiveのSERDEでパース可能な)任意フォーマットのデータを利用可能
25
25 / 66
ACM SIGMOD 日本支部第57回支部大会
How to use Hivemall
MachineLearning
Training
Prediction
PredictionModel
Label
Feature Vector
Feature Vector
Label
Feature Engineering
26
26 / 66
ACM SIGMOD 日本支部第57回支部大会
create view e2006tfidf_train_scaled asselect
rowid,rescale(target,${min_label},${max_label})
as label,features
from e2006tfidf_train;
Min-Max正規化による特徴量の正規化
How to use Hivemall - Feature Engineering
Target値を0~1の範囲に変換
27
27 / 66
ACM SIGMOD 日本支部第57回支部大会
How to use Hivemall
MachineLearning
Training
Prediction
PredictionModel
Label
Feature Vector
Feature Vector
Label
Training
28
28 / 66
ACM SIGMOD 日本支部第57回支部大会
How to use Hivemall - Training
CREATE TABLE lr_model ASSELECT
feature,avg(weight) as weight
FROM (SELECT logress(features,label,..)
as (feature,weight)FROM train
) tGROUP BY feature
ロジスティック回帰による学習
予測モデルを学習するmap-onlyのtask
Featureの値によってmap出力結果をreducerにShuffle
特徴ごとに学習した重みの平均を取る処理をreducer側で並列に処理
29
29 / 66
ACM SIGMOD 日本支部第57回支部大会
How to use Hivemall - Training
CREATE TABLE news20b_cw_model1 ASSELECT
feature,voted_avg(weight) as weight
FROM(SELECT
train_cw(features,label) as (feature,weight)
FROMnews20b_train
) t GROUP BY feature
Confidence Weightedによる学習
投票に基づきPositive or Negativeな重みの平均
+0.7, +0.3, +0.2, -0.1, +0.7
CWクラス分類器による学習
30
30 / 66
ACM SIGMOD 日本支部第57回支部大会
create table news20mc_ensemble_model1 asselect label, cast(feature as int) as feature,cast(voted_avg(weight) as float) as weightfrom (select
train_multiclass_cw(addBias(features),label) as (label,feature,weight)
from news20mc_train_x3
union allselect
train_multiclass_arow(addBias(features),label) as (label,feature,weight)
from news20mc_train_x3
union allselect
train_multiclass_scw(addBias(features),label)as (label,feature,weight)
from news20mc_train_x3
) t group by label, feature;
アンサンブル学習 for stable prediction performance
個別に学習した予測モデルをUnion allでまとめる
31
31 / 66
ACM SIGMOD 日本支部第57回支部大会
How to use Hivemall
MachineLearning
Training
Prediction
PredictionModel
Label
Feature Vector
Feature Vector
Label
Prediction
32
32 / 66
ACM SIGMOD 日本支部第57回支部大会
How to use Hivemall - Prediction
CREATE TABLE lr_predict asSELECTt.rowid, sigmoid(sum(m.weight)) as prob
FROMtesting_exploded t LEFT OUTER JOINlr_model m ON (t.feature = m.feature)
GROUP BY t.rowid
予測はテスト事例と予測モデルのLEFT OUTER JOINによって行う予測モデル全体をメモリに載せる必要がない
33
33 / 66
発表の構成
• What is Hivemall
• Why Hivemall
• What Hivemall can do
• How to use Hivemall
• How Hivemall works• イテレーションへの対処方法(Sparkと比較)
•性能評価
• DEMO
• Hivemallについてのまとめ
•データベース屋から見た機械学習の研究課題
ACM SIGMOD 日本支部第57回支部大会 34
34 / 66
ユーザ定義テーブル生成関数として機械学習を実装している
ACM SIGMOD 日本支部第57回支部大会
Hivemallでどのように学習が行われるか
+1, <1,2>..+1, <1,7,9>
-1, <1,3, 9>..+1, <3,8>
tuple<label, array<features>>
tuple<feature, weights>
Prediction model
UDTF
Relation<feature, weights>
param-mix param-mix
Training table
Shuffle by feature
train train
Hiveのリレーショナル問合せ処理エンジンに適している
• 結果として出力される予測モデルは特徴とその重みからなるリレーション
Embarrassingly parallel• Mapper数とreducer数はそれぞれ設定可能
Baggingと似た効果分類器の学習結果のvarianceを
減らす(ランダムフォレストの決定木で過学習が減るのと同様の理屈)
35
35 / 66
ACM SIGMOD 日本支部第57回支部大会
train train
+1, <1,2>..+1, <1,7,9>
-1, <1,3, 9>..+1, <3,8>
merge
tuple<label, array<features >
array<weight>
array<sum of weight>, array<count>
Training table
Prediction model
-1, <2,7, 9>..+1, <3,8>
final merge
merge
-1, <2,7, 9>..+1, <3,8>
train train
array<weight>
Why not UDAF
4 ops in parallel
2 ops in parallel
No parallelism
機械学習を集約関数として実行するアプローチMadlib、Bismarckなどの機械学習 on RDBMSはこのアプローチ
Final mergeがボトルネックになるFinal mergeのFan-outによってスループットが律速される
メモリ消費量が増える
並列度が下がる
36
36 / 66
如何に反復処理と向き合うか
機械学習ではよい予測精度を得るためには反復処理が不可欠
• MapReduceはIN/OUTがHDFSを介すために反復処理には適さない(注: Tezを利用した場合はHDFSのIN/OUTがスキップ可能)
• Sparkはオンメモリ処理によって効率的に反復を扱う
iter. 1 iter. 2 . . .
Input
HDFSread
HDFSwrite
HDFSread
HDFSwrite
iter. 1 iter. 2
InputACM SIGMOD 日本支部第57回支部大会 37
37 / 66
val data = spark.textFile(...).map(readPoint).cache()
for (i <- 1 to ITERATIONS) {val gradient = data.map(p =>(1 / (1 + exp(-p.y*(w dot p.x))) - 1) * p.y * p.x
).reduce(_ + _)w -= gradient
}反復的なMapReduceで勾配降下を行う
個々のノードで担当パーティションをメモリにキャッシュ
これは単なるtoy example! Why?
Sparkにおける反復学習
Logistic Regression example of Spark
勾配の計算に使う訓練例は反復ごとに異なるものを利用する必要がある(そうしないと精度がでないし、より多くの反復が必要となる)
ACM SIGMOD 日本支部第57回支部大会 38
38 / 66
ACM SIGMOD 日本支部第57回支部大会
Spark Mllibでは実際どうなっている?
Val data = ..
for (i <- 1 to numIterations) {val sampled = val gradient =
w -= gradient}
サンプリングを利用したMini-batch勾配降下法
それぞれのイテレーションではデータの一部だけを利用するため、反復処理は学習の収束に不可欠
GradientDescent.scalabit.ly/spark-gd
データのサブセットをサンプリング
Spark MapReduceを利用してSampled[1..N]の勾配をN個のワーカで並列に計算してN個の予測モデルを構築し、N個のご予測モデルをマスターノードで(逐次的に)マージ
Wは次のイテレーションで各ワーカに送信される
39
39 / 66
Hivemallでどのように反復に対処?
Hivemallでは、複数のMapReduce Jobを利用した反復処理なしに機械学習における反復学習の効果をエミュレートするためにamplify UDTFを提供
SET hivevar:xtimes=3;
CREATE VIEW training_x3asSELECT
* FROM (
SELECTamplify(${xtimes}, *) as (rowid, label, features)FROMtraining
) tCLUSTER BY RANDOM
ACM SIGMOD 日本支部第57回支部大会
入データを増幅してshuffleする
40
40 / 66
Map-only shuffling and amplifying
rand_amplify UDTFはmapタスク内で入力された訓練事例を増幅&shuffleする
CREATE VIEW training_x3asSELECT
rand_amplify(${xtimes}, ${shufflebuffersize}, *) as (rowid, label, features)
FROMtraining;
ACM SIGMOD 日本支部第57回支部大会 41
41 / 66
map-local shuffleを利用した場合の実行プラン
…
Shuffle (distributed by feature)R
edu
ce task
Merge
Aggregate
Reduce write
Map
task
Table scan
Rand Amplifier
Map write
Logress UDTF
Partial aggregate
Map
task
Table scan
Rand Amplifier
Map write
Logress UDTF
Partial aggregate
Red
uce task
Merge
Aggregate
Reduce write
スキャンされた行が増幅されてバッファリングされてshuffleされるなお、このオペレータはパイプライン処理される
Rand amplifierオペレータがテーブルスキャンオペレータと学習を行うオペレータの間に挿入される
ACM SIGMOD 日本支部第57回支部大会 42
42 / 66
ACM SIGMOD 日本支部第57回支部大会
Method 実行時間(秒)AUC
(予測精度)
Plain 89.718 0.734805
amplifier+clustered by(a.k.a. global shuffle)
479.855 0.746214
rand_amplifier(a.k.a. map-local shuffle)
116.424 0.743392
Amplifiersの性能への影響
map-local shuffleを利用することで受容可能なオーバヘッドで予測精度が向上
43
43 / 66
発表の構成
• What is Hivemall
• Why Hivemall
• What Hivemall can do
• How to use Hivemall
• How Hivemall works• イテレーションへの対処方法(Sparkと比較)
•性能評価
• DEMO
• Hivemallについてのまとめ
•データベース屋から見た機械学習の研究課題
ACM SIGMOD 日本支部第57回支部大会 44
44 / 66
性能評価
Hivemallと最先端の機械学習フレームワークの性能を比較• 比較対象
• Vowpal Wabbit、Bismarck、Spark 1.0 MLlib• データセット
KDD Cup 2012, Track 2データセット中国の検索エンジンプロバイダから提供された実データセット機械学習のPublicなデータセットとしても最も大きい規模のもの
• 訓練データは2億レコード以上(33GB)• 特徴数は5千万以上
• タスク検索エンジン広告の広告クリックスルー率(CTR)推定
• テスト環境33のコモディティサーバからなるインハウスのクラスタ• 32ノードがHadoopのSlaveノード• 個々のノードは8物理コアと24GBの主記憶からなる
bit.ly/hivemall-kdd-datasetACM SIGMOD 日本支部第57回支部大会 45
45 / 66
ACM SIGMOD 日本支部第57回支部大会
116.4
596.67
493.81
755.24
465
0
100
200
300
400
500
600
700
800
Hivemall VW1 VW32 Bismarck Spark 1.0
0.64
0.66
0.68
0.7
0.72
0.74
0.76
Hivemall VW1 VW32 Bismarck
スループット: 2.3 million tuples/sec on 32 nodesレイテンシ: 235 million records(33GB)の学習に2分以内
性能比較
予測性能(AUC)がよい
学習時間(秒)が短い
46
46 / 66
DEMO
47ACM SIGMOD 日本支部第57回支部大会
WikipediaのJustice, Wisdom, Knowledgeエントリ
のTF-IDF値を算出する
47 / 66
48ACM SIGMOD 日本支部第57回支部大会
TF-IDF vectorizer (1)
𝑡𝑓𝑖𝑑𝑓 𝑡, 𝑑 = 𝑡𝑓(𝑡, 𝑑) ∙ 𝑖𝑑𝑓(𝑡)
𝑖𝑑𝑓 𝑡 = log𝑁
𝑑𝑓(𝑡)+ 1
文書d内のある単語tの出現頻度(term frequency)𝑡𝑓(𝑡, 𝑑)
単語tの文書頻度df(document frequency)の逆数
create temporary macro idf(df_t INT, n_docs INT)(log(10, CAST(n_docs as FLOAT)/max2(1,df_t)) + 1.0);
create temporary macro tfidf(tf FLOAT, df_t INT, n_docs INT)tf * idf(dt_f, n_docs);
TFを並列計算するUDAFとTF-IDFを計算するmacroを定義
48 / 66
Docid, wordからなるTable/Viewを用意する
49ACM SIGMOD 日本支部第57回支部大会
TF-IDF vectorizer (2)
create external table wikipage (docid int,page string
)ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'STORED AS TEXTFILE;
create or replace view wikipage_explodedasselect
docid, word
fromwikipage LATERAL VIEW explode(tokenize(page,true)) t as word
wherenot is_stopword(word);
49 / 66
自分で形態素解析して用意してももちろんよい
50ACM SIGMOD 日本支部第57回支部大会
TF-IDF vectorizer (3)
create or replace view term_frequency asselect
docid, word, freqfrom (select
docid,tf(word) as word2freq
fromwikipage_exploded
group bydocid
) t LATERAL VIEW explode(word2freq) t2 as word, freq;
create or replace view document_frequencyasselect
word, count(distinct docid) docs
fromwikipage_exploded
group byword;
TF, DFのビューを定義する
文書d内のある単語tの出現頻度𝑡𝑓(𝑡, 𝑑)
単語tの文書頻度𝑑𝑓(𝑡)
50 / 66
51ACM SIGMOD 日本支部第57回支部大会
TF-IDF vectorizer (4)
selecttf.docid,tf.word, tfidf(tf.freq, df.docs, ${n_docs}) as tfidf
fromterm_frequency tf JOIN document_frequency df ON (tf.word = df.word)
order by tfidf desc;
docid/wordごとのTF-IDF値をTF-IDF値の降順に表示する
51 / 66
ACM SIGMOD 日本支部第57回支部大会
ここまでのまとめ
Hiveのユーザ定義関数またはユーザ定義テーブル
生成関数として実装されたオープンソースの機械学習ライブラリ
利用が簡単 計算資源に対してスケールする
Amazon EMRでも動作する 最先端のオンライン機械学習をサポート Spark SQLでの動作を検証予定 Apache Incubatorに提案予定
プロジェクトサイト:github.com/myui/hivemall or bit.ly/hivemall
是非Hivemallをご自身で評価ください5分もあればクイックスタートは動かせるはずです
52
52 / 66
発表の構成
• What is Hivemall
• Why Hivemall
• What Hivemall can do
• How to use Hivemall
• How Hivemall works• イテレーションへの対処方法(Sparkと比較)
•性能評価
• DEMO
• Hivemallについてのまとめ
•データベース屋から見た機械学習の研究課題
ACM SIGMOD 日本支部第57回支部大会 53
53 / 66
• イテレーションの扱い• HaLoop、Twisterなど繰り返し処理向けにHadoopを改善する既存研究多数
• 機械学習のための宣言的言語• SystemMLなど• M/RまたはDAGエンジンで機械学習処理を実行• 繰り返し処理の最適化機構 (e.g., Loop-invariant code
motion or 遅延評価)
• 学習途中のパラメタ交換• AllReduce, Parameter Server• Stale Synchronous Parallel
• GPUの利用• BidMachなど
54ACM SIGMOD 日本支部第57回支部大会
データベース屋から見た 並列処理の
機械学習の研究課題
54 / 66
機械学習におけるパラメタ交換
55ACM SIGMOD 日本支部第57回支部大会
55 / 66
1. Parameter server• 分散KVS等による分散共有メモリ機構
• MIXの単位:特徴ごと、通信の頻度:高い、同期処理のlatency:小
• ローカルにモデルを持たない、グローバルなモデルを全員が共有
• Variants
• KVSに対して非同期または同期的に更新を行うもの
• Stale Synchronous Parallelと呼ばれるBSPの同期制約を緩めたもの (on KVS)
• グローバルなモデルは持たず、各ワーカのモデルをレプリケートするもの
2. Parameter mixing• MIX処理用のプロトコル.モデルは保持されない
• MIXの単位:全ての特徴、通信の頻度:低(一定間隔EPOCHごと)、同期処理のlatency:大
• 各学習器がローカルなモデルを持つ
• 本来全ての特徴を交換する必要がないが,全てを交換するため冗長な計算が発生
• Variants
• AllReduce (a kind of BSP)、Butterfly mixing
• ランダムにMIXでデータを集めるサーバを選択 (Jubatus)56
機械学習におけるパラメタ交換
ACM SIGMOD 日本支部第57回支部大会
56 / 66
Parameter Server
Stale Synchronous Parallel (SSP) Parameter Server, NIPS 2013.
Bulk Synchronous Parallelの同期制約に緩めたもの57ACM SIGMOD 日本支部第57回支部大会
http://www.cs.cmu.edu/~qho/ssp_nips2013.pdfより抜粋
57 / 66
AllReduce
58ACM SIGMOD 日本支部第57回支部大会
http://cilvr.cs.nyu.edu/diglib/lsml/lecture04-allreduce.pdfより抜粋
58 / 66
• Bulk-Synchronous Parallel(BSP)並みの硬い同期モデル• タスクが早く終えたノードも他のノードの処理を待つ必要がある
•計算途中のノードの追加や離脱に対応できない
•投機実行が扱えない
• M/Rのタスクスロット以上のタスクに対応できない
59ACM SIGMOD 日本支部第57回支部大会
AllReduceの問題点
59 / 66
1. Parameter server• 分散KVS等による分散共有メモリ機構
2. Parameter mixing• MIX処理ようのプロトコル.モデルは保持されない
3. Mixing Server (Hivemallで新規提案/採用)
• parameter serverのように見えるが似て非なるもの
• MIX用のプロトコルの一種
60
機械学習におけるパラメタ交換
ACM SIGMOD 日本支部第57回支部大会
60 / 66
・・・・・・
Model updates
Async add
AVG/Argmin KLD accumulator
hash(feature) % N
Non-blocking Channel(single shared TCP connection w/ TCP keepalive)
classifiers
Mix serv.Mix serv.
Computation/training is not being blocked
61
MIX Serverの概要
ACM SIGMOD 日本支部第57回支部大会
61 / 66
Modelupdates
Propagate every update asynchronously
feature weight[] clock[]min covartotal clock
Diff=|total clock – local clock|total clock += lock clock
Average accumulator
featuresum mean div covarsum inv covarmin covartotal clock
argmin KL-divergence accumulator
feature weightCovarianceclock
Mix serv.
62
最新の値を保持するパラメタサーバと異なり、モデル平均化処理のためのaccumulator
Global clockとlocal clockがズレてきたら
ローカルモデルに平均化処理した結果を
反映
ACM SIGMOD 日本支部第57回支部大会
62 / 66
create table kdd10a_pa1_model1 as
select
feature,
cast(voted_avg(weight) as float) as weight
from
(select
train_pa1(addBias(features),label,"-mix host01,host02,host03") as (feature,weight)
from
kdd10a_train_x3
) t
group by feature;
63ACM SIGMOD 日本支部第57回支部大会
MIX Serverの利用
このように学習器の呼び出しでMix serverをオプション指定する
63 / 66
Model Averaging Issues
Model Server A Server B Server C
weight 10.0 50.0 30.0
clock 2 4 3
Avg=sum weight/count=(10+50+30)/3=30WeightedAvg=(10*2/9)+(50*4/9)+(30*3/9)=34.44..
Problem: AVG(μ) is argmin Euclid distance, not considering covariance (a confidence parameter of weights)
64
Solution:argmin KL-distance
ACM SIGMOD 日本支部第57回支部大会
64 / 66
DBと機械学習で境界領域で活躍している注目の研究者(1)
スタンフォード大 Christopher Ré教授
http://cs.stanford.edu/people/chrismre/
Hogwild: A lock-free approach to parallelizing stochastic gradient descent, Proc. NIPS, 2011.が有名.確率的勾配降下法の並列処理を共有メモリ並列計算機上で効率的に行う手法
65
2014の発表: DimmWitted: A Study of Main-Memory Statistical Analytics. Proc. PVLDB, 2015.An Asynchronous Parallel Stochastic Coordinate Descent Algorithm. Proc. ICML 2014. Beyond Worst-case Analysis for Joins using Minesweeper. Proc. PODS 2014. Materialization Optimizations for Feature Selection. Proc. SIGMOD 2014. Best paper
ACM SIGMOD 日本支部第57回支部大会
65 / 66
DBと機械学習で境界領域で活躍している注目の研究者(2)
カリフォルニア大学バークレー校 John Canny教授
http://www.cs.berkeley.edu/~jfc/
CHIコミュニティで有名な先生(らしい)だが,近年BIDMACHプロジェクトでButterfly MixingやKylixなどGPUを利用した機械学習処理で興味深い成果を挙げている
66
Kylix: A Sparse AllReduce for Commodity Clusters. Proc. Int. Conf. on Parallel Processing (ICPP) 2014.BIDMach: Large-scale Learning with Zero Memory Allocation. Proc. NIPS BigLearnWorkshop 2013.A Multi-Teraflop Constituency Parser using GPUs. Proc. EMNLP 2013.Big Data Analytics with Small Footprint: Squaring the Cloud. Proc. ACM KDD 2013.Butterfly Mixing: Accelerating Incremental-Update Algorithms on Clusters. Proc. SIAM Data Mining 2013.
ACM SIGMOD 日本支部第57回支部大会
66 / 66