SlideShare a Scribd company logo
1 of 16
Download to read offline
独)産業技術総合研究所情報技術研究部門 
データサイエンス研究グループ主任研究員油井誠 
@myui 
HivemallとSpark MLlibの比較 
1 
1 / 16 
ビッグデータ基盤勉強会(2014/12/11)
はじめに 
2 
[1] http://www.slideshare.net/myui/sigmodj-myui 
Disclaimer: 
Hivemallについての技術詳細はこれまでに色々なところ1 で話しているので詳しく述べません.また実験の詳細など はスライドではなく口頭説明します 
発表内容:HivemallとSpark MLlibの比較 
発表趣旨:最初に性能比較から入り,その性能差の理由 をそれぞれの動作原理からご紹介する 
2 / 16 
ビッグデータ基盤勉強会(2014/12/11)
HivemallとSpark MLlib 
Hadoop HDFS 
MapReduce 
(MRv1) 
Hive/PIG 
クエリ処理系 
Hivemall 
Apache YARN 
Apache Tez 
DAG処理系 
Apache MESOS 
Apache Spark 
DAG処理系 
Spark MLlib 
MR 
v2 
SparkSQL 
分散ファイルシステム 
リソース管理システム 
並列処理フレームワーク 
問合せ処理系 
機械学習ライブラリ 
3 
3 / 16 
ビッグデータ基盤勉強会(2014/12/11)
SQLベースの宣言的かつ容易な記述 
Hivemallの特徴 
Mahoutによるプログラミング 
CREATE TABLE lr_modelAS 
SELECT 
feature, --reducers perform model averaging in parallel 
avg(weight) as weight 
FROM ( 
SELECT logress(features,label,..) as (feature,weight) 
FROM train 
) t --map-only task 
GROUP BY feature; --shuffled to reducers 
一般的なエンジニアでも機械学習を扱える 
4 
4 / 16 
ビッグデータ基盤勉強会(2014/12/11)
SparkとHadoopにおける繰り返し処理 
•MapReduceはIN/OUTがHDFSを介すために反復処理に は適さない(注: Tezを利用した場合はHDFSのIN/OUTがスキップ可 能) 
•Sparkはオンメモリ処理によって効率的に反復を扱う 
iter. 1 
iter. 2 
. . . 
Input 
HDFSread 
HDFSwrite 
HDFSread 
HDFSwrite 
iter. 1 
iter. 2 
Input 
5 
5 / 16 
ビッグデータ基盤勉強会(2014/12/11)
性能評価–KDD Cup 2012 Track2での比較 
KDD Cup 2012, Track 2: 
データ:中国の検索エンジンプロバイダ提供の実データ(機械学習のPublicなデータとして最大級) 
訓練データは2億レコード以上、特徴数は5千万以上 
タスク:検索エンジン広告の広告クリックスルー率(CTR)推定 
6 
Sparkでもイテレーション 
は重い処理 
SparkだとAUC 0.6以下 
6 / 16 
ビッグデータ基盤勉強会(2014/12/11)
性能評価–KDD Cup 2010のデータセットを用いた比較 
KDD Cup 2010a: 
2クラス分類のPublicデータセットとして最大級(特徴数: 8百万以上,特徴数2千万以上,2.73GB) 
7 
Sparkが向いているタスクもある 
7 / 16 
ビッグデータ基盤勉強会(2014/12/11)
機械学習の基本–勾配降下法 https://speakerdeck.com/lintool/large-scale-machine-learning-at-twitterより抜粋 
実際に学習して求めるのは特徴ごとの重みw 
8 
9 / 16 
ビッグデータ基盤勉強会(2014/12/11)
푤푡+1=푤푡−훾푡1 푛 푖=0 푛 훻푙표푠푠(푓(푥푖;푤푡),푦) 
新しい重み 
古い重み 
経験損失の勾配 
学習率 
勾配降下法(Gradient Descent) 
経験損失の勾配 
を基に重みを更新 
9 
10 / 16 
ビッグデータ基盤勉強会(2014/12/11)
1.Distributed Gradient 
•勾配効果法の勾配計算の並列化 
•重みの更新は基本的に単一ノード 
2.Parameter Mixing 
•確率的勾配降下法の学習処理を並列化 
•重みの更新が各学習器の計算ノードで行われ,その 後モデルの平均化処理が行われる 
機械学習の分散処理 
機械学習の分散処理手法は 
基本的にこの2種類かその亜種に分類できる 
HivemallやJubatus, Down Pour SGDは②を採用 
Spark Mllibは①の亜種 
Vowpal WabbitはAllReduceを利用した①の亜種および②を共にサポート 
10 
11 / 16 
ビッグデータ基盤勉強会(2014/12/11)
Distributed Gradient 
푤푡+1=푤푡−훾푡1 푛 푖=0 푛 훻푙표푠푠(푓(푥푖;푤푡),푦) 
mappers 
single reducer 
勾配をmapperで並列に計算 
重みの更新をreducerで行う 
SGDによる更新も可能 
11 
12 / 16 
ビッグデータ基盤勉強会(2014/12/11)
Distributed Gradientwith Mini-batch Updates 
正確な勾配を算出できるが更新幅が 
小さくなりがちで多くのイテレーションが必要 
CTR推定ではクリックありの訓練事例数が広告クリックなしに比べて 
極端に小さい(広告クリック率0.2%程度)ためにSGDの方が向いている 
12 
13 / 16 
ビッグデータ基盤勉強会(2014/12/11)
Spark MLlibでは実際どうなっている? 
Val data = .. 
for (i <-1 to numIterations) { 
valsampled = 
valgradient = 
w -= gradient 
} 
サンプリングを利用したMini-batch勾配降下法 
で勾配の計算をdistributed gradientで並列化 
データのサブセットをサンプリング 
Spark MapReduceを利用してSampled[1..N]の勾配をN個のワー カで並列に計算してN個の予測モデルを構築し、N個のご予測モデルを マスターノードで(逐次的に)マージ 
Wは次のイテレーションで各ワーカに送信される 
13 
14 / 16 
ビッグデータ基盤勉強会(2014/12/11)
Parameter Mixing 
푤푡+1=푤푡−훾푡훻푙표푠푠(푓(푥;푤푡),푦) 
train 
train 
+1, <1,2> 
.. 
+1, <1,7,9> 
-1, <1,3, 9> 
.. 
+1, <3,8> 
tuple 
<label, featues> 
array<weight> 
Training 
table 
-1, <2,7, 9> 
.. 
+1, <3,8> 
MIX 
-1, <2,7, 9> 
.. 
+1, <3,8> 
train 
train 
array<weight> 
データ分割して各学習器でSGDに より並列に重みを算出 
重みの統合/平均化処理 
14 
15 / 16 
ビッグデータ基盤勉強会(2014/12/11)
Hivemallにおける工夫 
15 
学習器1 
学習器2 
学習器N 
パラメタ 
交換 
学習 
モデル 
分割された訓練例 
データ並列 
データ並列 
(モデルパラメタ) 
①訓練事例の増幅 
②Mix Serverによるパラメタ交換 
16 / 16 
ビッグデータ基盤勉強会(2014/12/11)
学習器1 
学習器2 
学習器N 
パラメタ 
交換 
学習 
モデル 
分割された訓練例 
データ並列 
データ並列 
(モデルパラメタ) 
システム系研究者とタッグを組めそうな話題 
超低レイテンシ/Line rateのパラメタ交換 
(FPGA+高速ネットワーク) 
FPGAボードにNICが刺さっているもので超低レイテンシかつ 
機械学習向けのaccumulatorを実現する..など 
ビッグデータ基盤勉強会(2014/12/11) 16

