狠狠撸

狠狠撸Share a Scribd company logo
Spot	
 ?Instance	
 ?+	
 ?Spark	
 ?+	
 ?
MLlib	
 ?
で実現する簡単低コスト	
 ?
高速機械学習	
 
@yamakatu	
 ?
AWS	
 ?Casual	
 ?Talks#2	
 ?
2014/4/18
Spot Instance + Spark + MLlibで実現する簡単低コスト機械学習
おまだれ	
 
?? @yamakatu	
 ?
?? お仕事:検索方面	
 ?
?? 自称フルスタックイクメンエンジニア	
 ?
?? 開発、インフラ、機械学習、統計、検索、育児	
 ?
?? gihyo.jp	
 ?連載「Mahoutで体感する機械学習の実践」	
 ?
?? 合言葉は「読まずにはてブだけして」	
 ?
	
 ?
What’s	
 ?Spark	
 
の前にHadoopの話
Hadoopが苦手とする処理	
 
?? オンライン処理(リアルタイム性)	
 ?
?? バッチ処理で使おう	
 ?
?? 繰り返し処理	
 ?
?? ?	
 ?
繰り返し処理@Hadoop?	
 
?? ここで言うところの繰り返し処理	
 ?
?? 一般的に言うところの「繰り返し処理」というよりも	
 ?
?? 前回の計算結果を次の計算で利用するような繰り返し処理	
 ?
HDFS?Map?Shu?e?Reduce?HDFS	
 ?
HDFS?Map?Shu?e?Reduce?HDFS	
 ?
HDFS?Map?Shu?e?Reduce?HDFS	
 ?
Why	
 ??	
 
?? Disk	
 ?I/O	
 ?
1.? 前回の出力をHDFS経由で入力値として受け取る	
 ?
?? そのまま持っとけよ。。。	
 ?
2.? さらにMap処理の出力は各ノードのローカルディスク	
 ?
?? バッファからあふれた分だけだっけ?	
 ?
?? タスク処理の準備にかかる時間	
 ?
1.? JVMの起動コスト	
 ?
?? TaskTrackerはmap/reduceタスクごとに子プロセスを起動	
 ?
	
 ?
2.? TaskTrackerへのタスク割当間隔	
 ?
?? Heartbeatでスロットの空き数を通知	
 ?
?最大でHeartbeat間隔の時間だけ何もしないスロットが存在	
 ?
(dfs.heartbeat.intervalの値:デフォ3秒)	
 ?
この二つの問題は解決できる	
 
そう、Sparkならね
Spark	
 ?vs.	
 ?Disk	
 ?I/O	
 ?	
 
?? キャッシュ	
 ?
?? データセットのキャッシュ	
 ?
?? 計算結果のキャッシュ	
 ?
?Disk	
 ?I/O減	
 ?
?? RDD(Resillient	
 ?Distributed	
 ?Datasets)	
 ?
?? キャッシュはクラスタノード間で分散保持	
 ?
?一部が失われても復旧可能	
 ?
Spark	
 ?vs.	
 ?task	
 ?launching	
 ?time	
 ?	
 
?? 論文曰く、「fast	
 ?event-?‐driven	
 ?RPC	
 ?libraryを使ったよ」	
 ?
	
 ?
Spark	
 ?vs.	
 ?task	
 ?launching	
 ?time	
 ?	
 
?? 論文曰く、「fast	
 ?event-?‐driven	
 ?RPC	
 ?libraryを使ったよ」	
 ?
?? 5?10sec	
 ??	
 ?5ms	
 ?
?? Ref.	
 ?
	
 ?“Shark:	
 ?SQL	
 ?and	
 ?Rich	
 ?AnalyWcs	
 ?at	
 ?Scale”	
 ?
hYps://www.icsi.berkeley.edu/pubs/networking/ICSI_sharksql12.pdf	
 ?
結果、繰り返し処理の高速化	
 
Ref.	
 ?
“Spark:	
 ?A	
 ?framework	
 ?for	
 ?iteraWve	
 ?and	
 ?interacWve	
 ?cluster	
 ?compuWng”	
 ?
