TikTok是一款視頻分享應(yīng)用程序,可以讓用戶創(chuàng)建和分享短視頻。它以“只為你”的個性化推薦給用戶留下深刻印象。它非常容易上癮,在Z世代中很受歡迎,而人工智能技術(shù)是其背后采用的主要技術(shù)。
TikTok架構(gòu)
TikTok推薦系統(tǒng)的架構(gòu)包括三個組成部分:大數(shù)據(jù)框架、機器學(xué)習(xí)、微服務(wù)架構(gòu)。
(1)大數(shù)據(jù)框架是推薦系統(tǒng)的起點。它提供實時數(shù)據(jù)流處理、數(shù)據(jù)計算和數(shù)據(jù)存儲。
(2)機器學(xué)習(xí)是推薦系統(tǒng)的大腦。一系列機器學(xué)習(xí)和深度學(xué)習(xí)算法和技術(shù)被應(yīng)用于構(gòu)建模型,并生成適合個人偏好的建議。
(3)微服務(wù)架構(gòu)是讓整個系統(tǒng)快速高效服務(wù)的底層基礎(chǔ)設(shè)施。
大數(shù)據(jù)框架
沒有數(shù)據(jù),就沒有智慧。TikTok的大多數(shù)數(shù)據(jù)來自用戶的智能手機。這包括操作系統(tǒng)和安裝的應(yīng)用程序等。更重要的是,TikTok特別關(guān)注用戶的活動日志,例如觀看時間、滑動、點贊、分享和評論。
日志數(shù)據(jù)通過Flume和scribe進(jìn)行收集和匯總,它們通過管道傳輸?shù)終afka隊列中。然后Apache Storm與Apache Hadoop生態(tài)系統(tǒng)中的其他組件實時處理數(shù)據(jù)流。
Apache Hadoop生態(tài)系統(tǒng)是一個用于數(shù)據(jù)處理和存儲的分布式系統(tǒng)。這包括第一代分布式數(shù)據(jù)處理系統(tǒng)MapReduce,它與批處理并行處理數(shù)據(jù)。YARN是一個用于作業(yè)調(diào)度和集群資源管理的框架;HDFS是一個分布式文件系統(tǒng);HBase是一個可擴展的分布式數(shù)據(jù)庫,支持大型表格的結(jié)構(gòu)化數(shù)據(jù)存儲。Hive是提供數(shù)據(jù)匯總和查詢的數(shù)據(jù)倉庫基礎(chǔ)設(shè)施。Zookeeper是一個高性能的協(xié)調(diào)服務(wù)。
隨著數(shù)據(jù)量的快速增長,實時數(shù)據(jù)處理框架應(yīng)運而生。ApacheSpark是第三代框架,有助于對大數(shù)據(jù)工作負(fù)載進(jìn)行近乎實時的分布式處理。Spark通過在內(nèi)存中處理來增強MapReduce的性能。在過去的幾年里,TikTok應(yīng)用了第四代框架Flink。它旨在本地進(jìn)行實時流處理。
數(shù)據(jù)庫系統(tǒng)包括MySQL、MongoDB等。
機器學(xué)習(xí)
這就是TikTok如何獲得家喻戶曉的超個性化、令人上癮的算法的核心。在大量數(shù)據(jù)集涌入之后,接下來是內(nèi)容分析、用戶分析和場景分析。TensorFlow等神經(jīng)網(wǎng)絡(luò)深度學(xué)習(xí)框架用于執(zhí)行計算機視覺和自然語言處理。計算機視覺將用照片和視頻破譯圖像。自然語言處理包括分類、標(biāo)簽和評估。
使用經(jīng)典的機器學(xué)習(xí)算法,包括邏輯回歸、卷積神經(jīng)網(wǎng)絡(luò)、遞歸神經(jīng)網(wǎng)絡(luò)和梯度提升決策樹。應(yīng)用了常見的推薦方法,例如基于內(nèi)容的過濾、協(xié)同過濾和更高級的矩陣分解。
TikTok用來解讀人們思想的秘密武器是:
(1)算法實驗平臺:工程師對邏輯回歸、卷積神經(jīng)網(wǎng)絡(luò)等多種機器學(xué)習(xí)算法的混合進(jìn)行實驗,然后運行測試(A/B測試)并進(jìn)行調(diào)整。
(2)廣泛的分類和標(biāo)簽:模型基于用戶的參與度,例如觀看時間、滑動以及常用的點贊或分享(人們所做的作為通常是潛意識的反映)。用戶特征、向量和類別的數(shù)量超過了世界上大多數(shù)推薦系統(tǒng)都要多,而且它們還在不斷增加。
(3)用戶反饋引擎:在多次迭代檢索用戶反饋后更新模型。體驗管理平臺是建立在這個引擎之上的,并最終改善了這些缺陷和建議。
為了解決推薦中的冷啟動問題,使用了召回策略。就是從數(shù)以千萬計的視頻中挑選出數(shù)千名候選人,這些視頻已經(jīng)被證明是受歡迎的和高質(zhì)量的視頻。
與此同時,一些人工智能工作已經(jīng)轉(zhuǎn)移到客戶端,以獲得超快的響應(yīng)。這包括在設(shè)備上進(jìn)行實時培訓(xùn)、建模和推理。客戶端使用了TensorFlow Lite或ByteNN等機器學(xué)習(xí)框架。
微服務(wù)架構(gòu)
TikTok采用了云原生基礎(chǔ)設(shè)施。用戶分析、預(yù)測、冷啟動、召回和用戶反饋引擎等推薦組件用作API。這些服務(wù)托管在Amazon AWS和Microsoft Azure等云平臺中。作為系統(tǒng)的結(jié)果,視頻策展將通過云端推送給用戶。
TikTok采用基于Kubernetes的容器化技術(shù)。Kubernetes被稱為容器編排器,它是自動化應(yīng)用程序生命周期的工具集。Kubeflow致力于在Kubernetes上部署機器學(xué)習(xí)工作流。
作為云原生堆棧的一部分,服務(wù)網(wǎng)格是另一種處理服務(wù)到服務(wù)通信的工具。它控制應(yīng)用程序的不同部分如何相互共享數(shù)據(jù)。它在平臺層而不是應(yīng)用程序?qū)硬迦牍δ芑蚍?wù)。
由于對高并發(fā)性的要求,這些服務(wù)是用Go語言和gRPC構(gòu)建的。在TikTok中,Go由于其良好的內(nèi)置網(wǎng)絡(luò)和并發(fā)支持而成為服務(wù)開發(fā)中的主導(dǎo)語言。gRPC是一個遠(yuǎn)程過程控制框架,用于高效地構(gòu)建和連接服務(wù)。
Tiktok的成功在于它會更加努力地提供最佳的用戶體驗。他們構(gòu)建內(nèi)部工具以最大限度地提高低級別(系統(tǒng)級別)的性能。例如,ByteMesh是Service Mesh的改進(jìn)版本,KiteX是一個高性能的Golang gRPC框架,Sonic是一個增強的Golang JSON庫。其他內(nèi)部工具或系統(tǒng)包括參數(shù)服務(wù)器、ByteNN和abase等。
正如TikTok機器學(xué)習(xí)負(fù)責(zé)人所說,有時底層的基礎(chǔ)設(shè)施比其上面的(機器學(xué)習(xí))算法更重要。