真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何進(jìn)行Mars的應(yīng)用與實踐

這篇文章給大家介紹如何進(jìn)行Mars的應(yīng)用與實踐,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

成都創(chuàng)新互聯(lián)專注于昌樂網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供昌樂營銷型網(wǎng)站建設(shè),昌樂網(wǎng)站制作、昌樂網(wǎng)頁設(shè)計、昌樂網(wǎng)站官網(wǎng)定制、微信小程序定制開發(fā)服務(wù),打造昌樂網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供昌樂網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

一、Mars簡介

Mars是統(tǒng)一的數(shù)據(jù)科學(xué)平臺,它用來加速傳統(tǒng)的Python數(shù)據(jù)科學(xué)技術(shù)棧,在單機(jī)中也可以用多核加速,或用分布式來加速。Mars可以部署在單機(jī)的分布式集群,或者Kubernetes和Hadoop Yarn上。

Mars整個框架構(gòu)建在單機(jī)的并行和分布式的這兩個調(diào)度的基礎(chǔ)之上,它的數(shù)據(jù)科學(xué)基礎(chǔ)包括三個核心部分,Tensor、DataFrame和Remote。而構(gòu)建在這個基礎(chǔ)之上的,是Mars Learn模塊,它可以兼容Scikit-learn API,能簡單地進(jìn)行更大數(shù)據(jù)規(guī)模的分布式處理。此外,Mars還支持深度學(xué)習(xí)和機(jī)器學(xué)習(xí)的框架,比如能輕松運(yùn)行TensorFlow、PyTorch等,而且可視化也可以在Mars上完成。除此之外,Mars還支持了豐富的數(shù)據(jù)源。

從傳統(tǒng)Python技術(shù)棧到Mars也非常簡單,比如在NumPy和Pandas里要變成Mars,只需要替換import,然后后面變?yōu)檠舆t執(zhí)行即可。

普通的Python函數(shù),在調(diào)用的時候變成mr.spawn來延遲這個過程,最后通過execute來并發(fā)執(zhí)行,不用擔(dān)心Mars是運(yùn)行在單機(jī)上還是分布式運(yùn)行。

而Mars上的TensorFlow大部分也一樣,區(qū)別在于main函數(shù)部分的變化。最后,我們需要通過run_tensorflow_script的方式把腳本運(yùn)行到Mars中。

二、典型場景

場景1. CPU和GPU混合計算

在安全和金融領(lǐng)域可以用Mars做CPU和GPU的混合計算,加速現(xiàn)有的工作流。

在這個領(lǐng)域,因為傳統(tǒng)大數(shù)據(jù)平臺挖掘周期長,資源緊張,需要很久來執(zhí)行任務(wù),不能達(dá)到客戶需求。所以能用Mars DataFrame來加速數(shù)據(jù)處理,它可以做大規(guī)模數(shù)據(jù)排序,并幫助用戶做高階統(tǒng)計和聚合分析。

另外在安全領(lǐng)域有很多無監(jiān)督學(xué)習(xí)的算法,Mars learn能加速無監(jiān)督學(xué)習(xí),同時拉起分布式深度學(xué)習(xí)計算加速現(xiàn)有的深度學(xué)習(xí)訓(xùn)練。之后,對于某些計算任務(wù)也可以利用GPU來加速。

場景2. 可解釋性計算

在廣告領(lǐng)域,在廣告歸因和洞察特征的解釋算法中,因為本身計算量大,所以耗時很長。這種情況下,單機(jī)加速是比較困難的,基于傳統(tǒng)大數(shù)據(jù)平臺的分布式也不太靈活,但是通過Mars remote,可以很輕松地把計算分布到幾十臺機(jī)器上來加速,達(dá)到百倍的性能提升。

場景3. 大規(guī)模K-最鄰近算法

Mars非常廣泛地應(yīng)用在K-最鄰近算法中,因為Embedding越來越流行,它讓向量表述實體非常常見。另外,Mars的NearestNeighbors算法兼容scikit-learn,它里面有暴力算法,而用戶也需要暴力算法來進(jìn)行大規(guī)模計算,可以通過多個worker來完成,從而讓性能提升百倍。最后,Mars支持分布式的方式加速Faiss和Proxima,達(dá)到千萬級別和上億級別的規(guī)模。

