26
© 2016 IBM Corporation Apache Spark DeepLearning について Tanaka Y.P 2017-3-21

Apache SparkとDeepLearningについてアプリケーション開発者がBluemix上に構築した、特定 顧客セグメント向けのクーポンを表示するWebアプリ

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Apache SparkとDeepLearningについてアプリケーション開発者がBluemix上に構築した、特定 顧客セグメント向けのクーポンを表示するWebアプリ

© 2016 IBM Corporation

Apache SparkとDeepLearningについて

Tanaka Y.P2017-3-21

Page 2: Apache SparkとDeepLearningについてアプリケーション開発者がBluemix上に構築した、特定 顧客セグメント向けのクーポンを表示するWebアプリ

© 2016 IBM Corporation2

自己紹介

田中裕一(yuichi tanaka)

主にアーキテクチャとサーバーサイドプログラムを担当

することが多い。Hadoop/Spark周りをよく触ります。

Node.js、Python、最近はSpark周りの仕事でScalaを書く

ことが多い気がします。

休日はOSS周りで遊んだり。

詳解 Apache Spark

Page 3: Apache SparkとDeepLearningについてアプリケーション開発者がBluemix上に構築した、特定 顧客セグメント向けのクーポンを表示するWebアプリ

© 2016 IBM Corporation3

自己紹介

Page 4: Apache SparkとDeepLearningについてアプリケーション開発者がBluemix上に構築した、特定 顧客セグメント向けのクーポンを表示するWebアプリ

© 2016 IBM Corporation4

アジェンダ

• Apache Sparkのおさらい

• 改めてSparkとはどんなフレームワークなのか?

• Sparkはどのように動くのか?

• SparkでMachiLearning

• 従来の課題は何か、Sparkがなぜマッチするのか

• DeepLearningのおさらい

• SparkでDeepLearningはどうか?

• 既存のDeepLearningFrameworkの問題はどこにあったのか

• DeepLearning4J on Sparkはどう動いているのか

• TensorflowOnSparkはどう動いているのか

Page 5: Apache SparkとDeepLearningについてアプリケーション開発者がBluemix上に構築した、特定 顧客セグメント向けのクーポンを表示するWebアプリ

© 2016 IBM Corporation5

Sparkとは

従来Hadoopでは難しかったBigDataにおけるアドホック分析やニアリアルタイム処理を実現するためのInMemory分散並列処理フレームワーク。

• HDFSを筆頭にCassandraなど分散ストレージのデータと相性が良い• YARN,Mesos,Standaloneの3種類の分散処理基盤の上で動作• SparkSQL,Streaming,MLlib,GraphXといった処理の拡張を持つ

Page 6: Apache SparkとDeepLearningについてアプリケーション開発者がBluemix上に構築した、特定 顧客セグメント向けのクーポンを表示するWebアプリ

© 2016 IBM Corporation6

Sparkはどう動くのか?SparkとはRDDとDAGをコアコンセプトとして設計された分散並列処理フレームワーク

Driver Program

Worker Worker Worker

ProgramProgramProgram

DataDataData

Page 7: Apache SparkとDeepLearningについてアプリケーション開発者がBluemix上に構築した、特定 顧客セグメント向けのクーポンを表示するWebアプリ

© 2016 IBM Corporation7

Driver Program

Worker Worker Worker

ProgramProgramProgramDataDataData

Sparkはどう動くのか?SparkとはRDDとDAGをコアコンセプトとして設計された分散並列処理フレームワーク

Page 8: Apache SparkとDeepLearningについてアプリケーション開発者がBluemix上に構築した、特定 顧客セグメント向けのクーポンを表示するWebアプリ

© 2016 IBM Corporation8

Driver Program

Worker Worker Worker

ProgramProgramProgramDataDataData

output output output

Sparkはどう動くのか?SparkとはRDDとDAGをコアコンセプトとして設計された分散並列処理フレームワーク

Page 9: Apache SparkとDeepLearningについてアプリケーション開発者がBluemix上に構築した、特定 顧客セグメント向けのクーポンを表示するWebアプリ

© 2016 IBM Corporation9

WorkerNode

WorkerNode

WorkerNode

Partition0

Partition3

Partition1

Partition2

6,tanaka,532

1,tanaka,1002,tanaka,300

3,tsuchiya,504,kaijima,2000

5,tsuchiya,1320

Partition0

Partition3

(tanaka,100)(tanaka,300)

(tanaka,532)

Partition1(tsuchiya,50)(kaijima,2000)

Partition2(tsuchiya,1320)

Partition0(tanaka,932)

Partition2(kaijima,2000)

Partition1(tsuchiya,1370)

Stage0 Stage1

