SlideShare a Scribd company logo
1 of 21
© 2016 IBM Corporation
Spark + DeepLearning4J の特長と最新動
向(仮)
Tanaka Y.P
2017-3-21
© 2016 IBM Corporation2
自己紹介
田中裕一(yuichi tanaka)
主にアーキテクチャとサーバーサイドプログラムを担当
することが多い。Hadoop/Spark周りをよく触ります。
Node.js、Python、最近はSpark周りの仕事でScalaを書く
ことが多い気がします。
休日はOSS周りで遊んだり。
詳解 Apache Spark
© 2016 IBM Corporation3
アジェンダ
• Apache Sparkのおさらい
• DeepLearningのおさらい
• SparkでDeepLearningはどうか?
• 既存のDeepLearningFrameworkの問題はどこにあったのか
• DeepLearning4J on Sparkはどう動いているのか
© 2016 IBM Corporation4
Sparkとは
従来Hadoopでは難しかったBigDataにおける
アドホック分析やニアリアルタイム処理を実現するための
InMemory分散並列処理フレームワーク。
• HDFSを筆頭にCassandraなど分散ストレージのデータと相性が良い
• YARN,Mesos,Standaloneの3種類の分散処理基盤の上で動作
• SparkSQL,Streaming,MLlib,GraphXといった処理の拡張を持つ
© 2016 IBM Corporation5
Sparkはどう動くのか?
Sparkとは
RDDとDAGをコアコンセプトとして設計された分散並列処理フレームワーク
Driver Program
Worker Worker Worker
ProgramProgramProgram
DataDataData
© 2016 IBM Corporation6
Driver Program
Worker Worker Worker
ProgramProgramProgram
DataDataData
Sparkはどう動くのか?
Sparkとは
RDDとDAGをコアコンセプトとして設計された分散並列処理フレームワーク
© 2016 IBM Corporation7
Driver Program
Worker Worker Worker
ProgramProgramProgram
DataDataData
output output output
Sparkはどう動くのか?
Sparkとは
RDDとDAGをコアコンセプトとして設計された分散並列処理フレームワーク
© 2016 IBM Corporation8
SparkでMachineLearning
• MLlibは大きく2つの実装に分かれる
• spark.mllib
• spark.ml
• どちらを使えば良いか?
• spark.mlを使うこと!
• spark.mllibは2系でメンテモードになりました。
• 今後新しい機能は追加されません。タブン
• (予定では3.0でremoveされる)
© 2016 IBM Corporation9
SparkでMachineLearning
• そもそもMachineLearningとは
• データから新たな価値を見出すための手法の一つ
• MachineLearningでは前処理が重要
• 前処理8割といわれる程、データサイエンスの占める作業のうち、大部分がこの作業
• 前処理の例
• フィールドのコード化(性別変換・カテゴリ変換)
• ID変換(Join,CookieSync,ジオコーディング)
• 集計(GroupBy,Sum,Max,Min)
• 形態素解析系処理(構文解析、分かち書き、ストップワード)
• 名寄せ(表記ゆれ)
• クレンジング(無効値処理、欠損値補完、外れ値補正)
• 画像系処理(特徴抽出、スライス、サイズ変換、グレースケール)
• 背景
データは分析されることを前提としていない。こう言った配慮は事業において負荷となる
© 2016 IBM Corporation10
HDFS
従来の課題は何か、Sparkがなぜマッチするのか
• こうした多様な前処理は従来のHadoop Ecosystemでの実現は難しかった
CSV
ETL
中間
DB
Table
中間
MLETL
中間 モデル
APP
Memory
CSV
ETL
DF
DF
Table
DF
MLETL
DF モデル
Streaming
© 2016 IBM Corporation11
DeepLearningとは
• 機会学習の一つであるNNの層を重ね高精度な予測・分類処理を行うための手法
• 色々な関数の層を重ねて精度を向上させる
• 画像識別の分野で精度が高くて有名(ResNet/GoogLeNet等)
例)VGG16
© 2016 IBM Corporation12
既存のDeepLearningFrameworkの課題
• 機械学習の基盤とDeepLearningの基盤を別に作る必要がある
• pipelineを構築するために別のプログラムを書く必要がある
参考:
https://github.com/yahoo/TensorFlowOnSpark
Hadoop/Spark Cluster DeepLearning Cluster
1.前処理
3.モデルの適用
2.DL学習・テスト
© 2016 IBM Corporation13
SparkでDeepLearningはどうか?
• MLlibだけではDeepLearningは難しい(多層パーセプトロンはある)
• Spark v2.1でも難しい
• 16年、17年に各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上でも様々な記事が上がっていますが、すでにメンテされてないリポジトリも
あるので選定する際は注意が必要
© 2016 IBM Corporation14
DeepLearning4JはJava,Scalaから利用可能な分散処理型のDeepLearningのライブラリ
• 今現在stable v0.8
Hadoop/Sparkの上で動作可能 ー> 既存のClusterリソースが利用可能
• CPU,GPUが利用可能
• Keras被せればPythonからも利用可能
© 2016 IBM Corporation15
DeepLearning4Jを例にSpark上でどう動くのか
Driver
Worker
Worker
Worker
Worker
Worker
Data d1 d2 ・・
1−1 1−2 1−3 1−4 1−5
分割
パラ
メータ
配布
分割
モーメンタム
rmsprop
adagrad
なども
Parameter
Average
再度Diverに戻し、
次のデータを同様に処理する
データを設定に基づいて分割
© 2016 IBM Corporation16
DeepLearning4Jの表現
Helperの作成と、学習率などの設定
© 2016 IBM Corporation17
DeepLearning4Jの表現
レイヤの設定
© 2016 IBM Corporation18
DeepLearning4Jの表現
Masterの設定
学習(fit)
© 2016 IBM Corporation19
DeepLearning4Jの表現
評価
© 2016 IBM Corporation20
DeepLearning4Jは銀の弾か?
• GPUは使えるが、YARNにGPUのリソース管理機能がない
• 複数のDLのtrainを流す際に留意する必要がある(リソースの取り合い)
• 高価なGPUをCluster配下の全てのサーバーに配備するのが基本
• CPU/GPUの混在が難しい/できない
• 表現から見るように結構Javaで表現すると記述量が多い
• KerasをDL4Jにかぶせた方が楽なのは間違いない
• あれ?でもそれならPythonで書いた方が・・・・
• 強化学習系はサポートしてない
• RL4J使ってね
© 2016 IBM Corporation21
まとめ
• DL4Jを使うことで既存のHadoop/Spark資産を利用したDL環境が構築可能
• 新規で始める場合も他の学習器の組み合わせ・前処理など考えるとSparkは良い選択肢
• BigDataの一括前処理(コード変換や欠損値補完)
• DeepLearning以外の学習器の併用
• PythonやRでのデータサイエンティストのコードをJava or Scalaなどの
Production環境へのデプロイでDL4Jは良いかも

