一站式機(jī)器學(xué)習(xí)平臺(tái)Deepthought的建設(shè)與初探

發(fā)展起源

愛奇藝除了在音視頻、推薦等深度學(xué)習(xí)的AI應(yīng)用以外,也有不少數(shù)據(jù)挖掘、數(shù)據(jù)分析的傳統(tǒng)機(jī)器學(xué)習(xí)應(yīng)用場景,例如用戶預(yù)測、風(fēng)控等。傳統(tǒng)的研發(fā)模式的痛點(diǎn),就是會(huì)給算法人員和業(yè)務(wù)人員一些不便利,具體如下:

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),雄縣企業(yè)網(wǎng)站建設(shè),雄縣品牌網(wǎng)站建設(shè),網(wǎng)站定制,雄縣網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,雄縣網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

1. 用戶代碼基于單機(jī)腳本實(shí)現(xiàn),處理環(huán)節(jié)長、耦合高,難以修改和擴(kuò)展,長久以來可讀性降低;

2. 同一業(yè)務(wù)下多個(gè)場景、同一場景下多個(gè)模型,在數(shù)據(jù)處理、模型訓(xùn)練等技術(shù)流程上類似,場景重復(fù)步驟和數(shù)據(jù)結(jié)果難以重復(fù)利用;

3. 場景不同導(dǎo)致存在周期訓(xùn)練、定時(shí)預(yù)估、實(shí)時(shí)預(yù)估等需求,對(duì)業(yè)務(wù)人員和算法人員的代碼要求高,維護(hù)成本高;

4. 算法人員和業(yè)務(wù)人員對(duì)分布式機(jī)器學(xué)習(xí)的開發(fā)存在技術(shù)壁壘,導(dǎo)致數(shù)據(jù)量和模型復(fù)雜度受單機(jī)資源限制;

基于以上痛點(diǎn),愛奇藝開發(fā)了面向通用的機(jī)器學(xué)習(xí)場景的一站式機(jī)器學(xué)習(xí)平臺(tái)Deepthought,可實(shí)現(xiàn)可視化交互,能更加直觀便捷的搭建適合業(yè)務(wù)場景需要的架構(gòu),以及實(shí)時(shí)預(yù)估服務(wù),是算法模型部署至實(shí)際業(yè)務(wù)的重要環(huán)節(jié)。

業(yè)務(wù)需求

Deepthought在開發(fā)之初即考慮了以下基本業(yè)務(wù)需求:

1. 核心算法基于分布式機(jī)器學(xué)習(xí)框架封裝,以開源封裝為主、自研實(shí)現(xiàn)為輔,滿足快速上線基本算法需求;

2. 對(duì)于機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘各個(gè)環(huán)節(jié)解耦,滿足不同環(huán)節(jié)的輸出結(jié)果可復(fù)用;

3. 與大數(shù)據(jù)平臺(tái)通天塔深度融合,利用通天塔管理的項(xiàng)目、數(shù)據(jù)、調(diào)度實(shí)現(xiàn)機(jī)器學(xué)習(xí)任務(wù)的在線、離線場景的執(zhí)行;

4. 減輕用戶代碼開發(fā)壓力,通過可視化交互和配置方式,實(shí)現(xiàn)機(jī)器學(xué)習(xí)任務(wù)的編排,提升算法模型搭建效率。

總體架構(gòu)與發(fā)展歷史
Deepthought至今已迭代到3.0版,具體詳情如下:
  • Deepthought v1.0版,面向具體業(yè)務(wù)的機(jī)器學(xué)習(xí)平臺(tái)

屬于反作弊業(yè)務(wù)使用的機(jī)器學(xué)習(xí)平臺(tái),主要將反作弊業(yè)務(wù)中的機(jī)器學(xué)習(xí)流程各個(gè)階段解耦合,同時(shí)管理反作弊業(yè)務(wù)中的業(yè)務(wù)數(shù)據(jù),例如黑名單、樣本、特征管理。Deepthought v1架構(gòu)如下圖所示。

一站式機(jī)器學(xué)習(xí)平臺(tái)Deepthought的建設(shè)與初探

Deepthought基于Spark ML/MLLib封裝了業(yè)務(wù)常用二分類模型,以及常用數(shù)據(jù)預(yù)處理過程,例如缺失值填充、歸一化等。

Deepthought v1更多工作在特征管理和數(shù)據(jù)配置中,更加偏向反作弊本身的業(yè)務(wù)。在v1對(duì)Spark的封裝和流程解耦串式調(diào)度執(zhí)行的方式在后續(xù)Deepthought版本中繼承了下來。
  • Deepthoughtv2.0版,面向通用業(yè)務(wù)的機(jī)器學(xué)習(xí)平臺(tái)
