Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

11,256 views

Published on

Spot Instance + Spark + MLlib で実現する簡単低コスト 高速機械学習
AWS Casual Talks#2 LT 2014/4/18

Published in: Technology

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

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

×