sponsored links

微博基於Flink的機器學習實踐

導讀:微博作為國內比較主流的社交媒體平臺,目前擁有2.22億日活使用者和5.16億月活使用者。如何為使用者實時推薦優質內容,背後離不開微博的大規模機器學習平臺。本文由微博機器學習研發中心高階演算法工程師於茜老師分享,主要內容包含以下四部分:

  • 關於微博
  • 微博機器學習平臺 ( WML ) 總覽
  • Flink在WML中的應用
  • 使用Flink的下一步計劃

01

關於微博

微博基於Flink的機器學習實踐

微博2008年上線,是目前國內比較主流的社交媒體平臺,擁有2.22億日活使用者和5.16億月活使用者,為使用者提供線上創作、分享和發現優質內容的服務;目前微博的大規模機器學習平臺可以支援千億引數和百萬QPS。

02

微博機器學習平臺 ( WML ) 總覽

接下來介紹一下微博機器學習平臺,即WML的總覽;機器學習平臺 ( WML ) 為CTR、多媒體等各類機器學習和深度學習演算法提供從樣本處理、模型訓練、服務部署到模型預估的一站式服務。

1. 總覽

微博基於Flink的機器學習實踐

上方是WML的一個整體架構圖,共分為六層,從下至上依次介紹:

  • 叢集層:包含離線計算叢集、線上計算叢集和高效能計算叢集;
  • 排程層:包含自研的WeiBox ( 提供使用通用的介面將任務提交到不同叢集的能力 )、Weiflow ( 提供將任務間的依賴關係處理好、組成DAG工作流的能力 ),以及常見的排程引擎Yarn和K8s;
  • 計算平臺層:包含自研的WeiLearn ( 提供給使用者在該平臺做業務開發的能力 ),以及Hadoop/Spark離線計算平臺、Flink/Storm線上計算平臺和Tensorflow機器學習平臺;
  • 模型訓練層:目前支援LR、GBDT、FM/FFM、CF/MF、DNN/RNN等主流的演算法;
  • 線上推理層:包含自研的WeiServing和WeiPS;
  • 業務應用層:主要應用場景是特徵生成、樣本服務、線上訓練和線上推理;
  • 右邊是自定義的一些概念,樣本庫、模型庫、服務庫以及兩個任務提交方式WeiClient ( CLI方式提交 )、WAIC UI ( 介面操作 )。

2. 開發模式

微博基於Flink的機器學習實踐

接下來介紹一下開發模式,有兩層DAG的設計:

  • 內層,WeiLearn層裡面可以重寫離線的Input、Process和Output方法以及實時的Source、Process和Sink方法,使用者自己開發一個UDF來實現自己的業務邏輯;內層的每一個DAG都會組成一個Task。
  • 外層,即第二層DAG層,WeiFlow層裡面將WeiLearn中產生的Task的依賴關係組成一個叢集內或者跨叢集的WorkFlow,然後執行計算。

3. CTR模型

微博基於Flink的機器學習實踐

介紹一下CTR模型在微博迭代的情況,經過幾年的研究和探索,目前支撐的引數規模達千億級,服務峰值達百萬QPS,模型更新的週期大概在10分鐘左右;現在是Weilearn6.0版本,可以看到WeiLearn在不斷完善更新自己的演算法:

  • 1.0版本僅支援LR離線學習
  • 2.0版本支援LR/GBDT/LR+GBDT離線學習
  • 3.0版本支援LR/GBDT/LR+GBDT離線學習以及Wide&Deep的深度學習
  • 4.0版本支援LR/GBDTLR+GBDT/FM/MF離線學習以及Wide&Deep的深度學習
  • 5.0版本支援Online FM/FFM線上學習,LR/GBDT/LR+GBDT/FM/MF離線學習以及Wide&Deep/DeepFM/DSSM的深度學習
  • 6.0版本更新了Online DNN模型,加強線上機器學習模型的表達能力

03

Flink在WML中的應用

下面介紹Flink在微博機器學習平臺WML中的架構

1. 概覽

微博基於Flink的機器學習實踐

