蘋(píng)果系統(tǒng)電腦鎖定屏幕
一、超時(shí)自動(dòng)鎖定點(diǎn)擊“系統(tǒng)偏好設(shè)置”,“安全與隱私”。系統(tǒng)偏好設(shè)置-安全性與隱私在“通用”下方點(diǎn)擊“三角號(hào)”即可選擇開(kāi)始鎖屏睡眠時(shí)間,選擇好后輸入用戶(hù)密碼,點(diǎn)擊“好”就設(shè)置好時(shí)間。二、快捷鍵左上角點(diǎn)開(kāi)...
2025.07.02COPYRIGHT ? 2023
粵ICP備2021108052號(hào)
郵箱:611661226@qq.com
留言給我大家好,我叫李茶,來(lái)自虎牙直播的推薦工程組,主要負(fù)責(zé)虎牙直播的推薦架構(gòu)工作。直播推薦是一個(gè)頭部主播比較集中的場(chǎng)景,比較注重關(guān)系鏈、詞語(yǔ)以及長(zhǎng)期的價(jià)值,業(yè)務(wù)訴求可能和其他推薦場(chǎng)景有所不同,這一點(diǎn)在工程架構(gòu)上也會(huì)有所體現(xiàn)。本文將和大家分享下虎牙直播的推薦架構(gòu),包括以下幾方面內(nèi)容:
01
業(yè)務(wù)背景
首先和大家分享下虎牙直播的業(yè)務(wù)背景。虎牙直播的推薦場(chǎng)景主要有以下三個(gè):首頁(yè)的直播推薦、廣場(chǎng)的視頻推薦以及直播間的廣告推薦,當(dāng)然還有很多小的場(chǎng)景,在這里就不展開(kāi)講了。
直播是一個(gè)頭部主播比較集中的場(chǎng)景,比較注重關(guān)系鏈、詞語(yǔ)以及長(zhǎng)期的價(jià)值,業(yè)務(wù)訴求和其他推薦場(chǎng)景有所不同,在工程架構(gòu)上會(huì)有所體現(xiàn)。但整體推薦模塊和流程與業(yè)界主流推薦架構(gòu)基本一致。
02
業(yè)務(wù)架構(gòu)
接下來(lái)和大家介紹下虎牙直播的業(yè)務(wù)架構(gòu)。
虎牙直播推薦架構(gòu)中涉及的模塊和流程與業(yè)界主流通用的一些推薦架構(gòu)基本一致,部分模塊會(huì)有一些定制化的設(shè)計(jì)。接入層用來(lái)做透?jìng)鞯墓ぷ鳎峁┤诤稀⒔导?jí)、去重的功能;畫(huà)像層提供用戶(hù)和主播長(zhǎng)期、短期以及實(shí)時(shí)特征的能力,還有一些召回、排序、重排模塊以及一些周邊的平臺(tái)支持。
現(xiàn)在舉例說(shuō)明下虎牙直播的推薦業(yè)務(wù)特點(diǎn)以及和通常的圖文、視頻推薦業(yè)務(wù)的區(qū)別。拿接入層的去重來(lái)說(shuō),一般的圖文、視頻推薦業(yè)務(wù)有比較強(qiáng)的去重需求,比如用戶(hù)看過(guò)了某篇文章、某個(gè)視頻,大概率是不希望看到相同或者相似的內(nèi)容。業(yè)界常用的做法是用一個(gè)布隆過(guò)濾器來(lái)做長(zhǎng)期的去重。在虎牙直播推薦場(chǎng)景,主播的標(biāo)簽或信息會(huì)有比較大的不確定性,很多都是在開(kāi)播的時(shí)候才能確定。例如打游戲的主播可能下一時(shí)刻會(huì)做才藝類(lèi)型的直播。所以在這個(gè)場(chǎng)景下的去重對(duì)時(shí)效性的要求比較高,同時(shí)需要不斷的優(yōu)化調(diào)整。
在后面的分享中,我將會(huì)從向量檢索和精排兩個(gè)方向詳細(xì)介紹下虎牙直播的推薦架構(gòu)。這兩塊涉及到了推薦系統(tǒng)中的大部分技術(shù)點(diǎn),并且它們之間聯(lián)系得也比較緊密。
03
向量檢索
1. 背景
2016年,谷歌分享了youtube視頻推薦和搜索的向量檢索架構(gòu),同時(shí)該架構(gòu)的落地取得了比較不錯(cuò)的收益,目前很多推薦系統(tǒng)也都在嘗試通過(guò)優(yōu)化embedding來(lái)提升業(yè)務(wù)指標(biāo),實(shí)際效果也非常可觀(guān)。
虎牙直播早期由于主播數(shù)量較少,主要是通過(guò)暴力檢索。隨著業(yè)務(wù)的發(fā)展,基于成本和性能的考慮,暴力檢索已經(jīng)沒(méi)有辦法滿(mǎn)足業(yè)務(wù)需求,于去年年初開(kāi)始投入人力進(jìn)行向量檢索方向的調(diào)研和落地。
我們調(diào)研了Facebook開(kāi)源的向量檢索框架Faiss和谷歌開(kāi)源的向量檢索框架ScaNN,ScaNN在算法上做了一些優(yōu)化。
如上面兩圖所示,經(jīng)過(guò)數(shù)據(jù)的驗(yàn)證以及ann-benchmarks的壓測(cè),ScaNN在性能和準(zhǔn)召率都是表現(xiàn)較好的。由于ScaNN是相對(duì)較新的檢索庫(kù),也很難找到其他企業(yè)開(kāi)源的成功應(yīng)用案例,但是經(jīng)過(guò)部門(mén)同學(xué)的二次開(kāi)發(fā)和封裝,使ScaNN能夠相對(duì)較好地集成到現(xiàn)有架構(gòu)中去,方便使用。
2. 技術(shù)挑戰(zhàn)
向量檢索的技術(shù)挑戰(zhàn)主要有以下三點(diǎn):
3. 架構(gòu)落地
基于前面提到的挑戰(zhàn),我們?cè)O(shè)計(jì)了如下的讀寫(xiě)分離、文件化的架構(gòu):
索引builder構(gòu)建:文件化;易調(diào)試、準(zhǔn)召保證。索引builder構(gòu)建主要負(fù)責(zé)向量的生產(chǎn)和索引文件的構(gòu)建。使用npy二進(jìn)制的文件格式,減少文件體積并易于調(diào)試。索引builder使用SDK與模型和特征進(jìn)行交互,同時(shí)在調(diào)試時(shí)也可以使用,有比較好的可復(fù)用性。
分發(fā)系統(tǒng)使用了阿里開(kāi)源的Dragonfly,支持P2P的分發(fā),打通了公司的文件系統(tǒng)。
在線(xiàn)Server部分在架構(gòu)上拆解為檢索引擎和算子模塊,使用SDK接入。
檢索引擎:防抖動(dòng);多文件;多版本。檢索引擎目前支持ANN檢索和暴力檢索,采用通用的API執(zhí)行流程,包含加載、卸載、雙buffer切換等環(huán)節(jié)。開(kāi)啟實(shí)驗(yàn)時(shí),實(shí)驗(yàn)組和新增的引擎做好關(guān)聯(lián)即可,
算子模塊組:易擴(kuò)展;靈活。算子模塊組是按照通用的算子執(zhí)行邏輯設(shè)計(jì)的,使用的是標(biāo)準(zhǔn)的輸入輸出,比較方便擴(kuò)展和復(fù)用。
上線(xiàn)流程通過(guò)管理平臺(tái)來(lái)配置,提升了系統(tǒng)的迭代效率。
下面介紹下向量在線(xiàn)檢索的過(guò)程,業(yè)務(wù)方集成的SDK通過(guò)用戶(hù)的id信息進(jìn)行畫(huà)像的查詢(xún),同時(shí)進(jìn)行一些特征處理,然后請(qǐng)求模型生成向量,最后通過(guò)向量來(lái)進(jìn)行檢索,根據(jù)請(qǐng)求的數(shù)量返回topk。SDK支持跳過(guò)以上的任意步驟,比如直接通過(guò)向量來(lái)進(jìn)行檢索。滿(mǎn)足算法同學(xué)的調(diào)試需求和線(xiàn)上的實(shí)際使用需求。
在線(xiàn)檢索的時(shí)候,通過(guò)索引文件雙buffer的無(wú)鎖加載,支持批量查詢(xún),保證了系統(tǒng)的高吞吐;通過(guò)純內(nèi)存計(jì)算、LRU cache以及指令集優(yōu)化保證了系統(tǒng)的低延時(shí);通過(guò)builder和server的分離、存算一體(啟動(dòng)速度加快)以及服務(wù)無(wú)狀態(tài)(方便快速擴(kuò)容)保證了系統(tǒng)的高可用。同時(shí),在服務(wù)啟動(dòng)的時(shí)候也加了一些保護(hù),比如:只有在數(shù)據(jù)加載完成后,才能注冊(cè)到名字服務(wù)中,提供對(duì)外服務(wù)的能力。
向量檢索系統(tǒng)的數(shù)據(jù)加載是非常快的,下面介紹下數(shù)據(jù)更新的相關(guān)邏輯。首先,在配置中指定數(shù)據(jù)源和模型名稱(chēng),builder進(jìn)行定時(shí)調(diào)度獲取任務(wù)信息,關(guān)聯(lián)公司其他平臺(tái)的任務(wù)產(chǎn)出,利用SDK來(lái)生成向量、構(gòu)建索引文件,并把文件推送到P2P的源數(shù)據(jù)節(jié)點(diǎn)。P2P的管理節(jié)點(diǎn)會(huì)定時(shí)檢測(cè)源數(shù)據(jù)目錄的文件產(chǎn)出。在線(xiàn)的server會(huì)啟動(dòng)dfagent進(jìn)程,定時(shí)和P2P集群的管理節(jié)點(diǎn)同步心跳,獲取管理節(jié)點(diǎn)上需要同步的資源列表。管理節(jié)點(diǎn)將需要同步的節(jié)點(diǎn)組成p2p集群,進(jìn)行P2P的分發(fā)。200w數(shù)據(jù)集能在5s內(nèi)完成內(nèi)存化,在10s內(nèi)完成分發(fā)。另外文件是以時(shí)間戳為版本,在線(xiàn)支持多版本,加載前會(huì)校驗(yàn),和攔截告警,整體流程1分鐘內(nèi)生效。
在離線(xiàn)構(gòu)建部分也做了一些優(yōu)化以實(shí)現(xiàn)效能提升和安全保障。為了保證性能和準(zhǔn)召率,我們開(kāi)發(fā)了一些半自動(dòng)的尋參工具,通過(guò)設(shè)置少量的參數(shù)和一些我們預(yù)設(shè)的經(jīng)驗(yàn)參數(shù),進(jìn)行自動(dòng)化的評(píng)估,對(duì)比結(jié)果輸出最優(yōu)的參數(shù)來(lái)提供線(xiàn)上使用。不過(guò)目前這個(gè)工具是一個(gè)單獨(dú)的離線(xiàn)工具,后續(xù)的話(huà)會(huì)集成到平臺(tái)。builder節(jié)點(diǎn)支持橫向擴(kuò)展,通過(guò)分布式鎖來(lái)進(jìn)行任務(wù)的搶占和執(zhí)行。單個(gè)builder節(jié)點(diǎn)支持多進(jìn)程的并行構(gòu)建,提升構(gòu)建速度。針對(duì)每個(gè)構(gòu)建任務(wù)的都支持一些定制化的一些指標(biāo)校驗(yàn),校驗(yàn)的指標(biāo)主要是耗時(shí)、準(zhǔn)召率、召回成功率等。目前,索引數(shù)據(jù)檢索Top20準(zhǔn)召0.99的覆蓋率達(dá)到90%,攔截異常數(shù)據(jù)次數(shù)達(dá)15次以上,3個(gè)builder節(jié)點(diǎn)支持50個(gè)以上的任務(wù),能在分鐘級(jí)完成構(gòu)建。
最后介紹下系統(tǒng)的擴(kuò)展性,目前我們?cè)诜?wù)、數(shù)據(jù)、引擎三個(gè)方向都做到了不錯(cuò)的擴(kuò)展性。在服務(wù)層面,服務(wù)無(wú)狀態(tài)、離線(xiàn)builder通過(guò)分布式鎖來(lái)?yè)屨急WC了擴(kuò)展性。在數(shù)據(jù)層面,在線(xiàn)server通過(guò)配置來(lái)加載不同的數(shù)據(jù)分片,離線(xiàn)builder也可以通過(guò)一些調(diào)整來(lái)保證擴(kuò)展性。在引擎層面,主要同過(guò)以下三點(diǎn)來(lái)保證擴(kuò)展性:
04
精排
1. 數(shù)據(jù)流
數(shù)據(jù)流主要包含離線(xiàn)訓(xùn)練、在線(xiàn)打分、特征處理三個(gè)部分。特征處理主要通過(guò)離線(xiàn)和實(shí)時(shí)任務(wù)挖掘用戶(hù)或主播長(zhǎng)期、短期的興趣以及實(shí)時(shí)的反饋特征,數(shù)據(jù)的來(lái)源和更新頻率差異很大。用戶(hù)畫(huà)像服務(wù)主要對(duì)接用戶(hù)的存儲(chǔ)和公司內(nèi)外部的第三方接口,出于性能的考慮,用戶(hù)畫(huà)像設(shè)置了LRU緩存以及必要的降級(jí)策略,同時(shí)為了進(jìn)一步提升本地緩存命中率,在上游調(diào)用的時(shí)候使用了一致性hash校驗(yàn)。針對(duì)主播畫(huà)像,因?yàn)橐淮握倩貢?huì)有很多的主播,讀放大很?chē)?yán)重,也采用了業(yè)界通用的本地化緩存方案,早期主播的數(shù)量較少,采用的直接異步同步存儲(chǔ)信息到本地構(gòu)建雙buffer,數(shù)據(jù)完整性很難保證,正在往向量檢索架構(gòu)上進(jìn)行遷移。
2. 特征
為了能夠同時(shí)支持分析和訓(xùn)練,我們也設(shè)計(jì)了明文特征向tfrecord轉(zhuǎn)換的過(guò)程和格式,使用ProtocolBuffers協(xié)議進(jìn)行schema的校驗(yàn)和管理。離線(xiàn)特征處理通過(guò)JNI調(diào)用extractor來(lái)實(shí)現(xiàn)和在線(xiàn)特征處理邏輯的一致性。
3. 推理
最后分享下在推理服務(wù)上的優(yōu)化,主要做了以下幾個(gè)事情:
最終,經(jīng)過(guò)我們對(duì)精排服務(wù)的優(yōu)化,服務(wù)的穩(wěn)定性能夠達(dá)到4個(gè)9,數(shù)據(jù)傳輸帶寬節(jié)省了50%以上。
05
總結(jié)和展望
最后,分享一下我們的未來(lái)展望。我們的架構(gòu)還有很多需要優(yōu)化的地方,我們會(huì)緊跟業(yè)務(wù)的前沿,不斷優(yōu)化架構(gòu),持續(xù)完善我們的平臺(tái),提升系統(tǒng)的迭代效率。
作者:李茶 虎牙直播推薦工程組負(fù)責(zé)人
一、超時(shí)自動(dòng)鎖定點(diǎn)擊“系統(tǒng)偏好設(shè)置”,“安全與隱私”。系統(tǒng)偏好設(shè)置-安全性與隱私在“通用”下方點(diǎn)擊“三角號(hào)”即可選擇開(kāi)始鎖屏睡眠時(shí)間,選擇好后輸入用戶(hù)密碼,點(diǎn)擊“好”就設(shè)置好時(shí)間。二、快捷鍵左上角點(diǎn)開(kāi)...
2025.07.02作為第一個(gè)實(shí)現(xiàn)跨平臺(tái)的操作系統(tǒng),win10 64位正式版一發(fā)布就備受關(guān)注,甚至蘋(píng)果粉也按捺不住,打算在macbook安裝win10系統(tǒng)來(lái)體驗(yàn)一把,那么蘋(píng)果筆記本要怎么安裝win10雙系統(tǒng)呢?下面就跟小...
2025.07.03電腦分為硬件和軟件兩部分,硬件部分就是看得見(jiàn)摸得著的硬件,像CPU、主板、內(nèi)存條、硬盤(pán)、顯卡、電源和機(jī)箱等屬于電腦硬件部分,軟件部分就是看得見(jiàn)摸不著的,像Windows操作系統(tǒng)等屬于軟件部分。想要學(xué)習(xí)...
2025.07.03?HarmonyOS3?支持機(jī)型官方又有更新啦火速通知大家更新的方法就不詳細(xì)說(shuō)了:我的華為—首頁(yè)—升級(jí)嘗鮮—HarmonyOS3升級(jí)嘗鮮(需要詳細(xì)方法的可以參照我之前發(fā)的文章里面升級(jí)HarmonyOS...
2025.07.03目前持有手機(jī)7P,上市時(shí)間16年,我是18年中下旬購(gòu)買(mǎi)的,距今使用5年了。當(dāng)時(shí)記得8P也已經(jīng)上市了,但是不喜歡它后置的玻璃面。選擇了7p。習(xí)慣就是舊的系統(tǒng)只要不影響使用,就不怎么更新系統(tǒng),持有ios1...
2025.07.03