1. 程式人生 > >Linux學習資料,這樣學習linux事半功倍

Linux學習資料,這樣學習linux事半功倍

雲計算

首先思考需要解決哪些問題,最重要的分為三個方面:效率、規模以及機器學習本身的一些內在性的需求。

規模

所謂的規模問題有三點。一是數據總量增長很快,每年公有雲和視頻數據增長比例達 60% 多。第二點是數據量非常大,比如七牛有 2000 億張圖片,有超過 10 億小時的視頻,如何去挖掘數據內在的價值,這本身就是一個非常頭疼的問題。第三點是吞吐量大,例如 1080P 的攝像頭,一個攝像頭在一個小時產生的數據是 1.8G,一個城市有幾十萬個攝像頭,像北京這種城市甚至幾百萬,三個月產生的數據是 EB 級別,數據的吞吐量非常大,所以在設計系統的時候必須能跟上新增數據的節奏。

效率

很多人說現在的互聯網是雲計算。但是實際上雲計算不是一朵雲,互聯網上也不是只有一朵公有雲,而是有很多雲,例如存儲、日誌服務器、計算集群等等。我們的系統需要在這一朵朵雲之間架起橋梁,連接起來。很多時候它們不在同一個機房,甚至不在同一個城市,而系統需要在能保證足夠的速度和帶寬的前提下,讓數據可靠地傳到最終學習的集群。

規模機器學習的原生需求

第三個是機器學習的原生需求,七牛把機器學習的計算過程抽象為兩種:數據和訓練的作業。原生的需求包括很多方面,圖 1 列了幾條需求,例如一個是能讓整個訓練快速叠代;第二個是進程停了可以隨時重啟,數據應該是安全的;然後是各個訓練任務之間需要與它的資源隔離開;訓練作業需要分布式。還有其他的需求,例如可視化、模型融合、模型管理,這些都是機器學習本身訓練的需求。

What ?

圖 2 是深度學習平臺的架構,底層是前面介紹的各個文件系統,在這個上面做了一層 Caching IO ,即分布式內存服務器,計算時所需要的數據都是通過它來做提取,大家可以參考一個開源項目 - AlluxIO ,七牛的設計跟它有一些近似。在 IO 之上抽象為 Docker,來計算任務和資源分配以及調度。在這個基礎之上,編排系統也是參考了開源的項目。七牛做這個項目的時間其實比較早,大概一年兩年前就做了,主要是擔心開源項目任性說不幹就不幹了,所以自己寫了一套東西。

有這麽一套編排系統以後,可以很方便地構建一個分布式的系統,它的核心是一個參數服務器,這裏推薦一個基於 Caffe 的分布式框架 Poseidon,它針對深度學習任務優化了計算集群內部的通信,在降低通信量的同時保證很好的叠代性。有了分布式的系統和編排系統之後,把上面的作業抽象為一個一個的獨立鏡像,比如數據清理,有五種數據清理的方法就做五個鏡像。數據放大也類似,包括訓練和推理,都會做出相應基本的鏡像去調用。在這個基礎上會把作業全都抽象為一個圖的形式表達,以及用數據流的方式去表達整個作業的過程。

Linux學習資料,這樣學習linux事半功倍