【應用前沿】索托斯平臺:個性化推薦變身SaaS 服務

隨著互聯網技術和人工智能的迅速發展,面對海量的數據和資源,如何快速準確地為每個用戶提供其感興趣的內容,成為我們亟待解決的問題。個性化推薦系統正是為了解決這一問題而誕生的,它能夠通過對用戶行為的分析和挖掘,為用戶提供精準、個性化的推薦服務,極大地提高了信息獲取的效率和用戶體驗,在電商、新聞資訊、視頻、音樂、閱讀等領域被廣泛應用。

然而,一套完整的個性化推薦系統建設,除了需要巨大的人力物力投入,還需要長時間的數據積累和算法調優,具有較高的使用成本,讓很多團隊望而卻步。

如何讓個性化推薦系統像 SaaS 服務一樣被低成本使用呢?360內容平臺部依托于深厚的推薦算法能力和強大的內容創作平臺,通過對推薦系統的算法和引擎平臺化,經過多個業務場景的打磨,推出了索托斯推薦平臺,為客戶提供低成本的一體化推薦服務。

46acd581f604ecd9167f6a38f63246f2.png

索托斯,以行業標準化協議,接入各個應用場景的待推薦資源和用戶的行為日志,通過自動化的數據流生產系統完成識別、標注、向量化等內容理解,通過平臺化的一系列算法模型訓練實現資源和用戶的畫像特征等數據挖掘,基于 A/B 實驗平臺和 Debug 系統,對算法模型進行自動調參,按照預定目標自我優化,給接入方提供該場景個性化推薦的最優解。

整體架構如下:

e3abb41667b59284aedbf31693d97387.png

首先是系統的標準化接入。

對于推薦系統來說,通俗地理解就是根據用戶的各種行為推測其興趣喜好,然后給用戶推薦其感興趣的資源,比如給經常看娛樂資訊的用戶推一條明星八卦。因而,用戶的行為和要推薦的資源就是推薦系統最基礎的要素,那么該如何把這兩類數據高效地接入到推薦系統呢?

對于SaaS化推薦系統,接入的推薦場景可能包括資訊、視頻、壁紙、商品、短劇等多種屬性各異的資源,不同資源的用戶行為也千差萬別。索托斯對數據接入分資源和行為做了一層標準化抽象:對于資源,定義通用屬性,數據可以通過消息隊列或文件的方式同步到推薦系統生產平臺,然后以統一的生產加工流程完成資源的審核、標注、內容理解、正排提取、倒排構建,對于不同資源類別的個性化屬性,索托斯的生產平臺以流程分支的方式支持屬性定義和處理,底層自動擴展相應的語義體系;對于用戶行為,采用日志打點上報的方式,定義通用的打點規范,指定核心提升指標,行為日志自動經過實時計算產生算法模型的輸入語料。

其次是通用算法服務。

推薦系統中,算法服務主要包括召回、排序、策略幾大類。其中召回服務通過算法模型獲取初始的數據集,然后由排序服務通過特征進行打分排序,最后由策略服務做裝屏:按資源類別和用戶畫像進行數據打散、過濾、強插等操作。具體圖示如下:

aab8816db8a6353c4736c193843dc6fc.png

在復雜的實際生產環境中,不同的算法服務依賴各自不同的語料,經過模型訓練,產生不同的結果文件,比如用戶畫像、倒排隊列、特征、向量、tag等,然后供在線服務使用,或者作為二級語料進行下一步的模型訓練。這些差異一方面會降低系統的可擴展性和復用性,另一方會增加系統的維護成本。

為了便于算法服務平臺化,我們對算法服務進行了標準化架構優化。首先是定義統一的算法模型的各種輸入語料格式和接入標準。推薦系統原始語料主要是用戶的曝光、點擊、點贊、收藏、關注等用戶行為日志和資源數據,通過Flink實時計算框架,對日志進行標準化的語料預處理生成以下幾種初始語料:按請求 id 合并的單位時間窗口內每個用戶的行為序列,資源的單位時間行為統計,用戶的點擊序列。然后,把算法服務拆分成離線和在線,在線服務提供統一協議的PB 格式數據,由推薦引擎調度;離線服務,統一數據解析規范,基于上述的初始語料,通過核心算法模型進行數據訓練,產生畫像、倒排等結果集。整體如下圖:

426418479f0efca2c3133cc1ffd01238.png

通過上述標準化處理,目前索托斯平臺集成了推薦系統核心的算法服務,其中召回服務涵蓋高熱、畫像、icf、vicf、validFilter、dssm、tagicf、berttagemblarge、tagemb、rankshare、lda 等超過20算法。這些通用算法服務在內容平臺的視頻、cube 等核心推薦場景經過充分驗證,在各類適用的場景中有顯著的效果提升,如下圖:

49631b32a77d1fdf4b48c1db0ef21a10.png

推薦系統中各個環節的實時日志處理、算法模型訓練、離線任務等,都離不開穩定的大數據計算平臺。索托斯依賴的是技術中臺提供的強大的奇麟大數據平臺,針對業務敏感的Flink實時任務,一方面虛擬化團隊從底層計算資源做隔離,通過對磁盤LVM條帶化和網絡加速等方面的優化,使得計算集群機器有極致的性能保障;另一方面系統部團隊對這種實時大規模數據處理的任務,對 Flink 進行深讀定制優化,在集群資源調度方面實現了更智能、高效的動態策略,在高可用方面提供了更加柔性、穩定的災備預案。因而,在多個團隊的鼎力支持下,索托斯的大數據底座堅如磐石。

然后是持續增長。

幾乎所有場景接入推薦服務之后,都會面臨如何持續提升數據指標的問題。索托斯從兩個方面著手,其一,提供一站式用戶分析與運營平臺,為接入方提供多維度效果分析指標數據,通過歸因分析模型挖掘用戶側、資源側潛在的優化和改進點,輔助發現業務的關鍵增長方向,科學地進行產品優化;另一方面各個算法模型向上層暴露超參,每個算法通過多個參數枚舉組合的方式,自動進行多組 A/B 實驗,根據實驗結果自動選擇最優參數放量,實現系統的自我迭代優化。

6cf13c0160de39f50ff184020c05df04.png

最后是系統自動化運維。

從安全和穩定的角度,各個接入場景的資源、服務、數據都是完全相互隔離的。每個接入場景的各類算法服務至少有20多個,眾多的接入場景的數百上千的服務,運維成了棘手的問題,因此,索托斯平臺實現了一套自動化運維系統。

對于眾多的服務,我們通過 ops 的 wonder 系統采集的基礎硬件指標數據和通用算法服務采集的業務指標數據分別進行分鐘級的分時對比、單位時間累計對比,同時參考日環比、周同比,以準確發現異常并歸因出問題,然后根據問題類型分別采取不同的自動化處理預案。比如,某個服務監測到耗時 P99上升,同時集群所有機器的 cpu利用率都同比升高,且到某個設定的閾值(比如50%),則判定集群負載高,此時自動進行彈性擴容,如果只是某臺機器異常,那則可根據這臺機器的綜合指標判斷是進程問題還是機器問題,以進行服務重啟或機器彈性替代等自動化運維動作。具體詳見下圖:

afd8b5feef2d86b39651e9fa005af92f.png

經過全方面的系統基礎能力建設,加上內容平臺核心推薦場景的不斷打磨優化,以及持續的功能迭代,目前索托斯已經具備優越的 toB 能力,并在瀏覽器畫報、鎖屏壁紙、開機小助手、衛士資訊彈窗、導航 cube、商業化小說、付費短劇、小游戲等場景接入,為各個業務帶來100%甚至更高的核心指標提升。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/161720.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/161720.shtml
英文地址,請注明出處:http://en.pswp.cn/news/161720.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[Ubuntu]RT810xE--網線已拔出--問題解決

