Posts by 'Leo Hung'

Apache Spark 環境變數調整

目前使用 Apache Spark 的心得是:Spark真的很棒,處理計算時間快得沒話說。但是他許多預設的參數並不適用於實際的機群,或者可以執行得更快一些,值得再做進一步的調整。這篇整理了我這一學期做實驗的操作心得:哪些環境變數該調,又該怎麼調。如果你有不同的見解或其他推薦的參數和調整方向,還請不吝惜指教批評。

怎麼改

可以透過修改 $spark_dir/conf/spark-defaults.conf 達成。

spark.serializer

Spark 預設使用 Java 的 ObjectOutputStream framework 處理物件的序列化(serialize)。不過官網建議使用另一套 KryoSerializer,效能處理的速度會比較快。

spark.serializer org.apache.spark.serializer.KryoSerializer

spark.driver.memory

Spark 的 driver 所先預留的記憶體其實很少,如果有用到 collectAsMap ...

低價部署 Apache Spark 機群的秘訣

Apache Spark 的開發團隊相當貼心,下載回來的壓縮包裡面包含部署的腳本(ec2/spark_ec2.py),只要輸入 AWS 的帳號資訊,就能簡單的使用命令列部署 Spark 在 AWS 雲端上。

AWS 可租用的機器分成兩種: on-demand instance 和 spot instance。on-demand instance 是穩定的租用機器,只要付款,機器就可以使用,也不是隨便終止。而 spot instance則是會根據市場價格決定是否能繼續租用機器,如果目前市場價格高過於使用者願意支付的最高價格,AWS 則會強制關閉機器,而將他轉租給其他使用者。由於 on-demand 穩定性高,價格通常是 spot instance 機器的幾倍以上 (視時間而定)。相對的,spot instance雖然使用風險高,但價格也便宜。

Spark 部署的腳本也有提供將機群設定為 spot ...

Easy to read ML papers and blogs

EM

  • 从最大似然到EM算法浅解. link
  • (EM算法)The EM Algorithm. link

PCA & SVD

  • Jonathon Shlens (2014) A Tutorial on Principal Component Analysis. link

分布式巨量機械學習系統模型: MapReduce, Data Graph, Parameter Server

總結

巨量機械學習需要處理的挑戰有二:(1) 訓練資料集過大 (2) 機械學習模型本身過於複雜,所需要訓練的參數過多。這兩個原因使得無法使用單一主機解決巨量機械學習的問題。為此,許多團隊於近幾年提出分布式機械學習系統,好著手處理巨量資料的挑戰。本篇整理了目前分布式巨量機械學習系統的三種典範:MapReduce, Data Graph, 和 Parameter Server.

為什麼我們需要分布式系統處理巨量機械學習?

"巨量"有兩種意義:(1) 訓練資料集過大 (2) 模型本身過度複雜,所需訓練的參數過多。因為這兩個原因,通常無法使用單一機器處理巨量機械學習的問題。為此,開發者得需要設計分布式系統,或者建立在已有的分布式計算框架來處理。

根據目前主流巨量機械學習系統的架構設計,可歸納為三種模式: MapReduce, Data Graph, 和 Parameter Server。

MapReduce 模式

mapreduce

圖片 1. MapReduce (資料來源: [9])

MapReduce [9] 是很熱門的分布式計算框架, 而 ...

Large-scale Distributed Machine Learning: MapReduce, Data Graph, and Parameter Server

Summary

Big machine learning is hard because (1) the amount of traning data is huge (2) the number of parameters is large. This note summarizes three paradigms of distributed architecture for large-scale machine learning problem: MapReduce, Data Graph, and Parameter Server.

Why should we build distributed system for large-scale machine ...

"NetworkX Network: Discovering the core of company network in Taiwan by using NetworkX. (用NetworkX找出台灣公司網絡核心) @ PyCon TW 2014"

Slide

Code

Github Link

Result

Closeness

"Teaching Elasticsearch reading Chinese in 1 Minutes "

Teaching Elasticsearch reading Chinese in 1 Minutes

Elasticsearch(es) is a powerful open source solution for searching, which is serving in wikipedia currently; however, Chinese users is not so lucky with es, becasue the default analyzer of es cannot deal with Chinese well, which will tokenzie Chinese sentences into individual ...