上圖為實時計算平臺的整體情況,接下來詳細介紹一下各模組:

  • 基礎架構層:包含Storm叢集、Flink叢集、Flume以及用於監控系統執行的Grafana。
  • 計算層:主要是對Pig和Flink的進一步封裝,包含WeiPig + WeiStream和WeiLearn + WeiFlink;左側為實時資料來源,包含實時訊息佇列、Redis、Kafka;一些歷史資料會存到右側的HDFS中。
  • 應用層:目前這套平臺主要應用於多媒體特徵生成、內容去重、資料同步、實時特徵生成、樣本服務以及線上訓練。
  • 業務層:支撐了目前微博主要的幾個業務,包含熱門微博、關係流、影片推薦、內容監控和圖片推薦。

微博基於Flink的機器學習實踐

接下來看一下Flink在ETL的Pipeline中的概覽:之前是有兩個Pipeline,一個為線上的,以前是使用Storm進行的處理,目前正在往Flink遷移,兩套現在處於並行狀態,處理流程是從訊息佇列中獲取資料進行處理,然後給到線上訓練模組 ( Flink和Spark Streaming並行 ),最後提供模型服務給推薦系統呼叫;一個為離線的,和線上類似,首先寫入到HDFS交給Hive或Spark進行處理,再次落到HDFS中交給離線訓練使用,最後提供模型服務給推薦系統呼叫。因為有兩類ETL的Pipeline,使用不同的框架,需要維護兩套程式碼,維護成本較高。

目前做的就是將兩套融合成一套,進行批流統一的處理,此處可能會用到FlinkSQL,然後將ETL後的資料輸出到實時訊息佇列或者HDFS中,交給線上和離線模型訓練,最後提供模型服務給推薦系統呼叫。

2. 樣本服務

微博基於Flink的機器學習實踐

介紹一下樣本生成服務,上圖為該服務的整體架構圖,包含樣本資料的處理和計算等,除了一些生成的離線和實時資料外,還需要一些已經生成好的特徵的引用,透過普通計算、多流Join、深度學習等處理方式生成樣本,最後儲存到樣本庫中供模型訓練來呼叫。

微博基於Flink的機器學習實踐

這個是樣本服務任務提交的方式,可以透過之前提到的WeiClient命令列方式提交,也可以透過WAIC UI方式指定樣本ID以及UDF的class name和要拼接的特徵ID,透過一種統一的方式將作業提交到叢集上;之後是透過Twinkle或VVP的方式提交到Flink叢集,然後會對作業狀態進行管理,透過Grafana進行監控和報警,將歷史作業資訊儲存到HDFS中。

3. 多流Join

微博基於Flink的機器學習實踐

這是微博目前的一個主流場景,多資料流Join場景 ( 大部分是大於等於3 ):有N個數據源,透過過濾和對映的處理後按照Key進行分發,在Joining Window中進行join後 ( 此處後面會詳細講 ),會再進行一次過濾和對映以及新增特徵,最後輸出到樣本庫中。

微博基於Flink的機器學習實踐

接下來看一下剛剛講到的拼接視窗的實現方式,這是和業務比較相關的,對於CTR場景來說日誌有很多種 ( 多個行為日誌 ),但是到達的時間並不完全一致,比如點選這種行為日誌可能會比曝光日誌到的晚一些;這樣就會需要一個時間視窗,以10分鐘為例,如果某種日誌先到了,就會將對應的key和value儲存到State中,狀態儲存這塊是基於RocksDB和HDFS做的;經過這個十分鐘視窗之後,拼接好的樣本資料會輸到實時流中;此處基於Flink做了一些最佳化:

  • 因為視窗是10分鐘的,但是如果10分鐘內日誌資料已經全部到達,就不同等到10分鐘視窗結束後再輸出去;所以自定義了樣本trigger觸發機制,樣本拼接成功後就可以立即輸出,這樣可以減少一些時延
  • 樣本補償 PU loss;此處是基於Twitter在2019年發的一篇論文的實現方式,就是拿到正樣本之後,首先對正樣本做一個梯度下降的處理,另外可能之前有False Negative的樣本已經發送出去了,那就需要之前的樣本進行補償,所以需要對該樣本的負樣本做一個反向的梯度下降
  • 另外在RocksDB做狀態儲存這部分,引用了Gemini與RocksDB作對比,Gemini的IO效能更好一些
  • 拼接視窗時長的控制是和業務場景比較相關的,日誌到達的時間和具體的業務場景是有關係的,所以需要權衡時間視窗設定多長時間才能滿足拼接成功率的預期,這塊需要大量的離線計算和A/B Test來共同決定。

