狠狠撸
Submit Search
Spot Instance + Spark + MLlibで実現する簡単低コスト機械学習
?
30 likes
?
12,282 views
Katsushi Yamashita
Follow
Spot Instance + Spark + MLlibで実現する簡単低コスト高速機械学習 AWS Casual Talks#2 LT 2014/4/18
Read less
Read more
1 of 20
Download now
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で体感する機械学習の実践」 ? ?? 合言葉は「読まずにはてブだけして」 ? ?
4.
What’s ?Spark の前にHadoopの話
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秒) ?
8.
この二つの問題は解決できる そう、Sparkならね
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.
Download