More Related Content

What's hot

Struggle against crossdomain data complexity in Recruit Group
Struggle against crossdomain data complexity in Recruit GroupStruggle against crossdomain data complexity in Recruit Group
Struggle against crossdomain data complexity in Recruit GroupDataWorks Summit/Hadoop Summit
 
Hivemall meetup vol2 oisix
Hivemall meetup vol2 oisixHivemall meetup vol2 oisix
Hivemall meetup vol2 oisixTaisuke Fukawa
 
Treasure Data × Wave Analytics EC Demo
Treasure Data × Wave Analytics EC DemoTreasure Data × Wave Analytics EC Demo
Treasure Data × Wave Analytics EC DemoTakahiro Inoue
 
Userdiveによるimpala導入へのミチ
Userdiveによるimpala導入へのミチUserdiveによるimpala導入へのミチ
Userdiveによるimpala導入へのミチKuni Nakaji
 
Introduction to Hadoop and Spark (before joining the other talk) and An Overv...
Introduction to Hadoop and Spark (before joining the other talk) and An Overv...Introduction to Hadoop and Spark (before joining the other talk) and An Overv...
Introduction to Hadoop and Spark (before joining the other talk) and An Overv...DataWorks Summit/Hadoop Summit
 
MapR と Vertica エンジニアが語る、なぜその組み合わせが最高なのか? - db tech showcase 大阪 2014 2014/06/19
MapR と Vertica エンジニアが語る、なぜその組み合わせが最高なのか? - db tech showcase 大阪 2014 2014/06/19MapR と Vertica エンジニアが語る、なぜその組み合わせが最高なのか? - db tech showcase 大阪 2014 2014/06/19
MapR と Vertica エンジニアが語る、なぜその組み合わせが最高なのか? - db tech showcase 大阪 2014 2014/06/19MapR Technologies Japan
 