0 環境 ubuntu 22.04.3 LTSDell Inspiron 15 5547windows/ubuntu 雙系統 1 問題說明 Dell 筆記本安裝的 Ubutun 系統,有線網絡無法使用,一直顯示 “網線已拔出”。 網上一查,才了解到主要原因:網卡驅動安裝錯誤。系統默認安裝…

5-6求1-20的階乘和

#include<stdio.h> //求階乘 int main(){int n;double sum0;//求和&#xff1a;一點一點加int t1;for (n1;n<15;n){tt*n;sumsumt;}printf("結果是&#xff1a;%22.15e \n",sum);return 0; }為啥最后是%22.15e呢&#xff1f; 因為這個求和的結果太大了 所以轉…

轉移表達式:<![CDATA[ ]]>

你是否遇到過&#xff1a;在mybatis 時我們sql是寫在xml 映射文件中&#xff0c;如果寫的sql中有一些特殊的字符的話&#xff0c;在解析xml文件的時候會被轉義&#xff0c;但我們不希望他被轉義&#xff0c;所以我們要使用<![CDATA[ ]]>來解決。 <![CDATA[ ]]> …

【譯】什么時候使用 Spring 6 JdbcClient

原文地址&#xff1a;Spring 6 JdbcClient: When and How to Use it? 一、前言 自 Spring 6.1 起&#xff0c;JdbcClient 為 JDBC 查詢和更新操作提供了統一的客戶端 API&#xff0c;從而提供了更流暢、更簡化的交互模型。本教程演示了如何在各種場景中使用 JdbcClient。 二…

【VScode】安裝配置、插件及遠程SSH連接

一、VSCode安裝 二、配置安裝插件 三、配置遠程連接SSH 四、MinGW 一、VSCode安裝 VS官網 Visual Studio Code - Code Editing. Redefined下載安裝包&#xff1a; 二、配置安裝插件 安裝中文插件 配置字體為20 配置文件–>首選項->設置->Font Size為20 設置 VSC…

【libGDX】使用Mesh繪制圓形

1 前言 使用Mesh繪制三角形 中介紹了繪制三角形的方法&#xff0c;使用Mesh繪制矩形 中介紹了繪制矩形的方法&#xff0c;本文將介紹繪制圓形的方法。 libGDX 以點、線段、三角形為圖元&#xff0c;沒有提供繪制圓形的接口。要繪制圓形邊框&#xff0c;必須通過割圓法逼近圓形&…

問題:vue2使用watch監視對象屬性,但是這個監視只執行了第一次,后面就沒反應了

