如何用存儲黑科技解決推薦系統的“信息過(guò)載”?
我們的數據集群目前規模過(guò)萬(wàn),總數據量以EB計,日新增數據量則以PB計……
這些數字來(lái)自某移動(dòng)互聯(lián)網(wǎng)企業(yè)在一次技術(shù)交流活動(dòng)上對自家數據處理能力的介紹。先不說(shuō)EB,就說(shuō)說(shuō)1PB是什么概念吧?大約是2億張照片或2億首MP3音樂(lè ),如果一個(gè)人不停地聽(tīng)這些音樂(lè ),能聽(tīng)上1900年。
大家可能會(huì )驚嘆于這家企業(yè)強大的數據處理能力,但并非所有企業(yè)都具備同樣的能力——激增的數據量如果超過(guò)了數據處理能力,就會(huì )導致“信息過(guò)載“問(wèn)題,為此,人類(lèi)發(fā)明了能夠過(guò)濾信息的“搜索引擎”和“推薦系統”,用以高效識別和應用那部分“至關(guān)重要”的數據。
然而,據國際數據公司IDC在報告《數據時(shí)代2025》 中的預測,到2025年,屬于數據分析的全球數據總量將增長(cháng)至原來(lái)的50倍,達到5.2ZB;認知系統“觸及”的分析數據總量也將隨之增長(cháng)至原來(lái)的100倍,達到1.4ZB!這意味著(zhù)用來(lái)挑選、過(guò)濾數據的推薦系統和搜索引擎,也一樣難逃”信息過(guò)載“。
推薦系統本質(zhì)上就是一個(gè)信息過(guò)濾系統,通常分為:召回、排序、重排序這三個(gè)環(huán)節,每個(gè)環(huán)節逐層過(guò)濾,最終從海量數據中篩選出幾十個(gè)用戶(hù)可能感興趣的信息推薦給用戶(hù)。更直接一些,要想實(shí)現推薦系統這三個(gè)關(guān)鍵環(huán)節,就需要四個(gè)模塊化的層面,即數據、存儲(內存&存儲)、服務(wù)和應用。
其中,存儲層用于存儲數據層的數據;服務(wù)層是對外提供接口的部分;應用層根據不同場(chǎng)景配置的召回策略來(lái)直接對接服務(wù)層,發(fā)起請求得到推薦反饋。顯然,數據、存儲是推薦系統的底層邏輯,能夠決定引擎“走多遠”,而服務(wù)層和應用層則是上層建筑,對用戶(hù)體驗起到重要作用。
圖注:推薦引擎的模塊化層面架構圖
因此,要想從根本上解決推薦系統的信息過(guò)載問(wèn)題,就要從數據及存儲層著(zhù)手。
推薦、搜索背后的挑戰:數據硬件瓶頸
從文字發(fā)明前,人類(lèi)就一直在為“合適”的數據尋找“合適”的數據存儲方式,例如書(shū)寫(xiě)工具作為一種原始存儲技術(shù),其讓人類(lèi)有了記錄生活的能力;1890年代,穿孔卡的出現為人類(lèi)打開(kāi)了另一個(gè)全新時(shí)代的大門(mén),標志著(zhù)現代信息程序化的初露鋒芒。
穿孔卡所能處理的數據當然不能一勞永逸地滿(mǎn)足人類(lèi)經(jīng)濟生活的需求,1966年,動(dòng)態(tài)隨機存取內存(DRAM)出現,開(kāi)創(chuàng )性地用電容來(lái)存儲信息,而所謂的“動(dòng)態(tài)“并非是指內部的某個(gè)功能,而是指電容終究會(huì )喪失電荷,因此必須定期”動(dòng)態(tài)“刷新。這意味著(zhù)DRAM一旦斷電就將面臨數據丟失的風(fēng)險。
內存專(zhuān)注于“數據存儲”,結合“數據處理“才能構成數據價(jià)值的閉環(huán)。1971年英特爾推出全球首款CPU的創(chuàng )舉則畫(huà)全了這個(gè)閉環(huán)。此后,數據處理的硬件發(fā)明一直都在沿著(zhù)內存與CPU并存的格局發(fā)展。
而今,從大數據時(shí)代帶來(lái)數據量暴增,數據類(lèi)型不斷增多,數據處理并發(fā)度和速度不斷提升這三個(gè)現狀考慮,是時(shí)候對數據處理和存儲的硬件技術(shù)來(lái)次大換代了。其實(shí),將這三個(gè)特征納入推薦系統,就不難發(fā)現,在內存上下功夫,會(huì )更有助于破解推薦系統的信息過(guò)載難題。
讓我們來(lái)劃一下重點(diǎn)吧:數據規模、高并發(fā)、實(shí)時(shí)推薦等這幾點(diǎn),就是所有基于大數據做推薦服務(wù)或產(chǎn)品的企業(yè)都會(huì )遇到的共同問(wèn)題:
1.數據量指數增長(cháng)問(wèn)題:越是精準,越是個(gè)性化的推薦,就越需要為每個(gè)用戶(hù)都保存一份推薦數據,也就是說(shuō)數據量會(huì )隨著(zhù)用戶(hù)線(xiàn)性增長(cháng)。
2.數據稀疏性問(wèn)題 :現在待處理的推薦系統規模越來(lái)越大,用戶(hù)和信息(譬如音樂(lè )、網(wǎng)頁(yè)、文獻……)數目動(dòng)輒百千萬(wàn)計,兩個(gè)用戶(hù)在選擇上的重疊非常少。
3.需要快速及時(shí)響應用戶(hù)請求(運算):隨著(zhù)新聞、短視頻等消費用戶(hù)碎片化時(shí)間的應用層出不窮,推薦系統更倚重實(shí)時(shí)推薦策略。
就如前文所說(shuō),要解決這些問(wèn)題,就要從“數據”和”存儲“這兩個(gè)底層邏輯找答案。
第一個(gè)問(wèn)題的解決,需要大容量存儲設備;第二個(gè)問(wèn)題需要“借力”算法,例如通過(guò)擴散的算法,從原來(lái)的一階關(guān)聯(lián)到二階甚至更高階的關(guān)聯(lián),甚至通過(guò)迭代尋優(yōu)的方法,考慮全局信息導致的關(guān)聯(lián),其中“全局”一詞背后需要高性能處理器的助力;而應對第三個(gè)問(wèn)題則需要更高性能的存儲來(lái)支持,例如用戶(hù)在使用APP時(shí),留給推薦系統的處理時(shí)長(cháng)往往是毫秒級的,這就對推薦系統的存儲部分的吞吐量、響應速度、穩定性和意外中斷后的恢復能力提出了更高的要求。
從上面這個(gè)三個(gè)方案不難看出,存儲既要更大容量,也需要更優(yōu)性能,換言之推薦系統的IT基礎架構既要滿(mǎn)足對海量數據存儲的承載能力,還需要在大數據量下保證計算分析的時(shí)效性。換句話(huà)說(shuō),上面這三個(gè)問(wèn)題環(huán)環(huán)相扣,必須要找到一個(gè)“三管齊下”的解決方案。
“數據硬件”新趨勢:顛覆內存與存儲的邊界
三管齊下說(shuō)來(lái)容易,但又該如何實(shí)現呢?其實(shí),只要一步活,就可以步步活。
這一步就是要把更多數據“存放”在更接近CPU的位置進(jìn)行處理。
傳統上業(yè)界存放數據的主流產(chǎn)品包括DRAM,基于NAND技術(shù)的固態(tài)盤(pán) (SSD)以及傳統機械硬盤(pán) (HDD)。這些技術(shù)各有優(yōu)缺點(diǎn),例如DRAM雖然性能好、時(shí)延低,但容量受限、價(jià)格昂貴且有數據易失性;與DRAM相比,固態(tài)盤(pán) (SSD) 可提供更大容量和更低成本,但無(wú)法提供相同的性能水平;傳統硬盤(pán) (HDD)就更別提了,勝在容量和成本更優(yōu),但有旋轉的盤(pán)片,很難避免與可靠性、物理空間要求、散熱等因素有關(guān)的總體擁有成本問(wèn)題。
總結一下,上述這些產(chǎn)品的不足,概括起來(lái)就是:離CPU近的,性能雖好但很難滿(mǎn)足承載大體量數據和數據持久性的需求,而距離遠的產(chǎn)品容量雖大,即在性能上與DRAM差距較大。
圖注:傳統內存-存儲架構在性能和容量上都存在缺口
如何解決?當前業(yè)界有一個(gè)解決方案是開(kāi)辟全新的產(chǎn)品技術(shù)路線(xiàn):打破內存和存儲的特性,將兩者的優(yōu)勢融合起來(lái)。
這一技術(shù)路線(xiàn)的提出者和重要實(shí)踐者,就是大家熟悉的英特爾,而它將內存和存儲特性融合的產(chǎn)品,名為英特爾傲騰持久內存(Optane Persistent Memory, 簡(jiǎn)稱(chēng)Optane PMem)。這種產(chǎn)品采用的傲騰存儲介質(zhì)正是實(shí)現這種融合的基石,已被很多專(zhuān)家和用戶(hù)視為存儲“黑科技”。
采用了這種存儲“黑科技“的傲騰持久內存,一句話(huà)就可以概括其特點(diǎn),那就是擁有接近DRAM,遠超NAND SSD的性能,但容量又比DRAM大(單條容量可達128GiB,256GiB和512GiB),價(jià)格或單位容量的成本更實(shí)惠,且具備數據非易失能力(斷電后數據不會(huì )丟失)。
圖注:增添了傲騰持久內存和傲騰固態(tài)盤(pán)的全新內存-存儲架構
對內存和存儲優(yōu)勢的融合讓傲騰持久內存得以提供兩種工作模式:
一是App Direct 模式,讓?xiě)媚芡ㄟ^(guò)load/store字節訪(fǎng)問(wèn)方式直接訪(fǎng)問(wèn)持久內存,保存到持久內存的數據斷電后不丟失。訪(fǎng)問(wèn)持久內存的時(shí)延和DRAM接近。
二是內存模式,傲騰持久內存在這種模式下可用作DRAM之外進(jìn)行容量擴展的易失性?xún)却妗?/p>
圖注:傲騰持久內存的兩種工作模式
說(shuō)到這里,結果已經(jīng)要呼之欲出了:在A(yíng)pp Direct模式下工作的傲騰持久內存正是我們尋求的、能兼顧推薦系統兩個(gè)底層邏輯——數據和存儲的答案,它既能把更多數據放在靠近CPU的位置,同時(shí)又能滿(mǎn)足推薦系統高速數據處理過(guò)程中的性能和可靠性要求。
打通內存與存儲,讓數據從負擔變?yōu)椤案坏V”
目前,已有數家在推薦技術(shù)上處于行業(yè)領(lǐng)先地位的企業(yè)認識到,并開(kāi)始借重傲騰持久內存的上述優(yōu)勢,百度就是嘗鮮者之一。
人們對于百度的傳統觀(guān)感就是搜索引擎服務(wù),其實(shí)百度的搜索引擎早就利用公司在大數據和AI方面的技術(shù)優(yōu)勢和積累,增添了基于信息聚合,能向用戶(hù)投送個(gè)性化內容的Feed流服務(wù)。在這項服務(wù)背后擔綱數據層和存儲層關(guān)鍵角色的,就是它的核心內存數據庫Feed-Cube。
由于業(yè)務(wù)飛速拓展,百度Feed流服務(wù)需要Feed-Cube部署更大容量的內存來(lái)承載規模激增的數據,可DRAM高昂的成本和有限的容量規格使得內存擴展帶來(lái)的TCO壓力不斷抬升,在這種情況下,百度在初代英特爾傲騰持久內存(100系列)剛剛發(fā)布不久,就盯上了它。
于是2019年時(shí),百度就圍繞如何在Feed-Cube上利用傲騰持久內存的優(yōu)勢開(kāi)展了一系列嘗試。它先后對比測試了僅使用DRAM,DRAM+持久內存和僅使用持久內存支持Feed-Cube的狀況。結果表明,在第二代至強可擴展處理器與傲騰持久內存組合上,如果使用DRAM和持久內存的混合配置,Feed-Cube在2,000萬(wàn)大并發(fā)訪(fǎng)問(wèn)壓力下的平均訪(fǎng)問(wèn)耗時(shí)僅上升約30微秒(約24%),CPU的整機消耗占比上升7%,性能波動(dòng)完全可接受,由于換來(lái)的單服務(wù)器上的DRAM使用量可以減半,從成本角度而言則是個(gè)大好消息。
百度還發(fā)現,即使只基于傲騰持久內存來(lái)構建Feed-Cube,在每秒50萬(wàn)次查詢(xún)(QPS)的訪(fǎng)問(wèn)壓力下,其平均時(shí)延與只配置DRAM的方案對比上升約9.66%,性能波動(dòng)也可接受。
圖注:百度Feed-Cube內存配置的變化路徑,和不同路徑或配置下的處理時(shí)延對比
對傲騰存儲“黑科技”優(yōu)勢的初步認可,讓百度開(kāi)始了在更多關(guān)鍵應用場(chǎng)景中發(fā)掘其應用價(jià)值的探索之路。包括在關(guān)鍵業(yè)務(wù)中考查其持久性對數據恢復的加速,還有優(yōu)化BigSQL數據處理平臺(基于SPARK SQL)的交互式查詢(xún)性能和成本等。
這些成功的嘗試,最終促使百度決定基于傲騰持久內存,從存儲引擎層面開(kāi)啟了更大的創(chuàng )新或者說(shuō)是改造,即推出使用持久內存和PMDK(英特爾開(kāi)源的持久內存開(kāi)發(fā)工具包)優(yōu)化的新一代用戶(hù)態(tài)單機存儲引擎,為百度離線(xiàn)與部分在線(xiàn)業(yè)務(wù)提供高效穩定、低時(shí)延、低成本和易擴展的存儲服務(wù)。
該引擎可用于塊、文件和對象存儲等多種應用場(chǎng)景,將傲騰持久內存(APP Direct模式)用作引擎緩存層的存儲介質(zhì),來(lái)存儲元數據、緩存和索引。并通過(guò)PMDK進(jìn)行內存調度,加速這些數據的讀寫(xiě),最大程度減少資源損耗。
圖注:SNIA編程模型和PMDK工作示意圖。傲騰持久內存遵循SNIA編程模型, PMDK可幫助應用直接訪(fǎng)問(wèn)持久內存設備,而不需要經(jīng)過(guò)文件系統的頁(yè)高速緩存系統、系統調用和驅動(dòng),避免了數據IO產(chǎn)出的開(kāi)銷(xiāo),可大大降低數據時(shí)延。
經(jīng)測試,這個(gè)全新的存儲引擎寫(xiě)入一個(gè)4K數據的整體時(shí)間消耗大約為4.5微秒,而將其中的持久內存換成DRAM,全程用時(shí)大約是3微秒,在時(shí)延上相差不大。但使用DRAM和使用持久內存的成本卻相差很大,相同的成本投入下,持久內存的空間是DRAM的三倍之多,這意味著(zhù)可以緩存更多數據,也能以更合理的方式進(jìn)行數據存盤(pán),有效提高后端存儲設備的IO效率。
百度將傲騰持久內存導入包括Feed流服務(wù)在內各種產(chǎn)品和服務(wù)進(jìn)行嘗試,以及采用它開(kāi)發(fā)新一代用戶(hù)態(tài)單機存儲引擎的意義,并不在于它使用這種存儲“黑科技”解決了自身的業(yè)務(wù)需求,更多的,是為傲騰持久內存在搜索、推薦系統和更多大數據場(chǎng)景中的應用進(jìn)行了重要的探索,能為遇到或即將面臨同樣信息過(guò)載問(wèn)題的企業(yè)和用戶(hù)提供值得借鑒的寶貴經(jīng)驗。
或許很快,就會(huì )有更多倚重搜索、推薦技術(shù)或服務(wù)的企業(yè)導入傲騰持久內存,尤其是英特爾在今年四月剛剛發(fā)布了與傲騰持久內存搭配的全新算力干將——面向單路和雙路服務(wù)器的第三代至強可擴展處理器。它在內存通道的支持上從上一代產(chǎn)品的6通道升級到了8通道,速度也從上一代的2666MT/提升到了高達3200MT/s,在與DRAM和傲騰持久內存200系列配合使用時(shí),每路內存容量可達6TB之多。這款全新處理器還支持了PCI-E 4.0技術(shù),并新添了支持PCI-E 4.0的傲騰固態(tài)盤(pán)P5800X(也是基于傲騰存儲介質(zhì)構建),這表明傲騰固態(tài)盤(pán)與傲騰持久內存的數據交互也將進(jìn)一步提速。
圖注:存儲“黑科技“兩款新品——傲騰持久內存200系列和傲騰固態(tài)盤(pán)P5800X
由此不難看出,英特爾對這項存儲“黑科技“的改進(jìn)、優(yōu)化、升級和普及的步伐一直在持續,也許還會(huì )越來(lái)越快,現在已有消息稱(chēng),下一代傲騰持久內存單條容量就會(huì )達到1TB……這樣一來(lái),也許大家擔心存儲系統“信息過(guò)載”的日子,離我們就越來(lái)越遠了。
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。
電容式接近開(kāi)關(guān)相關(guān)文章:電容式接近開(kāi)關(guān)原理 光電開(kāi)關(guān)相關(guān)文章:光電開(kāi)關(guān)原理