中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

騰訊發(fā)布開源機(jī)器學(xué)習(xí)平臺 Angel 3.0

2019-08-27    來源:raincent

容器云強(qiáng)勢上線!快速搭建集群,上萬Linux鏡像隨意使用

近日,騰訊首個(gè) AI 開源項(xiàng)目 Angel 正式發(fā)布 3.0 版本。Angel 3.0 的目標(biāo)是打造一個(gè)全棧的機(jī)器學(xué)習(xí)平臺,功能特性涵蓋了機(jī)器學(xué)習(xí)的各個(gè)階段:特征工程、模型訓(xùn)練、超參數(shù)調(diào)節(jié)和模型服務(wù)。

Angel 是騰訊開源的大規(guī)模分布式機(jī)器學(xué)習(xí)平臺,專注于稀疏數(shù)據(jù)高維模型的訓(xùn)練。自 2016 年年初在騰訊內(nèi)部上線以來,Angel 已應(yīng)用于微信支付、QQ、騰訊視頻、騰訊社交廣告及用戶畫像挖掘等業(yè)務(wù)。2017 年 6 月,Angel 在 Github 上低調(diào)開源;2018 年 9 月,Angel 2.0 版本發(fā)布,支持千億級模型維度訓(xùn)練,同時(shí)算法庫也更加豐富,首次引入了深度學(xué)習(xí)算法和圖算法。截至目前,Angel 在 GitHub 上 Star 數(shù)已超過 4200,F(xiàn)ork 數(shù)超過 1000。

從 1.0 到 3.0,Angel 從一個(gè)單一的模型訓(xùn)練平臺發(fā)展到涵蓋機(jī)器學(xué)習(xí)各個(gè)流程,包含自己生態(tài)的通用計(jì)算平臺,代碼量也超過了 50 萬行。

概述

相比于 TensorFlow、PyTorch 和 Spark 等業(yè)界同類平臺,Angel 有如下特點(diǎn):

Angel 是一個(gè)基于 Parameter Server(PS)理念開發(fā)的高性能分布式機(jī)器學(xué)習(xí)平臺,它具有靈活的可定制函數(shù) PS Function(PSF),可以將部分計(jì)算下推至 PS 端。PS 架構(gòu)良好的橫向擴(kuò)展能力讓 Angel 能高效處理千億級別的模型。

Angel 具有專門為處理高維稀疏特征特別優(yōu)化的數(shù)學(xué)庫,性能可達(dá) breeze 數(shù)學(xué)庫的 10 倍以上。Angel 的 PS 和內(nèi)置的算法內(nèi)核均構(gòu)建在該數(shù)學(xué)庫之上。

Angel 擅長推薦模型和圖網(wǎng)絡(luò)模型相關(guān)領(lǐng)域(如社交網(wǎng)絡(luò)分析)。圖 1 是 Angel 和幾個(gè)業(yè)界主流平臺在稀疏數(shù)據(jù),模型維度,性能表現(xiàn),深度模型和生態(tài)建設(shè)幾個(gè)維度的對比。Tensorflow 和 PyTouch 在深度學(xué)習(xí)領(lǐng)域和生態(tài)建設(shè)方面優(yōu)勢明顯,但在稀疏數(shù)據(jù)和高維模型方面的處理能力相對不足,而 Angel 正好與它們形成互補(bǔ),3.0 版本推出的 PyTorch On Angel 嘗試將 PyTorch 和 Angel 的優(yōu)勢結(jié)合在一起。

 

 

圖 1 Angel 與業(yè)界主流平臺的對比

Angel 系統(tǒng)架構(gòu)

Angel 3.0 系統(tǒng)架構(gòu)如圖 2 所示。

 

 

圖 2 Angel 3.0 架構(gòu)

Angel 自研的高性能數(shù)學(xué)庫是整個(gè)系統(tǒng)的基礎(chǔ),Angel 的 PS 功能和內(nèi)置的算法內(nèi)核均是在這個(gè)數(shù)學(xué)庫基礎(chǔ)之上實(shí)現(xiàn)的。

