論文賞析:基於NVM的高性能向量檢索方案HM-ANN

HM-ANN: Efficient Billion-Point Nearest Neighbor Search on Heterogenous Memory 是一篇被2020年 Conference on Neural Information Processing Systems (NeurIPS 2020). 本文提出了一種基於圖的相似性搜索的新型算法,稱爲 HM-ANN。該算法在現代硬件設置中同時考慮了內存異質性和數據異質性。HM-ANN 可以在單臺機器上實現十億級的相似性搜索,同時沒有采用任何數據壓縮技術。異質存儲器(HM)代表了快速但小的 DRAM 和緩慢但大的 PMem 的組合。HM-ANN 實現了低搜索延遲和高搜索精度,特別是在數據集無法裝入單機有限 DRAM 的情況下。與最先進的近似近鄰(ANN)搜索方案相比,該算法具有明顯的優勢。

動機

由於 DRAM 容量有限,ANN 搜索算法在查詢精度和查詢延遲之間進行了基本的權衡。爲了在 DRAM 中存儲索引以實現快速查詢,有必要限制數據點的數量或存儲壓縮的向量,這兩者都會損害搜索的準確性。基於圖形的索引(如 HNSW)具有優越的查詢運行時間性能和查詢精度。然而,當在十億規模的數據集上操作時,這些索引也會消耗 TiB 等級的 DRAM。

還有其他的變通方法來避免讓 DRAM 以原始格式存儲十億規模的數據集。當一個數據集太大,無法裝入單臺機器的 DRAM 時,就會使用數據壓縮的方法,如對數據集的點進行乘積量化。但是,由於量化過程中精度的損失,這些索引在壓縮數據集上的召回率通常很低。Subramanya 等人[1]探索了利用固態硬盤 SSD 實現十億級 ANN 搜索的方法,該方法稱爲 Disk-ANN ,其中原始數據集存儲在 SSD 上,壓縮後的表示方法存儲在 DRAM 上。

Heterogeneous Memory的介紹

內存/存儲的層次結構與HM

圖片來源: http://nvmw.ucsd.edu/nvmw2021-program/nvmw2021-data/nvmw2021-paper63-presentation_slides.pdf

Heterogeneous memory (HM) 代表了快速但小的 DRAM 和慢速但大的 PMem 的組合。DRAM 是每個現代服務器中都能找到的硬件,其訪問速度相對較快。新的 PMem 技術,如英特爾® Optane™DC Persistent Memory Modules,彌補了基於 NAND-based flash(SSD)和 DRAM 之間的差距,消除了 I/O 瓶頸。PMem 像 SSD 一樣可以在斷電情況下持久化數據,又像 DRAM 一樣可由 CPU 直接對每一個 Byte 尋址。Renen 等人 [2] 發現,在配置的實驗環境中,PMem 的讀取帶寬比 DRAM 低 2.6 倍,而寫入帶寬低 7.5 倍。

HM-ANN 的設計

HM-ANN 是一種準確而快速的十億級 ANN 搜索算法,在單機上運行時無需壓縮。HM-ANN 的設計概括了 HNSW 的思想,其分層結構自然適合 HM。HNSW 由多層組成: 只有第 0 層包含整個數據集,其餘每一層都包含其正下方那一層的一個子集。

一個 3 層 HNSW 的例子

圖片來源: https://arxiv.org/pdf/1603.09320.pdf

  • 上層的元素,只包括數據集的子集,消耗了整個存儲消耗的一小部分。這一現象使它們非常合適去被放置在 DRAM 中。這樣一來,HM-ANN 上的大部分搜索都會發生在上層,這就最大限度地利用了 DRAM 的快速訪問特性。然而,在 HNSW 中大多數搜索發生在底層。

  • 最底層承載着整個數據集,這使得它適合被放在 PMem 中。 由於訪問第 0 層的速度較慢,最好是每個查詢只訪問一小部分,並降低訪問頻率。

圖構建算法

HM-ANN的索引構造例子

圖片來源: http://nvmw.ucsd.edu/nvmw2021-program/nvmw2021-data/nvmw2021-paper63-poster.pdf