Hadoop最新事情とHortonworks Data Platform
Hadoop最新事情とHortonworks Data PlatformHadoop最新事情とHortonworks Data Platform
Hadoop最新事情とHortonworks Data PlatformYuta Imai
 
性能測定道 事始め編
性能測定道 事始め編性能測定道 事始め編
性能測定道 事始め編Yuto Hayamizu
 
気象庁XMLのSPARQL APIを利用してデータを俯瞰しよう -SPARQLとRによる可視化-
気象庁XMLのSPARQL APIを利用してデータを俯瞰しよう -SPARQLとRによる可視化-気象庁XMLのSPARQL APIを利用してデータを俯瞰しよう -SPARQLとRによる可視化-
気象庁XMLのSPARQL APIを利用してデータを俯瞰しよう -SPARQLとRによる可視化-Yasuyuki Sugai
 
Apache Drill で JSON 形式の オープンデータを分析してみる - db tech showcase Tokyo 2015 2015/06/11
Apache Drill で JSON 形式の オープンデータを分析してみる - db tech showcase Tokyo 2015 2015/06/11Apache Drill で JSON 形式の オープンデータを分析してみる - db tech showcase Tokyo 2015 2015/06/11
Apache Drill で JSON 形式の オープンデータを分析してみる - db tech showcase Tokyo 2015 2015/06/11MapR Technologies Japan
 
Quick Overview of Upcoming Spark 3.0 + α
Quick Overview of Upcoming Spark 3.0 + αQuick Overview of Upcoming Spark 3.0 + α
Quick Overview of Upcoming Spark 3.0 + αTakeshi Yamamuro
 
HiveとImpalaのおいしいとこ取り
HiveとImpalaのおいしいとこ取りHiveとImpalaのおいしいとこ取り
HiveとImpalaのおいしいとこ取りYukinori Suda
 
Hive on Spark の設計指針を読んでみた
Hive on Spark の設計指針を読んでみたHive on Spark の設計指針を読んでみた
Hive on Spark の設計指針を読んでみたRecruit Technologies
 