task0

task1

task2

task3

task4

task5

task6

Sparkはどう動くのか?

Page 10: Apache SparkとDeepLearningについてアプリケーション開発者がBluemix上に構築した、特定 顧客セグメント向けのクーポンを表示するWebアプリ

© 2016 IBM Corporation10

SparkでMachineLearning

• MLlibは大きく2つの実装に分かれる• spark.mllib• spark.ml

• どちらを使えば良いか?• spark.mlを使うこと!• spark.mllibは2系でメンテモードになりました。

• 今後新しい機能は追加されません。タブン• (予定では3.0でremoveされる)

Page 11: Apache SparkとDeepLearningについてアプリケーション開発者がBluemix上に構築した、特定 顧客セグメント向けのクーポンを表示するWebアプリ

© 2016 IBM Corporation11

SparkでMachineLearning

• そもそもMachineLearningとは• データから新たな価値を見出すための手法の一つ

• MachineLearningでは前処理が重要• 前処理8割といわれる程、データサイエンスの占める作業のうち、大部分がこの作業

• 前処理の例• フィールドのコード化(性別変換・カテゴリ変換)• ID変換(Join,CookieSync,ジオコーディング)• 集計(GroupBy,Sum,Max,Min)• 形態素解析系処理(構文解析、分かち書き、ストップワード)• 名寄せ(表記ゆれ)• クレンジング(無効値処理、欠損値補完、外れ値補正)• 画像系処理(特徴抽出、スライス、サイズ変換、グレースケール)

• 背景データは分析されることを前提としていない。こう言った配慮は事業において負荷となる

Page 12: Apache SparkとDeepLearningについてアプリケーション開発者がBluemix上に構築した、特定 顧客セグメント向けのクーポンを表示するWebアプリ

© 2016 IBM Corporation12

HDFS

従来の課題は何か、Sparkがなぜマッチするのか• こうした多様な前処理は従来のHadoop Ecosystemでの実現は難しかった

CSV

ETL

中間

DB

Table

中間

MLETL

中間 モデル

APP

Memory

CSV

ETL

DFDF

Table

DF

MLETL

DF モデル

Streaming

Page 13: Apache SparkとDeepLearningについてアプリケーション開発者がBluemix上に構築した、特定 顧客セグメント向けのクーポンを表示するWebアプリ

© 2016 IBM Corporation13

DeepLearningとは

• 機会学習の一つであるNNの層を重ね高精度な予測・分類処理を行うための手法• 色々な関数の層を重ねて精度を向上させる

• 画像識別の分野で精度が高くて有名(ResNet/GoogLeNet等)

例)VGG16

Page 14: Apache SparkとDeepLearningについてアプリケーション開発者がBluemix上に構築した、特定 顧客セグメント向けのクーポンを表示するWebアプリ

© 2016 IBM Corporation14

さっきのを簡略に書き直すと

Data Convolution

Relu Affine Relu SoftmaxOut

・・・max

pooling

VGG16の簡略図

Page 15: Apache SparkとDeepLearningについてアプリケーション開発者がBluemix上に構築した、特定 顧客セグメント向けのクーポンを表示するWebアプリ

© 2016 IBM Corporation15

背景

� 人間の脳の構造を模してやれば上手く識別できるのは?

ニューロン情報処理モデル

例)単純パーセプトロン

I

I

I

W

W

W

S O

Input1

Input2

Input3

output

参考)単純パーセプトロンの基本のき

Weight

Page 16: Apache SparkとDeepLearningについてアプリケーション開発者がBluemix上に構築した、特定 顧客セグメント向けのクーポンを表示するWebアプリ

© 2016 IBM Corporation16

背景

� 層をふやしてやれば上手く識別できるのは?

例)FF-NN

I

I

I

Input1

Input2

Input3

output

O

O

Page 17: Apache SparkとDeepLearningについてアプリケーション開発者がBluemix上に構築した、特定 顧客セグメント向けのクーポンを表示するWebアプリ

© 2016 IBM Corporation17

DeepLearning

• 階層をより深くし、ForwardとBackwardによりパラメータ設定まで自動化

・・・

Forward Backward

・・・

・・・

・・・

・・・

計算処理Affine変換

活性化関数Relu関数

出力関数Softmax関数

OutSoftmax

Page 18: Apache SparkとDeepLearningについてアプリケーション開発者がBluemix上に構築した、特定 顧客セグメント向けのクーポンを表示するWebアプリ

© 2016 IBM Corporation18

SparkでDeepLearningはどうか?

• MLlibだけではDeepLearningは難しい(多層パーセプトロンはある)• Spark v2.1でも難しい

