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

10,903 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.

×