在v1.0的經(jīng)驗(yàn)基礎(chǔ)上做了通用化改進(jìn),通過組件化替代配置化,實(shí)現(xiàn)了常見的機(jī)器學(xué)習(xí)需求,例如自動(dòng)調(diào)參;繼承了v1核心實(shí)現(xiàn)的思路,把機(jī)器學(xué)習(xí)通用流程保留下來,并借鑒業(yè)界成熟的用戶體驗(yàn)方式,對(duì)整體系統(tǒng)進(jìn)行重構(gòu)。主要更新如下:
組件化管理和調(diào)度

所有數(shù)據(jù)處理和算法執(zhí)行通過組件的方式管理和調(diào)度。算法的擴(kuò)展除了核心邏輯和調(diào)度腳本外,所有組件信息和配置項(xiàng)都可通過后臺(tái)配置管理完成,前端交互時(shí)動(dòng)態(tài)渲染組件的所有配置信息。

算法擴(kuò)充

在v2我們持續(xù)增加了多個(gè)機(jī)器學(xué)習(xí)算法,其中包括監(jiān)督學(xué)習(xí)二分類、多分類、回歸算法,非監(jiān)督學(xué)習(xí)的聚類、圖類算法,多種數(shù)據(jù)預(yù)處理算法以及多種算法評(píng)估和數(shù)據(jù)分析可視化組件,基本滿足傳統(tǒng)機(jī)器學(xué)習(xí)所有場景的需要。

可視化交互

每一個(gè)機(jī)器學(xué)習(xí)的步驟,以組件的方式管理和使用。用戶通過對(duì)組件的拖拉拽方式的交互操作,能更加直觀便捷的搭建適合業(yè)務(wù)場景需要的架構(gòu),可實(shí)現(xiàn)的業(yè)務(wù)場景也更加靈活開放。另外,前端也提供了一系列標(biāo)注化的報(bào)表控件,系統(tǒng)即時(shí)讀取的報(bào)表數(shù)據(jù)可動(dòng)態(tài)渲染成可視化報(bào)表。

離線定時(shí)調(diào)度任務(wù)

與大數(shù)據(jù)平臺(tái)通天塔權(quán)限打通,通過大數(shù)據(jù)平臺(tái)通天塔讀取Deepthought任務(wù)信息并進(jìn)行調(diào)度,實(shí)現(xiàn)任務(wù)的定時(shí)預(yù)測的場景。

Deepthought v2架構(gòu)如下圖所示。

一站式機(jī)器學(xué)習(xí)平臺(tái)Deepthought的建設(shè)與初探
  • Deepthoughtv3.0版,支持實(shí)時(shí)預(yù)估服務(wù)

v3在v2基礎(chǔ)上進(jìn)行了功能擴(kuò)充,在v3中Deepthought支持了自動(dòng)調(diào)參和實(shí)時(shí)預(yù)估服務(wù),并且對(duì)超大規(guī)模數(shù)據(jù)和模型,支持參數(shù)服務(wù)器訓(xùn)練。

自動(dòng)調(diào)參

v2實(shí)現(xiàn)了自動(dòng)調(diào)參的功能,可通過多種調(diào)參算法,對(duì)多個(gè)參數(shù)進(jìn)行優(yōu)化組合、并行訓(xùn)練,最終找出最優(yōu)評(píng)估效果的參數(shù)組合和最優(yōu)模型。通過自動(dòng)執(zhí)行重復(fù)性任務(wù)提高用戶工作效率,使得用戶更多關(guān)注問題,而不是模型。

已經(jīng)實(shí)現(xiàn)的調(diào)參方式包括隨機(jī)搜索、網(wǎng)格搜索、貝葉斯優(yōu)化和進(jìn)化算法。

實(shí)時(shí)預(yù)估

實(shí)時(shí)預(yù)估服務(wù)是算法模型部署至實(shí)際業(yè)務(wù)的重要環(huán)節(jié),v3已經(jīng)實(shí)現(xiàn)了多個(gè)常用模型的實(shí)時(shí)預(yù)估功能,并支持HTTP、RPC兩種協(xié)議。
實(shí)時(shí)預(yù)估服務(wù)通過QAE加載預(yù)估核心代碼,并通過Skywalker/Dubbo發(fā)布HTTP/RPC服務(wù),并通過Hubble、Venus接入日志監(jiān)控。
核心代碼通過初始化加載預(yù)處理模塊,讀取模型后,開始監(jiān)聽服務(wù)端口。為了最大化利用計(jì)算資源,降低預(yù)估時(shí)長,預(yù)測采用線程池+流水線方式,對(duì)單條請(qǐng)求多行數(shù)據(jù)拆分處理。