Azure Machine Learning services 2019年6月版
Azure Machine Learning services 2019年6月版Azure Machine Learning services 2019年6月版
Azure Machine Learning services 2019年6月版Daiyu Hatakeyama
 
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)Hadoop / Spark Conference Japan
 
スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Dril...
スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Dril...スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Dril...
スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Dril...MapR Technologies Japan
 
データ分析チームの振り返り
データ分析チームの振り返りデータ分析チームの振り返り
データ分析チームの振り返りSatoshi Noto
 

What's hot (20)

Struggle against crossdomain data complexity in Recruit Group
Struggle against crossdomain data complexity in Recruit GroupStruggle against crossdomain data complexity in Recruit Group
Struggle against crossdomain data complexity in Recruit Group
 
Hivemall meetup vol2 oisix
Hivemall meetup vol2 oisixHivemall meetup vol2 oisix
Hivemall meetup vol2 oisix
 
Case Study: OLAP usability on Spark and Hadoop
Case Study: OLAP usability on Spark and HadoopCase Study: OLAP usability on Spark and Hadoop
Case Study: OLAP usability on Spark and Hadoop
 
Treasure Data × Wave Analytics EC Demo
Treasure Data × Wave Analytics EC DemoTreasure Data × Wave Analytics EC Demo
Treasure Data × Wave Analytics EC Demo
 
Userdiveによるimpala導入へのミチ
Userdiveによるimpala導入へのミチUserdiveによるimpala導入へのミチ
Userdiveによるimpala導入へのミチ
 
Introduction to Hadoop and Spark (before joining the other talk) and An Overv...
Introduction to Hadoop and Spark (before joining the other talk) and An Overv...Introduction to Hadoop and Spark (before joining the other talk) and An Overv...
Introduction to Hadoop and Spark (before joining the other talk) and An Overv...
 
MapR と Vertica エンジニアが語る、なぜその組み合わせが最高なのか? - db tech showcase 大阪 2014 2014/06/19
MapR と Vertica エンジニアが語る、なぜその組み合わせが最高なのか? - db tech showcase 大阪 2014 2014/06/19MapR と Vertica エンジニアが語る、なぜその組み合わせが最高なのか? - db tech showcase 大阪 2014 2014/06/19
MapR と Vertica エンジニアが語る、なぜその組み合わせが最高なのか? - db tech showcase 大阪 2014 2014/06/19
 
hscj2019_ishizaki_public
hscj2019_ishizaki_publichscj2019_ishizaki_public
hscj2019_ishizaki_public
 
Hadoop最新事情とHortonworks Data Platform
Hadoop最新事情とHortonworks Data PlatformHadoop最新事情とHortonworks Data Platform
Hadoop最新事情とHortonworks Data Platform
 
性能測定道 事始め編
性能測定道 事始め編性能測定道 事始め編
性能測定道 事始め編
 
気象庁XMLのSPARQL APIを利用してデータを俯瞰しよう -SPARQLとRによる可視化-
気象庁XMLのSPARQL APIを利用してデータを俯瞰しよう -SPARQLとRによる可視化-気象庁XMLのSPARQL APIを利用してデータを俯瞰しよう -SPARQLとRによる可視化-
気象庁XMLのSPARQL APIを利用してデータを俯瞰しよう -SPARQLとRによる可視化-
 
What makes Apache Spark?
What makes Apache Spark?What makes Apache Spark?
What makes Apache Spark?
 
Apache Drill で JSON 形式の オープンデータを分析してみる - db tech showcase Tokyo 2015 2015/06/11
Apache Drill で JSON 形式の オープンデータを分析してみる - db tech showcase Tokyo 2015 2015/06/11Apache Drill で JSON 形式の オープンデータを分析してみる - db tech showcase Tokyo 2015 2015/06/11
Apache Drill で JSON 形式の オープンデータを分析してみる - db tech showcase Tokyo 2015 2015/06/11
 