More Related Content

What's hot

SparkとJupyterNotebookを使った分析処理 [Html5 conference]
SparkとJupyterNotebookを使った分析処理 [Html5 conference]SparkとJupyterNotebookを使った分析処理 [Html5 conference]
SparkとJupyterNotebookを使った分析処理 [Html5 conference]Tanaka Yuichi
 
Pysparkで始めるデータ分析
Pysparkで始めるデータ分析Pysparkで始めるデータ分析
Pysparkで始めるデータ分析Tanaka Yuichi
 
ビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streamingビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streamingchibochibo
 
SparkやBigQueryなどを用いた モバイルゲーム分析環境
SparkやBigQueryなどを用いたモバイルゲーム分析環境SparkやBigQueryなどを用いたモバイルゲーム分析環境
SparkやBigQueryなどを用いた モバイルゲーム分析環境yuichi_komatsu
 
Apache Sparkについて
Apache SparkについてApache Sparkについて
Apache SparkについてBrainPad Inc.
 
PySpark Intro Part.2 with SQL Graph
PySpark Intro Part.2 with SQL GraphPySpark Intro Part.2 with SQL Graph
PySpark Intro Part.2 with SQL GraphOshitari_kochi
 
基幹業務もHadoop(EMR)で!!のその後
基幹業務もHadoop(EMR)で!!のその後基幹業務もHadoop(EMR)で!!のその後
基幹業務もHadoop(EMR)で!!のその後Keigo Suda
 