參數(shù)服務(wù)器

由于一些內(nèi)在原因,在基于Spark的機(jī)器學(xué)習(xí)無法支撐百萬級(jí)以上維度、億級(jí)以上行數(shù)的超大規(guī)模數(shù)據(jù)訓(xùn)練。業(yè)界通過參數(shù)服務(wù)器解決了超大規(guī)模數(shù)據(jù)訓(xùn)練的問題。v3集成了開源參數(shù)服務(wù)器,并在此基礎(chǔ)上實(shí)現(xiàn)了部分常用模型的參數(shù)服務(wù)器版本。

Deepthought v3架構(gòu)如下圖所示。

一站式機(jī)器學(xué)習(xí)平臺(tái)Deepthought的建設(shè)與初探

部分核心實(shí)現(xiàn)與封裝

下文將對(duì)平臺(tái)部分核心功能的實(shí)現(xiàn)和封裝簡要介紹。

Spark ML/MLLib封裝

Deepthought中算法組件基于spark原生ml/mllib包進(jìn)行封裝和改進(jìn),在繼承了其并行計(jì)算、通道流式處理等優(yōu)點(diǎn)之外,還加入一系列提供用戶易用性的功能,同時(shí)增加了一些原生包中不存在的算法。

例如gbdt編碼算法。gbdt作為一個(gè)應(yīng)用廣泛的機(jī)器學(xué)習(xí)基礎(chǔ)算法,不僅可用在分類、回歸上,還可以用在特征構(gòu)造上。通過訓(xùn)練好的gbdt模型,可對(duì)原始數(shù)據(jù)進(jìn)行離散化,最終輸出為類似于one-hot的形式,從而將輸出數(shù)據(jù)灌入fm,lr等模型進(jìn)行進(jìn)一步的訓(xùn)練使用。
在Deepthought中,通過將ml中g(shù)bdt存儲(chǔ)功能優(yōu)化,將每個(gè)樹詳情進(jìn)行存儲(chǔ)。在gbdt編碼組件中,通過訓(xùn)練好的gbdt模型和樹詳情,重構(gòu)多棵樹并為每棵樹葉子節(jié)點(diǎn)進(jìn)行編碼。最終將數(shù)據(jù)并行灌入所有的樹,并將最后結(jié)果拼接,從而得到對(duì)應(yīng)的編碼結(jié)果。
Deepthought在滿足常用性的模型的基礎(chǔ),豐富更多的模型,可以讓用戶在業(yè)務(wù)模型的構(gòu)建上有更多的選擇,從而豐富了平臺(tái)的功能性。
數(shù)據(jù)預(yù)處理

Deepthought不僅僅是對(duì)Spark ML/MLLib做了封裝,也有很多基于實(shí)際業(yè)務(wù)和平臺(tái)化的開發(fā)。為了擴(kuò)展和優(yōu)化Deepthought的功能,Deepthought增加了數(shù)據(jù)預(yù)處理組件以及訓(xùn)練組件中的標(biāo)簽自動(dòng)轉(zhuǎn)換功能。

用戶可以通過在通過拖動(dòng)不同的預(yù)處理組件,Deepthought會(huì)根據(jù)其選擇的組件生成滿足用戶需求的可使用數(shù)據(jù),比如分層抽樣、數(shù)據(jù)壓縮、數(shù)據(jù)編碼等。
為方便用戶,deepthough所有組件中都擁有標(biāo)簽自動(dòng)轉(zhuǎn)換功能,Deepthought會(huì)對(duì)輸入標(biāo)簽進(jìn)行map映射,根據(jù)標(biāo)簽中各個(gè)標(biāo)簽個(gè)數(shù)分別映射為從0開始的轉(zhuǎn)換標(biāo)簽,并將該map保存,從而使得預(yù)測組件保持一致,并且最終原樣輸出標(biāo)簽。

loss實(shí)時(shí)輸出原理

一個(gè)良好的可用的機(jī)器學(xué)習(xí)模型,需要經(jīng)過算法工程師不斷的調(diào)優(yōu)、嘗試;而模型的調(diào)優(yōu)需要花費(fèi)大量的時(shí)間和精力。

