作為2億日活、日均千萬級短視頻上傳、強(qiáng)調(diào)社區(qū)普惠的短視頻APP,快手推薦系統(tǒng)所需解決的技術(shù)挑戰(zhàn)是世界級的。近日,快手在國內(nèi)率先應(yīng)用持久內(nèi)存重新設(shè)計(jì)了基于異構(gòu)存儲結(jié)構(gòu)的推薦系統(tǒng),率先采用英特爾? 傲騰? 數(shù)據(jù)中心級持久內(nèi)存。在快手推薦系統(tǒng)高吞吐量大數(shù)據(jù)量請求的場景下,使用持久內(nèi)存可以降低存儲成本,減少故障恢復(fù)時(shí)間,提高系統(tǒng)可靠性。故障恢復(fù)時(shí)間從小時(shí)級別降低到分鐘級,也為改善大規(guī)模深度機(jī)器學(xué)習(xí)系統(tǒng)在改進(jìn)千億級別數(shù)據(jù)量的處理能力上開辟了新的探索方向。
業(yè)界超大規(guī)模實(shí)時(shí)在線短視頻推薦系統(tǒng)
如何在承載高峰期每秒數(shù)十萬并發(fā)調(diào)用量的同時(shí),從上百億級別的短視頻庫中,通過千億參數(shù)級別的深度模型將內(nèi)容展現(xiàn)給用戶?快手推薦團(tuán)隊(duì)設(shè)計(jì)了基于異構(gòu)設(shè)備的先進(jìn)推薦系統(tǒng),其中遇到問題的復(fù)雜程度極富挑戰(zhàn)。
目前快手推薦系統(tǒng)采用的是計(jì)算與存儲分離的架構(gòu)模式(如下圖所示)。推薦系統(tǒng)中的存儲型服務(wù)主要是用來存儲和實(shí)時(shí)更新上億規(guī)模的用戶畫像、數(shù)十億規(guī)模的短視頻特征、以及千億規(guī)模的排序模型參數(shù)。計(jì)算型服務(wù)主要進(jìn)行的是視頻召回檢索、推薦模型預(yù)估和推薦策略計(jì)算。
【快手推薦系統(tǒng)采用計(jì)算和存儲分離的架構(gòu)】
2018年到2019年上半年,快手推薦架構(gòu)團(tuán)隊(duì)的主要工作集中在利用異構(gòu)混合計(jì)算的方式,提升推薦系統(tǒng)中模型預(yù)估和召回檢索等計(jì)算密集型業(yè)務(wù)的性能。通過利用異構(gòu)計(jì)算的改造,產(chǎn)生了數(shù)倍的性能提升,鼓舞了快手推薦架構(gòu)團(tuán)隊(duì)向異構(gòu)系統(tǒng)設(shè)計(jì)中更難的存儲問題進(jìn)發(fā)。
一直以來,快手推薦團(tuán)隊(duì)致力于推薦系統(tǒng)架構(gòu)調(diào)整,力求在日益增長的用戶量沖擊下,使推薦系統(tǒng)高可用的前提下,實(shí)時(shí)、高效、精準(zhǔn)地向用戶推薦優(yōu)質(zhì)內(nèi)容。
新機(jī)遇:軟硬結(jié)合極致優(yōu)化,探索異構(gòu)存儲
持久內(nèi)存是介于DRAM和SSD間的新存儲層級,不僅能提供接近DRAM的延遲,同時(shí)還提供持久化和更大容量的存儲空間,這為推薦系統(tǒng)中不同場景的可行性分析和架構(gòu)設(shè)計(jì)提供了思路。
相比于傳統(tǒng)的內(nèi)存加硬盤的兩級存儲,新存儲設(shè)備的推出,現(xiàn)代服務(wù)器可以利用的存儲層級越來越多,利用多層級存儲的軟件系統(tǒng)設(shè)計(jì)也變得越來越復(fù)雜。每種存儲設(shè)備有不同的性能特性和容量大小限制,越快的設(shè)備的單位容量成本越高。例如使用內(nèi)存插槽的英特爾? 傲騰? 數(shù)據(jù)中心級持久內(nèi)存,依據(jù)讀寫粒度的不同,讀寫帶寬雖小于傳統(tǒng)內(nèi)存,但寫入數(shù)據(jù)具有持久性,且容量遠(yuǎn)大于傳統(tǒng)內(nèi)存。如何結(jié)合不同層級的存儲設(shè)計(jì)在大規(guī)模推薦場景下性價(jià)比最優(yōu)的存儲系統(tǒng)成為一個(gè)巨大機(jī)遇和挑戰(zhàn)。
【新一代服務(wù)器的存儲層級結(jié)構(gòu)】
快手聯(lián)合英特爾,國內(nèi)業(yè)界率先落地采用英特爾? 傲騰? 數(shù)據(jù)中心級持久內(nèi)存的異構(gòu)存儲到推薦系統(tǒng)
基于多層級異構(gòu)存儲設(shè)備,快手推薦團(tuán)隊(duì)聯(lián)合系統(tǒng)運(yùn)營部硬件選型研發(fā)團(tuán)隊(duì)針對推薦系統(tǒng)中的不同場景進(jìn)行了可行性分析和架構(gòu)設(shè)計(jì)的調(diào)研。針對持久內(nèi)存的特性,對分布式索引和參數(shù)服務(wù)器中的KV存儲進(jìn)行了重新設(shè)計(jì)。
【基于持久性內(nèi)存的KV系統(tǒng)設(shè)計(jì)示意圖】,注:AEP指代英特爾? 傲騰? 數(shù)據(jù)中心級持久內(nèi)存
該設(shè)計(jì)主要通過為KV存儲增加MemPool組件,針對不同訪問類型來決定系統(tǒng)是訪問DRAM緩存,還是直接讀取持久內(nèi)存。比如說,在推薦模型預(yù)估的參數(shù)服務(wù)器這個(gè)場景中,由于模型中神經(jīng)網(wǎng)絡(luò)大小與Embedding Table相比很小,所以神經(jīng)網(wǎng)絡(luò)也會被MemPool直接分配進(jìn)入DRAM來提高預(yù)估的性能。
除此之外,推薦團(tuán)隊(duì)還對KV系統(tǒng)進(jìn)行了調(diào)優(yōu):
對于數(shù)據(jù)讀取場景采用NUMA節(jié)點(diǎn)綁定的方式使得持久內(nèi)存訪問不跨NUMA節(jié)點(diǎn),從而獲得更好的讀寫性能;采用ZeroCopy技術(shù)對內(nèi)存和持久內(nèi)存進(jìn)行訪問;使用無鎖技術(shù),減少臨界區(qū)中對持久內(nèi)存的訪問來提高性能。經(jīng)過上述的技術(shù)改進(jìn),我們將基于持久內(nèi)存的索引系統(tǒng)用真實(shí)的線上請求數(shù)據(jù)進(jìn)行模擬壓測。測試結(jié)果如下:
【基于持久性內(nèi)存索引系統(tǒng)的壓力測試結(jié)果】
基于異構(gòu)存儲的索引系統(tǒng)幾乎達(dá)到純DRAM的索引系統(tǒng)相同的性能指標(biāo),但總體擁有成本降低30%。同時(shí)異構(gòu)存儲的索引系統(tǒng)能夠提供分鐘級別的故障恢復(fù)速度,比之前小時(shí)級別的恢復(fù)提升了百倍恢復(fù)速度。英特爾專家介紹,快手是國內(nèi)率先在推薦系統(tǒng)領(lǐng)域中引入并使用基于持久內(nèi)存的異構(gòu)存儲的互聯(lián)網(wǎng)公司,這種創(chuàng)新實(shí)踐的技術(shù)能力讓我們側(cè)目。
快手推薦打造業(yè)界頂級、戰(zhàn)斗力強(qiáng)悍的技術(shù)團(tuán)隊(duì)
通過工程、算法結(jié)合,數(shù)據(jù)驅(qū)動的手段,讓快手推薦系統(tǒng)更高效、更精準(zhǔn)、更穩(wěn)定地為快手?jǐn)?shù)億用戶服務(wù),記錄每一個(gè)人的生活點(diǎn)滴,并讓每一個(gè)人的記錄都能引起共鳴。推薦架構(gòu)團(tuán)隊(duì)的成員都來自國內(nèi)知名大學(xué)、甚至國際知名大學(xué),如CMU、清華、北大、中科大等著名院校的畢業(yè)生。團(tuán)隊(duì)每個(gè)成員都追求技術(shù)極致,具備一流的分布式高并發(fā)服務(wù)的開發(fā)能力,比如在線分布式索引支持每天千億級別的視頻請求、機(jī)器學(xué)習(xí)平臺支持千億級別的推薦模型在線學(xué)習(xí)和在線預(yù)估、在線服務(wù)為數(shù)億用戶提供99.99%的可用性。
- QQ:61149512