Apache drillを業務利用してみる(までの道のり)
Apache drillを業務利用してみる(までの道のり)Apache drillを業務利用してみる(までの道のり)
Apache drillを業務利用してみる(までの道のり)Keigo Suda
 
1000台規模のHadoopクラスタをHive/Tezアプリケーションにあわせてパフォーマンスチューニングした話
1000台規模のHadoopクラスタをHive/Tezアプリケーションにあわせてパフォーマンスチューニングした話1000台規模のHadoopクラスタをHive/Tezアプリケーションにあわせてパフォーマンスチューニングした話
1000台規模のHadoopクラスタをHive/Tezアプリケーションにあわせてパフォーマンスチューニングした話Yahoo!デベロッパーネットワーク
 
Kafkaを活用するためのストリーム処理の基本
Kafkaを活用するためのストリーム処理の基本Kafkaを活用するためのストリーム処理の基本
Kafkaを活用するためのストリーム処理の基本Sotaro Kimura
 
本当にあったApache Spark障害の話
本当にあったApache Spark障害の話本当にあったApache Spark障害の話
本当にあったApache Spark障害の話x1 ichi
 
Spark Streamingで作る、つぶやきビッグデータのクローン(Hadoop Spark Conference Japan 2016版)
Spark Streamingで作る、つぶやきビッグデータのクローン(Hadoop Spark Conference Japan 2016版)Spark Streamingで作る、つぶやきビッグデータのクローン(Hadoop Spark Conference Japan 2016版)
Spark Streamingで作る、つぶやきビッグデータのクローン(Hadoop Spark Conference Japan 2016版)Junichi Noda
 
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
 
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006Cloudera Japan
 
Spark勉強会_ibm_20151014-公開版
Spark勉強会_ibm_20151014-公開版Spark勉強会_ibm_20151014-公開版
Spark勉強会_ibm_20151014-公開版Atsushi Tsuchiya
 
Spark Summit 2015 参加報告
Spark Summit 2015 参加報告Spark Summit 2015 参加報告
Spark Summit 2015 参加報告Katsunori Kanda
 
Apache cassandraと apache sparkで作るデータ解析プラットフォーム
Apache cassandraと apache sparkで作るデータ解析プラットフォームApache cassandraと apache sparkで作るデータ解析プラットフォーム
Apache cassandraと apache sparkで作るデータ解析プラットフォームKazutaka Tomita
 

What's hot (20)

SparkとJupyterNotebookを使った分析処理 [Html5 conference]
SparkとJupyterNotebookを使った分析処理 [Html5 conference]SparkとJupyterNotebookを使った分析処理 [Html5 conference]
SparkとJupyterNotebookを使った分析処理 [Html5 conference]
 
Pysparkで始めるデータ分析
Pysparkで始めるデータ分析Pysparkで始めるデータ分析
Pysparkで始めるデータ分析
 
ビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streamingビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streaming
 
Apache NiFi の紹介 #streamctjp
Apache NiFi の紹介  #streamctjpApache NiFi の紹介  #streamctjp
Apache NiFi の紹介 #streamctjp
 
SparkやBigQueryなどを用いた モバイルゲーム分析環境
SparkやBigQueryなどを用いたモバイルゲーム分析環境SparkやBigQueryなどを用いたモバイルゲーム分析環境
SparkやBigQueryなどを用いた モバイルゲーム分析環境
 
Apache Sparkについて
Apache SparkについてApache Sparkについて
Apache Sparkについて
 
PySpark Intro Part.2 with SQL Graph
PySpark Intro Part.2 with SQL GraphPySpark Intro Part.2 with SQL Graph
PySpark Intro Part.2 with SQL Graph
 
基幹業務もHadoop(EMR)で!!のその後
基幹業務もHadoop(EMR)で!!のその後基幹業務もHadoop(EMR)で!!のその後
基幹業務もHadoop(EMR)で!!のその後
 