Angel PS 提供了高效,穩(wěn)定和靈活的參數(shù)存儲和交換服務(wù)。在 3.0 版本中,我們對 Angel PS 功能進(jìn)行了擴(kuò)展,使得它可以存儲任意類型的對象,一個(gè)典型的例子是在圖算法的實(shí)現(xiàn)過程中,我們使用 Angel PS 來存儲了大量復(fù)雜的對象。

MLcore 是 Angel 自研的一套算法內(nèi)核,它支持自動(dòng)求導(dǎo),可以使用 JSON 配置文件定義和運(yùn)行算法。除此之外,在 3.0 版本中,Angel 還集成了 PyTorch 作為計(jì)算引擎。在計(jì)算引擎層之上是計(jì)算框架,它們可以看作計(jì)算引擎的容器,目前支持 3 種計(jì)算框架:原生的 Angel,Spark On Angel(SONA)和 PyTorch On Angel(PyTONA),這些計(jì)算框架可以使得 Spark 和 PyTorch 用戶可以無縫切換到 Angel 平臺。最上層是兩個(gè)公共組件:AutoML 和模型服務(wù)。

Angel 使用情況

如圖 3 所示,在過去 12 個(gè)月,Angel 在騰訊內(nèi)部的任務(wù)數(shù)量有了非常明顯的增長,增幅達(dá)到 150%。值得一提的是,Spark On Angel 的任務(wù)數(shù)增長了 10 倍,為了讓 Spark On Angel 更加的易用,3.0 版本對 Spark On Angel 做了大幅度升級。在騰訊內(nèi)部,使用 Angel 的業(yè)務(wù)包括騰訊視頻、騰訊新聞和微信等。

 

 

圖 3 騰訊內(nèi)部 Angel 任務(wù)數(shù)

Angel 官方維護(hù)了一個(gè) QQ 群與外部開發(fā)者進(jìn)行交流,對群用戶的統(tǒng)計(jì)表明:

Angel 的絕大部分用戶來自中國,主要分布在北京,上海,杭州,成都和深圳等互聯(lián)網(wǎng)行業(yè)比較發(fā)達(dá)的城市。

有超過 100 家的公司和科研機(jī)構(gòu)在使用或測試 Angel,其中包括了中國最頂級的 IT 公司:微博,華為和百度等。

 

 

圖 4 Angel 開源用戶

Angel 開源情況

 

 

圖 5 GitHub 上 Angel 的統(tǒng)計(jì)信息以及 Angel 發(fā)表的論文

從 2017 年 6 月開源以來,Angel 受到了較多的關(guān)注,目前在 GitHub 上 Star 數(shù)超過 4200,F(xiàn)ork 數(shù)超過 1000。Angel 項(xiàng)目目前總共有 38 為代碼貢獻(xiàn)者,其他包括 8 位 committer,他們總共提交了超過 2000 個(gè) commit。