損失函數(shù)(loss function)在機(jī)器學(xué)習(xí)應(yīng)用中,作為學(xué)習(xí)準(zhǔn)則與優(yōu)化問題相聯(lián)系,即通過最小化損失函數(shù)求解和評(píng)估模型。而每一次迭代損失函數(shù)值的變化,預(yù)示著模型的與目標(biāo)的距離變化。損失函數(shù)曲線及l(fā)oss曲線,代表著模型訓(xùn)練的收斂速度,算法工程師可以通過曲線判別模型的損失函數(shù)、超參等設(shè)置是否合理,決定是否在中途停止模型訓(xùn)練,從而節(jié)約調(diào)優(yōu)時(shí)間,提升模型訓(xùn)練效率。
Deepthought平臺(tái)算法組件是基于spark中ml和mllib兩個(gè)庫改進(jìn)封裝,而loss曲線輸出功能在兩個(gè)庫中并未提供。Deepthought為了使用戶在訓(xùn)練時(shí)能同步查看loss曲線(類似于tensorflow),基于spark消息通信和事件總線的方式,為算法組件增加loss值輸出功能,從而實(shí)現(xiàn)了loss曲線的同步顯示功能。
實(shí)時(shí)預(yù)估熱加載改造

用戶在線上使用模型實(shí)時(shí)預(yù)估的過程中,需要定期使用新訓(xùn)練的模型替換舊模型。在實(shí)時(shí)預(yù)估服務(wù)的早期版本中,預(yù)估服務(wù)代碼在加載到QAE后,通過初始化一次性加載模型到內(nèi)存里。

這就導(dǎo)致如果需要更新模型時(shí),我們需要通過kill QAE實(shí)例,逐漸替換QAE達(dá)到新模型替換舊模型的效果。這種方式存在缺陷是:

1. 用戶對(duì)切換過程不可知,無法追蹤某次響應(yīng)具體是舊模型或新模型的預(yù)測結(jié)果;

2. 由于RPC是長連接,KILL一個(gè)QAE實(shí)例后會(huì)導(dǎo)致當(dāng)前實(shí)例中的所有鏈接中斷。過程雖然短暫,但仍然會(huì)造成一定的請(qǐng)求抖動(dòng)。