Apache drillを業務利用してみる(までの道のり)
Apache drillを業務利用してみる(までの道のり)Apache drillを業務利用してみる(までの道のり)
Apache drillを業務利用してみる(までの道のり)
 
1000台規模のHadoopクラスタをHive/Tezアプリケーションにあわせてパフォーマンスチューニングした話
1000台規模のHadoopクラスタをHive/Tezアプリケーションにあわせてパフォーマンスチューニングした話1000台規模のHadoopクラスタをHive/Tezアプリケーションにあわせてパフォーマンスチューニングした話
1000台規模のHadoopクラスタをHive/Tezアプリケーションにあわせてパフォーマンスチューニングした話
 
ヤフー発のメッセージキュー「Pulsar」のご紹介
ヤフー発のメッセージキュー「Pulsar」のご紹介ヤフー発のメッセージキュー「Pulsar」のご紹介
ヤフー発のメッセージキュー「Pulsar」のご紹介
 
Kafkaを活用するためのストリーム処理の基本
Kafkaを活用するためのストリーム処理の基本Kafkaを活用するためのストリーム処理の基本
Kafkaを活用するためのストリーム処理の基本
 
本当にあったApache Spark障害の話
本当にあったApache Spark障害の話本当にあったApache Spark障害の話
本当にあったApache Spark障害の話
 
Spark Streamingで作る、つぶやきビッグデータのクローン(Hadoop Spark Conference Japan 2016版)
Spark Streamingで作る、つぶやきビッグデータのクローン(Hadoop Spark Conference Japan 2016版)Spark Streamingで作る、つぶやきビッグデータのクローン(Hadoop Spark Conference Japan 2016版)
Spark Streamingで作る、つぶやきビッグデータのクローン(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 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)
 
金融機関でのHive/Presto事例紹介
金融機関でのHive/Presto事例紹介金融機関でのHive/Presto事例紹介
金融機関でのHive/Presto事例紹介
 
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
 
Spark勉強会_ibm_20151014-公開版
Spark勉強会_ibm_20151014-公開版Spark勉強会_ibm_20151014-公開版
Spark勉強会_ibm_20151014-公開版
 
Spark Summit 2015 参加報告
Spark Summit 2015 参加報告Spark Summit 2015 参加報告
Spark Summit 2015 参加報告
 
Apache cassandraと apache sparkで作るデータ解析プラットフォーム
Apache cassandraと apache sparkで作るデータ解析プラットフォームApache cassandraと apache sparkで作るデータ解析プラットフォーム
Apache cassandraと apache sparkで作るデータ解析プラットフォーム
 

Viewers also liked

2017spring jjug ccc_f2
2017spring jjug ccc_f22017spring jjug ccc_f2
2017spring jjug ccc_f2Kazuhiro Wada
 
VMの歩む道。 Dalvik、ART、そしてJava VM
VMの歩む道。 Dalvik、ART、そしてJava VMVMの歩む道。 Dalvik、ART、そしてJava VM
VMの歩む道。 Dalvik、ART、そしてJava VMyy yank
 
Arachne Unweaved (JP)
Arachne Unweaved (JP)Arachne Unweaved (JP)
Arachne Unweaved (JP)Ikuru Kanuma
 
Kotlin is charming; The reasons Java engineers should start Kotlin.
Kotlin is charming; The reasons Java engineers should start Kotlin.Kotlin is charming; The reasons Java engineers should start Kotlin.
Kotlin is charming; The reasons Java engineers should start Kotlin.JustSystems Corporation
 
U-NEXT学生インターン、過激なJavaの学び方と過激な要求
U-NEXT学生インターン、過激なJavaの学び方と過激な要求U-NEXT学生インターン、過激なJavaの学び方と過激な要求
U-NEXT学生インターン、過激なJavaの学び方と過激な要求hajime funaki
 
Jjugccc2017spring-postgres-ccc_m1
Jjugccc2017spring-postgres-ccc_m1Jjugccc2017spring-postgres-ccc_m1
Jjugccc2017spring-postgres-ccc_m1Kosuke Kida
 
