Your SlideShare is downloading. ×
0
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Hcj2014 myui
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Hcj2014 myui

7,340

Published on

Slide@Hadoop Conference Japan 2014 …

Slide@Hadoop Conference Japan 2014

Video http://www.ustream.tv/recorded/49697833

0 Comments
16 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
7,340
On Slideshare
0
From Embeds
0
Number of Embeds
14
Actions
Shares
0
Downloads
83
Comments
0
Likes
16
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 独)産業技術総合研究所 情報技術研究部門 油井 誠 m.yui@aist.go.jp, @myui Hivemall: Apache Hiveを用いたスケーラ ブルな機械学習基盤 Hadoop Conference Japan 2014 English-version of this slide available on bit.ly/hivemall-slide 1 / 42
  • 2. 発表の構成 • What is Hivemall • Why Hivemall • What Hivemall can do • How to use Hivemall • How Hivemall works • イテレーションへの対処方法(Sparkと比較) • 性能評価 • まとめ Hadoop Conference Japan 2014 基本的にHadoop Summit 2014, San Jose で喋った内容を踏襲しております 2 / 42
  • 3. What is Hivemall • Hiveのユーザ定義関数またはユーザ定義テーブル 生成関数として実装された機械学習ライブラリ • クラス分類と回帰分析 • 推薦 • K近傍探索 .. and more • オープンソースプロジェクト • LGPLライセンス • github.com/myui/hivemall (bit.ly/hivemall) • コントリビュータは現在4人 Hadoop Conference Japan 2014 3 / 42
  • 4. リリースへの反応 Hadoop Conference Japan 2014 4 / 42
  • 5. リリースへの反応 Hadoop Conference Japan 2014 5 / 42
  • 6. Hadoop Conference Japan 2014 Motivation – 何故新しい機械学習基盤? Mahout? Vowpal Wabbit? (w/ Hadoop streaming) Spark MLlib? 0xdata H2O? Cloudera Oryx? 既に巷にあるHadoopと協調動作する機械学習 フレームワーク Quick Poll: 現在いずれかのレームワークを使っていますか? 6 / 42
  • 7. 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 プログラミング コマンドライン Hadoop Conference Japan 2014 Motivation – 何故新しい機械学習基盤? 既存の分散機械学習フレームワークは利用するの にプログラミングが必要で敷居が高い 7 / 42
  • 8. Hadoop Conference Japan 2014 Mahoutを利用したクラス分類 org/apache/mahout/classifier/sgd/TrainNewsGroups.java Find the complete code at bit.ly/news20-mahout 8 / 42
  • 9. Hadoop Conference Japan 2014 Why Hivemall 1. 利用が簡単 • プログラミング不要 • 全ての機械学習のステップがHiveQLクエリで完結 • コンパイルやパッケージングが不要 • 既存Hiveユーザにフレンドリー • 5分もあればHivemallの簡易例を実行可能 • インストールは次のとおり簡単 9 / 42
  • 10. Hadoop Conference Japan 2014 Why Hivemall 2. データに対してスケーラブル • 訓練事例/テスト事例の数に対してスケーラブ ル • 特徴数に対してスケーラブル • Feature hashingと呼ばれるテクニックによる特徴数 の削減をサポート • 学習モデルのサイズに対してスケーラブル • 200ラベル* 1億の特徴 ⇒ 150GBのメモリが必要 • Hivemallは学習時やテスト時に予測モデル全体がメ モリに収まる必要がない • 特徴エンジニアリングに関してもHiveを利用した 並列処理によってスケーラブルに実行可能 10 / 42
  • 11. Hadoop Conference Japan 2014 Why Hivemall 3. 計算資源に対してスケーラブル • HadoopとHiveの利点を活用 • Amazon Elastic MapReduce(EMR)によ る機械学習サービスのProvisioningが 可能 ➞ EMRのHive環境にHivemallを自動セット アップするEMR bootstrapを用意している Find an example on bit.ly/hivemall-emr 11 / 42
  • 12. Hadoop Conference Japan 2014 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 2009 2. Exact Soft Confidence-Weighted Learning (SCW), Wang et al., ICML 2012 12 / 42
  • 13. Hadoop Conference Japan 2014 Why Hivemall Algorithms News20.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やその改良は賢いオンライン機械学習アルゴリズム 13 / 42
  • 14. Hadoop Conference Japan 2014 CWの精度が何故よいか? 文章をpositiveかnegativeかに分類する二値分類 を想定してみる → 単語(特徴)ごとに重みを計算する I like this authorPositive I like this author, but found this book dullNegative Label Feature Vector(特徴ベクトル) ナイーブな学習手法では重み を同様に更新するWlike Wdull CWでは重みごとに異なる更新を行う 14 / 42
  • 15. Hadoop Conference Japan 2014 CWの精度が何故よいか? weight weight 重みを更新する 重みと確信度を 更新する 0.6 0.80.6 0.80.6 At this confidence, the weight is 0.5 共分散 (確信度) 0.5 15 / 42
  • 16. Hadoop Conference Japan 2014 Why Hivemall 4. 最新のオンライン学習アルゴリズムをサ ポート(クラス分類) • 学習の収束速度が早い • 確信度が十分な重みについては小さな 更新を行う • 確信度が低い重みについては大きな更 新を行う (e.g., 学習の初期) • 極少ないイテレーションで収束する 16 / 42
  • 17. 発表の構成 • What is Hivemall • Why Hivemall • What Hivemall can do • How to use Hivemall • How Hivemall works • イテレーションへの対処方法(Sparkと比較) • 性能評価 • まとめ Hadoop Conference Japan 2014 17 / 42
  • 18. Hadoop Conference Japan 2014 What Hivemall can do • クラス分類(二値分類/多値分類)  Perceptron  Passive Aggressive (PA)  Confidence Weighted (CW)  Adaptive Regularization of Weight Vectors (AROW)  Soft Confidence Weighted (SCW) • 回帰分析  確率的勾配降下法に基づくロジスティック回帰  PA Regression  AROW Regression • K近傍法 & レコメンデーション  Minhashとb-Bit Minhash (LSH variant)  類似度に基づくK近傍探索(cosine similarity) • Feature engineering  Feature hashing  Feature scaling (normalization, z-score) 18 / 42
  • 19. Hadoop Conference Japan 2014 How to use Hivemall Machine Learning Training Prediction Prediction Model Label Feature Vector Feature Vector Label Data preparation 19 / 42
  • 20. Hadoop Conference Japan 2014 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でパース可能な)任意フォー マットのデータを利用可能 20 / 42
  • 21. Hadoop Conference Japan 2014 How to use Hivemall Machine Learning Training Prediction Prediction Model Label Feature Vector Feature Vector Label Feature Engineering 21 / 42
  • 22. Hadoop Conference Japan 2014 create view e2006tfidf_train_scaled as select rowid, rescale(target,${min_label},${max_label}) as label, features from e2006tfidf_train; Min-Max正規化による特徴量の正規化 How to use Hivemall - Feature Engineering Target値を0~1の範囲に変換 22 / 42
  • 23. Hadoop Conference Japan 2014 How to use Hivemall Machine Learning Training Prediction Prediction Model Label Feature Vector Feature Vector Label Training 23 / 42
  • 24. Hadoop Conference Japan 2014 How to use Hivemall - Training CREATE TABLE lr_model AS SELECT feature, avg(weight) as weight FROM ( SELECT logress(features,label,..) as (feature,weight) FROM train ) t GROUP BY feature ロジスティック回帰による学習 予測モデルを学習するmap-onlyのtask Featureの値によってmap出力結果をreducerに Shuffle 特徴ごとに学習した重みの平均 を取る処理をreducer側で並列に処理 24 / 42
  • 25. Hadoop Conference Japan 2014 How to use Hivemall - Training CREATE TABLE news20b_cw_model1 AS SELECT feature, voted_avg(weight) as weight FROM (SELECT train_cw(features,label) as (feature,weight) FROM news20b_train ) t GROUP BY feature Confidence Weightedによる学習 投票に基づきPositive or Negativeな 重みの平均 +0.7, +0.3, +0.2, -0.1, +0.7 CWクラス分類器による学習 25 / 42
  • 26. Hadoop Conference Japan 2014 create table news20mc_ensemble_model1 as select label, cast(feature as int) as feature, cast(voted_avg(weight) as float) as weight from (select train_multiclass_cw(addBias(features),label) as (label,feature,weight) from news20mc_train_x3 union all select train_multiclass_arow(addBias(features),label) as (label,feature,weight) from news20mc_train_x3 union all select 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でまとめる 26 / 42
  • 27. Hadoop Conference Japan 2014 How to use Hivemall Machine Learning Training Prediction Prediction Model Label Feature Vector Feature Vector Label Prediction 27 / 42
  • 28. Hadoop Conference Japan 2014 How to use Hivemall - Prediction CREATE TABLE lr_predict as SELECT t.rowid, sigmoid(sum(m.weight)) as prob FROM testing_exploded t LEFT OUTER JOIN lr_model m ON (t.feature = m.feature) GROUP BY t.rowid 予測はテスト事例と予測モデルの LEFT OUTER JOINによって行う 予測モデル全体をメモリに載せる必要がない 28 / 42
  • 29. 発表の構成 • What is Hivemall • Why Hivemall • What Hivemall can do • How to use Hivemall • How Hivemall works • イテレーションへの対処方法(Sparkと比較) • 性能評価 • まとめ Hadoop Conference Japan 2014 29 / 42
  • 30. ユーザ定義テーブル生成関数として機械学習を実装し ている Hadoop Conference Japan 2014 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を 減らす(ランダムフォレストの決定木で過 学習が減るのと同様の理屈) 30 / 42
  • 31. Hadoop Conference Japan 2014 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によってスループットが律速される メモリ消費量 が増える 並列度が 下がる 31 / 42
  • 32. 如何に反復処理と向き合うか 機械学習ではよい予測精度を得るためには反復 処理が不可欠 • MapReduceはIN/OUTがHDFSを介すために反復処理には適 さない(注: Tezを利用した場合はHDFSのIN/OUTがスキップ可能) • Sparkはオンメモリ処理によって効率的に反復を扱う iter. 1 iter. 2 . . . Input HDFS read HDFS write HDFS read HDFS write iter. 1 iter. 2 Input Hadoop Conference Japan 2014 32 / 42
  • 33. 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 勾配の計算に使う訓練例は反復ごとに異なるものを利用する 必要がある(そうしないと精度がでないし、より多くの反復が必要となる) Hadoop Conference Japan 2014 33 / 42
  • 34. Hadoop Conference Japan 2014 Spark Mllibでは実際どうなっている? Val data = .. for (i <- 1 to numIterations) { val sampled = val gradient = w -= gradient } サンプリングを利用したMini-batch勾配降下法 それぞれのイテレーションではデータの一部だけを 利用するため、反復処理は学習の収束に不可欠 GradientDescent.scala bit.ly/spark-gd データのサブセットをサンプリング Spark MapReduceを利用してSampled[1..N]の勾配をN個のワー カで並列に計算してN個の予測モデルを構築し、N個のご予測モデルを マスターノードで(逐次的に)マージ 34 / 42 Wは次のイテレーションで各ワーカに送信される
  • 35. Hivemallでどのように反復に対処? Hivemallでは、複数のMapReduce Jobを利用した反復 処理なしに機械学習における反復学習の効果をエミュ レートするためにamplify UDTFを提供 SET hivevar:xtimes=3; CREATE VIEW training_x3 as SELECT * FROM ( SELECT amplify(${xtimes}, *) as (rowid, label, features) FROM training ) t CLUSTER BY RANDOM Hadoop Conference Japan 2014 入力データを増幅してshuffleする 35 / 42
  • 36. Map-only shuffling and amplifying rand_amplify UDTFはmapタスク内で入力され た訓練事例を増幅&shuffleする CREATE VIEW training_x3 as SELECT rand_amplify(${xtimes}, ${shufflebuffersize}, *) as (rowid, label, features) FROM training; Hadoop Conference Japan 2014 36 / 42
  • 37. map-local shuffleを利用した場合の実行プラン … Shuffle (distributed by feature) Reducetask Merge Aggregate Reduce write Maptask Table scan Rand Amplifier Map write Logress UDTF Partial aggregate Maptask Table scan Rand Amplifier Map write Logress UDTF Partial aggregate Reducetask Merge Aggregate Reduce write スキャンされた行が 増幅されて バッファリングされて shuffleされる なお、このオペレータは パイプライン処理される Rand amplifierオペレータがテーブルスキャンオペレータと 学習を行うオペレータの間に挿入される Hadoop Conference Japan 2014 37 / 42
  • 38. Hadoop Conference Japan 2014 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を利用することで受容可能な オーバヘッドで予測精度が向上 38 / 42
  • 39. 発表の構成 • What is Hivemall • Why Hivemall • What Hivemall can do • How to use Hivemall • How Hivemall works • イテレーションへの対処方法(Sparkと比較) • 性能評価 • まとめ Hadoop Conference Japan 2014 39 / 42
  • 40. 性能評価 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-dataset Hadoop Conference Japan 2014 40 / 42
  • 41. Hadoop Conference Japan 2014 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) がよい 学習時間(秒) が短い 41 / 42
  • 42. Hadoop Conference Japan 2014 本日のまとめ Hiveのユーザ定義関数またはユーザ定義テーブル 生成関数として実装されたオープンソースの機械学 習ライブラリ  利用が簡単  計算資源に対してスケールする  Amazon EMRでも動作する  最先端のオンライン機械学習をサポート  Spark SQLでの動作を検証予定  Apache Incubator化(するかも?) コントリビュータ募集 プロジェクトサイト: github.com/myui/hivemall or bit.ly/hivemall 最後に: 是非Hivemallをご自身で評価ください 5分もあればクイックスタートは動かせるはずです  Slide available on bit.ly/hcj14-hivemall 42 / 42

×