hYp://laser.inf.ethz.ch/2013/material/joseph/LASER-?‐Joseph-?‐6.pdf	
 ?
機械学習	
 ?on	
 ?Spark	
 
?? Sparkの代表的な用途として機械学習	
 ?
?? What’s	
 ?機械学習	
 ?
?? スパムフィルタ	
 ?
?? レコメンド	
 ?
?? 顔認識、手書き文字認識	
 ?
?? 画像処理	
 ?
?? 広告のパーソナライズ	
 ?
?? マルウェア検知	
 ?
?? とかとか	
 ?
?? 機械学習のアルゴリズムの一部は繰り返し処理が激しい	
 ?
What’s	
 ?MLlib	
 
?? Spark用の機械学習ライブラリ	
 ?
?? 実装済みアルゴリズム(まだ少ない)	
 ?
?? SVM	
 ?
?? ロジスティク回帰	
 ?
?? 線形回帰	
 ?
?? リッジ回帰	
 ?
?? Lasso	
 ?
?? K-?‐Means	
 ?
?? 協調フィルタリング	
 ?
?? ALS(交互最小二乗法)	
 ?
?? Gradient	
 ?Descent(最急降下法)	
 ?
Why	
 ?MLlib	
 
?? 簡単!	
 ?
?? JavaでK-?‐Meansを利用する場合	
 ?
KMeansModel	
 ?model	
 ?=	
 ?KMeans.train(points.rdd(),	
 ?5,	
 ?3,	
 ?5);	
 ?
	
 ?
というのは嘘で、実際には前段階で入力データをpointsに
入力データをキャッシュさせる処理を書くけど	
 ?
Hadoop	
 ?vs.	
 ?Spark(+MLlib)	
 
?? 速度比較	
 ?
?? ロジスティク回帰で100倍	
 ?
?? ref.	
 ?hYp://spark.apache.org/	
 ?
	
 ?
	
 ?
	
 ?
?? What’s	
 ?ロジスティク回帰
Why	
 ?EC2	
 ?(+Spot	
 ?Instance)	
 
?? 機械学習	
 ?on	
 ?EC2	
 ?
?? バッチ処理であることが多い	
 ?
?? 低い稼働率	
 ?
?? 計算量が多くなりがち	
 ?
?? 高いスペックのマシンを利用したい	
 ?
?? Spot	
 ?Instance	
 ?
?? 安い	
 ?
?? 用途によってはリアルタイム性を重視しない	
 ?
?? Spark	
 ?on	
 ?EC2	
 ?
?? spark/ec2/spark-?‐ec2	
 ?
?? EC2上にクラスタを構築、管理するためのスクリプト	
 ?
?? コマンド一発でインスタンスの生成からsparkのインストール、設定まで	
 ?
?? Spark公式	
 ?
?? Spot	
 ?Instance対応	
 ?
?? 分散処理とSpot	
 ?Instance	
 ?
?? 1台でちんたらバッチ処理やってると相場が上昇してTerminateされる	
 ?
How	
 ?to	
 ?use	
 ?spark-?‐ec2	
 
?? 例えば	
 ?
?? masterをm3.large	
 ?
?? slaveをm3.xlargeで3台	
 ?
?? Amazon	
 ?Linux(64bit)	
 ?
?? Tokyo	
 ?Region	
 ?
$	
 ?spark-?‐ec2	
 ?–t	
 ?m3.xlarge	
 ?–s	
 ?3	
 ?–m	
 ?m3.large	
 ?–a	
 ?ami-?‐84f1cfc1	
 ?–r	
 ?ap-?‐northeast-?‐1	
 ?	
 ?–k	
 ?
hoge	
 ?launch	
 ?spark-?‐test	
 ?
	
 ?
?? 上記構成のslaveをspot	
 ?instance($0.3で入札)で構築	
 ?
	
 ?
$	
 ?spark-?‐ec2	
 ?-?‐-?‐spot-?‐price=0.3	
 ?–t	
 ?m3.xlarge	
 ?–s	
 ?3	
 ?–m	
 ?m3.large	
 ?–a	
 ?ami-?‐84f1cfc1	
 ?–r	
 ?ap-?‐