Java libraries you can't afford to miss
Java libraries you can't afford to missJava libraries you can't afford to miss
Java libraries you can't afford to missAndres Almiray
 
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
SpotBugs(FindBugs)による 大規模ERPのコード品質改善SpotBugs(FindBugs)による 大規模ERPのコード品質改善
SpotBugs(FindBugs)による 大規模ERPのコード品質改善Works Applications
 
Polyglot on the JVM with Graal (English)
Polyglot on the JVM with Graal (English)Polyglot on the JVM with Graal (English)
Polyglot on the JVM with Graal (English)Logico
 
新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~
新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~
新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~Yoshio Kajikuri
 
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜JustSystems Corporation
 
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めたJJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めたKoichi Sakata
 
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3 データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3 Hiroshi Ito
 
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~Hiroyuki Ohnaka
 
Introduction of Project Jigsaw
Introduction of Project JigsawIntroduction of Project Jigsaw
Introduction of Project JigsawYuichi Sakuraba
 
グラフデータベース入門
グラフデータベース入門グラフデータベース入門
グラフデータベース入門Masaya Dake
 
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8y_taka_23
 
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...なおき きしだ
 

Viewers also liked (20)

2017spring jjug ccc_f2
2017spring jjug ccc_f22017spring jjug ccc_f2
2017spring jjug ccc_f2
 
VMの歩む道。 Dalvik、ART、そしてJava VM
VMの歩む道。 Dalvik、ART、そしてJava VMVMの歩む道。 Dalvik、ART、そしてJava VM
VMの歩む道。 Dalvik、ART、そしてJava VM
 
Arachne Unweaved (JP)
Arachne Unweaved (JP)Arachne Unweaved (JP)
Arachne Unweaved (JP)
 
Kotlin is charming; The reasons Java engineers should start Kotlin.
Kotlin is charming; The reasons Java engineers should start Kotlin.Kotlin is charming; The reasons Java engineers should start Kotlin.
Kotlin is charming; The reasons Java engineers should start Kotlin.
 
U-NEXT学生インターン、過激なJavaの学び方と過激な要求
U-NEXT学生インターン、過激なJavaの学び方と過激な要求U-NEXT学生インターン、過激なJavaの学び方と過激な要求
U-NEXT学生インターン、過激なJavaの学び方と過激な要求
 
Jjugccc2017spring-postgres-ccc_m1
Jjugccc2017spring-postgres-ccc_m1Jjugccc2017spring-postgres-ccc_m1
Jjugccc2017spring-postgres-ccc_m1
 
Java libraries you can't afford to miss
Java libraries you can't afford to missJava libraries you can't afford to miss
Java libraries you can't afford to miss
 
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
SpotBugs(FindBugs)による 大規模ERPのコード品質改善SpotBugs(FindBugs)による 大規模ERPのコード品質改善
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
 
Polyglot on the JVM with Graal (English)
Polyglot on the JVM with Graal (English)Polyglot on the JVM with Graal (English)
Polyglot on the JVM with Graal (English)
 
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
 
新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~
新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~
新卒2年目から始めるOSSのススメ~明日からできるコミットデビュー~
 
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
 
日本Javaグループ2017年定期総会 #jjug
日本Javaグループ2017年定期総会 #jjug 日本Javaグループ2017年定期総会 #jjug
日本Javaグループ2017年定期総会 #jjug
 
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めたJJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
 
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3 データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
 
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
 
Introduction of Project Jigsaw
Introduction of Project JigsawIntroduction of Project Jigsaw
Introduction of Project Jigsaw
 
グラフデータベース入門
グラフデータベース入門グラフデータベース入門
グラフデータベース入門
 
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
 
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
 

Similar to Jjug ccc

20160127三木会 RDB経験者のためのspark
20160127三木会 RDB経験者のためのspark20160127三木会 RDB経験者のためのspark
20160127三木会 RDB経験者のためのsparkRyuji Tamagawa
 
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)NTT DATA OSS Professional Services
 
20161027 hadoop summit Generating Recommendations at Amazon Scale with Apach...
20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apach...20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apach...
20161027 hadoop summit Generating Recommendations at Amazon Scale with Apach...Amazon Web Services Japan
 