從 1.0 到 3.0,Angel 發(fā)生了巨大的變化,它從一個(gè)單一的模型訓(xùn)練平臺發(fā)展到涵蓋機(jī)器學(xué)習(xí)各個(gè)流程,包含自己生態(tài)的通用計(jì)算平臺,代碼量也超過了 50 萬行。為了后續(xù)維護(hù)和使用的方便,Angel 拆分成 8 個(gè)子項(xiàng)目,統(tǒng)一放在 Angel-ML 目錄下( https://github.com/Angel-ML ):angel,PyTorch On Angel,sona,serving,automl,mlcore,math2 和 format,這些子項(xiàng)目會在下文詳細(xì)介紹。

Angel 3.0 新特性

 

 

圖 6 Angel 3.0 概覽(紅色的表示新增特性,白色的表示已有的但在持續(xù)改進(jìn)的特性)

圖 6 提供了一個(gè) Angel 3.0 特性的整體視圖。Angel 3.0 試圖打造一個(gè)全棧的機(jī)器學(xué)習(xí)平臺,它的功能特性涵蓋了機(jī)器學(xué)習(xí)的各個(gè)階段:特征工程,模型訓(xùn)練,超參數(shù)調(diào)節(jié)和模型服務(wù)。

Angel 的特征工程模塊基于 Spark 開發(fā),增強(qiáng)了 Spark 的特征選擇功能,同時(shí)使用特征交叉和重索引實(shí)現(xiàn)了自動(dòng)特征生成。這些組件可以無縫地整合進(jìn) Spark 的流水線。為了讓整個(gè)系統(tǒng)更加的智能,Angel 3.0 新增了超參數(shù)調(diào)節(jié)的功能,目前支持 3 種算法:隨機(jī)搜索,網(wǎng)格搜索和貝葉斯優(yōu)化。在模型服務(wù)方面,Angel 3.0 提供了一個(gè)跨平臺的組件 Angel Serving, Angel Serving 不僅可以滿足 Angel 自身的需求,還可以為其他平臺提供模型服務(wù)。

在生態(tài)方面,Angel 也嘗試將 PS 能力賦能給其他的計(jì)算平臺,目前已經(jīng)完成了 Spark On Angel 和 PyTorch On Angel 兩個(gè)平臺的建設(shè)。這兩個(gè)平臺各有優(yōu)勢和側(cè)重, Spark On Angel 使用的是 Angel 內(nèi)置的算法核心,主要負(fù)責(zé)常見推薦領(lǐng)域的機(jī)器學(xué)習(xí)算法和基礎(chǔ)圖算法。 PyToch On Angel 使用 PyTorch 作為計(jì)算核心,主要負(fù)責(zé)推薦領(lǐng)域深度學(xué)習(xí)算法和圖深度學(xué)習(xí)算法。

自動(dòng)特征工程

特征工程,例如特征交叉和選擇,對于工業(yè)界的機(jī)器學(xué)習(xí)應(yīng)用具有重要意義。Spark 提供了一些特征選擇算子,但是仍有一些局限性。Angel 基于 Spark 提供了更多的特征選擇算子:

基于統(tǒng)計(jì)的運(yùn)算符,包括 VarianceSelector 和 FtestSelector

基于模型的運(yùn)算符,包括 LassoSelector 和 RandomForestSelector

大多數(shù)在線推薦系統(tǒng)經(jīng)常選擇線性算法,例如邏輯回歸作為機(jī)器學(xué)習(xí)模型,但邏輯回歸需要復(fù)雜的特征工程才能實(shí)現(xiàn)較高的精度,這使得自動(dòng)特征合成至關(guān)重要。但是,現(xiàn)有的自動(dòng)化的高階特征合成方法帶來了維度災(zāi)難。 為了解決這個(gè)問題,Angel 實(shí)現(xiàn)了一種迭代生成高階合成特征的方法。每次迭代由兩個(gè)階段組成:

擴(kuò)增階段:任意特征的笛卡爾積

縮約階段:特征選擇和特征重索引

以下是迭代步驟:

首先任意的輸入特征之間通過笛卡爾積生成合成特征。該步驟后,特征數(shù)量將以二次方式增加

接下來,從合成特征中選擇最重要的特征子集(使用例如 VarianceSelector 和 RandomForestSelector)

然后,重新索引所選擇的特征以減少特征空間

最后,合成特征與原始特征拼接在一起

 

 

圖 7 自動(dòng)特征工程流程

如圖 7 所示,這種特征合成方法線性地增加特征數(shù)量,避免了維度災(zāi)難。在 Higgs 數(shù)據(jù)集上的實(shí)驗(yàn)表明合成的特征能有效地提高模型精度(如表 1 所示)。

 

 

表 1 特征合成效果

Spark On Angel(SONA)

在 Angel 3.0 中,我們對 Spark On Angel 做了大幅度的優(yōu)化,添加了下面這些新的特性:

Spark On Angel 中集成了特征工程。在集成的過程中并不是簡單地借用 Spark 的特征工程,我們?yōu)樗械倪\(yùn)算支持了長整型索引的向量使其能夠訓(xùn)練高維稀疏模型