4. 多媒體特徵生成

微博基於Flink的機器學習實踐

介紹一下Flink在多媒體特徵生成場景的應用,此處主要是依賴離線計算的深度學習模型,因此整體的模型訓練走的是離線的Pipeline,將資料在離線的GPU叢集進行分散式的模型訓練,然後將模型部署到GPU上面供線上推理的時候呼叫;線上推理模組接收到圖片流、文字流和影片流這些實時資料之後,首先會透過RPC呼叫GPU上的模型,然後將多媒體特徵結果寫入到資料中臺,由業務方去讀取結果來使用,因為這塊是一個實時的任務作業,服務穩定性需要一定的保障 ( 4個9的成功率、秒級延遲、配置化開發模式 ),下面會對服務保障做詳細介紹。

微博基於Flink的機器學習實踐

針對實時任務的服務保障做了如下的工作:

  • 全鏈路監控報警&Case追蹤,針對模型服務到RPC的情況、模型關鍵指標以及樣本情況整體是有一個全流程的監控
  • 設定訊息機制是At least once,每條訊息至少要被處理一次,這樣可以保障每條資料結果都能寫到特徵工程中
  • 任何一個部分出現問題都會實現自動重啟
  • 重啟時可以從checkpoints中恢復資料和State,可以避免一些重複計算,也是為了減少一些延時
  • 所有實時任務都會起一個重試的任務,這樣在主流程中寫入失敗,會再次寫入到重試佇列中再進行一次重試的寫入,這樣保障資料會被計算兩次;如果最終還是寫入失敗,就會記錄到對賬離線系統中,這樣可以看到哪些資料是寫入失敗的,可以手動恢復一下。

04

使用Flink的下一步計劃

最後分享一下使用Fllink的下一步計劃:

1. 實時數倉

微博基於Flink的機器學習實踐

目前已經透過Flink SQL的方式實現了開發,但是實時和離線表的註冊還有元資料儲存是有一定差異的,希望可以抽象出一層API用統一的方式來進行實時和離線表的註冊以及元資料的儲存。

2. 基於Flink的DL

微博基於Flink的機器學習實踐

我們希望可以將離線的深度學習完全遷移到線上深度學習來做,這樣的話就需要用到TensorFlow on Flink,這樣就可以保證不管是模型訓練還是線上推理都可以使用同樣一套框架去完成,這樣就需要把離線訓練的全量模型也可以透過實時樣本進行增量訓練的一些校正,後面的步驟和之前基本上是保持一致的,這樣就可以將離線深度學習的這條Pipeline最佳化一些。

本次的分享就到這裡,謝謝大家。

嘉賓介紹:

於茜,微博機器學習研發中心高階演算法工程師。多年來致力於使用 Flink 構建實時資料處理和線上機器學習框架,有豐富的社交媒體應用推薦系統的開發經驗。

分享嘉賓:於茜 微博 高階演算法工程師

編輯整理:王洪達

內容來源:Flink Forward

分類: 新聞
時間: 2021-12-22

相關文章

大學裡也有“燒錢”專業,普通家庭得繞道走,學生畢業後卻很吃香

大學裡也有“燒錢”專業,普通家庭得繞道走,學生畢業後卻很吃香
專業的選擇對於高考生而言,是非常重要的一件事情,如果選對了專業,就意味著學生在畢業後能夠儘早觸及更為廣闊的天空. 但不同的專業有不一樣的發展方向,想要取得成功獲得他人的尊敬,所付出的花銷也是各不相同. ...