Quick Overview of Upcoming Spark 3.0 + α
Quick Overview of Upcoming Spark 3.0 + αQuick Overview of Upcoming Spark 3.0 + α
Quick Overview of Upcoming Spark 3.0 + α
 
HiveとImpalaのおいしいとこ取り
HiveとImpalaのおいしいとこ取りHiveとImpalaのおいしいとこ取り
HiveとImpalaのおいしいとこ取り
 
Hive on Spark の設計指針を読んでみた
Hive on Spark の設計指針を読んでみたHive on Spark の設計指針を読んでみた
Hive on Spark の設計指針を読んでみた
 
Azure Machine Learning services 2019年6月版
Azure Machine Learning services 2019年6月版Azure Machine Learning services 2019年6月版
Azure Machine Learning services 2019年6月版
 
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
 
スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Dril...
スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Dril...スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Dril...
スケールアウト・インメモリ分析の標準フォーマットを目指す Apache Arrow と Value Vectors - Tokyo Apache Dril...
 
データ分析チームの振り返り
データ分析チームの振り返りデータ分析チームの振り返り
データ分析チームの振り返り
 

More from Makoto Yui

Apache Hivemall and my OSS experience
Apache Hivemall and my OSS experienceApache Hivemall and my OSS experience
Apache Hivemall and my OSS experienceMakoto Yui
 
Introduction to Apache Hivemall v0.5.2 and v0.6
Introduction to Apache Hivemall v0.5.2 and v0.6Introduction to Apache Hivemall v0.5.2 and v0.6
Introduction to Apache Hivemall v0.5.2 and v0.6Makoto Yui
 
Introduction to Apache Hivemall v0.5.0
Introduction to Apache Hivemall v0.5.0Introduction to Apache Hivemall v0.5.0
Introduction to Apache Hivemall v0.5.0Makoto Yui
 
Idea behind Apache Hivemall
Idea behind Apache HivemallIdea behind Apache Hivemall
Idea behind Apache HivemallMakoto Yui
 
Introduction to Apache Hivemall v0.5.0
Introduction to Apache Hivemall v0.5.0Introduction to Apache Hivemall v0.5.0
Introduction to Apache Hivemall v0.5.0Makoto Yui
 
What's new in Hivemall v0.5.0
What's new in Hivemall v0.5.0What's new in Hivemall v0.5.0
What's new in Hivemall v0.5.0Makoto Yui
 
What's new in Apache Hivemall v0.5.0
What's new in Apache Hivemall v0.5.0What's new in Apache Hivemall v0.5.0
What's new in Apache Hivemall v0.5.0Makoto Yui
 
Revisiting b+-trees
Revisiting b+-treesRevisiting b+-trees
Revisiting b+-treesMakoto Yui
 
Incubating Apache Hivemall
Incubating Apache HivemallIncubating Apache Hivemall
Incubating Apache HivemallMakoto Yui
 
Hivemall meets Digdag @Hackertackle 2018-02-17
Hivemall meets Digdag @Hackertackle 2018-02-17Hivemall meets Digdag @Hackertackle 2018-02-17
Hivemall meets Digdag @Hackertackle 2018-02-17Makoto Yui
 
Apache Hivemall @ Apache BigData '17, Miami
Apache Hivemall @ Apache BigData '17, MiamiApache Hivemall @ Apache BigData '17, Miami
Apache Hivemall @ Apache BigData '17, MiamiMakoto Yui
 
機械学習のデータ並列処理@第7回BDI研究会
機械学習のデータ並列処理@第7回BDI研究会機械学習のデータ並列処理@第7回BDI研究会
機械学習のデータ並列処理@第7回BDI研究会Makoto Yui
 
Podling Hivemall in the Apache Incubator
Podling Hivemall in the Apache IncubatorPodling Hivemall in the Apache Incubator
Podling Hivemall in the Apache IncubatorMakoto Yui
 