三、Demo

Demo1. 分析豆瓣電影數(shù)據(jù)

我們從這個Demo看一下Mars如何加速pandas數(shù)據(jù)處理及其可視化。

如何進(jìn)行Mars的應(yīng)用與實踐

開始演示之前我們需要安裝Mars。這里已經(jīng)創(chuàng)建了Jupyter,然后 pip install pymars。

如何進(jìn)行Mars的應(yīng)用與實踐

安裝之后,我們可以到IPython進(jìn)行驗證,可以看到下面的結(jié)果沒有問題,接下來我們就可以進(jìn)入到Jupyter notebook里。

如何進(jìn)行Mars的應(yīng)用與實踐

我們開始demo。這個數(shù)據(jù)可以在GitHub地址下載,然后我們用pandas來分析電影的數(shù)據(jù),使用ipython memory usage來查看內(nèi)存使用。

如何進(jìn)行Mars的應(yīng)用與實踐

我們的數(shù)據(jù)主要用到4個CSV文件,分別是movies、ratings、users和comments。

如何進(jìn)行Mars的應(yīng)用與實踐

接下來根據(jù)上映日期統(tǒng)計有多少電影發(fā)布。這里先處理一下數(shù)據(jù),讓發(fā)行日期只取到年份,去掉日期,并對年份做聚合。

如何進(jìn)行Mars的應(yīng)用與實踐

數(shù)據(jù)出來后,可以用pandas bokeh把圖繪制出來,并通過交互式的方式查看。

如何進(jìn)行Mars的應(yīng)用與實踐

接下來看電影評分的統(tǒng)計。首先把有評分的電影篩選出來,然后把豆瓣評分的數(shù)值數(shù)量從大到小進(jìn)行排序??梢钥吹?,最多的評分是6.8分。

如何進(jìn)行Mars的應(yīng)用與實踐

同樣,通過pandas bokeh把它畫成柱狀圖,評分差不多呈現(xiàn)正態(tài)分布。

如何進(jìn)行Mars的應(yīng)用與實踐

接下來做一個標(biāo)簽詞云,看電影哪個標(biāo)簽詞最多,這里從movies取出tags,用斜杠分割,然后max words是50。

如何進(jìn)行Mars的應(yīng)用與實踐

接下來我們再對電影的Top K進(jìn)行分析。首先按電影ID進(jìn)行聚合,求出評價的平均值和個數(shù)。然后我們對評價個數(shù)進(jìn)行過濾,從高到低,算出top20的電影。

如何進(jìn)行Mars的應(yīng)用與實踐

然后做評論數(shù)據(jù)分析。因為評論是中文的,所以需要做一個分詞,然后對每一句話做切分,在統(tǒng)計的時候進(jìn)行排序。這里可以加一個進(jìn)度條,在處理數(shù)據(jù)的時候方便看到進(jìn)程。這個過程大概花了20分鐘,所以在單機(jī)上跑大任務(wù)的時候?qū)C(jī)器的壓力還是比較大。

如何進(jìn)行Mars的應(yīng)用與實踐

這是最終的詞云圖。

如何進(jìn)行Mars的應(yīng)用與實踐

接下來我們用Mars做同樣的分析任務(wù)。首先是對Mars環(huán)境進(jìn)行部署,然后這里有5個worker,每個worker是8個CPU和32G內(nèi)存。還是一樣,我們打開內(nèi)存的監(jiān)控,做一些import,這里把import Pandas替換成import mars.dataframe,然后Numpy是import mars.tensor。

如何進(jìn)行Mars的應(yīng)用與實踐

隨后我們在SDK里來創(chuàng)建to mars dataframe,這一步幾乎沒有用到內(nèi)存,最終得到的結(jié)果也和之前一樣。

如何進(jìn)行Mars的應(yīng)用與實踐

我們用同樣的方式來分析上映日期的電影個數(shù)和電影評分。得益于Mars跟Pandas的高度兼容,我們也能用Pandas bokeh來呈現(xiàn)結(jié)果。

如何進(jìn)行Mars的應(yīng)用與實踐

電影評論的分析也一樣,但是在顯示的時候,Mars只會拉取頭幾條和最后幾條,所以客戶端幾乎沒有內(nèi)存使用。而且整個running過程只用了45秒,與之前的20分鐘相比提升了幾十倍性能。