Sparkを用いたビッグデータ解析 〜 前編 〜
Sparkを用いたビッグデータ解析 〜 前編 〜Sparkを用いたビッグデータ解析 〜 前編 〜
Sparkを用いたビッグデータ解析 〜 前編 〜x1 ichi
 
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)NTT DATA OSS Professional Services
 
Databricks の始め方
Databricks の始め方Databricks の始め方
Databricks の始め方Ryoma Nagata
 
20190517 Spark+AI Summit2019最新レポート
20190517 Spark+AI Summit2019最新レポート20190517 Spark+AI Summit2019最新レポート
20190517 Spark+AI Summit2019最新レポートRyoma Nagata
 
Apache sparkとapache cassandraで行うテキスト解析
Apache sparkとapache cassandraで行うテキスト解析Apache sparkとapache cassandraで行うテキスト解析
Apache sparkとapache cassandraで行うテキスト解析Kazutaka Tomita
 
Spark Streamingで作る、つぶやきビッグデータのクローン (2015-11.10版)
Spark Streamingで作る、つぶやきビッグデータのクローン (2015-11.10版)Spark Streamingで作る、つぶやきビッグデータのクローン (2015-11.10版)
Spark Streamingで作る、つぶやきビッグデータのクローン (2015-11.10版)Junichi Noda
 
Asakusa Framework 勉強会 2014 夏
Asakusa Framework 勉強会 2014 夏Asakusa Framework 勉強会 2014 夏
Asakusa Framework 勉強会 2014 夏鉄平 土佐
 
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-LINE Corp.
 
ScalaでASICやFPGA用の回路を設計するChisel
ScalaでASICやFPGA用の回路を設計するChiselScalaでASICやFPGA用の回路を設計するChisel
ScalaでASICやFPGA用の回路を設計するChiselKei Nakazawa
 

Similar to Jjug ccc (20)

Big datauniversity
Big datauniversityBig datauniversity
Big datauniversity
 
20160127三木会 RDB経験者のためのspark
20160127三木会 RDB経験者のためのspark20160127三木会 RDB経験者のためのspark
20160127三木会 RDB経験者のためのspark
 
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
 
20161027 hadoop summit Generating Recommendations at Amazon Scale with Apach...
20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apach...20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apach...
20161027 hadoop summit Generating Recommendations at Amazon Scale with Apach...
 
Apache Sparkの紹介
Apache Sparkの紹介Apache Sparkの紹介
Apache Sparkの紹介
 
Sparkを用いたビッグデータ解析 〜 前編 〜
Sparkを用いたビッグデータ解析 〜 前編 〜Sparkを用いたビッグデータ解析 〜 前編 〜
Sparkを用いたビッグデータ解析 〜 前編 〜
 
Apache Spark + Arrow
Apache Spark + ArrowApache Spark + Arrow
Apache Spark + Arrow
 
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
 
Apache Spark 1000 nodes NTT DATA
Apache Spark 1000 nodes NTT DATAApache Spark 1000 nodes NTT DATA
Apache Spark 1000 nodes NTT DATA
 
Databricks の始め方
Databricks の始め方Databricks の始め方
Databricks の始め方
 
20190517 Spark+AI Summit2019最新レポート
20190517 Spark+AI Summit2019最新レポート20190517 Spark+AI Summit2019最新レポート
20190517 Spark+AI Summit2019最新レポート
 
Hadoopとは
HadoopとはHadoopとは
Hadoopとは
 
Apache Spark の紹介(前半:Sparkのキホン)
Apache Spark の紹介(前半:Sparkのキホン)Apache Spark の紹介(前半:Sparkのキホン)
Apache Spark の紹介(前半:Sparkのキホン)
 
Apache sparkとapache cassandraで行うテキスト解析
Apache sparkとapache cassandraで行うテキスト解析Apache sparkとapache cassandraで行うテキスト解析
Apache sparkとapache cassandraで行うテキスト解析
 
Spark Streamingで作る、つぶやきビッグデータのクローン (2015-11.10版)
Spark Streamingで作る、つぶやきビッグデータのクローン (2015-11.10版)Spark Streamingで作る、つぶやきビッグデータのクローン (2015-11.10版)
Spark Streamingで作る、つぶやきビッグデータのクローン (2015-11.10版)
 