與自動(dòng)調(diào)參無縫連接

Spark 用戶能夠通過 Spark-fashion API 毫不費(fèi)力的將 Spark 轉(zhuǎn)換成 Angel

支持兩種新的數(shù)據(jù)格式:LibFFM 和 Dummy

 

 

圖 8 Spark On Angel 架構(gòu)

除了這些大的特征,我們也在持續(xù)完善 Spark On Angel 的算法庫:添加了一些新的算法,如:Deep & Cross Network (DCN) 和 Attention Factorization Machines (AFM) 等;同時(shí)對已有的算法做了大量的優(yōu)化,例如對 LINE 和 K-Core 算法進(jìn)行了重構(gòu),重構(gòu)后的算法性能和穩(wěn)定性都有大幅度提升。

從圖 9 中可以看出,Spark On Angel 中的算法與 Spark 中的算法存在顯著的不同,如:基于 Spark On Angel 的算法主要是針對推薦和圖領(lǐng)域,然而 Spark 中的算法更通用。

 

 

圖 9 Spark 與 Spark On Angel 算法比較

 

 

圖 10 Spark On Angel 算法示例

圖 10 提供了一個(gè)基于 Spark On Angel 的分布式算法示例,主要包含以下步驟:

在程序開始時(shí)啟動(dòng)參數(shù)服務(wù)器,程序結(jié)束時(shí)關(guān)閉參數(shù)服務(wù)器

將訓(xùn)練集和測試集以 Spark DataFrame 形式加載

定義一個(gè) Angel 模型并以 Spark 的參數(shù)設(shè)置方式為其設(shè)置參數(shù)。在這個(gè)示例中,算法是一個(gè)通過 JSON 定義的計(jì)算圖

使用“fit”方法來訓(xùn)練模型

使用“evaluate”方法來評估已訓(xùn)練的模型

在訓(xùn)練完成后,Spark On Angel 將會展示多種模型指標(biāo),如:準(zhǔn)確率, ROC 曲線, AUC 等。用戶可以保存訓(xùn)練好的模型以便下次使用。

 

 

圖 11 Spark On Angel 和 TensorFlow 性能比較

我們在兩種流行的推薦算法 Deep & Wide 和 DeepFM 上使用了相同的資源和數(shù)據(jù)集比較了 Spark On Angel 和 Tensorflow 的性能。如圖 11 所示,在 Deep & Wide 算法上 Spark On Angel 比 Tensorflow 快 3 倍,而在 DeepFM 算法上 Tensorflow 運(yùn)行稍快一些。

PyTorch On Angel(PyTONA)

PyTorch On Angel 是 Angel 3.0 新增的特性,它主要是為了解決大規(guī)模圖表示學(xué)習(xí)和深度學(xué)習(xí)模型訓(xùn)練問題。

在過去幾年時(shí)間,圖卷積神經(jīng)網(wǎng)絡(luò)(GNN)快速發(fā)展,一系列的研究論文以及相關(guān)的算法問世:例如 GCN,GraphSAGE 和 GAT 等,研究和測試結(jié)果表明,它們能夠比傳統(tǒng)圖表示學(xué)習(xí)更好的抽取圖特征。騰訊擁有龐大的社交網(wǎng)絡(luò)(QQ 和微信),同時(shí)擁有大量對圖數(shù)據(jù)進(jìn)行分析的需求,而圖表示學(xué)習(xí)正是這些分析的基礎(chǔ),因此騰訊內(nèi)部對 GNN 有著強(qiáng)烈的需求,這也是我們開發(fā) PyTorch On Angel 的主要原因之一。

