SlideShare uma empresa Scribd logo
1 de 40
Spark MLlib Now and Beyond
株式会社リクルートテクノロジーズ
アドバンスドテクノロジーラボ
石川有
発表のねらい
• エンジニアの方:
• MLlib で機械学習アプリケーションが簡単に構築できることを知って
いただく
• データ分析の方:
• Spark への移行はそれほど難しくないことを知っていただく
2
アジェンダ
• これまでの MLlib
• DataFrame API
• Pipeline API
• MLlib 2.0 に向けて
• まとめ
3
spark.mllib
spark.ml
MLlib とは?
• Spark に組み込まれている機械学習ライブラリ
• spark.mllib パッケージ
• spark.ml パッケージ
• ミッション
• より簡単でスケーラブルに機械学習アプリケーションを構築
• MLlib のコントリビュータ
• 個人:220+, 組織:70+
• 豊富な機会学習アルゴリズムやユーティリティ
• Spark Streaming や Spark SQL とシームレスに統合可能
5
spark.mlパケージ
• DataFrame を利用した機械学習パイプラインのためのハイレベル API を提供
• Spark 1.6 では spark.mllib より spark.ml の利用を推奨
• Python の scikit-learn ライブラリの API 設計に影響され開発
• API design for machine learning software: experiences from the scikit-learn
project , Lars Buitinck et al.
6
// モデルの学習
val model = algo.fit(trainingDataFrame)
// 学習したモデルで予測
model.transform(testDataFrame)
SparkとMLlibの簡単な歴史
7
RDD DataFrame Dataset
spark.mllib spark.ml
Pipeline API
1.2 1.3 1.60.8 2.0
Dataset 向けの全く新しい
パッケージは作らない予定
MLlib-specific Contribution Guidelines
• Be widely known
• Be used and accepted
• academic citations and concrete use cases can help justify this
• Be highly scalable
• Be well documented
• Have APIs consistent with other algorithms in MLlib that accomplish the
same thing
• Come with a reasonable expectation of developer support.
8
[https://cwiki.apache.org/confluence/display/SPARK/Contributing+to+Spark]
豊富なアルゴリズムとユーティリティ
9
アジェンダ
• これまでの MLlib
• DataFrame API
• Pipeline API
• MLlib 2.0 に向けて
• まとめ
10
DataFrame API
11
age prefecture name
34 Tokyo ****
41 Osaka ****
27 Saitama ****
24 Chiba ****
// 都道府県ごとのユーザの平均年齢を計算
data.groupBy(“prefecture”).agg(ave(“age”))
// 年齢 25 歳以上のユーザ数
data.filter(“age >= 25”).count()
// SQL でも記述できる
sqlContext.sql(“select age from user_table”)
データ分析でよく使われる機能を DSL として提供
より少ないコード量で可読性高く記述できる
API 設計は Pandas に影響を受けている
user_table
サポートしているデータソースとフォーマット
12
DataFrame API の豊富なビルトイン関数
• 数学関数,文字列関数,日付関数など
• ユーザ定義関数も利用可能
13
Catalystによる処理の最適化
14
cited by: Spark Summit EU 2015: Spark DataFrames: Simple and Fast Analysis of Structured Data
DataFrame API を利用すれば
少ないコードでより高速に処理することができる
アジェンダ
• これまでの MLlib
• DataFrame API
• Pipeline API
• MLlib 2.0 に向けて
• まとめ
15
Simple ML Pipeline
16
Data
Feature
Extraction
Train Model
Final
Model
サンプルタスク
• レビュー (review) のテキストから評価 (rating) を予測
17
review Model rating
String Int
Spark ML Pipeline API
val tokenizer = new Tokenizer()
.setInputCol("review")
.setOutputCol(“words")
18
Training Data
Hashed Term
Logistic Regression
Evaluate
Tokenizer
words
i, have, bought, several, of, the,…
product, arrived, labeled, as, jumbo, …
this, is, a, confection, that, has, …
if, you, are, looking, for, the, secret,…
Spark ML Pipeline API
val tokenizer = new Tokenizer()
.setInputCol("review")
.setOutputCol(“words")
val hashingTF = new HashingTF()
.setNumFeatures(1000)
.setInputCol(“words”)
.setOutputCol("features")
19
Training Data
Hashed Term Freq.
Logistic Regression
Evaluate
Tokenizer
features
(1.0, 2.0, 1.0, 3.0, ….)
(2.0, 1.0, 1.0, 2.0, ….)
(3.0, 1.0, 2.0, 1.0, …)
(1.0, 1.0, 3.0, 2.0, ….)
Spark ML Pipeline API
val tokenizer = new Tokenizer()
.setInputCol("review")
.setOutputCol(“words")
val hashingTF = new HashingTF()
.setNumFeatures(1000)
.setInputCol(“words”)
.setOutputCol("features")
val lr = new LogisticRegression()
.setMaxIter(100)
.setRegParam(0.01)
20
Training Data
Hashed Term Freq.
Logistic Regression
Evaluate
Tokenizer
Spark ML Pipeline API
val tokenizer = new Tokenizer()
.setInputCol("review")
.setOutputCol(“words")
val hashingTF = new HashingTF()
.setNumFeatures(1000)
.setInputCol(“words”)
.setOutputCol("features")
val lr = new LogisticRegression()
.setMaxIter(100)
.setRegParam(0.01)
val pipeline = new Pipeline()
.setStages(Array(tokenizer, hashingTF, lr))
val model = pipeline.fit(training)
21
Pipeline
Training Data
Hashed Term Freq.
Logistic Regression
Final Model
Tokenizer
Simple ML Pipeline
22
Data
Feature
Extraction
Train Model
Final
Model
A Little Simple ML Pipeline
23
ML Pipelines for Test
24
Pipeline
Training Data
Hashed Term Freq.
Logistic Regression
Final Model
Tokenizer
Pipeline
Test Data
Hashed Term Freq.
Logistic Regression
Evaluate
Tokenizer
Pipeline API for Test
val tokenizer = new Tokenizer()
.setInputCol("text")
.setOutputCol(“words")
val hashingTF = new HashingTF()
.setNumFeatures(1000)
.setInputCol(tokenizer.getOutputCol)
.setOutputCol("features")
val lr = new LogisticRegression()
.setMaxIter(100)
.setRegParam(0.01)
val pipeline = new Pipeline()
.setStages(Array(tokenizer, hashingTF, lr))
val model = pipeline.fit(training)
model.transform(test)
25
Pipeline
Test Data
Hashed Term Freq.
Logistic Regression
Evaluate
Tokenizer
結果のイメージ
26
review Model rating
String Int
review
実際の ML Pipeline は複雑
27
Data Image!
Parser
Normalizer Convolver
sqrt,mean
Zipper
Linear
Solver
Symmetric!
Rectifier
ident,abs
ident,mean
Global
Pooler
Patch!
Extractor
Patch
Whitener
KMeans!
Clusterer
Feature Extractor
Label!
Extractor
Linear!
Mapper
Model
Test!
Data
Label!
Extractor
Feature
Extractor
Test
Error
Error!
Computer
No Hyperparameters!
A few Hyperparameters!
Lotsa Hyperparameters
パラメータチューニング
28
Hashed Term Freq.
Logistic Regression
Evaluate
Tokenizer
hashingTF.numFeatures
{10, 20, 40}
lr.regParam
{0.01, 0.1, 0.5}
Pipeline
クロスバリデーション
29
Practical Spark ML Pipeline API
val paramGrid = new ParamGridBuilder()
.addGrid(hashingTF.numFeatures, Array(10, 20, 40))
.addGrid(lr.regParam, Array(0.01, 0.1, 0.5))
.build()
30
Practical Spark ML Pipeline API
val paramGrid = new ParamGridBuilder()
.addGrid(hashingTF.numFeatures, Array(10, 20, 40))
.addGrid(lr.regParam, Array(0.01, 0.1, 0.5))
.build()
val cv = new CrossValidator()
.setNumFolds(3)
.setEstimator(pipeline)
.setEstimatorParamMaps(paramGrid)
.setEvaluator(new BinaryClassificationEvaluator)
val cvModel = cv.fit(trainingDataset)
cvModel.transform(testDataset)
31
Parameter Tuning も Cross-Validation も
API が用意されているので複雑な PIpeline も簡単に定義
訓練した Pipeline や学習モデルの永続化を
Spark 1.6 でサポート
32
Pipeline
Training Data
Hashed Term Freq.
Logistic Regression
Tokenizer
save
Model
Load Model
Evaluate
訓練済みモデルを保存することで
再構築の必要がなく再利用が簡単
機械学習モデルや Pipeline が永続化できるメリット
33
データ分析者 エンジニア
Model
プロダクト
Python で永続化 Scala で読み込んでデプロイ
言語インタフェースをまたいだ利用が可能
Spark Streaming 上が学習したモデルを利用することもできる
学習したモデルのバージョン管理も簡単
Model
アジェンダ
• これまでの MLlib
• DataFrame API
• Pipeline API
• MLlib 2.0 に向けて
• まとめ
34
Spark MLlib 2.0 Roadmap
• Extended support for GLM model families and link functions
• Improve GLM scalability
• Tree partition by features
• Locality sensitive hashing (LSH)
• Deep learning: RBM/CNN
• Improved pipeline API
• Pipeline persistence
• Model serving
• Better SparkR coverage
• Project Tungsten integration
• Reorganize user guide
35
Pipeline 永続化の課題
36
Pipeline
Hashed Term Freq.
Random Forest
Tokenizer
永続化未対応
save
Model
X
Pipeline 中のひとつでも永続化できなければ,
Pipeline 全体を永続化できない
Spark 1.6 時点で永続化未対応のアルゴリズム
• Classification
• DecisionTreeClassifier
• GBTClassifier
• MultilayerPerceptronClassifier
• OneVsRest
• RandomForestClassifier
• Regression
• DecisionTreeRegressor
• GBTRegressor
• RandomForestRegressor
37
SparkR の MLlib 対応
• Spark 1.6 の時点で SparkR がサポートしている機械学習アルゴ
リズムは GLM のみ
• k-means や survival analysis などの対応を行っていく
38
PySpark に比べると SparkR の MLlib 対応が遅れている
アジェンダ
• これまでの MLlib
• DataFrame API
• Pipeline API
• MLlib 2.0 に向けて
• まとめ
39
まとめ
• エンジニア向け:
• Spark の機械学習ライブラリ MLlibで,プロダクションでの機械学習を簡単にスケー
ラブルに実行
• データ分析者向け:
• spark.ml のAPI設計は scikit-learn に影響を受けているので,scikit-learn ユーザに
とっては学習コストが低い
• DataFrame API は pandas に影響を受けている
• Pipeline API を利用することで複雑化する ML Pipeline の管理が簡単
• 機械学習モデルや Pipeline の永続化により,言語インターフェースやコンポーネントを
またいだ利用が簡単
• Pipeline API は発展途上なのでパフォーマンスや永続化対応を進めていく必要あり
• SparkR の開発は 2.0 以降に期待
40
MLlib は実践を意識したスケーラブル機械学習アプリケーションを
より簡単に構築できることを目指している

Mais conteúdo relacionado

Mais procurados

Hive on Spark の設計指針を読んでみた
Hive on Spark の設計指針を読んでみたHive on Spark の設計指針を読んでみた
Hive on Spark の設計指針を読んでみたRecruit Technologies
 
Introduction new features in Spark 3.0
Introduction new features in Spark 3.0Introduction new features in Spark 3.0
Introduction new features in Spark 3.0Kazuaki Ishizaki
 
Sparkストリーミング検証
Sparkストリーミング検証Sparkストリーミング検証
Sparkストリーミング検証BrainPad Inc.
 
JP version - Beyond Shuffling - Apache Spark のスケールアップのためのヒントとコツ
JP version - Beyond Shuffling - Apache Spark のスケールアップのためのヒントとコツJP version - Beyond Shuffling - Apache Spark のスケールアップのためのヒントとコツ
JP version - Beyond Shuffling - Apache Spark のスケールアップのためのヒントとコツHolden Karau
 
Deep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance TuningDeep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance TuningTakuya UESHIN
 
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
 
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとはdb tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとはKoji Shinkubo
 
Project Tungsten Bringing Spark Closer to Bare Meta (Hadoop / Spark Conferenc...
Project Tungsten Bringing Spark Closer to Bare Meta (Hadoop / Spark Conferenc...Project Tungsten Bringing Spark Closer to Bare Meta (Hadoop / Spark Conferenc...
Project Tungsten Bringing Spark Closer to Bare Meta (Hadoop / Spark Conferenc...Hadoop / Spark Conference Japan
 
Sparkでレコメンドエンジンを作ってみた
Sparkでレコメンドエンジンを作ってみたSparkでレコメンドエンジンを作ってみた
Sparkでレコメンドエンジンを作ってみたfujita_s
 
A Benchmark Test on Presto, Spark Sql and Hive on Tez
A Benchmark Test on Presto, Spark Sql and Hive on TezA Benchmark Test on Presto, Spark Sql and Hive on Tez
A Benchmark Test on Presto, Spark Sql and Hive on TezGw Liu
 
20180109 titech lecture_ishizaki_public
20180109 titech lecture_ishizaki_public20180109 titech lecture_ishizaki_public
20180109 titech lecture_ishizaki_publicKazuaki Ishizaki
 
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC EnterpriseYusukeKuramata
 
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介Sotaro Kimura
 
ScalaでDSP作ってみた
ScalaでDSP作ってみたScalaでDSP作ってみた
ScalaでDSP作ってみたJiro Hiraiwa
 
Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining
Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebminingImpala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining
Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebminingSho Shimauchi
 
Hadoop Conference Japan_2016 セッション「顧客事例から学んだ、 エンタープライズでの "マジな"Hadoop導入の勘所」
Hadoop Conference Japan_2016 セッション「顧客事例から学んだ、 エンタープライズでの "マジな"Hadoop導入の勘所」Hadoop Conference Japan_2016 セッション「顧客事例から学んだ、 エンタープライズでの "マジな"Hadoop導入の勘所」
Hadoop Conference Japan_2016 セッション「顧客事例から学んだ、 エンタープライズでの "マジな"Hadoop導入の勘所」オラクルエンジニア通信
 
20190314 PGStrom Arrow_Fdw
20190314 PGStrom Arrow_Fdw20190314 PGStrom Arrow_Fdw
20190314 PGStrom Arrow_FdwKohei KaiGai
 

Mais procurados (20)

Hive on Spark の設計指針を読んでみた
Hive on Spark の設計指針を読んでみたHive on Spark の設計指針を読んでみた
Hive on Spark の設計指針を読んでみた
 
Introduction new features in Spark 3.0
Introduction new features in Spark 3.0Introduction new features in Spark 3.0
Introduction new features in Spark 3.0
 
Sparkストリーミング検証
Sparkストリーミング検証Sparkストリーミング検証
Sparkストリーミング検証
 
JP version - Beyond Shuffling - Apache Spark のスケールアップのためのヒントとコツ
JP version - Beyond Shuffling - Apache Spark のスケールアップのためのヒントとコツJP version - Beyond Shuffling - Apache Spark のスケールアップのためのヒントとコツ
JP version - Beyond Shuffling - Apache Spark のスケールアップのためのヒントとコツ
 
Deep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance TuningDeep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance Tuning
 
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 + α
 
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとはdb tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
 
Project Tungsten Bringing Spark Closer to Bare Meta (Hadoop / Spark Conferenc...
Project Tungsten Bringing Spark Closer to Bare Meta (Hadoop / Spark Conferenc...Project Tungsten Bringing Spark Closer to Bare Meta (Hadoop / Spark Conferenc...
Project Tungsten Bringing Spark Closer to Bare Meta (Hadoop / Spark Conferenc...
 
Sparkでレコメンドエンジンを作ってみた
Sparkでレコメンドエンジンを作ってみたSparkでレコメンドエンジンを作ってみた
Sparkでレコメンドエンジンを作ってみた
 
A Benchmark Test on Presto, Spark Sql and Hive on Tez
A Benchmark Test on Presto, Spark Sql and Hive on TezA Benchmark Test on Presto, Spark Sql and Hive on Tez
A Benchmark Test on Presto, Spark Sql and Hive on Tez
 
Hiveを高速化するLLAP
Hiveを高速化するLLAPHiveを高速化するLLAP
Hiveを高速化するLLAP
 
SparkTokyo2019NovIshizaki
SparkTokyo2019NovIshizakiSparkTokyo2019NovIshizaki
SparkTokyo2019NovIshizaki
 
20180109 titech lecture_ishizaki_public
20180109 titech lecture_ishizaki_public20180109 titech lecture_ishizaki_public
20180109 titech lecture_ishizaki_public
 
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
 
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介
スキーマ 付き 分散ストリーム処理 を実行可能な FlinkSQLClient の紹介
 
Apache Spark + Arrow
Apache Spark + ArrowApache Spark + Arrow
Apache Spark + Arrow
 
ScalaでDSP作ってみた
ScalaでDSP作ってみたScalaでDSP作ってみた
ScalaでDSP作ってみた
 
Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining
Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebminingImpala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining
Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining
 
Hadoop Conference Japan_2016 セッション「顧客事例から学んだ、 エンタープライズでの "マジな"Hadoop導入の勘所」
Hadoop Conference Japan_2016 セッション「顧客事例から学んだ、 エンタープライズでの "マジな"Hadoop導入の勘所」Hadoop Conference Japan_2016 セッション「顧客事例から学んだ、 エンタープライズでの "マジな"Hadoop導入の勘所」
Hadoop Conference Japan_2016 セッション「顧客事例から学んだ、 エンタープライズでの "マジな"Hadoop導入の勘所」
 
20190314 PGStrom Arrow_Fdw
20190314 PGStrom Arrow_Fdw20190314 PGStrom Arrow_Fdw
20190314 PGStrom Arrow_Fdw
 

Destaque

Hadoop Conference Japan 2016 LT資料 グラフデータベース事始め
Hadoop Conference Japan 2016 LT資料 グラフデータベース事始めHadoop Conference Japan 2016 LT資料 グラフデータベース事始め
Hadoop Conference Japan 2016 LT資料 グラフデータベース事始めオラクルエンジニア通信
 
Apache Sparkを用いたスケーラブルな時系列データの異常検知モデル学習ソフトウェアの開発
Apache Sparkを用いたスケーラブルな時系列データの異常検知モデル学習ソフトウェアの開発Apache Sparkを用いたスケーラブルな時系列データの異常検知モデル学習ソフトウェアの開発
Apache Sparkを用いたスケーラブルな時系列データの異常検知モデル学習ソフトウェアの開発Ryo 亮 Kawahara 河原
 
Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)Hadoop / Spark Conference Japan
 
Hadoop / Spark Conference Japan 2016 ご挨拶・Hadoopを取り巻く環境
Hadoop / Spark Conference Japan 2016 ご挨拶・Hadoopを取り巻く環境Hadoop / Spark Conference Japan 2016 ご挨拶・Hadoopを取り巻く環境
Hadoop / Spark Conference Japan 2016 ご挨拶・Hadoopを取り巻く環境Hadoop / Spark Conference Japan
 
Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)Hadoop / Spark Conference Japan
 
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
 
JVM and OS Tuning for accelerating Spark application
JVM and OS Tuning for accelerating Spark applicationJVM and OS Tuning for accelerating Spark application
JVM and OS Tuning for accelerating Spark applicationTatsuhiro Chiba
 
sparksql-hive-bench-by-nec-hwx-at-hcj16
sparksql-hive-bench-by-nec-hwx-at-hcj16sparksql-hive-bench-by-nec-hwx-at-hcj16
sparksql-hive-bench-by-nec-hwx-at-hcj16Yifeng Jiang
 

Destaque (8)

Hadoop Conference Japan 2016 LT資料 グラフデータベース事始め
Hadoop Conference Japan 2016 LT資料 グラフデータベース事始めHadoop Conference Japan 2016 LT資料 グラフデータベース事始め
Hadoop Conference Japan 2016 LT資料 グラフデータベース事始め
 
Apache Sparkを用いたスケーラブルな時系列データの異常検知モデル学習ソフトウェアの開発
Apache Sparkを用いたスケーラブルな時系列データの異常検知モデル学習ソフトウェアの開発Apache Sparkを用いたスケーラブルな時系列データの異常検知モデル学習ソフトウェアの開発
Apache Sparkを用いたスケーラブルな時系列データの異常検知モデル学習ソフトウェアの開発
 
Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)
 
Hadoop / Spark Conference Japan 2016 ご挨拶・Hadoopを取り巻く環境
Hadoop / Spark Conference Japan 2016 ご挨拶・Hadoopを取り巻く環境Hadoop / Spark Conference Japan 2016 ご挨拶・Hadoopを取り巻く環境
Hadoop / Spark Conference Japan 2016 ご挨拶・Hadoopを取り巻く環境
 
Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Spark 2.0 What's Next (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 講演資料)
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
 
JVM and OS Tuning for accelerating Spark application
JVM and OS Tuning for accelerating Spark applicationJVM and OS Tuning for accelerating Spark application
JVM and OS Tuning for accelerating Spark application
 
sparksql-hive-bench-by-nec-hwx-at-hcj16
sparksql-hive-bench-by-nec-hwx-at-hcj16sparksql-hive-bench-by-nec-hwx-at-hcj16
sparksql-hive-bench-by-nec-hwx-at-hcj16
 

Semelhante a 2016-02-08 Spark MLlib Now and Beyond@Spark Conference Japan 2016

2019.03.19 Deep Dive into Spark SQL with Advanced Performance Tuning
2019.03.19 Deep Dive into Spark SQL with Advanced Performance Tuning2019.03.19 Deep Dive into Spark SQL with Advanced Performance Tuning
2019.03.19 Deep Dive into Spark SQL with Advanced Performance TuningTakuya UESHIN
 
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】Tomoharu ASAMI
 
Reco choku tech night #09 -reinvent2018報告会-
Reco choku tech night #09 -reinvent2018報告会-Reco choku tech night #09 -reinvent2018報告会-
Reco choku tech night #09 -reinvent2018報告会-recotech
 
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Tomoharu ASAMI
 
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.jsTanUkkii
 
aws mackerel twilio_handson_public
aws mackerel twilio_handson_publicaws mackerel twilio_handson_public
aws mackerel twilio_handson_publicTomoaki Sakatoku
 
アイコンで組み立てる Spark MLlib + ETLプログラム
アイコンで組み立てる Spark MLlib + ETLプログラムアイコンで組み立てる Spark MLlib + ETLプログラム
アイコンで組み立てる Spark MLlib + ETLプログラムtatsumi_air
 
MariaDB ColumnStore ベンチマークしちゃいませんか?
MariaDB ColumnStore ベンチマークしちゃいませんか?MariaDB ColumnStore ベンチマークしちゃいませんか?
MariaDB ColumnStore ベンチマークしちゃいませんか?KAWANO KAZUYUKI
 
関西DB勉強会ver : MariaDB ColumnStore ベンチマークしちゃいませんか?
関西DB勉強会ver : MariaDB ColumnStore ベンチマークしちゃいませんか?関西DB勉強会ver : MariaDB ColumnStore ベンチマークしちゃいませんか?
関西DB勉強会ver : MariaDB ColumnStore ベンチマークしちゃいませんか?KAWANO KAZUYUKI
 
20190625 OpenACC 講習会 第1部
20190625 OpenACC 講習会 第1部20190625 OpenACC 講習会 第1部
20190625 OpenACC 講習会 第1部NVIDIA Japan
 
What's New in the Elastic 8.5 Release
What's New in the Elastic 8.5 ReleaseWhat's New in the Elastic 8.5 Release
What's New in the Elastic 8.5 ReleaseShotaro Suzuki
 
IaC事始め Infrastructure as Code やってみる?
IaC事始め Infrastructure as Code やってみる?IaC事始め Infrastructure as Code やってみる?
IaC事始め Infrastructure as Code やってみる?大使 梶原
 
Optuna on Kubeflow Pipeline 分散ハイパラチューニング
Optuna on Kubeflow Pipeline 分散ハイパラチューニングOptuna on Kubeflow Pipeline 分散ハイパラチューニング
Optuna on Kubeflow Pipeline 分散ハイパラチューニングTakashi Suzuki
 
Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編
Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編
Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編Daiyu Hatakeyama
 
9/16 Tokyo Apache Drill Meetup - drill vs sparksql
9/16 Tokyo Apache Drill Meetup - drill vs sparksql9/16 Tokyo Apache Drill Meetup - drill vs sparksql
9/16 Tokyo Apache Drill Meetup - drill vs sparksqlMitsutoshi Kiuchi
 
Developers.IO 2019 Effective Datalake
Developers.IO 2019 Effective DatalakeDevelopers.IO 2019 Effective Datalake
Developers.IO 2019 Effective DatalakeSatoru Ishikawa
 
Optuna on Kubeflow Pipeline 分散ハイパラチューニング
Optuna on Kubeflow Pipeline 分散ハイパラチューニングOptuna on Kubeflow Pipeline 分散ハイパラチューニング
Optuna on Kubeflow Pipeline 分散ハイパラチューニングMasao Tsukiyama
 
Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介
Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介
Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介QlikPresalesJapan
 
実務者のためのかんたんScalaz
実務者のためのかんたんScalaz実務者のためのかんたんScalaz
実務者のためのかんたんScalazTomoharu ASAMI
 

Semelhante a 2016-02-08 Spark MLlib Now and Beyond@Spark Conference Japan 2016 (20)

2019.03.19 Deep Dive into Spark SQL with Advanced Performance Tuning
2019.03.19 Deep Dive into Spark SQL with Advanced Performance Tuning2019.03.19 Deep Dive into Spark SQL with Advanced Performance Tuning
2019.03.19 Deep Dive into Spark SQL with Advanced Performance Tuning
 
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
 
Reco choku tech night #09 -reinvent2018報告会-
Reco choku tech night #09 -reinvent2018報告会-Reco choku tech night #09 -reinvent2018報告会-
Reco choku tech night #09 -reinvent2018報告会-
 
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
 
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.js
 
aws mackerel twilio_handson_public
aws mackerel twilio_handson_publicaws mackerel twilio_handson_public
aws mackerel twilio_handson_public
 
API Gateway / AWS CLI
API Gateway / AWS CLIAPI Gateway / AWS CLI
API Gateway / AWS CLI
 
アイコンで組み立てる Spark MLlib + ETLプログラム
アイコンで組み立てる Spark MLlib + ETLプログラムアイコンで組み立てる Spark MLlib + ETLプログラム
アイコンで組み立てる Spark MLlib + ETLプログラム
 
MariaDB ColumnStore ベンチマークしちゃいませんか?
MariaDB ColumnStore ベンチマークしちゃいませんか?MariaDB ColumnStore ベンチマークしちゃいませんか?
MariaDB ColumnStore ベンチマークしちゃいませんか?
 
関西DB勉強会ver : MariaDB ColumnStore ベンチマークしちゃいませんか?
関西DB勉強会ver : MariaDB ColumnStore ベンチマークしちゃいませんか?関西DB勉強会ver : MariaDB ColumnStore ベンチマークしちゃいませんか?
関西DB勉強会ver : MariaDB ColumnStore ベンチマークしちゃいませんか?
 
20190625 OpenACC 講習会 第1部
20190625 OpenACC 講習会 第1部20190625 OpenACC 講習会 第1部
20190625 OpenACC 講習会 第1部
 
What's New in the Elastic 8.5 Release
What's New in the Elastic 8.5 ReleaseWhat's New in the Elastic 8.5 Release
What's New in the Elastic 8.5 Release
 
IaC事始め Infrastructure as Code やってみる?
IaC事始め Infrastructure as Code やってみる?IaC事始め Infrastructure as Code やってみる?
IaC事始め Infrastructure as Code やってみる?
 
Optuna on Kubeflow Pipeline 分散ハイパラチューニング
Optuna on Kubeflow Pipeline 分散ハイパラチューニングOptuna on Kubeflow Pipeline 分散ハイパラチューニング
Optuna on Kubeflow Pipeline 分散ハイパラチューニング
 
Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編
Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編
Deep Learning Lab - Microsoft Machine Learning meetup 2018/06/27 - 推論編
 
9/16 Tokyo Apache Drill Meetup - drill vs sparksql
9/16 Tokyo Apache Drill Meetup - drill vs sparksql9/16 Tokyo Apache Drill Meetup - drill vs sparksql
9/16 Tokyo Apache Drill Meetup - drill vs sparksql
 
Developers.IO 2019 Effective Datalake
Developers.IO 2019 Effective DatalakeDevelopers.IO 2019 Effective Datalake
Developers.IO 2019 Effective Datalake
 
Optuna on Kubeflow Pipeline 分散ハイパラチューニング
Optuna on Kubeflow Pipeline 分散ハイパラチューニングOptuna on Kubeflow Pipeline 分散ハイパラチューニング
Optuna on Kubeflow Pipeline 分散ハイパラチューニング
 
Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介
Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介
Qlik TECH TALK 20210706 SAPデータ分析を加速するQlikのアクセレレーターパッケージご紹介
 
実務者のためのかんたんScalaz
実務者のためのかんたんScalaz実務者のためのかんたんScalaz
実務者のためのかんたんScalaz
 

Mais de Yu Ishikawa

Introduction to Polyaxon
Introduction to PolyaxonIntroduction to Polyaxon
Introduction to PolyaxonYu Ishikawa
 
2017 09-27 democratize data products with SQL
2017 09-27 democratize data products with SQL2017 09-27 democratize data products with SQL
2017 09-27 democratize data products with SQLYu Ishikawa
 
2016-06-15 Sparkの機械学習の開発と活用の動向
2016-06-15 Sparkの機械学習の開発と活用の動向2016-06-15 Sparkの機械学習の開発と活用の動向
2016-06-15 Sparkの機械学習の開発と活用の動向Yu Ishikawa
 
2015 03-12 道玄坂LT祭り第2回 Spark DataFrame Introduction
2015 03-12 道玄坂LT祭り第2回 Spark DataFrame Introduction2015 03-12 道玄坂LT祭り第2回 Spark DataFrame Introduction
2015 03-12 道玄坂LT祭り第2回 Spark DataFrame IntroductionYu Ishikawa
 
2014 09-12 lambda-architecture-at-indix
2014 09-12 lambda-architecture-at-indix2014 09-12 lambda-architecture-at-indix
2014 09-12 lambda-architecture-at-indixYu Ishikawa
 
「チーム開発実践入門」勉強会
「チーム開発実践入門」勉強会「チーム開発実践入門」勉強会
「チーム開発実践入門」勉強会Yu Ishikawa
 
BdasとSpark概要
BdasとSpark概要BdasとSpark概要
BdasとSpark概要Yu Ishikawa
 
Hadoop conference 2013winter_for_slideshare
Hadoop conference 2013winter_for_slideshareHadoop conference 2013winter_for_slideshare
Hadoop conference 2013winter_for_slideshareYu Ishikawa
 
2012 02-02 mixi engineer's seminor #3
2012 02-02  mixi engineer's seminor #32012 02-02  mixi engineer's seminor #3
2012 02-02 mixi engineer's seminor #3Yu Ishikawa
 

Mais de Yu Ishikawa (9)

Introduction to Polyaxon
Introduction to PolyaxonIntroduction to Polyaxon
Introduction to Polyaxon
 
2017 09-27 democratize data products with SQL
2017 09-27 democratize data products with SQL2017 09-27 democratize data products with SQL
2017 09-27 democratize data products with SQL
 
2016-06-15 Sparkの機械学習の開発と活用の動向
2016-06-15 Sparkの機械学習の開発と活用の動向2016-06-15 Sparkの機械学習の開発と活用の動向
2016-06-15 Sparkの機械学習の開発と活用の動向
 
2015 03-12 道玄坂LT祭り第2回 Spark DataFrame Introduction
2015 03-12 道玄坂LT祭り第2回 Spark DataFrame Introduction2015 03-12 道玄坂LT祭り第2回 Spark DataFrame Introduction
2015 03-12 道玄坂LT祭り第2回 Spark DataFrame Introduction
 
2014 09-12 lambda-architecture-at-indix
2014 09-12 lambda-architecture-at-indix2014 09-12 lambda-architecture-at-indix
2014 09-12 lambda-architecture-at-indix
 
「チーム開発実践入門」勉強会
「チーム開発実践入門」勉強会「チーム開発実践入門」勉強会
「チーム開発実践入門」勉強会
 
BdasとSpark概要
BdasとSpark概要BdasとSpark概要
BdasとSpark概要
 
Hadoop conference 2013winter_for_slideshare
Hadoop conference 2013winter_for_slideshareHadoop conference 2013winter_for_slideshare
Hadoop conference 2013winter_for_slideshare
 
2012 02-02 mixi engineer's seminor #3
2012 02-02  mixi engineer's seminor #32012 02-02  mixi engineer's seminor #3
2012 02-02 mixi engineer's seminor #3
 

2016-02-08 Spark MLlib Now and Beyond@Spark Conference Japan 2016

  • 1. Spark MLlib Now and Beyond 株式会社リクルートテクノロジーズ アドバンスドテクノロジーラボ 石川有
  • 2. 発表のねらい • エンジニアの方: • MLlib で機械学習アプリケーションが簡単に構築できることを知って いただく • データ分析の方: • Spark への移行はそれほど難しくないことを知っていただく 2
  • 3. アジェンダ • これまでの MLlib • DataFrame API • Pipeline API • MLlib 2.0 に向けて • まとめ 3
  • 5. MLlib とは? • Spark に組み込まれている機械学習ライブラリ • spark.mllib パッケージ • spark.ml パッケージ • ミッション • より簡単でスケーラブルに機械学習アプリケーションを構築 • MLlib のコントリビュータ • 個人:220+, 組織:70+ • 豊富な機会学習アルゴリズムやユーティリティ • Spark Streaming や Spark SQL とシームレスに統合可能 5
  • 6. spark.mlパケージ • DataFrame を利用した機械学習パイプラインのためのハイレベル API を提供 • Spark 1.6 では spark.mllib より spark.ml の利用を推奨 • Python の scikit-learn ライブラリの API 設計に影響され開発 • API design for machine learning software: experiences from the scikit-learn project , Lars Buitinck et al. 6 // モデルの学習 val model = algo.fit(trainingDataFrame) // 学習したモデルで予測 model.transform(testDataFrame)
  • 7. SparkとMLlibの簡単な歴史 7 RDD DataFrame Dataset spark.mllib spark.ml Pipeline API 1.2 1.3 1.60.8 2.0 Dataset 向けの全く新しい パッケージは作らない予定
  • 8. MLlib-specific Contribution Guidelines • Be widely known • Be used and accepted • academic citations and concrete use cases can help justify this • Be highly scalable • Be well documented • Have APIs consistent with other algorithms in MLlib that accomplish the same thing • Come with a reasonable expectation of developer support. 8 [https://cwiki.apache.org/confluence/display/SPARK/Contributing+to+Spark]
  • 10. アジェンダ • これまでの MLlib • DataFrame API • Pipeline API • MLlib 2.0 に向けて • まとめ 10
  • 11. DataFrame API 11 age prefecture name 34 Tokyo **** 41 Osaka **** 27 Saitama **** 24 Chiba **** // 都道府県ごとのユーザの平均年齢を計算 data.groupBy(“prefecture”).agg(ave(“age”)) // 年齢 25 歳以上のユーザ数 data.filter(“age >= 25”).count() // SQL でも記述できる sqlContext.sql(“select age from user_table”) データ分析でよく使われる機能を DSL として提供 より少ないコード量で可読性高く記述できる API 設計は Pandas に影響を受けている user_table
  • 13. DataFrame API の豊富なビルトイン関数 • 数学関数,文字列関数,日付関数など • ユーザ定義関数も利用可能 13
  • 14. Catalystによる処理の最適化 14 cited by: Spark Summit EU 2015: Spark DataFrames: Simple and Fast Analysis of Structured Data DataFrame API を利用すれば 少ないコードでより高速に処理することができる
  • 15. アジェンダ • これまでの MLlib • DataFrame API • Pipeline API • MLlib 2.0 に向けて • まとめ 15
  • 17. サンプルタスク • レビュー (review) のテキストから評価 (rating) を予測 17 review Model rating String Int
  • 18. Spark ML Pipeline API val tokenizer = new Tokenizer() .setInputCol("review") .setOutputCol(“words") 18 Training Data Hashed Term Logistic Regression Evaluate Tokenizer words i, have, bought, several, of, the,… product, arrived, labeled, as, jumbo, … this, is, a, confection, that, has, … if, you, are, looking, for, the, secret,…
  • 19. Spark ML Pipeline API val tokenizer = new Tokenizer() .setInputCol("review") .setOutputCol(“words") val hashingTF = new HashingTF() .setNumFeatures(1000) .setInputCol(“words”) .setOutputCol("features") 19 Training Data Hashed Term Freq. Logistic Regression Evaluate Tokenizer features (1.0, 2.0, 1.0, 3.0, ….) (2.0, 1.0, 1.0, 2.0, ….) (3.0, 1.0, 2.0, 1.0, …) (1.0, 1.0, 3.0, 2.0, ….)
  • 20. Spark ML Pipeline API val tokenizer = new Tokenizer() .setInputCol("review") .setOutputCol(“words") val hashingTF = new HashingTF() .setNumFeatures(1000) .setInputCol(“words”) .setOutputCol("features") val lr = new LogisticRegression() .setMaxIter(100) .setRegParam(0.01) 20 Training Data Hashed Term Freq. Logistic Regression Evaluate Tokenizer
  • 21. Spark ML Pipeline API val tokenizer = new Tokenizer() .setInputCol("review") .setOutputCol(“words") val hashingTF = new HashingTF() .setNumFeatures(1000) .setInputCol(“words”) .setOutputCol("features") val lr = new LogisticRegression() .setMaxIter(100) .setRegParam(0.01) val pipeline = new Pipeline() .setStages(Array(tokenizer, hashingTF, lr)) val model = pipeline.fit(training) 21 Pipeline Training Data Hashed Term Freq. Logistic Regression Final Model Tokenizer
  • 23. A Little Simple ML Pipeline 23
  • 24. ML Pipelines for Test 24 Pipeline Training Data Hashed Term Freq. Logistic Regression Final Model Tokenizer Pipeline Test Data Hashed Term Freq. Logistic Regression Evaluate Tokenizer
  • 25. Pipeline API for Test val tokenizer = new Tokenizer() .setInputCol("text") .setOutputCol(“words") val hashingTF = new HashingTF() .setNumFeatures(1000) .setInputCol(tokenizer.getOutputCol) .setOutputCol("features") val lr = new LogisticRegression() .setMaxIter(100) .setRegParam(0.01) val pipeline = new Pipeline() .setStages(Array(tokenizer, hashingTF, lr)) val model = pipeline.fit(training) model.transform(test) 25 Pipeline Test Data Hashed Term Freq. Logistic Regression Evaluate Tokenizer
  • 27. 実際の ML Pipeline は複雑 27 Data Image! Parser Normalizer Convolver sqrt,mean Zipper Linear Solver Symmetric! Rectifier ident,abs ident,mean Global Pooler Patch! Extractor Patch Whitener KMeans! Clusterer Feature Extractor Label! Extractor Linear! Mapper Model Test! Data Label! Extractor Feature Extractor Test Error Error! Computer No Hyperparameters! A few Hyperparameters! Lotsa Hyperparameters
  • 28. パラメータチューニング 28 Hashed Term Freq. Logistic Regression Evaluate Tokenizer hashingTF.numFeatures {10, 20, 40} lr.regParam {0.01, 0.1, 0.5} Pipeline
  • 30. Practical Spark ML Pipeline API val paramGrid = new ParamGridBuilder() .addGrid(hashingTF.numFeatures, Array(10, 20, 40)) .addGrid(lr.regParam, Array(0.01, 0.1, 0.5)) .build() 30
  • 31. Practical Spark ML Pipeline API val paramGrid = new ParamGridBuilder() .addGrid(hashingTF.numFeatures, Array(10, 20, 40)) .addGrid(lr.regParam, Array(0.01, 0.1, 0.5)) .build() val cv = new CrossValidator() .setNumFolds(3) .setEstimator(pipeline) .setEstimatorParamMaps(paramGrid) .setEvaluator(new BinaryClassificationEvaluator) val cvModel = cv.fit(trainingDataset) cvModel.transform(testDataset) 31 Parameter Tuning も Cross-Validation も API が用意されているので複雑な PIpeline も簡単に定義
  • 32. 訓練した Pipeline や学習モデルの永続化を Spark 1.6 でサポート 32 Pipeline Training Data Hashed Term Freq. Logistic Regression Tokenizer save Model Load Model Evaluate 訓練済みモデルを保存することで 再構築の必要がなく再利用が簡単
  • 33. 機械学習モデルや Pipeline が永続化できるメリット 33 データ分析者 エンジニア Model プロダクト Python で永続化 Scala で読み込んでデプロイ 言語インタフェースをまたいだ利用が可能 Spark Streaming 上が学習したモデルを利用することもできる 学習したモデルのバージョン管理も簡単 Model
  • 34. アジェンダ • これまでの MLlib • DataFrame API • Pipeline API • MLlib 2.0 に向けて • まとめ 34
  • 35. Spark MLlib 2.0 Roadmap • Extended support for GLM model families and link functions • Improve GLM scalability • Tree partition by features • Locality sensitive hashing (LSH) • Deep learning: RBM/CNN • Improved pipeline API • Pipeline persistence • Model serving • Better SparkR coverage • Project Tungsten integration • Reorganize user guide 35
  • 36. Pipeline 永続化の課題 36 Pipeline Hashed Term Freq. Random Forest Tokenizer 永続化未対応 save Model X Pipeline 中のひとつでも永続化できなければ, Pipeline 全体を永続化できない
  • 37. Spark 1.6 時点で永続化未対応のアルゴリズム • Classification • DecisionTreeClassifier • GBTClassifier • MultilayerPerceptronClassifier • OneVsRest • RandomForestClassifier • Regression • DecisionTreeRegressor • GBTRegressor • RandomForestRegressor 37
  • 38. SparkR の MLlib 対応 • Spark 1.6 の時点で SparkR がサポートしている機械学習アルゴ リズムは GLM のみ • k-means や survival analysis などの対応を行っていく 38 PySpark に比べると SparkR の MLlib 対応が遅れている
  • 39. アジェンダ • これまでの MLlib • DataFrame API • Pipeline API • MLlib 2.0 に向けて • まとめ 39
  • 40. まとめ • エンジニア向け: • Spark の機械学習ライブラリ MLlibで,プロダクションでの機械学習を簡単にスケー ラブルに実行 • データ分析者向け: • spark.ml のAPI設計は scikit-learn に影響を受けているので,scikit-learn ユーザに とっては学習コストが低い • DataFrame API は pandas に影響を受けている • Pipeline API を利用することで複雑化する ML Pipeline の管理が簡単 • 機械学習モデルや Pipeline の永続化により,言語インターフェースやコンポーネントを またいだ利用が簡単 • Pipeline API は発展途上なのでパフォーマンスや永続化対応を進めていく必要あり • SparkR の開発は 2.0 以降に期待 40 MLlib は実践を意識したスケーラブル機械学習アプリケーションを より簡単に構築できることを目指している