• 16年に各DLフレームワークがSparkに対応• DL4J on Spark : https://deeplearning4j.org/• Caffe on Spark : https://github.com/yahoo/CaffeOnSpark• TensorSpark(Tensorflow on Spark) : https://github.com/adatao/tensorspark• Distributed Keras : https://github.com/cerndb/dist-keras• Sparkling Water : https://github.com/h2oai/sparkling-water/tree/rel-2.0• TensorFlowonSpark : https://github.com/yahoo/TensorFlowOnSpark

その他にも雨後の筍のように。

※Web上でも様々な記事が上がっていますが、すでにメンテされてないリポジトリもあるので選定する際は注意が必要

Page 19: Apache SparkとDeepLearningについてアプリケーション開発者がBluemix上に構築した、特定 顧客セグメント向けのクーポンを表示するWebアプリ

© 2016 IBM Corporation19

既存のDeepLearningFrameworkの課題

• 機械学習の基盤とDeepLearningの基盤を別に作る必要がある• pipelineを構築するために別のプログラムを書く必要がある

参考:https://github.com/yahoo/TensorFlowOnSpark

Hadoop/Spark Cluster DeepLearning Cluster

1.前処理3.モデルの適用

2.DL学習・テスト

Page 20: Apache SparkとDeepLearningについてアプリケーション開発者がBluemix上に構築した、特定 顧客セグメント向けのクーポンを表示するWebアプリ

© 2016 IBM Corporation20

昨今のDeepLearningFrameworkの動き

HDFS / その他Distributed FileSystem

Spark

GraphXSparkSQL/Dat

aFrameMLlibMLlib

Page 21: Apache SparkとDeepLearningについてアプリケーション開発者がBluemix上に構築した、特定 顧客セグメント向けのクーポンを表示するWebアプリ

© 2016 IBM Corporation21

DeepLearning4Jを例にSpark上でのDLを見てみる

Driver

Worker

Worker

Worker

Worker

Worker

Data d1 d2 ・・

1−1 1−2 1−3 1−4 1−5

分割

パラメータ配布

分割

モーメンタムrmspropadagradなども

Parameter Average

再度Diverに戻し、次のデータを同様に処理する

データを設定に基づいて分割

Page 22: Apache SparkとDeepLearningについてアプリケーション開発者がBluemix上に構築した、特定 顧客セグメント向けのクーポンを表示するWebアプリ

© 2016 IBM Corporation22

TensorflowOnSpark(TFoS)

参考:https://github.com/yahoo/TensorFlowOnSpark

Page 23: Apache SparkとDeepLearningについてアプリケーション開発者がBluemix上に構築した、特定 顧客セグメント向けのクーポンを表示するWebアプリ

© 2016 IBM Corporation23

Spark + DeepLearningのまとめ

• MLlibだけでなく前処理やデータのつなぎの部分でもSparkは重要

• DeepLearningを分散処理するための基盤としてSparkへの対応が進んでる

• 深層学習だけでなく、「データサイエンス基盤」としてもSparkは重要

• その他の機械学習の機能もSparkの対応が始められている

• 高速にDeepLearningを分散処理させるためにRDMAなどの対応もされ始めている

一家に一台のSparkの時代が来るか?

Page 24: Apache SparkとDeepLearningについてアプリケーション開発者がBluemix上に構築した、特定 顧客セグメント向けのクーポンを表示するWebアプリ

© 2016 IBM Corporation24

Data Science Experience

DataScienceExperienceはIBMが提供するCloud上のDataScientist,DataEngineerに向けたPlatform

Page 25: Apache SparkとDeepLearningについてアプリケーション開発者がBluemix上に構築した、特定 顧客セグメント向けのクーポンを表示するWebアプリ

© 2016 IBM Corporation25

カタログ機能によりキーワードを入れて必要なデータを検索

同じデータアセットをビジネス・アナリストが⾃然⾔語の入⼒で探索・分析

データ・サイエンティストが分析モデルを作成、顧客ベースをセグメンテーション

アプリケーション開発者がBluemix上に構築した、特定顧客セグメント向けのクーポンを表示するWebアプリ

データ・エンジニア データ・サイエンティスト

ビジネス・アナリスト アプリケーション開発者

Watson Data Platform の要素技術

Data ConnectData Science Experience (DSX)IBM Machine Learning

Watson Analytics Bluemix

25

Page 26: Apache SparkとDeepLearningについてアプリケーション開発者がBluemix上に構築した、特定 顧客セグメント向けのクーポンを表示するWebアプリ

© 2016 IBM Corporation26

コメントセル

コードセル

グラフ

データベースとオブジェクト・ストレージ

コントロール

プロジェクト・コミュニティー機能