Dots20161029 myui
Dots20161029 myuiDots20161029 myui
Dots20161029 myuiMakoto Yui
 
Hadoopsummit16 myui
Hadoopsummit16 myuiHadoopsummit16 myui
Hadoopsummit16 myuiMakoto Yui
 
HadoopCon'16, Taipei @myui
HadoopCon'16, Taipei @myuiHadoopCon'16, Taipei @myui
HadoopCon'16, Taipei @myuiMakoto Yui
 
3rd Hivemall meetup
3rd Hivemall meetup3rd Hivemall meetup
3rd Hivemall meetupMakoto Yui
 
Recommendation 101 using Hivemall
Recommendation 101 using HivemallRecommendation 101 using Hivemall
Recommendation 101 using HivemallMakoto Yui
 
Hivemall dbtechshowcase 20160713 #dbts2016
Hivemall dbtechshowcase 20160713 #dbts2016Hivemall dbtechshowcase 20160713 #dbts2016
Hivemall dbtechshowcase 20160713 #dbts2016Makoto Yui
 
Introduction to Hivemall
Introduction to HivemallIntroduction to Hivemall
Introduction to HivemallMakoto Yui
 

More from Makoto Yui (20)

Apache Hivemall and my OSS experience
Apache Hivemall and my OSS experienceApache Hivemall and my OSS experience
Apache Hivemall and my OSS experience
 
Introduction to Apache Hivemall v0.5.2 and v0.6
Introduction to Apache Hivemall v0.5.2 and v0.6Introduction to Apache Hivemall v0.5.2 and v0.6
Introduction to Apache Hivemall v0.5.2 and v0.6
 
Introduction to Apache Hivemall v0.5.0
Introduction to Apache Hivemall v0.5.0Introduction to Apache Hivemall v0.5.0
Introduction to Apache Hivemall v0.5.0
 
Idea behind Apache Hivemall
Idea behind Apache HivemallIdea behind Apache Hivemall
Idea behind Apache Hivemall
 
Introduction to Apache Hivemall v0.5.0
Introduction to Apache Hivemall v0.5.0Introduction to Apache Hivemall v0.5.0
Introduction to Apache Hivemall v0.5.0
 
What's new in Hivemall v0.5.0
What's new in Hivemall v0.5.0What's new in Hivemall v0.5.0
What's new in Hivemall v0.5.0
 
What's new in Apache Hivemall v0.5.0
What's new in Apache Hivemall v0.5.0What's new in Apache Hivemall v0.5.0
What's new in Apache Hivemall v0.5.0
 
Revisiting b+-trees
Revisiting b+-treesRevisiting b+-trees
Revisiting b+-trees
 
Incubating Apache Hivemall
Incubating Apache HivemallIncubating Apache Hivemall
Incubating Apache Hivemall
 
Hivemall meets Digdag @Hackertackle 2018-02-17
Hivemall meets Digdag @Hackertackle 2018-02-17Hivemall meets Digdag @Hackertackle 2018-02-17
Hivemall meets Digdag @Hackertackle 2018-02-17
 
Apache Hivemall @ Apache BigData '17, Miami
Apache Hivemall @ Apache BigData '17, MiamiApache Hivemall @ Apache BigData '17, Miami
Apache Hivemall @ Apache BigData '17, Miami
 
機械学習のデータ並列処理@第7回BDI研究会
機械学習のデータ並列処理@第7回BDI研究会機械学習のデータ並列処理@第7回BDI研究会
機械学習のデータ並列処理@第7回BDI研究会
 
Podling Hivemall in the Apache Incubator
Podling Hivemall in the Apache IncubatorPodling Hivemall in the Apache Incubator
Podling Hivemall in the Apache Incubator
 
Dots20161029 myui
Dots20161029 myuiDots20161029 myui
Dots20161029 myui
 
Hadoopsummit16 myui
Hadoopsummit16 myuiHadoopsummit16 myui
Hadoopsummit16 myui
 