大規(guī)模圖的表示學(xué)習(xí)面臨著兩個(gè)主要的挑戰(zhàn):第一個(gè)挑戰(zhàn)來自于超大規(guī)模圖結(jié)構(gòu)的存儲以及訪問,這要求系統(tǒng)不僅能存得下,還需要提供高效的訪問接口,例如需要提供高效的訪問任意節(jié)點(diǎn)的兩跳鄰居的接口;第二個(gè)挑戰(zhàn)來自于 GNN 計(jì)算過程,它需要有高效的自動(dòng)求導(dǎo)模塊。

通過對 Angel 自身狀況以及對業(yè)界已有系統(tǒng)的分析,我們得到如下結(jié)論:

TensorFlow 和 PyTorch 擁有高效的自動(dòng)求導(dǎo)模塊,但是它們不擅長處理高維度模型和稀疏數(shù)據(jù)

Angel 擅長處理高維度模型和稀疏數(shù)據(jù),雖然 Angel 自研的計(jì)算圖框架(MLcore)也可以自動(dòng)求導(dǎo),但是在效率和功能完整性上卻不及 TensorFlow 和 PyTorch,無法滿足 GNN 的要求

為了將兩者的優(yōu)勢結(jié)合起來,我們基于 Angel PS 開發(fā)了 PyTorch On Angel 平臺,基本思路是使用 Angel PS 來存儲大模型,使用 Spark 來作為 PyTorch 的分布式調(diào)度平臺,也就是在在 Spark 的 Executor 中調(diào)用 PyTorch 來完成計(jì)算。

PyTorch On Angel 的架構(gòu)如圖 12 所示:

 

 

圖 12 PyTorch On Angel 系統(tǒng)架構(gòu)

PyTorch On Angel 擁有 3 個(gè)主要的組件:

Angel PS:存儲模型參數(shù),圖結(jié)構(gòu)信息和節(jié)點(diǎn)特征等,并且提供模型參數(shù)和圖相關(guān)數(shù)據(jù)結(jié)構(gòu)的訪問接口,例如需要提供兩跳鄰接訪問接口

Spark Driver:中央控制節(jié)點(diǎn),負(fù)責(zé)計(jì)算任務(wù)的調(diào)度和一些全局的控制功能,例如發(fā)起創(chuàng)建矩陣,初始化模型,保存模型,寫 checkpoint 以及恢復(fù)模型命令

Spark Worker:讀取計(jì)算數(shù)據(jù),同時(shí)從 PS 上拉取模型參數(shù)和網(wǎng)絡(luò)結(jié)構(gòu)等信息,然后將這些訓(xùn)練數(shù)據(jù)參數(shù)和網(wǎng)絡(luò)結(jié)構(gòu)傳給 PyTorch,PyTorch 負(fù)責(zé)具體的計(jì)算并且返回梯度,最后 Spark Worker 將梯度推送到 PS 更新模型

當(dāng)然,這些細(xì)節(jié)都是封裝好的,算法開發(fā)人員和用戶并不需要了解。在 PyTorch On Angel 平臺上開發(fā)新算法,只需要關(guān)注算法邏輯即可,與開發(fā)單機(jī)的 PyTorch 算法并沒有太大區(qū)別。下面給出一個(gè) 2 層 GCN 算法的實(shí)現(xiàn)例子:

 

 

圖 13 在 PyTorch On Angel 上實(shí)現(xiàn) GCN 的例子

算法開發(fā)完成后,將代碼保存為 pt 文件,然后將 pt 文件提交給 PyTorch On Angel 平臺就可以實(shí)現(xiàn)分布式訓(xùn)練了。

我們已經(jīng)在 PyTorch On Angel 上實(shí)現(xiàn)了許多算法:包括推薦領(lǐng)域常見的算法(FM,DeepFM,Wide & Deep,xDeepFM,AttentionFM, DCN 和 PNN 等)和 GNN 算法(GCN 和 GraphSAGE)。在后續(xù)的版本迭代中,我們將會進(jìn)一步豐富 PyTorch On Angel 的算法庫。

