去年夏天,我曾在日內瓦的歐洲核子研究組織(CERN)暑期開放實驗室實習。我工作的重點是為CERN的大數(shù)據(jù)分析來探索Apache Spark的MLlib框架。
在CERN,一個主要的實驗項目是CMS(世界上最大的粒子物理探測器之一),通過它可以幫助我們對亞原子有更好的理解。實驗是在CERN的大型強子對撞擊(LHC)上進行的。LHC是一個粒子加速器,可以把亞原子粒子推送到極高的速度并通過CMS探測器可視化。CMS探測器是一個巨大的多層數(shù)碼相機,記錄了每秒LHC的粒子碰撞產生的碎片的圖像。CMS實驗每一年要收集O(10)拍字節(jié)的數(shù)據(jù)。隨著時間的推移,每一次碰撞都會帶來巨大的數(shù)據(jù)量。最大數(shù)據(jù)的生產速率可以達到約600兆/秒,由此帶來了一個相當大的數(shù)據(jù)處理的挑戰(zhàn)。這些數(shù)據(jù)在全球LHC計算網格的多層計算基礎設施保存并處理。
由于數(shù)據(jù)安排是CERN實驗中必要的一個組件,我們正在尋找不一樣的方法來改進這個任務,并開發(fā)了一個原型試驗項目-評估Apache Spark作為CERN的大數(shù)據(jù)分析基礎設施。這一項目的目的是從CMS的數(shù)據(jù)中得出合適的預測,改進資源利用,并對框架和指標有深層的理解。
理解流行的CMD數(shù)據(jù)集
此原型項目的第一個階段是預測新的和流行的CMS數(shù)據(jù)集。流行度被定義為數(shù)據(jù)集被用作研究的頻繁性。這些被認為是流行的數(shù)據(jù)集是因為它們日常被物理學家訪問,因而需要在全世界各個數(shù)據(jù)中心復制備份。識別流行的數(shù)據(jù)集改進了分析的效率并幫助識別可能成為高能物理學的熱點話題的數(shù)據(jù)集,比如Higgs粒子和超對稱粒子。
圖一展示了隨機數(shù)據(jù)集在2014年每周的流行度,Y軸使用的是對數(shù)刻度。每一條線代表了不同的數(shù)據(jù)集。由黑線代表的數(shù)據(jù)集在第1到20周比其他多20%-30%的訪問,表明該數(shù)據(jù)集的流行和普及。相較而言,黃線代表的數(shù)據(jù)集根本沒有被訪問,表明該數(shù)據(jù)集是不流行的。

圖一 星期為單位的隨機CMS數(shù)據(jù)集的流行度。本圖由瓦倫丁·庫茲涅佐夫提供,經許可使用
相對流行的數(shù)據(jù)集也可以通過制作基于單一流行度指標的云圖,比如基于Naccess(單一用戶訪問數(shù)據(jù)集的總量)、totcpu(cpu分析數(shù)據(jù)集總花費的小時數(shù),見圖二)、nusers(數(shù)據(jù)集的總訪問用戶數(shù),見圖三)等。這些用戶可以是物理學家、學生或者是研究人員。你在圖中看到的數(shù)字代表了數(shù)據(jù)集的名字。數(shù)據(jù)集的命名法包括日期、軟件版本和格式,由三個不同的部分定義:進程、軟件和層。這三個部分非常重要,因為它們可以幫助復制過程。

圖二 使用totcpu指標的CMS數(shù)據(jù)集的流行度在云圖中的表示。本圖由瓦倫丁·庫茲涅佐夫提供,經許可使用

圖三 使用Nusers指標的CMS數(shù)據(jù)集的流行度在云圖中的表示。本圖由瓦倫丁·庫茲涅佐夫提供,經許可使用
2014年中最頻繁被訪問的CMS數(shù)據(jù)集在圖四中展示。

圖四 2014年100個最頻繁訪問的CMS數(shù)據(jù)集在云圖中的表示。本圖由瓦倫丁·庫茲涅佐夫提供,經許可使用
使用Apache Spark來預測新的和流行的CMS數(shù)據(jù)集
機器學習算法能夠運行預測模型并推測隨著時間改變的流行的數(shù)據(jù)集。我將Apache Spark評估為一個將不同的從CMS數(shù)據(jù)服務收集信息的預測模型流式組合起來的工具。當與更早的通過動態(tài)數(shù)據(jù)安排方法獲得的結果比較時,Spark提供的準確度是相近的。一個較大的不同是,其結果是實時獲取的。因為Spark可以實時的分析流式數(shù)據(jù),在數(shù)據(jù)產生時滾動預測流行度結果。預測流行的數(shù)據(jù)集是通過用Spark源生的機器學習庫(MLlib)和Python的機器學習算法來完成的。這些算法主要包括樸素貝葉斯、統(tǒng)計隨機梯度下降和隨機森林。
每一周的數(shù)據(jù)都會被添加到已有的數(shù)據(jù)之中,并建立一個新的模型,從而得到更好的數(shù)據(jù)分析結果。這些模型稍后會被整合進來,并通過真陽性,真陰性,假陽性或假陰性的值進行評估。我也使用了Python的機器學習庫(scikit-learn)并比較了從不同框架得到的值。在這一過程中,我能夠判斷每一個模型的質量。MLlib有幾乎所有的機器學習算法的的實現(xiàn),在CPU開銷和內存使用上與Python框架相比有更好的結果。
結論
Spark和scikit-learn的模型原型的準確度幾乎相同。通過運用主成分分析法,我可以交互式地為新的數(shù)據(jù)集選擇最佳的預測模型。其他一些對CMS數(shù)據(jù)分析重要的因素是并行度和快速的分布式數(shù)據(jù)處理。Spark框架提供了一個簡單的編程抽象,提供了強有力的緩存和持久化能力,同時還有很快的速度。結論就是,我們發(fā)現(xiàn)Spark的組件(Spark Steaming和MLlib)極大地簡化了CMS數(shù)據(jù)的分析,并可以成功地應用到CMS數(shù)據(jù)集上。
Siddha Ganju
Siddha Ganju是卡內基梅隆大學計算機數(shù)據(jù)科學專業(yè)的碩士生,2015年夏天在CERN的開放實驗室實習。她的研究主要在于機器學習、自然語言處理、信息檢索和深度學習的結合之處。Siddha從印度米爾布爾國家科技學院獲得學士學位??梢詮膆ttp://sidgan.me訪問Siddha的網站。

