hivemall talk@sigmod-j oct.4, 2014

66
独)産業技術総合研究所 情報技術研究部門 データサイエンス研究グループ主任研究員 油井 誠 [email protected] Hivemall: Apache Hiveを用いたスケーラ ブルな機械学習基盤 ACM SIGMOD 日本支部第57回支部大会 1 1 / 66

Upload: makoto-yui

Post on 30-Jun-2015

2.671 views

Category:

Engineering


4 download

DESCRIPTION

第20回先端的データベースとWeb技術動向講演会 (ACM SIGMOD 日本支部第57回支部大会) での講演スライド

TRANSCRIPT

Page 1: Hivemall Talk@SIGMOD-J Oct.4, 2014

独)産業技術総合研究所情報技術研究部門

データサイエンス研究グループ主任研究員油井誠

[email protected]

Hivemall: Apache Hiveを用いたスケーラブルな機械学習基盤

ACM SIGMOD 日本支部第57回支部大会 1

1 / 66

Page 2: Hivemall Talk@SIGMOD-J Oct.4, 2014

自己紹介

学部 修士博士

(NAIST)ポスドク

(CWI)産総研

Web 2.0/AJAXの流行による

データベースへのトランザクションの急増

大量データの価値化

・PostgreSQLを改造してXML取り扱い機能を付与・フロムスクラッチからXML専用のDBを開発

・メニーコアを活かした超並列DBの研究開発・ロックフリーのページ置換アルゴリズムの開発

従来の関係データベースでは上手く扱えない

XMLデータが増加

・DWHの並列処理・大規模機械学習の並列処理

github.com/myui/hivemall

2

もともとデータベースの研究ばかりやっていたが,DWHに求められる分析処理の高度化の流れや産業貢献が強く求められる所属組織の研究方針から機械学習の並列処理の研究にシフト

ACM SIGMOD 日本支部第57回支部大会

2 / 66

Page 3: Hivemall Talk@SIGMOD-J Oct.4, 2014

発表の構成

• 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

Page 4: Hivemall Talk@SIGMOD-J Oct.4, 2014

What is Hivemall

• Hiveのユーザ定義関数またはユーザ定義テーブル生成関数として実装された機械学習ライブラリ

• クラス分類と回帰分析

•推薦

• K近傍探索.. and more

•オープンソースプロジェクト• LGPLライセンス• github.com/myui/hivemall (bit.ly/hivemall)

• コントリビュータは現在5人

ACM SIGMOD 日本支部第57回支部大会 4

4 / 66

Page 5: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 6: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 7: Hivemall Talk@SIGMOD-J Oct.4, 2014

リリースへの反応

ACM SIGMOD 日本支部第57回支部大会 7

7 / 66

Page 8: Hivemall Talk@SIGMOD-J Oct.4, 2014

リリースへの反応

ACM SIGMOD 日本支部第57回支部大会 8

トレジャーデータや複数の広告関連企業(ロックオン,フリークアウト, スケール

アウト)が広告のクリック率推定やコンバージョン率推定に利用

8 / 66

Page 9: Hivemall Talk@SIGMOD-J Oct.4, 2014

9ACM SIGMOD 日本支部第57回支部大会

InfoWorld最優秀オープンソフトウェア賞

InfoWorld の最優秀オープンソフトウェア賞 – Bossie (Best of Open Source Software Awards)は、エンドユーザ、業務およびITの専門家向けの最も優秀なオープンソースソフトウェアに対して授与されるもの

bit.ly/hivemall-award

9 / 66

Page 10: Hivemall Talk@SIGMOD-J Oct.4, 2014

ACM SIGMOD 日本支部第57回支部大会

Motivation –何故新しい機械学習基盤?

Mahout?

Vowpal Wabbit?(w/ Hadoop streaming)

Spark MLlib?

0xdata H2O? Cloudera Oryx?

既に巷にあるHadoopと協調動作する機械学習フレームワーク

Quick Poll: 現在いずれかのレームワークを使っていますか?

10

10 / 66

Page 11: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 12: Hivemall Talk@SIGMOD-J Oct.4, 2014

ACM SIGMOD 日本支部第57回支部大会

Mahoutを利用したクラス分類

org/apache/mahout/classifier/sgd/TrainNewsGroups.java

Find the complete code at bit.ly/news20-mahout

12

12 / 66

Page 13: Hivemall Talk@SIGMOD-J Oct.4, 2014

ACM SIGMOD 日本支部第57回支部大会

Why Hivemall

1. 利用が簡単• プログラミング不要

• 全ての機械学習のステップがHiveQLクエリで完結

• コンパイルやパッケージングが不要• 既存Hiveユーザにフレンドリー

• 5分もあればHivemallの簡易例を実行可能• インストールは次のとおり簡単

13

13 / 66

Page 14: Hivemall Talk@SIGMOD-J Oct.4, 2014

ACM SIGMOD 日本支部第57回支部大会

Why Hivemall

2. データに対してスケーラブル• 訓練事例/テスト事例の数に対してスケーラブル

• 特徴数に対してスケーラブル• Feature hashingと呼ばれるテクニックによる特徴数の削減をサポート

• 学習モデルのサイズに対してスケーラブル• 200ラベル* 1億の特徴⇒ 150GBのメモリが必要• Hivemallは学習時やテスト時に予測モデル全体がメモリに収まる必要がない

• 特徴エンジニアリングに関してもHiveを利用した並列処理によってスケーラブルに実行可能

14

14 / 66

Page 15: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 16: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 17: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 18: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 19: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 20: Hivemall Talk@SIGMOD-J Oct.4, 2014