What makes Apache Spark?
What makes Apache Spark?What makes Apache Spark?
What makes Apache Spark?
 
Asakusa Framework 勉強会 2014 夏
Asakusa Framework 勉強会 2014 夏Asakusa Framework 勉強会 2014 夏
Asakusa Framework 勉強会 2014 夏
 
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
 
SAIS/SIGMOD参加報告 in SAIS/DWS2018報告会@Yahoo! JAPAN
SAIS/SIGMOD参加報告 in SAIS/DWS2018報告会@Yahoo! JAPANSAIS/SIGMOD参加報告 in SAIS/DWS2018報告会@Yahoo! JAPAN
SAIS/SIGMOD参加報告 in SAIS/DWS2018報告会@Yahoo! JAPAN
 
ScalaでASICやFPGA用の回路を設計するChisel
ScalaでASICやFPGA用の回路を設計するChiselScalaでASICやFPGA用の回路を設計するChisel
ScalaでASICやFPGA用の回路を設計するChisel
 

Jjug ccc

  • 1. © 2016 IBM Corporation Spark + DeepLearning4J の特長と最新動 向(仮) Tanaka Y.P 2017-3-21
  • 2. © 2016 IBM Corporation2 自己紹介 田中裕一(yuichi tanaka) 主にアーキテクチャとサーバーサイドプログラムを担当 することが多い。Hadoop/Spark周りをよく触ります。 Node.js、Python、最近はSpark周りの仕事でScalaを書く ことが多い気がします。 休日はOSS周りで遊んだり。 詳解 Apache Spark
  • 3. © 2016 IBM Corporation3 アジェンダ • Apache Sparkのおさらい • DeepLearningのおさらい • SparkでDeepLearningはどうか? • 既存のDeepLearningFrameworkの問題はどこにあったのか • DeepLearning4J on Sparkはどう動いているのか
  • 4. © 2016 IBM Corporation4 Sparkとは 従来Hadoopでは難しかったBigDataにおける アドホック分析やニアリアルタイム処理を実現するための InMemory分散並列処理フレームワーク。 • HDFSを筆頭にCassandraなど分散ストレージのデータと相性が良い • YARN,Mesos,Standaloneの3種類の分散処理基盤の上で動作 • SparkSQL,Streaming,MLlib,GraphXといった処理の拡張を持つ
  • 5. © 2016 IBM Corporation5 Sparkはどう動くのか? Sparkとは RDDとDAGをコアコンセプトとして設計された分散並列処理フレームワーク Driver Program Worker Worker Worker ProgramProgramProgram DataDataData
  • 6. © 2016 IBM Corporation6 Driver Program Worker Worker Worker ProgramProgramProgram DataDataData Sparkはどう動くのか? Sparkとは RDDとDAGをコアコンセプトとして設計された分散並列処理フレームワーク
  • 7. © 2016 IBM Corporation7 Driver Program Worker Worker Worker ProgramProgramProgram DataDataData output output output Sparkはどう動くのか? Sparkとは RDDとDAGをコアコンセプトとして設計された分散並列処理フレームワーク
  • 8. © 2016 IBM Corporation8 SparkでMachineLearning • MLlibは大きく2つの実装に分かれる • spark.mllib • spark.ml • どちらを使えば良いか? • spark.mlを使うこと! • spark.mllibは2系でメンテモードになりました。 • 今後新しい機能は追加されません。タブン • (予定では3.0でremoveされる)
  • 9. © 2016 IBM Corporation9 SparkでMachineLearning • そもそもMachineLearningとは • データから新たな価値を見出すための手法の一つ • MachineLearningでは前処理が重要 • 前処理8割といわれる程、データサイエンスの占める作業のうち、大部分がこの作業 • 前処理の例 • フィールドのコード化(性別変換・カテゴリ変換) • ID変換(Join,CookieSync,ジオコーディング) • 集計(GroupBy,Sum,Max,Min) • 形態素解析系処理(構文解析、分かち書き、ストップワード) • 名寄せ(表記ゆれ) • クレンジング(無効値処理、欠損値補完、外れ値補正) • 画像系処理(特徴抽出、スライス、サイズ変換、グレースケール) • 背景 データは分析されることを前提としていない。こう言った配慮は事業において負荷となる
  • 10. © 2016 IBM Corporation10 HDFS 従来の課題は何か、Sparkがなぜマッチするのか • こうした多様な前処理は従来のHadoop Ecosystemでの実現は難しかった CSV ETL 中間 DB Table 中間 MLETL 中間 モデル APP Memory CSV ETL DF DF Table DF MLETL DF モデル Streaming
  • 11. © 2016 IBM Corporation11 DeepLearningとは • 機会学習の一つであるNNの層を重ね高精度な予測・分類処理を行うための手法 • 色々な関数の層を重ねて精度を向上させる • 画像識別の分野で精度が高くて有名(ResNet/GoogLeNet等) 例)VGG16
  • 12. © 2016 IBM Corporation12 既存のDeepLearningFrameworkの課題 • 機械学習の基盤とDeepLearningの基盤を別に作る必要がある • pipelineを構築するために別のプログラムを書く必要がある 参考: https://github.com/yahoo/TensorFlowOnSpark Hadoop/Spark Cluster DeepLearning Cluster 1.前処理 3.モデルの適用 2.DL学習・テスト
  • 13. © 2016 IBM Corporation13 SparkでDeepLearningはどうか? • MLlibだけではDeepLearningは難しい(多層パーセプトロンはある) • Spark v2.1でも難しい • 16年、17年に各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上でも様々な記事が上がっていますが、すでにメンテされてないリポジトリも あるので選定する際は注意が必要
  • 14. © 2016 IBM Corporation14 DeepLearning4JはJava,Scalaから利用可能な分散処理型のDeepLearningのライブラリ • 今現在stable v0.8 Hadoop/Sparkの上で動作可能 ー> 既存のClusterリソースが利用可能 • CPU,GPUが利用可能 • Keras被せればPythonからも利用可能
  • 15. © 2016 IBM Corporation15 DeepLearning4Jを例にSpark上でどう動くのか Driver Worker Worker Worker Worker Worker Data d1 d2 ・・ 1−1 1−2 1−3 1−4 1−5 分割 パラ メータ 配布 分割 モーメンタム rmsprop adagrad なども Parameter Average 再度Diverに戻し、 次のデータを同様に処理する データを設定に基づいて分割
  • 16. © 2016 IBM Corporation16 DeepLearning4Jの表現 Helperの作成と、学習率などの設定
  • 17. © 2016 IBM Corporation17 DeepLearning4Jの表現 レイヤの設定
  • 18. © 2016 IBM Corporation18 DeepLearning4Jの表現 Masterの設定 学習(fit)
  • 19. © 2016 IBM Corporation19 DeepLearning4Jの表現 評価
  • 20. © 2016 IBM Corporation20 DeepLearning4Jは銀の弾か? • GPUは使えるが、YARNにGPUのリソース管理機能がない • 複数のDLのtrainを流す際に留意する必要がある(リソースの取り合い) • 高価なGPUをCluster配下の全てのサーバーに配備するのが基本 • CPU/GPUの混在が難しい/できない • 表現から見るように結構Javaで表現すると記述量が多い • KerasをDL4Jにかぶせた方が楽なのは間違いない • あれ?でもそれならPythonで書いた方が・・・・ • 強化学習系はサポートしてない • RL4J使ってね
  • 21. © 2016 IBM Corporation21 まとめ • DL4Jを使うことで既存のHadoop/Spark資産を利用したDL環境が構築可能 • 新規で始める場合も他の学習器の組み合わせ・前処理など考えるとSparkは良い選択肢 • BigDataの一括前処理(コード変換や欠損値補完) • DeepLearning以外の学習器の併用 • PythonやRでのデータサイエンティストのコードをJava or Scalaなどの Production環境へのデプロイでDL4Jは良いかも

Editor's Notes

  1. 1
  2. 会社ではSparkとHadoopのスペシャリストやってます。
  3. おさらい1ページ
  4. DeepLearningとは