3位清華學霸,3年燒錢142.5億,手握1400多名科研人員至今未盈利

3位清華學霸,3年燒錢142.5億,手握1400多名科研人員至今未盈利
隨著時代的發展,越來越多的企業在人工智慧領域的涉及較深.其中有一家人工智慧企業,由3位清華學霸創始,但3年來就虧損了142.5億,作為一個企業,手底下有1400位員工,但是到至今都沒有實現盈利,是什麼 ...

阿里推出“淘菜菜”:不是社群團購,不大舉燒錢

阿里推出“淘菜菜”:不是社群團購,不大舉燒錢
與社群團購相比,淘菜菜更加依託自身平臺的流量,弱化了團長的作用 位於長沙市芙蓉區望龍小區的首家"淘菜菜小店"於9月14日正式開業.攝影:吳瓊 文 | <財經>記者 吳瓊 ...

裝修中遭遇的9個“隱形坑”,都是過來人的教訓,不但燒錢還添堵

裝修中遭遇的9個“隱形坑”,都是過來人的教訓,不但燒錢還添堵
對許多業主來說,在裝修這件事上,真是有操不完的心.明明下足了功夫,卻還是有踩不完的坑,真是讓人有苦說不出.所以今天小編要給大家分享裝修中遭遇的9個"隱形坑",基本都是裝修過來人的經 ...

被網紅帶偏的 6個家居設計,燒錢還不實用,別再被割韭菜了

被網紅帶偏的 6個家居設計,燒錢還不實用,別再被割韭菜了
在流量為王的時代,總有一些網紅博主為了博得關注,分享一些"誤導人的"家居設計,網紅家居設計看起來高階,但實際入住你就會發現就是一地雞毛. 今天就來說被網紅帶偏的 6個家居設計,燒錢 ...

欠薪、裁員、產能停滯 深陷流動性危機的寶能還要“燒錢”造車
"寶萬之爭"後,寶能集團(下稱"寶能")"財大氣粗"的形象已深入人心,但在近期,其董事長姚振華卻在惴惴不安,因為公司的流動性危機已經壓不住了 ...

兒子坑了河南首富爹,玩電競燒錢餓死爹的豬,豬圈樂視一蹶不振

兒子坑了河南首富爹,玩電競燒錢餓死爹的豬,豬圈樂視一蹶不振
文 | 華商韜略 吳蘇 吃肉不知養豬苦,連王健林都被養豬之苦"勸退",他曾公開吐槽:"蓋個十萬頭豬場要幾個億,我們建個五星級酒店才多少錢?" 王健林不願投入,河 ...

在瑞士養動物燒錢快、規矩多
◎賈淑芬 除了寵物之外,瑞士還有很多關於動物的五花八門的立法.前幾年讓瑞士人聞名世界的"龍蝦電擊法",規定在烹飪之前用電擊方式讓龍蝦先失去知覺 週二公司開會時一個同事姍姍來遲,因為 ...

養這些貓很“燒錢”,養得起的人都很牛

養這些貓很“燒錢”,養得起的人都很牛
貓咪的品種有很多,它們的購買價格不一樣,並且後期飼養花費也不一樣.養以下這些貓非常燒錢,養得起的人真的很牛,快看看有沒有你家貓貓! -01 緬因貓 參考價格:5000~1w+ 燒錢指數:★★★★ 緬因 ...

1秒花費16萬,燒錢的1130近防炮,中國航母的最後一道防線

1秒花費16萬,燒錢的1130近防炮,中國航母的最後一道防線
它是"加特林"家族最強改裝,炮聲一響耗金千兩,1分鐘打出千萬人民幣,它就是世界最強近防炮--1130近防炮. 1130近防炮裝有11根炮管,兩側各有一個彈倉,作為艦艇的最後一道防線 ...

喝茶是個燒錢的愛好——12類茶器大盤點

喝茶是個燒錢的愛好——12類茶器大盤點
喝茶的享受,一半在茶,一半在器.我國是茶文化的大國,有數千年喝茶的歷史.茶道藝術的博大精深,也體現為喝茶器具的豐富,除了大家常見的紫砂壺,還有哪些材質的器具呢?且讓我們來盤點一番,有機會不妨多嘗試幾種 ...