ACM SIGMOD 日本支部第57回支部大会

Why Hivemall

4. 最新のオンライン学習アルゴリズムをサポート(クラス分類)• 学習の収束速度が早い

• 確信度が十分な重みについては小さな更新を行う

• 確信度が低い重みについては大きな更新を行う (e.g., 学習の初期)

• 極少ないイテレーションで収束する

20

20 / 66

Page 21: Hivemall Talk@SIGMOD-J Oct.4, 2014

発表の構成

• 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

Page 22: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 23: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 24: Hivemall Talk@SIGMOD-J Oct.4, 2014

ACM SIGMOD 日本支部第57回支部大会

How to use Hivemall

MachineLearning

Training

Prediction

PredictionModel

Label

Feature Vector

Feature Vector

Label

Data preparation 24

24 / 66

Page 25: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 26: Hivemall Talk@SIGMOD-J Oct.4, 2014

ACM SIGMOD 日本支部第57回支部大会

How to use Hivemall

MachineLearning

Training

Prediction

PredictionModel

Label

Feature Vector

Feature Vector

Label

Feature Engineering

26

26 / 66

Page 27: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 28: Hivemall Talk@SIGMOD-J Oct.4, 2014

ACM SIGMOD 日本支部第57回支部大会

How to use Hivemall

MachineLearning

Training

Prediction

PredictionModel

Label

Feature Vector

Feature Vector

Label

Training

28

28 / 66

Page 29: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 30: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 31: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 32: Hivemall Talk@SIGMOD-J Oct.4, 2014

ACM SIGMOD 日本支部第57回支部大会

How to use Hivemall

MachineLearning

Training

Prediction

PredictionModel

Label

Feature Vector

Feature Vector

Label

Prediction

32

32 / 66

Page 33: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 34: Hivemall Talk@SIGMOD-J Oct.4, 2014

発表の構成

• 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

Page 35: Hivemall Talk@SIGMOD-J Oct.4, 2014

ユーザ定義テーブル生成関数として機械学習を実装している

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

Page 36: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 37: Hivemall Talk@SIGMOD-J Oct.4, 2014

如何に反復処理と向き合うか

機械学習ではよい予測精度を得るためには反復処理が不可欠

• 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

Page 38: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 39: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 40: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 41: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 42: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 43: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 44: Hivemall Talk@SIGMOD-J Oct.4, 2014

発表の構成

• 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

Page 45: Hivemall Talk@SIGMOD-J Oct.4, 2014

性能評価

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

Page 46: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 47: Hivemall Talk@SIGMOD-J Oct.4, 2014

DEMO

47ACM SIGMOD 日本支部第57回支部大会

WikipediaのJustice, Wisdom, Knowledgeエントリ

のTF-IDF値を算出する

47 / 66

Page 48: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 49: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

自分で形態素解析して用意してももちろんよい

Page 50: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 51: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 52: Hivemall Talk@SIGMOD-J Oct.4, 2014

ACM SIGMOD 日本支部第57回支部大会

ここまでのまとめ

Hiveのユーザ定義関数またはユーザ定義テーブル

生成関数として実装されたオープンソースの機械学習ライブラリ

利用が簡単 計算資源に対してスケールする

Amazon EMRでも動作する 最先端のオンライン機械学習をサポート Spark SQLでの動作を検証予定 Apache Incubatorに提案予定

プロジェクトサイト:github.com/myui/hivemall or bit.ly/hivemall

是非Hivemallをご自身で評価ください5分もあればクイックスタートは動かせるはずです

52

52 / 66

Page 53: Hivemall Talk@SIGMOD-J Oct.4, 2014

発表の構成

• 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

Page 54: Hivemall Talk@SIGMOD-J Oct.4, 2014

• イテレーションの扱い• 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

Page 55: Hivemall Talk@SIGMOD-J Oct.4, 2014

機械学習におけるパラメタ交換

55ACM SIGMOD 日本支部第57回支部大会

55 / 66

Page 56: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 57: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 58: Hivemall Talk@SIGMOD-J Oct.4, 2014

AllReduce

58ACM SIGMOD 日本支部第57回支部大会

http://cilvr.cs.nyu.edu/diglib/lsml/lecture04-allreduce.pdfより抜粋

58 / 66

Page 59: Hivemall Talk@SIGMOD-J Oct.4, 2014

• Bulk-Synchronous Parallel(BSP)並みの硬い同期モデル• タスクが早く終えたノードも他のノードの処理を待つ必要がある

•計算途中のノードの追加や離脱に対応できない

•投機実行が扱えない

• M/Rのタスクスロット以上のタスクに対応できない

59ACM SIGMOD 日本支部第57回支部大会

AllReduceの問題点

59 / 66

Page 60: Hivemall Talk@SIGMOD-J Oct.4, 2014

1. Parameter server• 分散KVS等による分散共有メモリ機構

2. Parameter mixing• MIX処理ようのプロトコル.モデルは保持されない

3. Mixing Server (Hivemallで新規提案/採用)

• parameter serverのように見えるが似て非なるもの

• MIX用のプロトコルの一種

60

機械学習におけるパラメタ交換

ACM SIGMOD 日本支部第57回支部大会

60 / 66

Page 61: Hivemall Talk@SIGMOD-J Oct.4, 2014

・・・・・・

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

Page 62: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 63: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 64: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 65: Hivemall Talk@SIGMOD-J Oct.4, 2014

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

Page 66: Hivemall Talk@SIGMOD-J Oct.4, 2014

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