HM-ANN 構造的關鍵思想是構建高質量的上層,以便爲第 0 層的搜索提供更好的導航指導能力。因此,大多數內存訪問發生在 DRAM 中,所以 PMem 中的訪問則被減少。爲了實現這一點,HM-ANN 的構建算法有一個自上而下的 selection 階段和一個自下而上的 promotion 階段。

自上而下的插入階段建立了一個 navigable small-world graph,因爲最底層是放在 PMem 上的。

自下而上的促進階段從底層 promote pivot 點,以形成放置在 DRAM 上的上層,而不會失去很多準確性。如果在第 1 層創建了第 0 層元素的高質量投影,那麼第 0 層的搜索只需幾跳就能找到查詢的準確近鄰。

  • HM-ANN 沒有使用 HNSW 的 random selection for promotion,而是使用高度推廣策略 high-degree promotion strategy,將第 0 層中度數最高的元素推廣到第1層。對於更高的層,HM-ANN 根據 promotion rate 將高度數節點推廣到上層。

  • HM-ANN 將更多的節點從第 0 層 promote 到第 1 層,併爲第 1 層的每個元素設置更大的最大鄰居數。上層節點的數量是由可用的 DRAM 空間決定的。由於第 0 層不存儲在 DRAM 中,因此使存儲在 DRAM 中的每一層更密集,可以提高搜索質量。

圖搜索算法

HM-ANN的索引搜索例子

圖片來源: http://nvmw.ucsd.edu/nvmw2021-program/nvmw2021-data/nvmw2021-paper63-poster.pdf

該搜索算法由兩個階段組成: fast memory search 與 parallel layer-0 search with prefetching.

Fast memory search

與 HNSW 相同,DRAM 中的搜索從最頂層的入口點開始,然後從頂層到第 2 層執行 1-greedy search。爲了縮小第 0 層的搜索空間,HM-ANN 在第 1 層進行搜索,搜索預算爲 efSearchL1,這限制了第 1 層的 candidate list 的大小。HNSW 只使用一個 entry point ,但在 HM-ANN 中,第 0 層和第 1 層之間的關係比任何其他兩層之間處理得更加特別。

Parallel layer-0 search with prefetching

在底層,HM-ANN 將上述來自搜索第 1 層的 candidates 均勻分開,並將其視爲 entry points,以執行 parallel multi-start 1-greedy search with threads。每次搜索出來的 top candidates 被收集起來,以找到 best candidates。衆所周知,從第 1 層下到第 0 層正好是進入 PMem。 並行搜索隱藏了 PMem 的延遲,並充分利用內存帶寬,在不增加搜索時間的情況下提高搜索質量。

HM-ANN 在 DRAM 中實現了一個 software-managed buffer,在 DRAM 訪問發生之前從 PMem 中 prefetch 數據。當搜索第 1 層時,HM-ANN 異步地將 efSearchL1中的那些 candidates 的鄰居元素及其在第 1 層的連接從 PMem 複製到 buffer。當第 0 層的搜索發生時,一部分數據已經在 DRAM 中被 prefetched 了,這就隱藏了訪問 PMem 的延遲,導致了更短的查詢時間。這與 HM-ANN 的設計目標相吻合,即大部分內存訪問發生在 DRAM 中,而 PMem 中的內存訪問被減少。

性能測試

在 HM-ANN 這個論文中,對這個新索引算法進行了廣泛的評估。所有的實驗都是在一臺裝有 Intel Xeon Gold 6252 [email protected] 的機器上進行的。它使用DDR4(96GB)作爲快速內存,Optane DC PMM(1.5TB)作爲慢速內存。對五個數據集進行了評估。BIGANN、DEEP1B、SIFT1M、DEEP1M 和 GIST1M。對於十億規模的測試,包括以下方案:基於十億規模量化的方法(IMI+OPQ 和 L&C),以及非壓縮的方法(HNSW 和 NSG)。

十億規模的算法比較