HadoopCon'16, Taipei @myui
HadoopCon'16, Taipei @myuiHadoopCon'16, Taipei @myui
HadoopCon'16, Taipei @myui
 
3rd Hivemall meetup
3rd Hivemall meetup3rd Hivemall meetup
3rd Hivemall meetup
 
Recommendation 101 using Hivemall
Recommendation 101 using HivemallRecommendation 101 using Hivemall
Recommendation 101 using Hivemall
 
Hivemall dbtechshowcase 20160713 #dbts2016
Hivemall dbtechshowcase 20160713 #dbts2016Hivemall dbtechshowcase 20160713 #dbts2016
Hivemall dbtechshowcase 20160713 #dbts2016
 
Introduction to Hivemall
Introduction to HivemallIntroduction to Hivemall
Introduction to Hivemall
 

HivemallとSpark MLlibの比較

  • 1. 独)産業技術総合研究所情報技術研究部門 データサイエンス研究グループ主任研究員油井誠 @myui HivemallとSpark MLlibの比較 1 1 / 16 ビッグデータ基盤勉強会(2014/12/11)
  • 2. はじめに 2 [1] http://www.slideshare.net/myui/sigmodj-myui Disclaimer: Hivemallについての技術詳細はこれまでに色々なところ1 で話しているので詳しく述べません.また実験の詳細など はスライドではなく口頭説明します 発表内容:HivemallとSpark MLlibの比較 発表趣旨:最初に性能比較から入り,その性能差の理由 をそれぞれの動作原理からご紹介する 2 / 16 ビッグデータ基盤勉強会(2014/12/11)
  • 3. HivemallとSpark MLlib Hadoop HDFS MapReduce (MRv1) Hive/PIG クエリ処理系 Hivemall Apache YARN Apache Tez DAG処理系 Apache MESOS Apache Spark DAG処理系 Spark MLlib MR v2 SparkSQL 分散ファイルシステム リソース管理システム 並列処理フレームワーク 問合せ処理系 機械学習ライブラリ 3 3 / 16 ビッグデータ基盤勉強会(2014/12/11)
  • 4. SQLベースの宣言的かつ容易な記述 Hivemallの特徴 Mahoutによるプログラミング CREATE TABLE lr_modelAS SELECT feature, --reducers perform model averaging in parallel avg(weight) as weight FROM ( SELECT logress(features,label,..) as (feature,weight) FROM train ) t --map-only task GROUP BY feature; --shuffled to reducers 一般的なエンジニアでも機械学習を扱える 4 4 / 16 ビッグデータ基盤勉強会(2014/12/11)
  • 5. SparkとHadoopにおける繰り返し処理 •MapReduceはIN/OUTがHDFSを介すために反復処理に は適さない(注: Tezを利用した場合はHDFSのIN/OUTがスキップ可 能) •Sparkはオンメモリ処理によって効率的に反復を扱う iter. 1 iter. 2 . . . Input HDFSread HDFSwrite HDFSread HDFSwrite iter. 1 iter. 2 Input 5 5 / 16 ビッグデータ基盤勉強会(2014/12/11)
  • 6. 性能評価–KDD Cup 2012 Track2での比較 KDD Cup 2012, Track 2: データ:中国の検索エンジンプロバイダ提供の実データ(機械学習のPublicなデータとして最大級) 訓練データは2億レコード以上、特徴数は5千万以上 タスク:検索エンジン広告の広告クリックスルー率(CTR)推定 6 Sparkでもイテレーション は重い処理 SparkだとAUC 0.6以下 6 / 16 ビッグデータ基盤勉強会(2014/12/11)
  • 7. 性能評価–KDD Cup 2010のデータセットを用いた比較 KDD Cup 2010a: 2クラス分類のPublicデータセットとして最大級(特徴数: 8百万以上,特徴数2千万以上,2.73GB) 7 Sparkが向いているタスクもある 7 / 16 ビッグデータ基盤勉強会(2014/12/11)
  • 9. 푤푡+1=푤푡−훾푡1 푛 푖=0 푛 훻푙표푠푠(푓(푥푖;푤푡),푦) 新しい重み 古い重み 経験損失の勾配 学習率 勾配降下法(Gradient Descent) 経験損失の勾配 を基に重みを更新 9 10 / 16 ビッグデータ基盤勉強会(2014/12/11)
  • 10. 1.Distributed Gradient •勾配効果法の勾配計算の並列化 •重みの更新は基本的に単一ノード 2.Parameter Mixing •確率的勾配降下法の学習処理を並列化 •重みの更新が各学習器の計算ノードで行われ,その 後モデルの平均化処理が行われる 機械学習の分散処理 機械学習の分散処理手法は 基本的にこの2種類かその亜種に分類できる HivemallやJubatus, Down Pour SGDは②を採用 Spark Mllibは①の亜種 Vowpal WabbitはAllReduceを利用した①の亜種および②を共にサポート 10 11 / 16 ビッグデータ基盤勉強会(2014/12/11)
  • 11. Distributed Gradient 푤푡+1=푤푡−훾푡1 푛 푖=0 푛 훻푙표푠푠(푓(푥푖;푤푡),푦) mappers single reducer 勾配をmapperで並列に計算 重みの更新をreducerで行う SGDによる更新も可能 11 12 / 16 ビッグデータ基盤勉強会(2014/12/11)
  • 12. Distributed Gradientwith Mini-batch Updates 正確な勾配を算出できるが更新幅が 小さくなりがちで多くのイテレーションが必要 CTR推定ではクリックありの訓練事例数が広告クリックなしに比べて 極端に小さい(広告クリック率0.2%程度)ためにSGDの方が向いている 12 13 / 16 ビッグデータ基盤勉強会(2014/12/11)
  • 13. Spark MLlibでは実際どうなっている? Val data = .. for (i <-1 to numIterations) { valsampled = valgradient = w -= gradient } サンプリングを利用したMini-batch勾配降下法 で勾配の計算をdistributed gradientで並列化 データのサブセットをサンプリング Spark MapReduceを利用してSampled[1..N]の勾配をN個のワー カで並列に計算してN個の予測モデルを構築し、N個のご予測モデルを マスターノードで(逐次的に)マージ Wは次のイテレーションで各ワーカに送信される 13 14 / 16 ビッグデータ基盤勉強会(2014/12/11)
  • 14. Parameter Mixing 푤푡+1=푤푡−훾푡훻푙표푠푠(푓(푥;푤푡),푦) train train +1, <1,2> .. +1, <1,7,9> -1, <1,3, 9> .. +1, <3,8> tuple <label, featues> array<weight> Training table -1, <2,7, 9> .. +1, <3,8> MIX -1, <2,7, 9> .. +1, <3,8> train train array<weight> データ分割して各学習器でSGDに より並列に重みを算出 重みの統合/平均化処理 14 15 / 16 ビッグデータ基盤勉強会(2014/12/11)
  • 15. Hivemallにおける工夫 15 学習器1 学習器2 学習器N パラメタ 交換 学習 モデル 分割された訓練例 データ並列 データ並列 (モデルパラメタ) ①訓練事例の増幅 ②Mix Serverによるパラメタ交換 16 / 16 ビッグデータ基盤勉強会(2014/12/11)
  • 16. 学習器1 学習器2 学習器N パラメタ 交換 学習 モデル 分割された訓練例 データ並列 データ並列 (モデルパラメタ) システム系研究者とタッグを組めそうな話題 超低レイテンシ/Line rateのパラメタ交換 (FPGA+高速ネットワーク) FPGAボードにNICが刺さっているもので超低レイテンシかつ 機械学習向けのaccumulatorを実現する..など ビッグデータ基盤勉強会(2014/12/11) 16