如何進(jìn)行Mars的應(yīng)用與實踐

接下來我們用Mars做一個地區(qū)的統(tǒng)計,讓它有一個動態(tài)的效果。首先我們看一下剛剛計算過的已經(jīng)released的電影dataframe,然后取1980-2019這幾年的電影,而regions部分可能有多個,所以用斜杠分割開,最后執(zhí)行排出top10地域電影。

如何進(jìn)行Mars的應(yīng)用與實踐

然后我們通過bar chart race來生成動態(tài)效果。

如何進(jìn)行Mars的應(yīng)用與實踐

Demo2. 豆瓣電影推薦

第二個demo我們會基于剛才豆瓣電影的數(shù)據(jù)來做一個推薦。我們首先會用TensorFlow Mars來進(jìn)行訓(xùn)練,接著用Mars分布式KNN算法來加速召回計算。

我們先使用單機(jī)的技術(shù)棧,這個數(shù)據(jù)已經(jīng)分成了訓(xùn)練和測試集,所以我們先to pandas把它下載到本地,接著來對用戶和電影做一個label encode,把它變成一個數(shù)字,而不是字符串的值。隨后我們對數(shù)據(jù)進(jìn)行處理,先按照時間排序,然后按照用戶進(jìn)行分組,生成分組聚合的結(jié)果。

如何進(jìn)行Mars的應(yīng)用與實踐

接下來開始訓(xùn)練,我們需要用TensorFlow訓(xùn)練出代表user的embedding。之前說過embedding,可以對任一實體用向量描述,所以得到embedding之后,我們在給用戶推薦電影時就可以查找在這個向量空間里面跟這個用戶比較接近的電影embedding。

如何進(jìn)行Mars的應(yīng)用與實踐

訓(xùn)練后我們可以保存向量,這里的搜索規(guī)模是60萬乘7萬,單機(jī)花費(fèi)了22分鐘,但如果達(dá)到千萬乘千萬級別,搜索耗時要超過800小時,這是不可接受的。

如何進(jìn)行Mars的應(yīng)用與實踐

接下來我們看如何用Mars來實現(xiàn)這一過程。首先創(chuàng)建一個Mars集群,這里有8個worker。然后和上面一樣,對數(shù)據(jù)進(jìn)行預(yù)處理,做label encode,按時間排序,按user分組生成分組聚合。

如何進(jìn)行Mars的應(yīng)用與實踐

這里唯一的區(qū)別是Mars會自動推斷DataFrame的結(jié)果,如果推斷失敗就需要用戶自己提供dtypes和output type。

如何進(jìn)行Mars的應(yīng)用與實踐

然后是執(zhí)行和訓(xùn)練。這里TensorFlow可以寫Python文件,不用寫到notebook里。

如何進(jìn)行Mars的應(yīng)用與實踐

接著我們用Mars的run tensorflow script來跑這個腳本,然后指定worker是8。可以看到,執(zhí)行的時間縮小到了23分鐘。同時,我們也拿到了最終的embedding,用Mars做embedding只需1分25秒,比剛剛的時間提升個十倍左右。1400萬乘1400萬也可以穩(wěn)定在1小時左右,與單機(jī)800個小時相比提升是非常巨大的。

如何進(jìn)行Mars的應(yīng)用與實踐

四、最佳實踐

首先盡量不要使用to pandas和to numpy,因為這會把Mars的分布式數(shù)據(jù)變成單機(jī)的數(shù)據(jù),失去了Mars本身的優(yōu)勢,除非這個操作不能用Mars實現(xiàn);其次,Mars tensor、DataFrame和learn由于本身受限于API的原因需要自己寫一些函數(shù),所以可以考慮用Mars remote來加速,把操作抽象成函數(shù);第三,Pandas的加速技巧在Mars DataFrame依然適用,比如可以使用更高效的數(shù)據(jù)類型,可以優(yōu)先使用內(nèi)建操作,使用apply取代循環(huán)。

如何進(jìn)行Mars的應(yīng)用與實踐

關(guān)于如何進(jìn)行Mars的應(yīng)用與實踐就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


分享名稱:如何進(jìn)行Mars的應(yīng)用與實踐
網(wǎng)頁網(wǎng)址:http://weahome.cn/article/pchsii.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部