百度基於雲原生的推薦系統設計與實踐
01 雲原生技術棧
下圖是 CNCF 公佈的雲原生基礎架構的抽象圖。
典型的雲原生技術棧可分為四層:供給層(Provisioning)、執行時層(Runtime)、策劃和管理層(Orchestration & Management)以及App定義和開發層(App Definition & Development)。還包括一些可觀測性和分析的基礎設施,比如監控、日誌、呼叫追蹤、混沌工程。
我們要做的,就是在推薦系統上,利用好 cloud native 的這幾層架構,來實現基礎技術能力。早期 cloud native 有些基礎設施還沒有完善,因此部分公司在搭建推薦系統時,部分基礎設施是自建的。後期,在 cloud native 技術完善之後,在設計推薦系統時,就會基於 cloud native 的技術棧來進行模組設計。無論是哪一種形式,都要對雲原生的技術棧和推薦系統的基礎架構有比較深入的瞭解,才能做到較好的融合。
02 推薦系統架構
推薦系統的技術架構,可以分為線上和離線部分。
離線部分通常做內容建模,資料引入時,通常做內容建模,例如內容生態和合作資料引入。我們對這些資料進行內容處理,如標籤化、標籤特徵抽取、向量化(即根據一些模型把 Doc 資料轉化為向量)。對於使用者資料,例如使用者點展、共享和分享這些使用者行為,我們會對其進行資料探勘和使用者畫像、Attention 抽取等,並且對使用者的屬性也進行向量化。在此基礎上,將使用者的推送或相關性、關聯性等 doc 維度的屬性進行召回和排序,最終進行展現。
流量方面,在天級範圍內體現出明顯的潮汐現象。比如在晚高峰流量高,低谷期流量低。
03 基於雲原生的推薦系統設計重點
針對推薦系統的特點,在設計時需要從三個層次建設基礎能力和業務架構。第一層,需要構建好雲原生的基礎設施,包括 PaaS、事件機制、服務編排、服務畫像、指標採集等;在此基礎上,是第二層,雲原生能力的建設,包括構建 ALM 的全生命週期管理、容量管理,SaaS 方面的資源管理、排程機制,以及流量管理、混沌工程穩定性等等;最終體現在第三層業務價值上,包括降低成本、提升研發效率、保證穩定性、提升業務效果和提升效能。
接下來重點介紹四個方面:虛擬化和微服務化改造,服務治理和彈性建設,基於雲原生能力的推薦業務應用以及穩定性建設。
1. 虛擬化和微服務改造
虛擬化技術是雲原生系統中最基礎的部分,本質上是軟硬體的技術棧。硬體輔助虛擬化方案(Hardware virtualization,HVM),主要利用 CPU 等硬體輔助處理敏感指令,以實現完全虛擬化功能,無需修改客戶端作業系統。
VMware Workstation,Xen,KVM 產品或架構都是應用了該技術,當前市場中幾乎所有主流硬體都是支援硬體輔助虛擬化技術的。
最常見的虛擬化落地方式是 KVM 技術,透過處理敏感指令,實現 CPU、記憶體和 IO 的虛擬化技術。
另一個趨勢是 GPU,在推薦系統中日益盛行,主要用於模型訓練、線上推理等一系列高密度複雜計算。GPU 視訊記憶體大、計算能力強,需要對其進一步虛擬化切分,使業務能夠以更低的成本使用,獲得高效的運算效果。
虛擬化構建之後,必不可少的步驟是微服務的改造。微服務化改造是精細化排程和服務資源運營的基礎。以百度為例,早期業務流量增長迅猛,對研發迭代的效率要求極高,早期實現方式為巨型服務,每個業務模組功能變複雜後,功能依然在模組內部實現,導致開發迭代變得越來越困難。隨著模組逐步龐大,會發現一臺機器上的部分資源被佔滿,而部分資源空閒,因此需要進行微服務化改造。比如預估層,抽出 CTR 預估、時長預估等,將服務拆解。
微服務化拆分的目標是無巨型服務和可遷移服務。無巨型服務,即約束服務的資源顆粒度。同時做到可遷移,即各服務實現例項自動化遷移。可遷移除了常見的擴容外,還有服務例項自愈。比如當整機出現熱點,或當服務模組出現異常時,能快速探測,並實現自愈。
拆分的原則包括:按策略、業務流程拆分,按組織團隊拆分,以及通用服務平臺化。
一個典型的推薦系統服務改造方式為,將一些巨型服務,如使用者模型、內容資料、索引排序等,進行額外的抽象,進行獨立的平臺化處理,即透過 RPC 訪問外部服務,使其從原本的推薦服務中抽離出來。
構建通用服務框架,透過元件式的開發構建可組裝的策略元件。包括業務模組、架構模組。其中架構模組即一些可複用的基礎模組,比如 Filter 或一些基礎函式,還包括一些策略運算元,如 CTR、Rank 等,以運算元庫的形式提供給業務,進行拼裝式的使用。
常用的一種拼裝方式是 DAG 引擎。透過一些配置檔案,即可將整個程式碼邏輯組裝起來。
2. 服務治理和彈性建設
應用生命週期管理(ALM)的目標是透過服務治理,讓所有的服務都保持在合理的執行狀態下,確保資源利用健康度,可檢測、可干預。服務治理的能力和效率,是架構可持續發展的關鍵因素,其基礎依賴就是容器編排、虛擬化的支援,在此基礎上透過對基礎引數和效能引數的採集,進行服務編排。同時,還要做到可觀測性。
透過 ALM 採集的資料,可以對服務進行統一、標準化地治理,實現對資源的合理利用。但有些服務,其資源利用率並不是隨 QPS 增長而線性增長的,不同服務對利用率的容忍率也不同。因此,我們構建了以服務畫像為中心的雲原生技術。
根據每個服務的極限負載個性化地設定合理容量,實現系統成本全域性最優。基於服務的機型偏好的排程策略,實現資源最優配置,提升系統效能。摒棄傳統固定容量模式,動態調整服務容量,實現資源按需分配。
針對負載波動差異大,彈性等級差異大和負載容忍度差異大等問題,透過不同型別的畫像來構建彈效能力。比如線上場景中晚高峰流量大,push 場景中新熱點流量會明顯上升,對於不同的服務構建個性化流量畫像來描繪其波動特性。另外,從儲存和計算兩個維度對各個服務的彈性進行打分,以此作為彈性伸縮的依據。
透過 Metric agent、Data Polling 等資料採集,離群值處理、缺失值填充以及資料聚合等預處理方法,構建多維度服務畫像。
基於畫像構建個性化的 ALM quota resize 架構,透過預縮容、反饋和熔斷機制、步進式調整控制流程等方法保障穩定性。
基於畫像的 serverless,是一種基於流量預測的彈性伸縮策略,可以進行提前預判 & 負載反饋兜底。依託 STL、LSTM 等時序演算法模型進行流量預測。透過主動預測、提前預判、監控負載、主被動結合的方式,構建兼顧穩定性和成本的安全彈性機制。
上圖中展示了預測效果。可以看到預估誤差為 4%,相較於簡單規則的 18%,具有明顯優勢。
3. 基於雲原生能力的推薦業務應用
釋放出來的資源可以用於額外的計算,以獲得更多收益。
推薦產品不依賴使用者的主動輸入,多數使用者的“興趣”長期穩定。Nearline 召回機制是介於線上離線之間的一類全新召回方式,容忍秒級延遲,有更大的計算規模和複雜度,可以使用碎片資源和閒置資源,降低機制成本。
透過非同步計算的方式,與線上計算解耦,根據系統負載主動計算,可以提前計算獲得預估結果,提升效果。根據資源情況,動態調整計算引數,實現資源平穩與充分利用。
4. 穩定性建設 - 混沌工程
混沌工程在 2018 年由 CNCF 提出,是⼀⻔新興的技術學科,透過實驗性的⽅法,讓⼈們建⽴對於複雜分散式系統在⽣產中抵禦突發事件能力的信心。
傳統的穩定性工作,建立在歷史 case 和工程師經驗基礎上,是一個(發生故障->解決問題->下次發生故障)的迴圈。系統經過重構升級後,穩定效能力可能無法持續。
混沌工程的整體目標是透過實驗主動驅動代替過去的 case 被動驅動,在可控範圍內週期性注入故障,主動發現系統隱患,驗證穩定效能力,推動架構迭代最佳化。
混沌工程的主要機制是透過紅藍對抗機制進行故障的隨機預演練。透過對故障場景編排和自動化巡檢,利用韌性指數把穩定性進行量化。
基於歷史問題抽象故障庫,建立可量化的穩定性評價體系,引入韌性信心指數規範,混沌實驗週期性巡檢,更新韌性指數,驅動架構最佳化。
來自 “ DataFunTalk ”, 原文作者:段雪濤;原文連結:https://server.it168.com/a2024/0220/6840/000006840035.shtml,如有侵權,請聯絡管理員刪除。
相關文章
- 基於使用者偏好的新聞推薦系統的設計與實現
- 基於雲原生的秒殺系統設計思路
- 推薦系統實踐 0x09 基於圖的模型模型
- Spark推薦系統實踐Spark
- 微信基於PyTorch的大規模推薦系統訓練實踐PyTorch
- 《推薦系統實踐》筆記 01 推薦系統簡介筆記
- 58同城智慧推薦系統的演進與實踐
- 雲原生推動全雲開發與實踐
- 推薦系統實踐 0x07 基於鄰域的演算法(2)演算法
- 推薦系統實踐 0x06 基於鄰域的演算法(1)演算法
- 今日頭條推薦系統架構設計實踐(附下載)架構
- 基於指標管理系統建設的BI工具推薦指標
- 網易雲音樂基於使用者的推薦系統
- 百度智慧雲Redis容量版設計與實踐Redis
- 銀行基於雲原生架構的 DevOps 建設實踐經驗架構dev
- 智聯招聘基於 Nebula Graph 的推薦實踐分享
- 實時增量學習在雲音樂直播推薦系統中的實踐
- 推薦系統實踐學習系列(三)推薦系統冷啟動問題
- 基於雲原生的大資料實時分析方案實踐大資料
- 基於java的網路招聘系統的設計與實現Java
- 基於java的文章釋出系統的設計與實現Java
- 實現基於內容的電影推薦系統—程式碼實現
- .NET雲原生應用實踐(四):基於Keycloak的認證與授權
- 知了 | 基於NLP的智慧問答推薦系統
- 基於內容的推薦系統演算法演算法
- 實時增量學習在雲音樂直播推薦系統中的工程實踐
- 推薦演算法在商城系統實踐演算法
- 推薦系統 embedding 技術實踐總結
- 推薦系統實踐 0x12 Embedding
- 推薦系統實踐 0x11 NeuralCF
- 19期推薦系統實踐學習(二)
- 個性化推薦系統實踐應用
- 史上最簡單的推薦系統設計
- 基於 LLM 的智慧運維 Agent 系統設計與實現運維
- 藏書館App基於Rainbond實現雲原生DevOps的實踐APPAIdev
- 雲音樂推薦系統(二):推薦系統的核心演算法演算法
- PyCon 2018: SVD推薦系統在Python中的實踐Python
- .NET雲原生應用實踐(四):基於Keycloak的認證與授權AL