錯誤版本 這個版本node.a的監視只會執行一次 data(){node:{}, }, watch:{"node.a":{handler(newVal,oldVal){console.log("node.a改變了")}}, }正確版本 這個可以正常監視node.a data(){node:{a:,}, }, watch:{"node.a":{handler(newVal,old…

macos創建xcframework及簽名

前言 Framework 可以理解為封裝了共享資源的具有層次結構的文件夾&#xff0c;共享資源可以是 nib文件、國際化字符串文件、頭文件、庫文件等等。它同時也是一個 Bundle&#xff0c;里面的內容可以通過 Bundle 相關 API 來訪問。Framework 可以是 static framework 或 dynamic…

CSS中實現元素居中的七種方法

在前端開發中&#xff0c;經常需要將元素居中顯示&#xff0c;CSS提供了多種技術方法來實現元素的居中&#xff0c;在不同場景下有不同的使用方法、不同的效果&#xff0c;需要特別記住它們的應用場景才能夠正常的居中。這篇文章就大致總結一下CSS中的居中方法。 一、元素分類…

[遞歸]有理數樹

有理數樹 題目描述 二叉樹指的是一種樹形結構&#xff0c;它的每個結點有至多兩個子節點。 現在有一個由有理數組成的無窮二叉樹形狀如下&#xff1a; 1/1______|______| |1/2 2/1___|___ ___|___| | | | 1/3 3/2 2/3 3/1在p/q結點位…

3.計算機網絡補充

2.5 HTTPS 數字簽名&#xff1a;發送端將消息使? hash 函數?成摘要&#xff0c;并使?私鑰加密后得到“數字簽名”&#xff0c;并將其附在消息之后。接收端使?公鑰對“數字簽名”解密&#xff0c;確認發送端身份&#xff0c;之后對消息使? hash 函數處理并與接收到的摘要對…

【中間件】服務化中間件理論intro

中間件middleware 內容管理 intro服務化middleware架構注冊中心intro服務治理系統intro 本文主要intro服務化中間件的探討 去年cfeng寫了一篇博客走馬觀花般闡述了Spring Cloud下面的各種中間件&#xff0c;連深入使用都談不上&#xff0c;只能說intro&#xff0c;在實際work中…

數字孿生助力污水處理升級

隨著科技的發展&#xff0c;數字孿生技術在各行各業中得到了廣泛應用。在污水處理領域&#xff0c;數字孿生技術為流程監控、效率提升、問題診斷等提供了強有力的支持。本文就借用山海鯨可視化軟件的污水處理解決方案為大家介紹數字孿生在污水處理領域的作用。 一、實時監控 …

VsCode學習

一、在VsCode 上編寫第一個C語言 在VsCode上寫代碼都是先打開文件夾&#xff0c;這樣也方便管理代碼和編譯器產生的可執行程序&#xff0c;VsCode生成的配置文件等。 1.1打開文件夾 寫代碼前&#xff0c;首先創立一個文件夾存儲以后我們寫的VsCode代碼&#xff0c;便于管理。…

SpringBoot:kaptcha生成驗證碼

GitHub項目地址&#xff1a;GitHub - penggle/kaptcha: kaptcha - A kaptcha generation engine. kaptcha介紹 kaptcha官網&#xff08;Google Code Archive - Long-term storage for Google Code Project Hosting.&#xff09;對其介紹如下&#xff0c; kaptcha十分易于安裝…

linux CentOS7.6安裝jenkins(小白版本)

前言 本人是一個前端開發者&#xff0c;由于有時候需要發版自己的東西&#xff0c;所以想搞一個Jenkins玩玩&#xff0c;看了網上好多教程&#xff0c;但是都不是針對小白的&#xff0c;比如linux怎么輸入&#xff0c;怎么結束&#xff0c;自己也是搞了好久踩了好多坑 所以記錄…

Linux(Kali\Ubuntu\CentOS\arm-Linux)安裝Powershell

文章目錄 Linux(Kali\Ubuntu\CentOS\arm-Linux)安裝Powershell啟動PowershellKaliUbuntuCentOSarm-Linux離線安裝參考鏈接 Linux(Kali\Ubuntu\CentOS\arm-Linux)安裝Powershell 啟動Powershell pwshKali apt update && apt -y install powershellUbuntu # 更新包列…

filebeat配置解析【待續】

目錄 filebeat概覽filebeat是如何工作的工作原理采集日志注冊表發送日志 容器日志采集的三種方式方式一&#xff1a;Filebeat 與 應用運行在同一容器&#xff08;不推薦&#xff09;方式二&#xff1a;Filebeat 與 應用運行不在同一容器方式三&#xff1a;通過 Kubernetes File…

oracle “ORA-25153:臨時表空間為空”

從生產上面備份出來了一個數據庫&#xff0c;應用在使用時顯示ORA-25153臨時表空間為空的報錯&#xff0c;原因一般是數據庫遷移時&#xff0c;沒有遷移完整造成的 解決方法 1.創建新的臨時表空間temp2 create temporary tablespace temp2 tempfile DATA size 100M autoexten…

【Python百題】--1.輸出Hello,world【2023.11.22】

1.問題描述 編寫一個Python程序&#xff0c;將字符串 ‘Hello World!’ 存儲在變量 str 中&#xff0c;然后使用 print 語句將其打印出來。 2.解決思路 使用print()函數即可 3.代碼實現 print("Hello,world")4.運行結果