通過對(duì)已有服務(wù)進(jìn)行熱加載改造,實(shí)現(xiàn)了模型熱加載,并可支持同一QAE實(shí)例下多模型共享資源,以及支持用戶顯式選擇指定版本訪問服務(wù)。
剝離HTTP和RPC框架本身后,我們將通用服務(wù)封裝成模型預(yù)測服務(wù),提供預(yù)測通用預(yù)測接口和管理接口(加載模型和查看模型)。被加載的模型封裝成對(duì)象,存放在全局對(duì)象池中。預(yù)測服務(wù)內(nèi)提供模型路由功能,通過解析用戶請(qǐng)求,檢測用戶是否顯式訪問指定模型和指定版本。如果用戶不顯式請(qǐng)求,路由器會(huì)指向?qū)ο蟪刂械淖钚掳姹菊{(diào)用預(yù)估服務(wù)。

目前應(yīng)用和后續(xù)工作

目前應(yīng)用簡介

目前Deepthought已被流量反作弊、用戶行為分析、愛奇藝號(hào)、文學(xué)等多個(gè)團(tuán)隊(duì)使用。下文簡要介紹目前已在Deepthought開展業(yè)務(wù)的一些典型場景。

流量反作弊業(yè)務(wù)

目前流量反作弊業(yè)務(wù)已全線使用Deepthought進(jìn)行模型訓(xùn)練和離線預(yù)測。

通過Deepthought提供的一些數(shù)據(jù)挖掘工具,例如kmeans聚類和孤立森林異常檢測,反作弊同學(xué)可分析出異常流量特征,通過圖分析工具,挖掘出團(tuán)伙特征?;谶@些分析結(jié)果,通過大數(shù)據(jù)平臺(tái)通天塔工作流手動(dòng)或半自動(dòng)引入到特征工程和標(biāo)簽庫。

一站式機(jī)器學(xué)習(xí)平臺(tái)Deepthought的建設(shè)與初探
在具體模型引用上,反作弊常用二分類模型,例如LR、GBDT和XGBoost,對(duì)特征數(shù)據(jù)分類。在實(shí)際應(yīng)用中,通過大數(shù)據(jù)平臺(tái)通天塔定期執(zhí)行Deepthought任務(wù),實(shí)現(xiàn)周期性模型更新和離線預(yù)測。通過Deepthought自動(dòng)調(diào)參功能自動(dòng)優(yōu)化模型超參,模型實(shí)際準(zhǔn)確率和召回率均超過97%。
一站式機(jī)器學(xué)習(xí)平臺(tái)Deepthought的建設(shè)與初探
推薦業(yè)務(wù)

Deepthought在推薦業(yè)務(wù)中也受到的廣泛的應(yīng)用和好評(píng)。

Deepthouht平臺(tái)致力于幫助推薦業(yè)務(wù)更加清晰明朗化了模型訓(xùn)練過程,使得推薦業(yè)務(wù)的小伙伴能夠更加專注于模型的選擇,業(yè)務(wù)的理解等方面。
推薦團(tuán)隊(duì)的同學(xué)可通過Deepthought平臺(tái)提供的gbdt編碼、sql自定義、lr、協(xié)同過濾、fm等算法組件,實(shí)現(xiàn)推薦模型的構(gòu)建和訓(xùn)練。

一站式機(jī)器學(xué)習(xí)平臺(tái)Deepthought的建設(shè)與初探

在整個(gè)推薦業(yè)務(wù)中,Deepthought專注于模型的訓(xùn)練,通過將大數(shù)據(jù)平臺(tái)通天塔準(zhǔn)備好的數(shù)據(jù)給入到Deepthought平臺(tái),用戶通過拉取組件的形式,構(gòu)建一系列數(shù)據(jù)預(yù)處理,數(shù)據(jù)拆分,模型訓(xùn)練、評(píng)估的流程,并在模型訓(xùn)練完備之后部署到線上,從而進(jìn)行實(shí)時(shí)的預(yù)估附。當(dāng)整套流程第一次構(gòu)建完成之后,用戶往后僅僅需要定時(shí)運(yùn)行流程,實(shí)現(xiàn)模型的更新即可。

其中g(shù)bdt編碼+fm訓(xùn)練的組合模型,是使用頻率最高的模型之一。推薦業(yè)務(wù)通過gbdt編碼將連續(xù)型數(shù)據(jù)轉(zhuǎn)換為離散型數(shù)據(jù),在與已有離散型數(shù)據(jù)進(jìn)行拼接,從而得到可用于fm模型訓(xùn)練的數(shù)據(jù)。

一站式機(jī)器學(xué)習(xí)平臺(tái)Deepthought的建設(shè)與初探

當(dāng)模型訓(xùn)練完成,Deepthought通過公眾號(hào)和郵件的方式通知用戶模型的準(zhǔn)確率、召回等詳情。當(dāng)模型確認(rèn)可用后,可通過Deepthought平臺(tái)將模型進(jìn)行實(shí)時(shí)部署,從而滿足推薦業(yè)務(wù)的實(shí)時(shí)預(yù)測需求。

除此之外,為了解決推薦業(yè)務(wù)存在過多特征組合拼接的問題,Deepthought提供了feature extract udf函數(shù),用戶可通過配置文件的方式,實(shí)現(xiàn)對(duì)原屬數(shù)據(jù)的拼接、相加、計(jì)算log等原子操作。并且Deepthought算法組件中還提供idMap映射功能,使得對(duì)數(shù)據(jù)進(jìn)行了編碼或map映射的團(tuán)隊(duì),依然可采用Deepthought平臺(tái)。
總結(jié)與后續(xù)規(guī)劃

Deepthought對(duì)大量機(jī)器學(xué)習(xí)封裝和平臺(tái)化開發(fā),使用戶可通過簡單配置和拖動(dòng)方式完成機(jī)器學(xué)習(xí)操作,協(xié)助非算法業(yè)務(wù)同學(xué)能夠輕松使用機(jī)器學(xué)習(xí),同時(shí)規(guī)范使用,大大減輕用戶在重復(fù)代碼和算法、模型管理上的工作量。同時(shí),與大數(shù)據(jù)平臺(tái)通天塔深度合作,實(shí)現(xiàn)數(shù)據(jù)開發(fā)到模型訓(xùn)練、離線、在線預(yù)測全流程閉環(huán),是大數(shù)據(jù)團(tuán)隊(duì)數(shù)據(jù)中臺(tái)重要組成部分。

Deepthought后續(xù)將繼續(xù)提高操作的便利性,系統(tǒng)穩(wěn)定性;并且會(huì)在在實(shí)時(shí)預(yù)估服務(wù)上擴(kuò)展已有模型的支持;算法層面將繼續(xù)逐步豐富模型類型,并嘗試加入深度學(xué)習(xí)模型。

分享題目:一站式機(jī)器學(xué)習(xí)平臺(tái)Deepthought的建設(shè)與初探
分享URL:http://muchs.cn/article30/gdigpo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、網(wǎng)站內(nèi)鏈、電子商務(wù)、定制開發(fā)、網(wǎng)站維護(hù)微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司