美團反壟斷調查的165天:王興變乖了,燒錢新業務成第二大營收支柱

美團反壟斷調查的165天:王興變乖了,燒錢新業務成第二大營收支柱
撰文 / AI財經社 周享玥 馬微冰 劉冬雪 編輯 / 孫靜 34億罰款,對美團影響多大? 罰款34.42億元!被立案調查165天后,美團反壟斷調查的靴子終於落地. 10月8日下午,國家市場監督管理總 ...

13天花費40萬,醫院裡燒錢式的治療,ICU為啥這麼貴?

13天花費40萬,醫院裡燒錢式的治療,ICU為啥這麼貴?
世界上最貴的床,是ICU裡的一張病床,任何一張五星級酒店的豪華大床,都比不上.如果有一天自己的家人不幸住進了重症監護病房,你是否有勇氣傾家蕩產付出所有? 一.只要能救活,傾家蕩產也在所不惜 13天收到 ...

住院67天花費550萬,醫院裡燒錢式的治療,ICU為啥這麼貴?

住院67天花費550萬,醫院裡燒錢式的治療,ICU為啥這麼貴?
隨著年齡的增長,我們活成了"膽小"的人,變得不敢生病.不敢死,生怕自己倒下了,錯過陪伴家人的大好時光,甚至會毀掉一個溫馨的家. 那些聽起來讓人生畏的大病,萬一中招,誤工不說,往往還 ...

3年狂燒21億,快狗打車“尷尬的悲哀”

3年狂燒21億,快狗打車“尷尬的悲哀”
快狗打車的出現也是58同城在同城物流市場中的嘗試,雖然市場競爭加劇但是一直不乏巨頭資本的加盟,但是快狗打車一路上發展總是尷尬的那一個,畢竟同城物流領域已經有老大哥貨拉拉,快狗打車暫時無法撼動大哥的地位 ...

這樣玩玉,多少錢都會被敗光

這樣玩玉,多少錢都會被敗光
隨著生活水平的不斷提高,越來越多的人愛上了收藏,其中和田玉便是一大熱門.而新手入門,因為知識和經驗的匱乏,時常收不到心儀的玉.這部分人,都有哪些誤區呢. 越多越好 "家有百萬和田玉,身無一月 ...

3年虧掉30億,5家銀行力挺下,燒出中國人工智慧獨角獸

3年虧掉30億,5家銀行力挺下,燒出中國人工智慧獨角獸
人工智慧行業正在飛速發展,國內AI廠商也開始在市場相繼嶄露頭角.其中知名度最高的公司當屬第四正規化.據悉,第四正規化是中國決策類人工智慧領域的龍頭企業,在決策類人工智慧市場上佔據著最大的份額. 而近日 ...

喬遷在即,親友明裡暗裡嘲諷這12個裝修專案!純屬給白花錢找罪受
新房裝修,既要燒錢,又要操心,最後可能還不如人意.現實中更多的業主喜歡跟風裝修,不注意細節,最後各種的後悔不已.今天,就給大家帶來裝修中最容易忽視的12大裝修錯誤敗筆,你們可別再掉坑了. 1.百葉窗簾 ...

錢白花了?五位巴薩球員表現不佳卻拿著高薪,令人羨慕

錢白花了?五位巴薩球員表現不佳卻拿著高薪,令人羨慕
"高薪"這個詞和巴塞羅那之間有著一段淵源,巴塞羅那因向球員支付過高的工資和轉會費而聞名.多年的財務管理不善終於在今年夏天讓他們陷入困境,他們被迫免費放棄了他們有史以來最好的球員梅西 ...

當中年男人決定去騎摩托

當中年男人決定去騎摩托
"雖然那輛摩托車大部分時間用來通勤,可我還是喜歡騎車的感覺.特別是下班路上,騎上摩托你就會有一種你可以去任何你想去的地方的錯覺.生活看起來就不止兩點一線了."玩摩托的L說. &qu ...