從工程師的角度探索TikTok推薦系統架構。
TikTok是一款視頻共享應用程序,可讓用戶創建和共享短視頻。它以個性化的“just for you”的推薦給用戶留下了深刻的印象。它在Z世代中非常受歡迎,容易讓人上癮。在它的背后,它是由人工智能技術驅動的。
TikTok架構
TikTok推薦系統的架構包括三個組件:大數據框架、機器學習和微服務架構。
- 大數據框架是系統的起點。它提供實時數據流處理,數據計算和數據存儲;
- 機器學習是推薦系統的大腦。使用一系列機器學習和深度學習算法與技術用于構建模型并生成適用于個人偏好的建議;
- 微服務架構是底層的基礎設施,使整個系統快速高效地提供服務。
大數據框架
沒有數據,就沒有情報。
分析的大多數數據來自用戶的智能手機。這包括操作系統和已安裝的應用程序等。更重要的是,TikTok特別關注用戶的活動日志,例如觀看時間,滑動,喜歡,分享和評論。
日志數據通過flume和scribe收集和匯總。它們通過管道進入Kafka 隊列。然后,Apache Storm使用Apache Hadoop生態系統中的其他組件實時處理數據流。
Apache Hadoop生態系統是一個用于數據處理和存儲的分布式系統,這包括第一代分布式數據處理系統MapReduce。它與批處理并行處理數據。YARN 是用于作業調度和群集資源管理的框架。HDFS 是一個分布式文件系統。HBase 是一個可擴展的分布式數據庫,支持大型表的結構化數據存儲。Hive 是提供數據匯總和查詢的數據倉庫基礎結構。 Zookeeper是一項高性能的協調服務。
隨著數據量的快速增長,實時數據處理框架也隨之出現。Apache Spark是第三代框架,有助于對大數據工作負載進行近乎實時的分布式處理。Spark通過在內存中處理來增強MapReduce的性能。在過去的幾年里,TikTok應用了第四代框架Flink。它旨在本機執行實時流式處理。
數據庫系統包括MySQL,MongoDB和許多其他系統。
機器學習
這是TikTok如何贏得個性化,且令人上癮的算法家喻戶曉的名字的中心。
在大量數據集涌入后,接下來是內容分析、用戶分析和上下文分析。神經網絡深度學習框架(如TensorFlow)用于執行計算機視覺和本地語言處理(NLP)。計算機視覺將使用照片和視頻解釋圖像。NLP包括分類、標記和評估。
使用經典的機器學習算法,包括邏輯回歸(LR),卷積神經網絡(CNN),遞歸神經網絡(RNN)和梯度提升決策樹(GBDT)。它應用了常見的推薦方法,例如基于內容的過濾 (CBF)、協同過濾 (CF) 和更高級的矩陣分解 (MF)。
TikTok用來讀你心思的秘密武器是:
1.算法實驗平臺:工程師對LR和DNN等多種機器學習算法的混合進行實驗,然后運行測試(A / B測試)并進行調整。
2.廣泛的分類和標簽:這些模型基于用戶的參與度,例如觀看時間,滑動以及常用的喜歡或分享(你潛意識反映所做的事比你所說的更能說明你)。用戶特征、向量和類別的數量超過了世界上大多數推薦系統,而且它們還在不斷增加。
3. 用戶反饋引擎:在多次迭代中檢索用戶反饋后,更新模型。體驗管理平臺基于此引擎構建,最終改進了條件和建議。
為了解決建議中的冷啟動問題,使用了召回策略。它是從數千萬個已被證明受歡迎且高質量的視頻中選擇數千名候選人。
與此同時,一些人工智能工作已經轉移到客戶端,以實現超快速的響應。這包括在設備上完成的實時訓練、建模和推理。TensorFlow Lite或ByteNN等機器學習框架用于客戶端。
微服務架構
TikTok已經運用了云原生基礎設施。推薦組件(如用戶分析、預測、冷啟動、召回和用戶反饋引擎)用作 API。這些服務托管在Amazon AWS和Microsoft Azure等云中。作為系統的結果,視頻策展將通過云推送給用戶。
TikTok采用基于Kubernetes的容器化技術。Kubernetes 被稱為容器編排器。它是自動化應用程序生命周期的工具集。Kubeflow致力于在Kubernetes上部署機器學習工作流。
作為云原生堆棧的一部分,Service mesh 是另一個處理服務到服務通信的工具。它控制應用程序的不同部分如何相互共享數據。它在平臺層插入功能或服務,而不是在應用程序層插入。
由于高并發性的要求,服務是使用 Go 語言和 gRPC 構建的。在TikTok中,Go因其良好的內置網絡和并發支持而成為服務開發中的主導語言。gRPC 是一個遠程過程控制框架,用于有效地構建和連接服務。
Tiktok的成功在于,它將加倍努力提供最佳的用戶體驗。他們構建內部工具,以最大限度地提高低級別(系統級別)的性能。例如,ByteMesh是Service Mesh的改進版本,KiteX是高性能的Golang gRPC框架,Sonic是增強的Golang JSON庫。其他內部工具或系統包括參數服務器、ByteNN 和 abase等。
正如TikTok機器學習負責人Xiang Liang所說,有時下面的基礎設施比上面的(機器學習)算法更重要。
譯者介紹
朱鋼,51CTO社區編輯,2021年IT影響力專家博主,阿里云專家博主,2019年CSDN博客之星20強,2020年騰訊云+社區優秀作者,11年一線開發經驗,曾參與獵頭服務網站架構設計,企業智能客服以及大型電子政務系統開發,主導某大型央企內部防泄密和電子文檔安全監控系統的建設,目前在北京圖伽健康從事醫療軟件研發工作。
原文標題:??How the AI Behind TikTok Works??,作者:Vivien H.