由于結(jié)合了 PyTorch 和 Angel 的優(yōu)點(diǎn),PyTorch On Angel 在算法性能方面有很大的優(yōu)勢:對于推薦領(lǐng)域常見的深度學(xué)習(xí)算法,性能可以達(dá)到 TensorFlow 的 4 倍以上;對于 GNN 算法,性能也遠(yuǎn)好于目前業(yè)界開源的同類型平臺(具體的性能數(shù)據(jù)會在開源社區(qū)陸續(xù)公開)。下圖是在公開的數(shù)據(jù)集 criteo kaggle2014(4500 萬訓(xùn)練樣本,100w 特征) 上做的對比測試:

 

 

圖 14 PyTorch On Angel 和 TensorFlow 性能對比測試

除了性能方面的優(yōu)勢,PyTorch On Angel 還有一個(gè)比較大的優(yōu)勢就是易用性好。如圖 12 所示:PyTorch 運(yùn)行在 Spark 的 Executor 中,可以實(shí)現(xiàn) Spark 圖數(shù)據(jù)預(yù)處理和 PyTorch 模型訓(xùn)練的無縫對接,在一個(gè)程序中完成整個(gè)計(jì)算過程。

自動(dòng)超參數(shù)調(diào)節(jié)

傳統(tǒng)超參數(shù)調(diào)節(jié)的方式有兩種(如圖 15 所示):

網(wǎng)格搜索:網(wǎng)格搜索將整個(gè)搜索空間切分為網(wǎng)格,假設(shè)超參數(shù)是同等重要的。這種方式雖然直觀,但有兩個(gè)明顯的缺點(diǎn):1)計(jì)算代價(jià)隨參數(shù)數(shù)量的增長而呈指數(shù)增長;2)超參數(shù)的重要程度常常是不同的,網(wǎng)格搜索可能會花費(fèi)太多精力來優(yōu)化不太重要的超參數(shù)

隨機(jī)搜索:隨機(jī)采樣超參數(shù)組合,并評估抽樣組合。雖然這種方法有可能關(guān)注更重要的超參數(shù),但是仍無法保證找到最佳組合

 

 

圖 15 網(wǎng)格搜索和隨機(jī)搜索

貝葉斯優(yōu)化與傳統(tǒng)的無模型方法不同,使用計(jì)算成本較低的代理函數(shù)(surrogate function)來近似原始目標(biāo)函數(shù)。在貝葉斯優(yōu)化中,代理函數(shù)生成超參數(shù)組合的概率均值和方差。然后,效用函數(shù)(acquisition function)將評估超參數(shù)組合的預(yù)期損失或改進(jìn)。這樣的概率解釋方法使貝葉斯優(yōu)化能夠使用少得多的開銷找到目標(biāo)函數(shù)的較優(yōu)解。

Angel 3.0 包括傳統(tǒng)的兩種方法和貝葉斯算法優(yōu)化。對貝葉斯優(yōu)化,Angel 實(shí)現(xiàn)了以下的功能:

代理函數(shù)。除了常用的兩種模型(高斯過程和隨機(jī)森林),也實(shí)現(xiàn)了 EM + LBFGS 優(yōu)化高斯過程內(nèi)核函數(shù)中的超參數(shù)

效用函數(shù):實(shí)現(xiàn)了 PI(Probability of improvement),EI(Expected Improvement)和 UCB(Upper Confidence Bound)

由于每次評估目標(biāo)函數(shù)的計(jì)算開銷可能較大,如果觀察到候選的超參數(shù)組合在開始的若干輪迭代中表現(xiàn)不佳,可以提前停止這些候選超參數(shù)組合。Angel 3.0 版本中實(shí)現(xiàn)了這種早停策略。

