Weitere ähnliche Inhalte Ähnlich wie Spot Instance + Spark + MLlibで実現する簡単低コスト機械学習 (20) Kürzlich hochgeladen (12) Spot Instance + Spark + MLlibで実現する簡単低コスト機械学習1. Spot
Instance
+
Spark
+
MLlib
で実現する簡単低コスト
高速機械学習
@yamakatu
AWS
Casual
Talks#2
2014/4/18
3. おまだれ
• @yamakatu
• お仕事:検索方面
• 自称フルスタックイクメンエンジニア
• 開発、インフラ、機械学習、統計、検索、育児
• gihyo.jp
連載「Mahoutで体感する機械学習の実践」
• 合言葉は「読まずにはてブだけして」
6. 繰り返し処理@Hadoop?
• ここで言うところの繰り返し処理
• 一般的に言うところの「繰り返し処理」というよりも
• 前回の計算結果を次の計算で利用するような繰り返し処理
HDFS➡Map➡Shuffle➡Reduce➡HDFS
HDFS➡Map➡Shuffle➡Reduce➡HDFS
HDFS➡Map➡Shuffle➡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に
入力データをキャッシュさせる処理を書くけど
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
• 機械学習
• 繰り返し処理で実装されてるアルゴリズムだけだけどね