northeast-?‐1	
 ?	
 ?–k	
 ?hoge	
 ?launch	
 ?spark-?‐test	
 ?
?? 他にもオプション色々	
 ?
?? -?‐z	
 ?ZONE,	
 ?-?‐-?‐zone=ZONE	
 ?
?? -?‐-?‐ebs-?‐vol-?‐size=SIZE	
 ?
?? -?‐-?‐use-?‐exisWng-?‐master	
 ?
?? (略	
 ?
まとめ	
 
?? 簡単	
 ?
?? /spark/ec2/ec2-?‐spark	
 ?
?? MLlib	
 ?
?? 低コスト	
 ?
?? EC2	
 ?+	
 ?Spot	
 ?Instance	
 ?
?? 高速	
 ?
?? Spark	
 ?
?? 機械学習	
 ?
?? 繰り返し処理で実装されてるアルゴリズムだけだけどね	
 ?
Fin.

More Related Content

Spot Instance + Spark + MLlibで実現する簡単低コスト機械学習

  • 1. Spot ?Instance ?+ ?Spark ?+ ? MLlib ? で実現する簡単低コスト ? 高速機械学習 @yamakatu ? AWS ?Casual ?Talks#2 ? 2014/4/18
  • 3. おまだれ ?? @yamakatu ? ?? お仕事:検索方面 ? ?? 自称フルスタックイクメンエンジニア ? ?? 開発、インフラ、機械学習、統計、検索、育児 ? ?? gihyo.jp ?連載「Mahoutで体感する機械学習の実践」 ? ?? 合言葉は「読まずにはてブだけして」 ? ?
  • 5. Hadoopが苦手とする処理 ?? オンライン処理(リアルタイム性) ? ?? バッチ処理で使おう ? ?? 繰り返し処理 ? ?? ? ?
  • 6. 繰り返し処理@Hadoop? ?? ここで言うところの繰り返し処理 ? ?? 一般的に言うところの「繰り返し処理」というよりも ? ?? 前回の計算結果を次の計算で利用するような繰り返し処理 ? HDFS?Map?Shu?e?Reduce?HDFS ? HDFS?Map?Shu?e?Reduce?HDFS ? HDFS?Map?Shu?e?Reduce?HDFS ?
  • 7. Why ?? ?? Disk ?I/O ? 1.? 前回の出力をHDFS経由で入力値として受け取る ? ?? そのまま持っとけよ。。。 ? 2.? さらにMap処理の出力は各ノードのローカルディスク ? ?? バッファからあふれた分だけだっけ? ? ?? タスク処理の準備にかかる時間 ? 1.? JVMの起動コスト ? ?? TaskTrackerはmap/reduceタスクごとに子プロセスを起動 ? ? 2.? TaskTrackerへのタスク割当間隔 ? ?? Heartbeatでスロットの空き数を通知 ? ?最大でHeartbeat間隔の時間だけ何もしないスロットが存在 ? (dfs.heartbeat.intervalの値:デフォ3秒) ?
  • 9. Spark ?vs. ?Disk ?I/O ? ?? キャッシュ ? ?? データセットのキャッシュ ? ?? 計算結果のキャッシュ ? ?Disk ?I/O減 ? ?? RDD(Resillient ?Distributed ?Datasets) ? ?? キャッシュはクラスタノード間で分散保持 ? ?一部が失われても復旧可能 ?
  • 10. Spark ?vs. ?task ?launching ?time ? ?? 論文曰く、「fast ?event-?‐driven ?RPC ?libraryを使ったよ」 ? ?
  • 11. Spark ?vs. ?task ?launching ?time ? ?? 論文曰く、「fast ?event-?‐driven ?RPC ?libraryを使ったよ」 ? ?? 5?10sec ?? ?5ms ? ?? Ref. ? ?“Shark: ?SQL ?and ?Rich ?AnalyWcs ?at ?Scale” ? hYps://www.icsi.berkeley.edu/pubs/networking/ICSI_sharksql12.pdf ?
  • 12. 結果、繰り返し処理の高速化 Ref. ? “Spark: ?A ?framework ?for ?iteraWve ?and ?interacWve ?cluster ?compuWng” ? hYp://laser.inf.ethz.ch/2013/material/joseph/LASER-?‐Joseph-?‐6.pdf ?
  • 13. 機械学習 ?on ?Spark ?? Sparkの代表的な用途として機械学習 ? ?? What’s ?機械学習 ? ?? スパムフィルタ ? ?? レコメンド ? ?? 顔認識、手書き文字認識 ? ?? 画像処理 ? ?? 広告のパーソナライズ ? ?? マルウェア検知 ? ?? とかとか ? ?? 機械学習のアルゴリズムの一部は繰り返し処理が激しい ?
  • 14. What’s ?MLlib ?? Spark用の機械学習ライブラリ ? ?? 実装済みアルゴリズム(まだ少ない) ? ?? SVM ? ?? ロジスティク回帰 ? ?? 線形回帰 ? ?? リッジ回帰 ? ?? Lasso ? ?? K-?‐Means ? ?? 協調フィルタリング ? ?? ALS(交互最小二乗法) ? ?? Gradient ?Descent(最急降下法) ?
  • 15. Why ?MLlib ?? 簡単! ? ?? JavaでK-?‐Meansを利用する場合 ? KMeansModel ?model ?= ?KMeans.train(points.rdd(), ?5, ?3, ?5); ? ? というのは嘘で、実際には前段階で入力データをpointsに 入力データをキャッシュさせる処理を書くけど ?
  • 16. Hadoop ?vs. ?Spark(+MLlib) ?? 速度比較 ? ?? ロジスティク回帰で100倍 ? ?? ref. ?hYp://spark.apache.org/ ? ? ? ? ?? What’s ?ロジスティク回帰
  • 17. Why ?EC2 ?(+Spot ?Instance) ?? 機械学習 ?on ?EC2 ? ?? バッチ処理であることが多い ? ?? 低い稼働率 ? ?? 計算量が多くなりがち ? ?? 高いスペックのマシンを利用したい ? ?? Spot ?Instance ? ?? 安い ? ?? 用途によってはリアルタイム性を重視しない ? ?? Spark ?on ?EC2 ? ?? spark/ec2/spark-?‐ec2 ? ?? EC2上にクラスタを構築、管理するためのスクリプト ? ?? コマンド一発でインスタンスの生成からsparkのインストール、設定まで ? ?? Spark公式 ? ?? Spot ?Instance対応 ? ?? 分散処理とSpot ?Instance ? ?? 1台でちんたらバッチ処理やってると相場が上昇してTerminateされる ?
  • 18. How ?to ?use ?spark-?‐ec2 ?? 例えば ? ?? masterをm3.large ? ?? slaveをm3.xlargeで3台 ? ?? Amazon ?Linux(64bit) ? ?? Tokyo ?Region ? $ ?spark-?‐ec2 ?–t ?m3.xlarge ?–s ?3 ?–m ?m3.large ?–a ?ami-?‐84f1cfc1 ?–r ?ap-?‐northeast-?‐1 ? ?–k ? hoge ?launch ?spark-?‐test ? ? ?? 上記構成のslaveをspot ?instance($0.3で入札)で構築 ? ? $ ?spark-?‐ec2 ?-?‐-?‐spot-?‐price=0.3 ?–t ?m3.xlarge ?–s ?3 ?–m ?m3.large ?–a ?ami-?‐84f1cfc1 ?–r ?ap-?‐ northeast-?‐1 ? ?–k ?hoge ?launch ?spark-?‐test ? ?? 他にもオプション色々 ? ?? -?‐z ?ZONE, ?-?‐-?‐zone=ZONE ? ?? -?‐-?‐ebs-?‐vol-?‐size=SIZE ? ?? -?‐-?‐use-?‐exisWng-?‐master ? ?? (略 ?
  • 19. まとめ ?? 簡単 ? ?? /spark/ec2/ec2-?‐spark ? ?? MLlib ? ?? 低コスト ? ?? EC2 ?+ ?Spot ?Instance ? ?? 高速 ? ?? Spark ? ?? 機械学習 ? ?? 繰り返し処理で実装されてるアルゴリズムだけだけどね ?
  • 20. Fin.