训练吞吐量提升6倍!飞桨弹性计算推荐系统套件ElasticCTR1.0发布
如今,睡前刷刷新聞、視頻已經(jīng)成了大多數(shù)人的習慣,有人認為可以適當緩解壓力、打發(fā)時間、有趣好玩, 甚至已經(jīng)成為生活中“不可或缺”的部分。
為什么大家會覺得有趣呢?這后面很大程度是“推薦系統(tǒng)”在起作用。推薦系統(tǒng)常用的一種推薦策略,就是根據(jù)用戶的歷史喜好推薦新的內容,讓用戶喜歡看,從而增加用戶粘性。
?具體是如何實現(xiàn)推薦的?
?
目前在推薦系統(tǒng)領域,應用深度學習模型來實現(xiàn)推薦,可以取得非常好的效果,是未來的發(fā)展趨勢。
以一個新聞推薦的簡單例子來看,用戶訪問 APP 時,會對推送的新聞條目點擊(正樣本)或是滑過不點擊(負樣本),這些點擊行為信息、加上用戶信息、新聞條目信息經(jīng)過特征提取以后,可以得到用戶特征和新聞特征之間的匹配度,匹配度越高說明用戶對這條新聞越感興趣。
因此再推送新的新聞時,就可以從清單中選擇匹配度最高的新聞推送給用戶。
看起來問題的處理不算復雜,但實現(xiàn)開發(fā)這樣一套推薦系統(tǒng),開發(fā)者會面臨諸多問題:
▲ 圖:推薦系統(tǒng)的Workflow
?
①??需要做繁雜的數(shù)據(jù)預處理:實際環(huán)境中數(shù)據(jù)集可能有成千上萬個特征,但并非每個條目都有所有的特征,也并非每個特征都有必要參與訓練,需要處理后才能參與訓練;同時數(shù)據(jù)集的來源是原始的日志信息,還需要做一定的格式轉換。
②??需要高速的數(shù)據(jù)集傳輸設計:推薦系統(tǒng)需要處理的日志數(shù)據(jù)非常龐大,單機或是本地文件系統(tǒng)很難作為日志數(shù)據(jù)的載體,需要有分布式的文件系統(tǒng)。而且在讀取文件的過程中,需要設計高效的機制提升數(shù)據(jù)讀寫效率和并發(fā)處理效率,多隊列并發(fā)的 IO 組件尤為重要。
③??需要復雜的分布式計算架構:龐大的數(shù)據(jù)集需要強有力的分布式訓練框架支持,而完成分布式計算的任務,開發(fā)者需要在繁雜的機器集群之間配置,既繁瑣又容易出錯 。
④??需要精細的模型加載和配送系統(tǒng):對于推薦系統(tǒng)來說,千萬甚至億級別的稀疏特征作為模型輸入十分常見,稀疏參數(shù)的規(guī)模動輒超過單機內存,因此實現(xiàn)分布式稀疏參數(shù)查詢,并且能夠對海量稀疏參數(shù)做精確裁剪、分片,是必不可少的工作。
⑤??需要吞吐量高的客戶端服務端交互:模型的部署上線難度取決于兩個方面,第一個是模型的大小,過大的模型需要做分割,分割之后的稀疏參數(shù)需要有專屬的高速KV服務器來索引;第二個是響應速度,客戶端、服務端、稀疏參數(shù)索引之間的通信應當盡可能快速高效。
?
以上每個問題,對開發(fā)者來說都是一座大山,闖過一個個關卡之后,才能打通整個推薦系統(tǒng)。
好在打怪升級的道路上并不寂寞,百度飛槳近期發(fā)布了一套彈性計算推薦系統(tǒng)套件 ElasticCTR,可實現(xiàn)端到端的推薦系統(tǒng)部署,為廣大 AI 開發(fā)者又增添一套強勁的武器裝備。
接下來我們就來了解一下 ElastcCTR 都有哪些武器裝備。
?ElasticCTR是什么?
ElasticCTR,即飛槳彈性計算推薦系統(tǒng),是基于 Kubernetes 的企業(yè)級推薦系統(tǒng)開源解決方案。
該方案融合了百度業(yè)務場景下持續(xù)打磨的高精度 CTR 模型、飛槳開源框架的大規(guī)模分布式訓練能力、工業(yè)級稀疏參數(shù)彈性調度服務,幫助用戶在 Kubernetes 環(huán)境中一鍵完成推薦系統(tǒng)部署,具備高性能、工業(yè)級部署、端到端體驗的特點,并且作為開源套件,滿足二次深度開發(fā)的需求。
?ElasticCTR有哪些特色?
1. 端到端部署套件,免去繁瑣的中間處理環(huán)節(jié),助力推薦系統(tǒng)快速上線
推薦排序的 workflow 復雜而瑣碎,開發(fā)者會面臨不同組件間難以整合的問題。
例如:HDFS 的分布式文件系統(tǒng),難以被訓練組件全內存多線程高效讀取;訓練組件產(chǎn)出模型后,由于模型中的稀疏參數(shù)體積過大,需要在部署模型時做分割處理;推理組件需要對體積過大的稀疏參數(shù)做分片存儲處理,并且還需實現(xiàn)高效的遠程調用。
因此有一套端到端的方案實現(xiàn)一站式部署,對開發(fā)者來說可以大大提升工作效率。
?
百度在推薦系統(tǒng)領域有多年的成熟經(jīng)驗,在這些經(jīng)驗的加持下,ElasticCTR 打通了端到端的部署流程,用戶只需配置好數(shù)據(jù)集,通過一個 elastic_control.sh 啟動工具,即可用簡單幾行命令,啟動高性能的分布式訓練和在線預測服務 PaddleServing 等組件。中間的繁瑣步驟、模型配送等流程都不需要額外操作。
▲?圖:ElasticCTR的Workflow示意
此外,在接下來幾個月,ElasticCTR 還將繼續(xù)完善召回、向量檢索等其他功能,也將整合更多的推薦模型,全方位的打造端到端推薦系統(tǒng)部署方案,幫助開發(fā)者快速上線推薦業(yè)務。
?
2. 彈性調度,全異步多線程分布式訓練,訓練吞吐量提升6倍
對于不同規(guī)模的數(shù)據(jù)集和訪問需求,ElasticCTR 提供了資源彈性分配機制,在保證高效的同時盡可能節(jié)省資源消耗。在實際生產(chǎn)環(huán)境下,一套分布式系統(tǒng)的搭建已經(jīng)十分繁雜,更不用說在其基礎上彈性的增減資源,而 ElasticCTR 就給出了這樣的解決方案,為開發(fā)者排憂解難。
依托?Kubernetes?的彈性分配能力,以及百度開源的各個組件對彈性調度的大力支持,用戶在訓練前配置訓練的參數(shù)服務器和訓練節(jié)點的數(shù)量等參數(shù)后,即可啟動啟動訓練。
經(jīng)驗證,使用 Criteo 數(shù)據(jù)集訓練 CTR-DNN 模型,訓練吞吐量相比同類框架可提升 6 倍。事實上,Criteo 數(shù)據(jù)集只是一個簡單的例子,在實際應用中會有更大規(guī)模的稀疏參數(shù),ElasticCTR 的訓練和部署優(yōu)勢會更加顯著。
?
▲ 圖:CTR-DNN模型訓練效果對比
3. 流式訓練,實現(xiàn)自動、分批、按時訓練和配送模型
常見的深度學習訓練方式中,通常是固定數(shù)據(jù)集進行多輪次迭代,但是在推薦系統(tǒng)中,由于日志數(shù)據(jù)的時效性,數(shù)據(jù)集需分時段加載,訓練好的模型也需按時段配送。
在實際生產(chǎn)環(huán)境中往往是分日期、分時段保存用戶點擊信息的日志,ElasticCTR 支持流式訓練方式,它的意義在于用戶可以按照自定義的時段來訓練模型,也可以監(jiān)聽存放數(shù)據(jù)集的 HDFS 上是否有增量的數(shù)據(jù)集參與訓練,訓練好的模型亦可定時增量配送。
在分布式文件系統(tǒng)上,按照一定的格式,例如 yyyyMMdd/hh 的格式將每個時間段的數(shù)據(jù)集準備好,通過配置文件指定,就可以把對應時間段里的模型全部訓練,并且按時配送。如果沒有設定終止時間,就是在線訓練,時刻等待新的數(shù)據(jù)集。
?
4. 工業(yè)級全組件開源,滿足二次深度開發(fā)訴求
ElasticCTR 采用全開源組件,滿足開發(fā)者二次深度開發(fā)的需求。在數(shù)據(jù)讀取和預處理環(huán)節(jié),采用 HDFS 的存儲,全內存多線程讀取,打破數(shù)據(jù)傳輸?shù)母鞣N可能瓶頸;在訓練環(huán)節(jié),采用飛槳核心框架的分布式訓練能力,全異步多線程分布式訓練,訓練速度可達到同類框架 6 倍之多.
在部署環(huán)節(jié),采用飛槳在線部署框架 PaddleServing 簡單易用的部署服務,并結合百度推薦場景成熟應用多年的稀疏參數(shù)索引服務 Cube,確保了超大規(guī)模模型的快速部署和高效服務.
此外,為充分利用?Kubernetes?的彈性調度和資源分配機制以增強可用性,引入了?Kubernetes?的 job 管理框架 Volcano。
?如何用ElasticCTR來搭建推薦系統(tǒng)?
接下來實戰(zhàn)演練一下 ElasticCTR。我們以 Criteo 廣告數(shù)據(jù)集為輸入,采用 ElasticCTR 構建一個完整的推薦系統(tǒng),實現(xiàn)廣告的推薦。Criteo 廣告數(shù)據(jù)集一共有 27 個維度的稀疏參數(shù),每一條樣本均有一個label來表示用戶是否點擊了這條廣告。
1. 創(chuàng)建 k8s 集群
ElasticCTR 是基于 Kubernetes(即 k8s)環(huán)境的,所以需要先創(chuàng)建 k8s 集群,這里推薦使用百度智能云容器引擎 CCE,可參考文檔百度智能云 CCE 容器引擎幫助文檔-創(chuàng)建集群?(https://cloud.baidu.com/doc/CCE/s/zjxpoqohb),其他云平臺或是自建 K8S 集群亦可部署 ElasticCTR。
在準備好 K8S 集群之后,安裝 volcano,具體步驟可參考 :
https://volcano.sh/docs/getting-started/
?
2. 克隆 ElasticCTR 代碼庫
ElasticCTR 已在 github 上開源:
git clone https://github.com/PaddlePaddle/ElasticCTR
用戶可以在操作 K8S 集群的開發(fā)機上下載代碼庫。
?
3. 準備數(shù)據(jù)集
部署一個 HDFS 集群,并在 HDFS 上存放好 Criteo 數(shù)據(jù)集。具體可參考?HDFS 配置教程。
https://github.com/PaddlePaddle/ElasticCTR/blob/master/HDFS_TUTORIAL.md
4. 執(zhí)行訓練
ElasticCTR 通過工具 elastic-control.sh 配置訓練參數(shù)和啟動訓練,只需5條命令,即可搞定訓練和部署。
sh elastic-control.sh -r ???#訓練參數(shù)配置
sh elastic-control.sh -a ???#執(zhí)行訓練
sh elastic-control.sh -l ???#查看訓練進度
sh elastic-control.sh –c ???#下載客戶端SDK
python bin/elastic_ctr.py $IP 8010 conf/slot.conf data/ctr_prediction/data.txt ???#客戶端預測
?
1)配置訓練參數(shù):
a. 在項目的 elastic-ctr-cli 文件夾下,配置 data.config 文件,指定數(shù)據(jù)集的來源。
上圖可查看 data.config 的配置信息,包含 HDFS 的地址和路徑,以及訓練的起始時間(2019年12月2日0點)和終止時間(2019年12月2日0點,只訓練一個小時的數(shù)據(jù))。
執(zhí)行如下命令,配置訓練參數(shù):
sh elastic-control.sh -r -u 4 -m 20 -t 2 -p 2 -b 2 -s slot.conf -f data.config
該命令表示在這次訓練當中啟動每個節(jié)點 4 個 CPU 20GB 的內存,2 個訓練節(jié)點,2 個參數(shù)服務器節(jié)點,2 個稀疏參數(shù)索引服務節(jié)點,特征信息存放在 slot.conf,HDFS 地址和流式訓練配置放在 data.config。
2)執(zhí)行訓練
sh elastic-control.sh -a
以上信息說明組件全部啟動成功。
3)查看訓練進度
sh elastic-control.sh -l
我們可以在上圖看到訓練結束,模型加載完成,此時就可以在客戶端進行最后的驗證了。
5. 在線預測
下載客戶端 SDK,然后執(zhí)行預測。
sh elastic-control.sh -c
python bin/elastic_ctr.py $IP 8010 conf/slot.conf data/ctr_prediction/data.txt
最終我們可以看到對于 data.txt 里的每一條樣本,模型都會給出預估結果和概率,來預測用戶是否會點擊此廣告條目。
我們在 data.txt 中存放了 100 條的數(shù)據(jù),最終預測的 AUC 約為 0.68。
?
百度的使命是用科技讓復雜的世界變簡單,而 ElasticCTR 的使命是讓推薦系統(tǒng)的開發(fā)和使用變簡單。我們也將繼續(xù)擁抱開源,博采眾長,升級并完善 ElasticCTR 的各項功能,讓推薦系統(tǒng)的工業(yè)應用更加便捷,開發(fā)者的工作更加容易。
參考鏈接
更多 ElasticCTR 的應用方法,歡迎訪問項目地址:
GitHub:?
https://github.com/PaddlePaddle/ElasticCTR
Gitee:?
https://gitee.com/paddlepaddle/elasticctr
如果您加入官方 QQ 群,您將遇上大批志同道合的深度學習同學。
官方 QQ 群:703252161。
如果您想詳細了解更多飛槳的相關內容,請參閱以下文檔。
官網(wǎng)地址:https://www.paddlepaddle.org.cn
飛槳開源框架項目地址:
GitHub:?
https://github.com/PaddlePaddle/Paddle
Gitee:??
https://gitee.com/paddlepaddle/Paddle
????
現(xiàn)在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
關于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
總結
以上是生活随笔為你收集整理的训练吞吐量提升6倍!飞桨弹性计算推荐系统套件ElasticCTR1.0发布的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 印度与美国签协议加强电池关键矿物供应链合
- 下一篇: 伊春市区单室套短租房一个月,要多少钱啊?