表 2 是在邏輯回歸算法的實(shí)驗(yàn),調(diào)節(jié)的超參數(shù)是學(xué)習(xí)速度和學(xué)習(xí)速度衰減率,結(jié)果顯示貝葉斯優(yōu)化的性能優(yōu)于隨機(jī)搜索和網(wǎng)格搜索,而隨機(jī)搜索的結(jié)果略優(yōu)于網(wǎng)格搜索

 

表 2 不同超參數(shù)自動(dòng)條件方法的效果對比

 

Angel Serving

為了滿足在生產(chǎn)環(huán)境中高效地進(jìn)行模型服務(wù)的需求,我們在 Angel 3.0 中實(shí)現(xiàn)了 Angel Serving 子系統(tǒng),它是一個(gè)可拓展性強(qiáng)、高性能的機(jī)器學(xué)習(xí)模型服務(wù)系統(tǒng),是全棧式機(jī)器學(xué)習(xí)平臺 Angel 的上層服務(wù)入口,使 Angel 生態(tài)能夠形成閉環(huán)。圖 16 展示了 Angel Serving 的架構(gòu)設(shè)計(jì)。

 

 

圖 16 Angel Serving 架構(gòu)

Angel Serving 主要特征包括:1)支持多種類型的 API 訪問服務(wù),包括 gRPC 和 Restful 接口;2)Angel Serving 是一個(gè)通用的機(jī)器學(xué)習(xí)服務(wù)框架,可插拔機(jī)制設(shè)計(jì)使得來自其他第三方機(jī)器學(xué)習(xí)平臺的模型可以很容易使用 Angel Serving 來服務(wù),目前已經(jīng)支持三種平臺的模型:Angel,PyTorch 和支持 PMML 模型格式的平臺(Spark、XGBoost 等);3)受 TensorFlow Serving 的啟發(fā),Angel Serving 還提供細(xì)粒度版本控制策略:包括使用模型的最早,最新以及指定版本進(jìn)行服務(wù);4)Angel Serving 還提供豐富的的模型服務(wù)監(jiān)控指標(biāo),包括:

QPS: 每秒請求數(shù)
總的請求數(shù)以及成功請求總數(shù)
請求的響應(yīng)時(shí)間分布
平均響應(yīng)時(shí)間

 

表 3 Angel Serving 和 Tensorflow Serving 性能對比

表 3 展示了 Angel Serving 和 TensorFlow Serving 性能對比結(jié)果,我們使用具有 100 萬個(gè)特征的 DeepFM 模型,向服務(wù)發(fā)送 100,000 個(gè)預(yù)測請求。 Angel Serving 和 TensorFlow Serving 的總耗時(shí)分別為 56 秒和 59 秒。兩個(gè)服務(wù)系統(tǒng)的平均響應(yīng)時(shí)間都為 2 毫秒。Angel Serving 的 QPS 是 1,900,而 TensorFlow Serving 的 QPS 是 1,800。上述結(jié)果表明 Angel Serving 與 TensorFlow Serving 性能相當(dāng),甚至更好。

案例一:騰訊短視頻推薦

 

 

圖 17 短視頻推薦數(shù)據(jù)處理流程

上圖所示是騰訊短視頻部門的一個(gè)使用案例。用戶的視頻播放日志和上下文信息被實(shí)時(shí)轉(zhuǎn)發(fā)給 Kafka,流數(shù)據(jù)引擎 Storm 訂閱 Kafka 的數(shù)據(jù)。Storm 是一個(gè)實(shí)時(shí)的特征生成器,它從一個(gè)離線的 key-value 存儲中獲得用戶畫像和視頻信息,將兩者拼接起來生成特征。生成的特征被傳輸?shù)皆诰訓(xùn)練系統(tǒng)中來更新在線模型;同時(shí),這些特征也被轉(zhuǎn)存到 HDFS 作為離線訓(xùn)練的輸入。離線模型通常用來初始化在線訓(xùn)練系統(tǒng),當(dāng)出現(xiàn)異常時(shí),離線模型還可以用來重置在線系統(tǒng)。本案例用到的推薦算法是 FM,訓(xùn)練樣本 24 億條,特征維度為 63611,在 Spark 上訓(xùn)練耗時(shí) 10 多個(gè)小時(shí),應(yīng)用 Angel 后減少至 1 小時(shí)。