在 Table 1 中,比較了不同的基於圖的索引的索引時間和內存消耗。HNSW 在建立索引時速度最快,HM-ANN 比 HNSW 多需要 8% 的時間。在總體存儲使用方面,HM-ANN 索引比 HSNW 大 5-13%,因爲它將更多的節點從第 0 層推廣到第 1 層。

在 Figure 1 中,對不同索引的查詢性能進行了分析。圖1(a)和(b)顯示,HM-ANN 在 1 毫秒內取得了 >95% 的 top-1 召回率。圖1(c)和(d)顯示, HM-ANN 在 4 毫秒內獲得了 >90% 的 top-100 召回率。與其他所有方法相比,HM-ANN 提供了更好的 latency-recall 性能。

百萬規模的算法比較

在 Figure 2 中,不同索引的查詢性能在純 DRAM 環境下進行了分析。HNSW、NSG 和 HM-ANN 是用一個適合 DRAM 容量的 300 萬規模的數據集進行評估的。HM-ANN 仍然取得了比 HNSW 更好的查詢性能。原因是,當它們都旨在實現 99% 的召回率目標時,HM-ANN 的距離計算總數(平均 850 次/查詢)要少於 HNSW(平均 900 次/查詢)。

High-degree promotion的效果

在 Figure 3 中,random promotion 和 high-degree promotion strategies 在同一配置下進行了比較。high-degree promotion strategies 的效果優於 baseline。在達到 95%、99% 和 99.5%的召回率目標時,high-degree promotion strategies 的表現比 random promotion 快 1.8 倍、4.3 倍和 3.9 倍。

內存管理技術的性能

Figure 5 包含了 HNSW 和 HM-ANN 之間的一系列步驟,以顯示 HM-ANN 的每項優化對其改進的貢獻。BP 代表索引構建中自下而上的 promotion,PL0 代表 Parallel layer-0 search,DP 代表從 PMem 到 DRAM 的數據 prefetching。每走一步,HM-ANN 的搜索性能都會被進一步推高。

結論

一種新的基於圖的索引和搜索算法,稱爲 HM-ANN,將基於圖的 ANN 搜索算法的分層設計與 HM 中的快慢內存異質性進行了映射。評估表明,HM-ANN 是一種新的最先進的適用於十億數據集的索引。

在學術界和工業界中,在 PMem 上建立索引正變得越來越流行。爲了減輕 DRAM 的壓力,Disk-ANN [1] 是一個建立在 SSD 上的索引,但是 SSD 吞吐量明顯低於 PMem。 然而,建立 HM-ANN 仍然需要幾天時間,這與 Disk-ANN 的構建時間沒有數量級的區別。我們相信,通過更仔細地利用 PMem 的特性(例如,意識到 PMem 的粒度爲 256字節),以及使用指令 bypass cache lines,是可以優化 HM-ANN 的索引時間。我們還預計,將來會提出更多的持久存儲設備的方法。

Reference

[1]: Suhas Jayaram Subramanya and Devvrit and Rohan Kadekodi and Ravishankar Krishaswamy and Ravishankar Krishaswamy: DiskANN: Fast Accurate Billion-point Nearest Neighbor Search on a Single Node, NIPS, 2019

DiskANN: Fast Accurate Billion-point Nearest Neighbor Search on a Single Node - Microsoft Research

DiskANN: Fast Accurate Billion-point Nearest Neighbor Search on a Single Node

[2]: Alexander van Renen and Lukas Vogel and Viktor Leis and Thomas Neumann and Alfons Kemper: Persistent Memory I/O Primitives, CoRR & DaMoN, 2019

https://dl.acm.org/doi/abs/10.1145/3329785.3329930

Persistent Memory I/O Primitives

 

本篇博文作者:

羅濟高,Zilliz 實習研究員,本科畢業於慕尼黑工業大學,目前是該校數據工程與分析專業研究生在讀。興趣領域包含關係數據庫與性能分析,喜歡研究關係數據庫內核,對數據庫各個子領域的進展擁有高度好奇心。他的 Github 賬號是 https://github.com/cakebytheoceanLuo,博客地址是 https://cakebytheoceanluo.github.io/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章