案例二:金融反欺詐

 

 

圖 18 金融反欺詐數(shù)據(jù)處理流程

金融欺詐檢測是大規(guī)模圖學(xué)習(xí)的常見案例,其網(wǎng)絡(luò)數(shù)據(jù)是異構(gòu)的,包含幾種不同類型的邊:

交易關(guān)系: 用戶 A 和用戶 B 之間如存在交易關(guān)系表明他們之間曾出現(xiàn)過交易行為

設(shè)備關(guān)系:用戶 A 和用戶 B 之間如存在設(shè)備關(guān)系表明他們曾共享過同一個(gè)設(shè)備

Wi-Fi 關(guān)系:用戶 A 和用戶 B 之間如存在 Wi-Fi 關(guān)系表明他們曾通過一個(gè) Wi-Fi 連接到互聯(lián)網(wǎng)

金融詐騙者通常共享設(shè)備和 Wi-Fi,通過擴(kuò)展邊緣關(guān)系生成社區(qū)。Angel 上的 fast unfolding 算法可以有效地發(fā)現(xiàn)這些社區(qū)。下游的欺詐風(fēng)險(xiǎn)模型可以將這些社區(qū)的用戶畫像和網(wǎng)絡(luò)特征作為輸入來學(xué)習(xí)和推到反欺詐策略。該圖數(shù)據(jù)包含 15 億個(gè)節(jié)點(diǎn)和 200 億條邊,基于 Spark GraphX 的實(shí)現(xiàn)耗時(shí) 20 小時(shí),而 Angel 僅需 5 小時(shí)。

小結(jié)

本文主要介紹了 Angel 在騰訊內(nèi)外的使用情況和 3.0 版本的新特性。

Angel 在騰訊內(nèi)外的使用情況:

騰訊內(nèi)部:用戶數(shù)和任務(wù)數(shù)增加 1.5 倍

騰訊外部:超過 100 多家公司和機(jī)構(gòu)使用 Angel

開源貢獻(xiàn):4200 多個(gè) star, 8 個(gè)子項(xiàng)目,1100 多個(gè) fork,2000 多次 commits

Angel 3.0 新特性:

自動(dòng)特征工程:新增特征選擇和組合方法,將特征合成、選擇和重新索引以 pipeline 的形式呈現(xiàn),用來迭代生成高階合成特征

新的計(jì)算引擎:

SONA(加強(qiáng)): 特征工程支持索引為 Long 類型的向量;所有的算法被封裝成 Spark 風(fēng)格的 APIs;SONA 上的算法可以作為 Spark 的補(bǔ)充

PyTONA(新):PyTONA 作為圖學(xué)習(xí)算法的引擎被引入,目前支持 GCN 和 GraphSage,同時(shí)也支持推薦領(lǐng)域的算法。PyTONA 采用 Python 作為交互,因此是用戶友好的

自動(dòng)機(jī)器學(xué)習(xí):Angel3.0 引入了 3 種超參數(shù)調(diào)節(jié)算法:網(wǎng)格搜索、隨機(jī)搜索和貝葉斯優(yōu)化

Angel 模型服務(wù):Angel 提供一個(gè)跨平臺的模型服務(wù)框架,支持 Angel、PyTorch 和 Spark 的模型,性能上與 TensorFlow Serving 相當(dāng)

支持 Kubernetes:Angel3.0 支持 Kubernetes,從而可以在云上運(yùn)行

標(biāo)簽: 機(jī)器學(xué)習(xí) 大數(shù)據(jù)技術(shù)

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:面向中級 Python 開發(fā)人員的 13 個(gè)項(xiàng)目構(gòu)想

下一篇:7個(gè)原因告訴你數(shù)據(jù)科學(xué)家為什么“供不應(yīng)求”